{ "version": 3, "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/@uppy/utils/lib/Translator.js", "../../../node_modules/namespace-emitter/index.js", "../../../node_modules/lodash/isObject.js", "../../../node_modules/lodash/_freeGlobal.js", "../../../node_modules/lodash/_root.js", "../../../node_modules/lodash/now.js", "../../../node_modules/lodash/_trimmedEndIndex.js", "../../../node_modules/lodash/_baseTrim.js", "../../../node_modules/lodash/_Symbol.js", "../../../node_modules/lodash/_getRawTag.js", "../../../node_modules/lodash/_objectToString.js", "../../../node_modules/lodash/_baseGetTag.js", "../../../node_modules/lodash/isObjectLike.js", "../../../node_modules/lodash/isSymbol.js", "../../../node_modules/lodash/toNumber.js", "../../../node_modules/lodash/debounce.js", "../../../node_modules/lodash/throttle.js", "../../../node_modules/@transloadit/prettier-bytes/src/prettierBytes.ts", "../../../node_modules/wildcard/index.js", "../../../node_modules/mime-match/index.js", "../../../node_modules/@uppy/core/lib/BasePlugin.js", "../../../node_modules/classnames/index.js", "../../../node_modules/eventemitter3/index.js", "../../../node_modules/is-mobile/index.js", "../../../node_modules/@noble/hashes/src/_assert.ts", "../../../node_modules/@noble/hashes/src/_u64.ts", "../../../node_modules/@noble/hashes/src/crypto.ts", "../../../node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/@noble/hashes/src/sha3.ts", "../../../node_modules/@paralleldrive/cuid2/src/index.js", "../../../node_modules/@paralleldrive/cuid2/index.js", "../../../node_modules/@uppy/utils/lib/RateLimitedQueue.js", "../../../node_modules/@excid3/uppy-activestorage-upload/node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/@excid3/uppy-activestorage-upload/lib/index.js", "../../../node_modules/lunr/lunr.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-autocomplete/src/autocomplete.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../../node_modules/stimulus-flatpickr/node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-flatpickr/src/utils.js", "../../../node_modules/stimulus-flatpickr/src/config_options.js", "../../../node_modules/stimulus-flatpickr/src/events.js", "../../../node_modules/stimulus-flatpickr/src/elements.js", "../../../node_modules/stimulus-flatpickr/src/strftime_mapping.js", "../../../node_modules/stimulus-flatpickr/src/index.js", "../../javascript/shared_controllers/click_toggle_controller.js", "../../../node_modules/@uppy/core/lib/Uppy.js", "../../../node_modules/nanoid/non-secure/index.js", "../../../node_modules/@uppy/store-default/lib/index.js", "../../../node_modules/@uppy/utils/lib/getFileNameAndExtension.js", "../../../node_modules/@uppy/utils/lib/mimeTypes.js", "../../../node_modules/@uppy/utils/lib/getFileType.js", "../../../node_modules/@uppy/utils/lib/generateFileID.js", "../../../node_modules/@uppy/core/lib/supportsUploadProgress.js", "../../../node_modules/@uppy/core/lib/getFileName.js", "../../../node_modules/@uppy/utils/lib/getTimeStamp.js", "../../../node_modules/@uppy/core/lib/loggers.js", "../../../node_modules/@uppy/core/lib/Restricter.js", "../../../node_modules/@uppy/core/lib/locale.js", "../../../node_modules/preact/src/util.js", "../../../node_modules/preact/src/options.js", "../../../node_modules/preact/src/create-element.js", "../../../node_modules/preact/src/component.js", "../../../node_modules/preact/src/create-context.js", "../../../node_modules/preact/src/constants.js", "../../../node_modules/preact/src/diff/children.js", "../../../node_modules/preact/src/diff/props.js", "../../../node_modules/preact/src/diff/index.js", "../../../node_modules/preact/src/render.js", "../../../node_modules/preact/src/clone-element.js", "../../../node_modules/preact/src/diff/catch-error.js", "../../../node_modules/@uppy/utils/lib/isDOMElement.js", "../../../node_modules/@uppy/utils/lib/findDOMElement.js", "../../../node_modules/@uppy/utils/lib/getTextDirection.js", "../../../node_modules/@uppy/core/lib/UIPlugin.js", "../../../node_modules/@uppy/utils/lib/emaFilter.js", "../../../node_modules/@uppy/status-bar/lib/StatusBarStates.js", "../../../node_modules/@uppy/status-bar/lib/StatusBarUI.js", "../../../node_modules/@uppy/status-bar/lib/calculateProcessingProgress.js", "../../../node_modules/@uppy/status-bar/lib/Components.js", "../../../node_modules/@uppy/utils/lib/secondsToTime.js", "../../../node_modules/@uppy/utils/lib/prettyETA.js", "../../../node_modules/@uppy/status-bar/lib/locale.js", "../../../node_modules/@uppy/status-bar/lib/StatusBar.js", "../../../node_modules/@uppy/informer/lib/FadeIn.js", "../../../node_modules/@uppy/informer/lib/TransitionGroup.js", "../../../node_modules/@uppy/informer/lib/Informer.js", "../../../node_modules/@uppy/utils/lib/dataURItoBlob.js", "../../../node_modules/@uppy/utils/lib/isObjectURL.js", "../../../node_modules/@uppy/utils/lib/isPreviewSupported.js", "../../../node_modules/exifr/dist/mini.esm.mjs", "../../../node_modules/@uppy/thumbnail-generator/lib/locale.js", "../../../node_modules/@uppy/thumbnail-generator/lib/index.js", "../../../node_modules/@uppy/utils/lib/findAllDOMElements.js", "../../../node_modules/@uppy/utils/lib/toArray.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/utils/fallbackApi.js", "../../../node_modules/@uppy/utils/lib/getDroppedFiles/index.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/ProviderView.js", "../../../node_modules/@uppy/utils/lib/remoteFileObjToLocal.js", "../../../node_modules/preact/hooks/src/index.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/AuthView.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/Header.js", "../../../node_modules/@uppy/provider-views/lib/ProviderView/User.js", "../../../node_modules/@uppy/provider-views/lib/Breadcrumbs.js", "../../../node_modules/@uppy/utils/lib/VirtualList.js", "../../../node_modules/@uppy/provider-views/lib/Item/index.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/ItemIcon.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/GridItem.js", "../../../node_modules/@uppy/provider-views/lib/Item/components/ListItem.js", "../../../node_modules/@uppy/provider-views/lib/Browser.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterOpenFolder.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterScrollFolder.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/shallowClone.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterToggleCheckbox.js", "../../../node_modules/eventemitter3/index.mjs", "../../../node_modules/p-queue/node_modules/p-timeout/index.js", "../../../node_modules/p-queue/dist/lower-bound.js", "../../../node_modules/p-queue/dist/priority-queue.js", "../../../node_modules/p-queue/dist/index.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/afterFill.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/index.js", "../../../node_modules/@uppy/provider-views/lib/utils/shouldHandleScroll.js", "../../../node_modules/@uppy/provider-views/lib/utils/handleError.js", "../../../node_modules/@uppy/provider-views/lib/utils/getClickedRange.js", "../../../node_modules/@uppy/provider-views/lib/SearchInput.js", "../../../node_modules/@uppy/provider-views/lib/FooterActions.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getNumberOfSelectedFiles.js", "../../../node_modules/@uppy/provider-views/lib/utils/getTagFile.js", "../../../node_modules/@uppy/provider-views/lib/utils/addFiles.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getCheckedFilesWithPaths.js", "../../../node_modules/@uppy/provider-views/lib/utils/PartialTreeUtils/getBreadcrumbs.js", "../../../node_modules/@uppy/provider-views/lib/SearchProviderView/SearchProviderView.js", "../../../node_modules/memoize-one/dist/memoize-one.esm.js", "../../../node_modules/@uppy/utils/lib/FOCUSABLE_ELEMENTS.js", "../../../node_modules/@uppy/dashboard/lib/utils/getActiveOverlayEl.js", "../../../node_modules/@uppy/dashboard/lib/utils/trapFocus.js", "../../../node_modules/@uppy/dashboard/lib/utils/createSuperFocus.js", "../../../node_modules/@uppy/dashboard/lib/components/Dashboard.js", "../../../node_modules/@uppy/utils/lib/isDragDropSupported.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/index.js", "../../../node_modules/shallow-equal/src/arrays.ts", "../../../node_modules/shallow-equal/src/objects.ts", "../../../node_modules/shallow-equal/src/index.ts", "../../../node_modules/@uppy/dashboard/lib/utils/getFileTypeIcon.js", "../../../node_modules/@uppy/dashboard/lib/components/FilePreview.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/MetaErrorMessage.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FilePreviewAndLink/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileProgress/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/FileInfo/index.js", "../../../node_modules/@uppy/utils/lib/truncateString.js", "../../../node_modules/@uppy/dashboard/lib/utils/copyToClipboard.js", "../../../node_modules/@uppy/dashboard/lib/components/FileItem/Buttons/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileList.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFiles.js", "../../../node_modules/@uppy/dashboard/lib/components/AddFilesPanel.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelContent.js", "../../../node_modules/@uppy/dashboard/lib/utils/ignoreEvent.js", "../../../node_modules/@uppy/dashboard/lib/components/EditorPanel.js", "../../../node_modules/@uppy/dashboard/lib/components/PickerPanelTopBar.js", "../../../node_modules/@uppy/dashboard/lib/components/FileCard/index.js", "../../../node_modules/@uppy/dashboard/lib/components/FileCard/RenderMetaFields.js", "../../../node_modules/@uppy/dashboard/lib/components/Slide.js", "../../../node_modules/@uppy/dashboard/lib/locale.js", "../../../node_modules/@uppy/dashboard/lib/Dashboard.js", "../../../node_modules/@uppy/utils/lib/getFileTypeExtension.js", "../../../node_modules/@uppy/webcam/lib/Webcam.js", "../../../node_modules/@uppy/utils/lib/canvasToBlob.js", "../../../node_modules/@uppy/webcam/lib/supportsMediaRecorder.js", "../../../node_modules/@uppy/webcam/lib/CameraIcon.js", "../../../node_modules/@uppy/webcam/lib/SnapshotButton.js", "../../../node_modules/@uppy/webcam/lib/RecordButton.js", "../../../node_modules/@uppy/webcam/lib/formatSeconds.js", "../../../node_modules/@uppy/webcam/lib/RecordingLength.js", "../../../node_modules/@uppy/webcam/lib/VideoSourceSelect.js", "../../../node_modules/@uppy/webcam/lib/SubmitButton.js", "../../../node_modules/@uppy/webcam/lib/DiscardButton.js", "../../../node_modules/@uppy/webcam/lib/CameraScreen.js", "../../../node_modules/@uppy/webcam/lib/PermissionsScreen.js", "../../../node_modules/@uppy/webcam/lib/locale.js", "../../javascript/shared_controllers/file_upload_controller.js", "../../javascript/controllers/combobox_controller.js", "../../javascript/controllers/cookieless_controller.js", "../../javascript/controllers/coupon_requests_controller.js", "../../javascript/helpers/commons.js", "../../javascript/controllers/data_collection_controller.js", "../../javascript/controllers/data_collection_field_controller.js", "../../javascript/controllers/errors_controller.js", "../../javascript/controllers/faqs_controller.js", "../../javascript/controllers/fetch_controller.js", "../../javascript/controllers/forms_controller.js", "../../javascript/controllers/hub_card_controller.js", "../../javascript/controllers/hub_controller.js", "../../javascript/controllers/hub_hosted_controller.js", "../../javascript/controllers/hub_popup_controller.js", "../../../node_modules/el-transition/index.js", "../../javascript/controllers/layout_controller.js", "../../javascript/controllers/layout_tw_controller.js", "../../javascript/controllers/location_controller.js", "../../javascript/controllers/pin_codes_controller.js", "../../javascript/controllers/polling_controller.js", "../../javascript/controllers/privacy_controller.js", "../../javascript/controllers/redirect_controller.js", "../../javascript/controllers/session_controller.js", "../../javascript/controllers/share_controller.js", "../../javascript/controllers/signin_controller.js", "../../javascript/controllers/tabs_controller.js", "../../javascript/controllers/tooltip_controller.js", "../../javascript/controllers/turnstile_controller.js", "../../javascript/controllers/users_controller.js", "../../javascript/controllers/utils_controller.js", "../../javascript/controllers/verify_controller.js", "../../javascript/controllers/window_switcher_controller.js", "rails:/tmp/build_4ea856a1/app/javascript/controllers/*_controller.js", "../../javascript/controllers/index.js", "../../javascript/application.js"], "sourcesContent": ["export default {\n logger: self.console,\n WebSocket: self.WebSocket\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 recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\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 },\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 logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\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 // 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 switch (type) {\n case message_types.welcome:\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 this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n return this.subscriptions.notify(identifier, \"connected\")\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 }\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\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", "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// We're using a generic because languages have different plural rules.\n\n// eslint-disable-next-line no-use-before-define\n\nfunction insertReplacement(source, rx, replacement) {\n const newParts = [];\n source.forEach(chunk => {\n // When the source contains multiple placeholders for interpolation,\n // we should ignore chunks that are not strings, because those\n // can be JSX objects and will be otherwise incorrectly turned into strings.\n // Without this condition we\u2019d get this: [object Object] hello [object Object] my <button>\n if (typeof chunk !== 'string') {\n return newParts.push(chunk);\n }\n return rx[Symbol.split](chunk).forEach((raw, i, list) => {\n if (raw !== '') {\n newParts.push(raw);\n }\n\n // Interlace with the `replacement` value\n if (i < list.length - 1) {\n newParts.push(replacement);\n }\n });\n });\n return newParts;\n}\n\n/**\n * Takes a string with placeholder variables like `%{smart_count} file selected`\n * and replaces it with values from options `{smart_count: 5}`\n *\n * @license https://github.com/airbnb/polyglot.js/blob/master/LICENSE\n * taken from https://github.com/airbnb/polyglot.js/blob/master/lib/polyglot.js#L299\n *\n * @param phrase that needs interpolation, with placeholders\n * @param options with values that will be used to replace placeholders\n */\nfunction interpolate(phrase, options) {\n const dollarRegex = /\\$/g;\n const dollarBillsYall = '$$$$';\n let interpolated = [phrase];\n if (options == null) return interpolated;\n for (const arg of Object.keys(options)) {\n if (arg !== '_') {\n // Ensure replacement value is escaped to prevent special $-prefixed\n // regex replace tokens. the \"$$$$\" is needed because each \"$\" needs to\n // be escaped with \"$\" itself, and we need two in the resulting output.\n let replacement = options[arg];\n if (typeof replacement === 'string') {\n replacement = dollarRegex[Symbol.replace](replacement, dollarBillsYall);\n }\n // We create a new `RegExp` each time instead of using a more-efficient\n // string replace so that the same argument can be replaced multiple times\n // in the same phrase.\n interpolated = insertReplacement(interpolated, new RegExp(`%\\\\{${arg}\\\\}`, 'g'), replacement);\n }\n }\n return interpolated;\n}\nconst defaultOnMissingKey = key => {\n throw new Error(`missing string: ${key}`);\n};\n\n/**\n * Translates strings with interpolation & pluralization support.\n * Extensible with custom dictionaries and pluralization functions.\n *\n * Borrows heavily from and inspired by Polyglot https://github.com/airbnb/polyglot.js,\n * basically a stripped-down version of it. Differences: pluralization functions are not hardcoded\n * and can be easily added among with dictionaries, nested objects are used for pluralization\n * as opposed to `||||` delimeter\n *\n * Usage example: `translator.translate('files_chosen', {smart_count: 3})`\n */\nvar _onMissingKey = /*#__PURE__*/_classPrivateFieldLooseKey(\"onMissingKey\");\nvar _apply = /*#__PURE__*/_classPrivateFieldLooseKey(\"apply\");\nexport default class Translator {\n constructor(locales, _temp) {\n let {\n onMissingKey = defaultOnMissingKey\n } = _temp === void 0 ? {} : _temp;\n Object.defineProperty(this, _apply, {\n value: _apply2\n });\n Object.defineProperty(this, _onMissingKey, {\n writable: true,\n value: void 0\n });\n this.locale = {\n strings: {},\n pluralize(n) {\n if (n === 1) {\n return 0;\n }\n return 1;\n }\n };\n if (Array.isArray(locales)) {\n locales.forEach(_classPrivateFieldLooseBase(this, _apply)[_apply], this);\n } else {\n _classPrivateFieldLooseBase(this, _apply)[_apply](locales);\n }\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey] = onMissingKey;\n }\n /**\n * Public translate method\n *\n * @param key\n * @param options with values that will be used later to replace placeholders in string\n * @returns string translated (and interpolated)\n */\n translate(key, options) {\n return this.translateArray(key, options).join('');\n }\n\n /**\n * Get a translation and return the translated and interpolated parts as an array.\n *\n * @returns The translated and interpolated parts, in order.\n */\n translateArray(key, options) {\n let string = this.locale.strings[key];\n if (string == null) {\n _classPrivateFieldLooseBase(this, _onMissingKey)[_onMissingKey](key);\n string = key;\n }\n const hasPluralForms = typeof string === 'object';\n if (hasPluralForms) {\n if (options && typeof options.smart_count !== 'undefined') {\n const plural = this.locale.pluralize(options.smart_count);\n return interpolate(string[plural], options);\n }\n throw new Error('Attempted to use a string with plural forms, but no value was given for %{smart_count}');\n }\n if (typeof string !== 'string') {\n throw new Error(`string was not a string`);\n }\n return interpolate(string, options);\n }\n}\nfunction _apply2(locale) {\n if (!(locale != null && locale.strings)) {\n return;\n }\n const prevLocale = this.locale;\n Object.assign(this.locale, {\n strings: {\n ...prevLocale.strings,\n ...locale.strings\n },\n pluralize: locale.pluralize || prevLocale.pluralize\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 \u2013 the name of the event, with optional namespace\n * @param {...*} data \u2013 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] \u2013 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", "/**\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", "/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n", "var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n", "var root = require('./_root');\n\n/**\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", "/** 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 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", "var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n", "var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n", "/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n", "var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n", "/**\n * Checks if `value` is 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 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 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", "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", "// Adapted from https://github.com/Flet/prettier-bytes/\n// Changing 1000 bytes to 1024, so we can keep uppercase KB vs kB\n// ISC License (c) Dan Flettre https://github.com/Flet/prettier-bytes/blob/master/LICENSE\nexport = function prettierBytes(num: number): string {\n if (typeof num !== 'number' || Number.isNaN(num)) {\n throw new TypeError(`Expected a number, got ${typeof num}`)\n }\n\n const neg = num < 0\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']\n\n if (neg) {\n num = -num\n }\n\n if (num < 1) {\n return `${(neg ? '-' : '') + num} B`\n }\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\n if (num >= 10 || num % 1 === 0) {\n // Do not show decimals when the number is two-digit, or if the number has no\n // decimal component.\n return `${(neg ? '-' : '') + num.toFixed(0)} ${unit}`\n }\n\n return `${(neg ? '-' : '') + num.toFixed(1)} ${unit}`\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 <https://github.com/isaacs/node-glob>\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", "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", "/* 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 \u201Crequired\u201D or \u201Calways defined\u201D.\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}", "/*!\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\tvar nativeCodeString = '[native code]';\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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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", "'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", "'use strict'\n\nmodule.exports = isMobile\nmodule.exports.isMobile = isMobile\nmodule.exports.default = isMobile\n\nconst mobileRE = /(android|bb\\d+|meego).+mobile|armv7l|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i\nconst notMobileRE = /CrOS/\n\nconst tabletRE = /android|ipad|playbook|silk/i\n\nfunction isMobile (opts) {\n if (!opts) opts = {}\n let ua = opts.ua\n if (!ua && typeof navigator !== 'undefined') ua = navigator.userAgent\n if (ua && ua.headers && typeof ua.headers['user-agent'] === 'string') {\n ua = ua.headers['user-agent']\n }\n if (typeof ua !== 'string') return false\n\n let result =\n (mobileRE.test(ua) && !notMobileRE.test(ua)) ||\n (!!opts.tablet && tabletRE.test(ua))\n\n if (\n !result &&\n opts.tablet &&\n opts.featureDetect &&\n navigator &&\n navigator.maxTouchPoints > 1 &&\n ua.indexOf('Macintosh') !== -1 &&\n ua.indexOf('Safari') !== -1\n ) {\n result = true\n }\n\n return result\n}\n", "export function number(n: number) {\n if (!Number.isSafeInteger(n) || n < 0) throw new Error(`Wrong positive integer: ${n}`);\n}\n\nexport function bool(b: boolean) {\n if (typeof b !== 'boolean') throw new Error(`Expected boolean, not ${b}`);\n}\n\nexport function bytes(b: Uint8Array | undefined, ...lengths: number[]) {\n if (!(b instanceof Uint8Array)) throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\n\ntype Hash = {\n (data: Uint8Array): Uint8Array;\n blockLen: number;\n outputLen: number;\n create: any;\n};\nexport function hash(hash: Hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\n\nexport function exists(instance: any, checkFinished = true) {\n if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\nexport function output(out: any, instance: any) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\n\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\n\nexport default assert;\n", "const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n: bigint, le = false) {\n if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nexport function split(lst: bigint[], le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\n\nexport const toBig = (h: number, l: number) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, l: number, s: number) => h >>> s;\nconst shrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h: number, l: number) => l;\nconst rotr32L = (h: number, l: number) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number) => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah: number, Al: number, Bh: number, Bl: number) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number) =>\n (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number) =>\n (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number) =>\n (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) =>\n (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n", "declare const globalThis: Record<string, any> | undefined;\nexport const crypto =\n typeof globalThis === 'object' && 'crypto' in globalThis ? globalThis.crypto : undefined;\n", "/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use `globalThis.crypto`, but node.js versions earlier than v19 don't\n// declare it in global scope. For node.js, package.json#exports field mapping\n// rewrites import from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated, we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n// Cast array to different type\nexport const u8 = (arr: TypedArray) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr: TypedArray) =>\n new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n\n// Cast array to view\nexport const createView = (arr: TypedArray) =>\n new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word: number, shift: number) => (word << (32 - shift)) | (word >>> shift);\n\n// big-endian hardware is rare. Just in case someone still decides to run hashes:\n// early-throw an error because we don't support BE yet.\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\nif (!isLE) throw new Error('Non little-endian hardware is not supported');\n\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef])) // 'deadbeef'\n */\nexport function bytesToHex(uint8a: Uint8Array): string {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array)) throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n\n/**\n * @example hexToBytes('deadbeef') // Uint8Array.from([0xde, 0xad, 0xbe, 0xef])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2) throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0) throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n\n// There is no setImmediate in browser and setTimeout is slow.\n// call of async fn will return Promise, which will be fullfiled only on\n// next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => {};\n\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters: number, tick: number, cb: (i: number) => void) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick) continue;\n await nextTick();\n ts += diff;\n }\n}\n\n// Global symbols in both browsers and Node.js since v11\n// See https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\nexport function utf8ToBytes(str: string): Uint8Array {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\n\nexport type Input = Uint8Array | string;\nexport function toBytes(data: Input): Uint8Array {\n if (typeof data === 'string') data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n if (!arrays.every((a) => a instanceof Uint8Array)) throw new Error('Uint8Array list expected');\n if (arrays.length === 1) return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n\n// For runtime check if class implements interface\nexport abstract class Hash<T extends Hash<T>> {\n abstract blockLen: number; // Bytes per block\n abstract outputLen: number; // Bytes in output\n abstract update(buf: Input): this;\n // Writes digest into buf\n abstract digestInto(buf: Uint8Array): void;\n abstract digest(): Uint8Array;\n /**\n * Resets internal state. Makes Hash instance unusable.\n * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n * by user, they will need to manually call `destroy()` when zeroing is necessary.\n */\n abstract destroy(): void;\n /**\n * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n * when no options are passed.\n * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n * There are no guarantees for clean-up because it's impossible in JS.\n */\n abstract _cloneInto(to?: T): T;\n // Safe version that clones internal state\n clone(): T {\n return this._cloneInto();\n }\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj: any) =>\n Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n defaults: T1,\n opts?: T2\n): T1 & T2 {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged as T1 & T2;\n}\n\nexport type CHash = ReturnType<typeof wrapConstructor>;\n\nexport function wrapConstructor<T extends Hash<T>>(hashConstructor: () => Hash<T>) {\n const hashC = (message: Input): Uint8Array => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\n\nexport function wrapConstructorWithOpts<H extends Hash<H>, T extends Object>(\n hashCons: (opts?: T) => Hash<H>\n) {\n const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({} as T);\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts: T) => hashCons(opts);\n return hashC;\n}\n\n/**\n * Secure PRNG. Uses `globalThis.crypto` or node.js crypto module.\n */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n if (crypto && typeof crypto.getRandomValues === 'function') {\n return crypto.getRandomValues(new Uint8Array(bytesLength));\n }\n throw new Error('crypto.getRandomValues must be defined');\n}\n", "import assert from './_assert.js';\nimport u64 from './_u64.js';\nimport {\n Hash,\n u32,\n Input,\n toBytes,\n wrapConstructor,\n wrapConstructorWithOpts,\n HashXOF,\n} from './utils.js';\n\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA]: [number[], number[], bigint[]] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n) t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) =>\n s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h: number, l: number, s: number) =>\n s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s: Uint32Array, rounds: number = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta \u03B8\n for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (\u03C1) and Pi (\u03C0)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (\u03C7)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++) B[x] = s[y + x];\n for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (\u03B9)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\n\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n protected state: Uint8Array;\n protected pos = 0;\n protected posOut = 0;\n protected finished = false;\n protected state32: Uint32Array;\n protected destroyed = false;\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(\n public blockLen: number,\n public suffix: number,\n public outputLen: number,\n protected enableXOF = false,\n protected rounds: number = 24\n ) {\n super();\n // Can be passed from user as dkLen\n assert.number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n protected keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data: Input) {\n assert.exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len; ) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen) this.keccak();\n }\n return this;\n }\n protected finish() {\n if (this.finished) return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n protected writeInto(out: Uint8Array): Uint8Array {\n assert.exists(this, false);\n assert.bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len; ) {\n if (this.posOut >= blockLen) this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out: Uint8Array): Uint8Array {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes: number): Uint8Array {\n assert.number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out: Uint8Array) {\n assert.output(out, this);\n if (this.finished) throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to?: Keccak): Keccak {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\n\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n wrapConstructorWithOpts<Keccak, ShakeOpts>(\n (opts: ShakeOpts = {}) =>\n new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n );\n\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n", "/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n let entropy = \"\";\n\n while (entropy.length < length) {\n entropy = entropy + Math.floor(random() * 36).toString(36);\n }\n return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hern\u00E1ndez Serrano\n */\nfunction bufToBigInt(buf) {\n let bits = 8n;\n\n let value = 0n;\n for (const i of buf.values()) {\n const bi = BigInt(i);\n value = (value << bits) + bi;\n }\n return value;\n}\n\nconst hash = (input = \"\") => {\n // Drop the first character because it will bias the histogram\n // to the left.\n return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n globalObj = typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : {},\n random = Math.random,\n} = {}) => {\n const globals = Object.keys(globalObj).toString();\n const sourceString = globals.length\n ? globals + createEntropy(bigLength, random)\n : createEntropy(bigLength, random);\n\n return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n // Fallback if the user does not pass in a CSPRNG. This should be OK\n // because we don't rely solely on the random number generator for entropy.\n // We also use the host fingerprint, current time, and a session counter.\n random = Math.random,\n counter = createCounter(Math.floor(random() * initialCountMax)),\n length = defaultLength,\n fingerprint = createFingerprint({ random }),\n} = {}) => {\n return function cuid2() {\n const firstLetter = randomLetter(random);\n\n // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n // by shortening the input to the hash function a little.\n const time = Date.now().toString(36);\n const count = counter().toString(36);\n\n // The salt should be long enough to be globally unique across the full\n // length of the hash. For simplicity, we use the same length as the\n // intended id output.\n const salt = createEntropy(length, random);\n const hashInput = `${time + salt + count + fingerprint}`;\n\n return `${firstLetter + hash(hashInput).substring(1, length)}`;\n };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n const length = id.length;\n const regex = /^[0-9a-z]+$/;\n\n try {\n if (\n typeof id === \"string\" &&\n length >= minLength &&\n length <= maxLength &&\n regex.test(id)\n )\n return true;\n } finally {\n }\n\n return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n", "const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\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');", "(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n \"use strict\";\n var sparkMd5 = {\n exports: {}\n };\n (function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n })(sparkMd5);\n var SparkMD5 = sparkMd5.exports;\n const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n class FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }\n function getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n class BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }\n class BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n }\n let id = 0;\n class DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n }\n function notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n }\n class DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n }\n const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n class DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n }\n const processingAttribute = \"data-direct-uploads-processing\";\n const submitButtonsByForm = new WeakMap;\n let started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n }\n function submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.DirectUpload = DirectUpload;\n exports.DirectUploadController = DirectUploadController;\n exports.DirectUploadsController = DirectUploadsController;\n exports.start = start;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n}));\n", "/* eslint-disable no-undef */\nimport BasePlugin from \"@uppy/core/lib/BasePlugin.js\"\nimport { createId } from \"@paralleldrive/cuid2\"\n// const Translator = require('@uppy/utils/lib/Translator');\n// const { Provider, Socket } = require('@uppy/companion-client');\n// const emitSocketProgress = require('@uppy/utils/lib/emitSocketProgress');\n// const getSocketHost = require('@uppy/utils/lib/getSocketHost');\nimport \"@uppy/utils/lib/RateLimitedQueue\"\nconst { DirectUpload } = require(\"@rails/activestorage\")\n\nmodule.exports = class ActiveStorageUpload extends BasePlugin {\n constructor(uppy, opts) {\n super(uppy, opts)\n\n this.id = opts.id || \"ActiveStorageUpload\"\n this.title = opts.title || \"ActiveStorageUpload\"\n this.type = \"uploader\"\n\n const defaultOptions = {\n limit: 0,\n timeout: 30 * 1000,\n directUploadUrl: null,\n }\n\n this.opts = Object.assign({}, defaultOptions, opts)\n\n // Simultaneous upload limiting is shared across all uploads with this plugin.\n if (typeof this.opts.limit === \"number\" && this.opts.limit !== 0) {\n this.limitUploads = new RateLimitedQueue(this.opts.limit)\n } else {\n this.limitUploads = fn => fn\n }\n\n this.handleUpload = this.handleUpload.bind(this)\n }\n\n install() {\n this.uppy.addUploader(this.handleUpload)\n }\n\n uninstall() {\n this.uppy.removeUploader(this.handleUpload)\n }\n\n handleUpload(fileIDs) {\n if (fileIDs.length === 0) {\n this.uppy.log(\"[ActiveStorage] No files to upload!\")\n return Promise.resolve()\n }\n\n this.uppy.log(\"[ActiveStorage] Uploading...\")\n const files = fileIDs.map(fileID => this.uppy.getFile(fileID))\n\n return this.uploadFiles(files).then(() => null)\n }\n\n upload(file, current, total) {\n this.uppy.log(`uploading ${current} of ${total}`)\n\n return new Promise((resolve, reject) => {\n const timer = this.createProgressTimeout(this.opts.timeout, error => {\n //xhr.abort();\n this.uppy.emit(\"upload-error\", file, error)\n reject(error)\n })\n\n var directHandlers = {\n directUploadWillStoreFileWithXHR: null,\n directUploadDidProgress: null,\n }\n directHandlers.directUploadDidProgress = ev => {\n this.uppy.log(`[XHRUpload] ${id} progress: ${ev.loaded} / ${ev.total}`)\n timer.progress()\n\n if (ev.lengthComputable) {\n this.uppy.emit(\"upload-progress\", file, {\n uploader: this,\n bytesUploaded: ev.loaded,\n bytesTotal: ev.total,\n })\n }\n }\n directHandlers.directUploadWillStoreFileWithXHR = request => {\n request.upload.addEventListener(\"progress\", event =>\n directHandlers.directUploadDidProgress(event)\n )\n }\n\n const { data, meta } = file\n\n if (!data.name && meta.name) {\n data.name = meta.name\n }\n\n const upload = new DirectUpload(data, this.opts.directUploadUrl, directHandlers);\n const id = createId()\n\n upload.create((error, blob) => {\n this.uppy.log(`[XHRUpload] ${id} finished`)\n timer.done()\n\n if (error) {\n const response = {\n status: \"error\",\n }\n\n this.uppy.setFileState(file.id, { response })\n\n this.uppy.emit(\"upload-error\", file, error)\n return reject(error)\n } else {\n const response = {\n status: \"success\",\n directUploadSignedId: blob.signed_id,\n }\n\n this.uppy.setFileState(file.id, { response })\n\n this.uppy.emit(\"upload-success\", file, blob)\n\n return resolve(file)\n }\n })\n\n this.uppy.on(\"file-removed\", removedFile => {\n if (removedFile.id === file.id) {\n timer.done()\n upload.abort && upload.abort()\n }\n })\n\n this.uppy.on(\"upload-cancel\", fileID => {\n if (fileID === file.id) {\n timer.done()\n upload.abort && upload.abort()\n }\n })\n\n this.uppy.on(\"cancel-all\", () => {\n timer.done()\n upload.abort && upload.abort()\n })\n })\n }\n\n uploadFiles(files) {\n const actions = files.map((file, i) => {\n const current = parseInt(i, 10) + 1\n const total = files.length\n\n if (file.error) {\n return () => Promise.reject(new Error(file.error))\n } else {\n this.uppy.emit(\"upload-start\", [file])\n return this.upload.bind(this, file, current, total)\n }\n })\n\n const promises = actions.map(action => {\n const limitedAction = this.limitUploads(action)\n return limitedAction()\n })\n\n return Promise.allSettled(promises)\n }\n\n // Helper to abort upload requests if there has not been any progress for `timeout` ms.\n // Create an instance using `timer = createProgressTimeout(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 createProgressTimeout(timeout, timeoutHandler) {\n const uppy = this.uppy\n const self = this\n let isDone = false\n\n function onTimedOut() {\n uppy.log(\"[XHRUpload] timed out\")\n const error = new Error(self.i18n(\"timedOut\", { seconds: Math.ceil(timeout / 1000) }))\n timeoutHandler(error)\n }\n\n let aliveTimer = null\n function 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 (isDone) return\n\n if (timeout > 0) {\n if (aliveTimer) clearTimeout(aliveTimer)\n aliveTimer = setTimeout(onTimedOut, timeout)\n }\n }\n\n function done() {\n uppy.log(\"[XHRUpload] timer done\")\n if (aliveTimer) {\n clearTimeout(aliveTimer)\n aliveTimer = null\n }\n isDone = true\n }\n\n return {\n progress,\n done,\n }\n }\n}\n", "/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n", "(function(global, factory) {\n typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : (global = typeof globalThis !== \"undefined\" ? globalThis : global || self, \n factory(global.ActiveStorage = {}));\n})(this, (function(exports) {\n \"use strict\";\n var sparkMd5 = {\n exports: {}\n };\n (function(module, exports) {\n (function(factory) {\n {\n module.exports = factory();\n }\n })((function(undefined$1) {\n var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n function md5cycle(x, k) {\n var a = x[0], b = x[1], c = x[2], d = x[3];\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n function md5blk(s) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n function md5blk_array(a) {\n var md5blks = [], i;\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n function md51(s) {\n var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function md51_array(a) {\n var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n length = a.length;\n tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << (i % 4 << 3);\n }\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(state, tail);\n return state;\n }\n function rhex(n) {\n var s = \"\", j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n }\n return s;\n }\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join(\"\");\n }\n if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n (function() {\n function clamp(val, length) {\n val = val | 0 || 0;\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n return Math.min(val, length);\n }\n ArrayBuffer.prototype.slice = function(from, to) {\n var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n if (to !== undefined$1) {\n end = clamp(to, length);\n }\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n return target;\n };\n })();\n }\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n return str;\n }\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n return returnUInt8Array ? arr : buff;\n }\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n return returnUInt8Array ? result : result.buffer;\n }\n function hexToBinaryString(hex) {\n var bytes = [], length = hex.length, x;\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n return String.fromCharCode.apply(String, bytes);\n }\n function SparkMD5() {\n this.reset();\n }\n SparkMD5.prototype.append = function(str) {\n this.appendBinary(toUtf8(str));\n return this;\n };\n SparkMD5.prototype.appendBinary = function(contents) {\n this._buff += contents;\n this._length += contents.length;\n var length = this._buff.length, i;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n this._buff = this._buff.substring(i - 64);\n return this;\n };\n SparkMD5.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.prototype.reset = function() {\n this._buff = \"\";\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.prototype.getState = function() {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n SparkMD5.prototype.setState = function(state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n return this;\n };\n SparkMD5.prototype.destroy = function() {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n SparkMD5.prototype._finish = function(tail, length) {\n var i = length, tmp, lo, hi;\n tail[i >> 2] |= 128 << (i % 4 << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n SparkMD5.hash = function(str, raw) {\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n SparkMD5.hashBinary = function(content, raw) {\n var hash = md51(content), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n SparkMD5.ArrayBuffer = function() {\n this.reset();\n };\n SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n this._length += arr.byteLength;\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << (i % 4 << 3);\n }\n this._finish(tail, length);\n ret = hex(this._hash);\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n this.reset();\n return ret;\n };\n SparkMD5.ArrayBuffer.prototype.reset = function() {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n return this;\n };\n SparkMD5.ArrayBuffer.prototype.getState = function() {\n var state = SparkMD5.prototype.getState.call(this);\n state.buff = arrayBuffer2Utf8Str(state.buff);\n return state;\n };\n SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n return SparkMD5.prototype.setState.call(this, state);\n };\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n return raw ? hexToBinaryString(ret) : ret;\n };\n return SparkMD5;\n }));\n })(sparkMd5);\n var SparkMD5 = sparkMd5.exports;\n const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n class FileChecksum {\n static create(file, callback) {\n const instance = new FileChecksum(file);\n instance.create(callback);\n }\n constructor(file) {\n this.file = file;\n this.chunkSize = 2097152;\n this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n this.chunkIndex = 0;\n }\n create(callback) {\n this.callback = callback;\n this.md5Buffer = new SparkMD5.ArrayBuffer;\n this.fileReader = new FileReader;\n this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n this.readNextChunk();\n }\n fileReaderDidLoad(event) {\n this.md5Buffer.append(event.target.result);\n if (!this.readNextChunk()) {\n const binaryDigest = this.md5Buffer.end(true);\n const base64digest = btoa(binaryDigest);\n this.callback(null, base64digest);\n }\n }\n fileReaderDidError(event) {\n this.callback(`Error reading ${this.file.name}`);\n }\n readNextChunk() {\n if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n const start = this.chunkIndex * this.chunkSize;\n const end = Math.min(start + this.chunkSize, this.file.size);\n const bytes = fileSlice.call(this.file, start, end);\n this.fileReader.readAsArrayBuffer(bytes);\n this.chunkIndex++;\n return true;\n } else {\n return false;\n }\n }\n }\n function getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n }\n function findElements(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n const elements = root.querySelectorAll(selector);\n return toArray(elements);\n }\n function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n }\n function dispatchEvent(element, type, eventInit = {}) {\n const {disabled: disabled} = element;\n const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n const event = document.createEvent(\"Event\");\n event.initEvent(type, bubbles || true, cancelable || true);\n event.detail = detail || {};\n try {\n element.disabled = false;\n element.dispatchEvent(event);\n } finally {\n element.disabled = disabled;\n }\n return event;\n }\n function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n }\n class BlobRecord {\n constructor(file, checksum, url, customHeaders = {}) {\n this.file = file;\n this.attributes = {\n filename: file.name,\n content_type: file.type || \"application/octet-stream\",\n byte_size: file.size,\n checksum: checksum\n };\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"POST\", url, true);\n this.xhr.responseType = \"json\";\n this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n Object.keys(customHeaders).forEach((headerKey => {\n this.xhr.setRequestHeader(headerKey, customHeaders[headerKey]);\n }));\n const csrfToken = getMetaValue(\"csrf-token\");\n if (csrfToken != undefined) {\n this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n get status() {\n return this.xhr.status;\n }\n get response() {\n const {responseType: responseType, response: response} = this.xhr;\n if (responseType == \"json\") {\n return response;\n } else {\n return JSON.parse(response);\n }\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(JSON.stringify({\n blob: this.attributes\n }));\n }\n requestDidLoad(event) {\n if (this.status >= 200 && this.status < 300) {\n const {response: response} = this;\n const {direct_upload: direct_upload} = response;\n delete response.direct_upload;\n this.attributes = response;\n this.directUploadData = direct_upload;\n this.callback(null, this.toJSON());\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n }\n toJSON() {\n const result = {};\n for (const key in this.attributes) {\n result[key] = this.attributes[key];\n }\n return result;\n }\n }\n class BlobUpload {\n constructor(blob) {\n this.blob = blob;\n this.file = blob.file;\n const {url: url, headers: headers} = blob.directUploadData;\n this.xhr = new XMLHttpRequest;\n this.xhr.open(\"PUT\", url, true);\n this.xhr.responseType = \"text\";\n for (const key in headers) {\n this.xhr.setRequestHeader(key, headers[key]);\n }\n this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n }\n create(callback) {\n this.callback = callback;\n this.xhr.send(this.file.slice());\n }\n requestDidLoad(event) {\n const {status: status, response: response} = this.xhr;\n if (status >= 200 && status < 300) {\n this.callback(null, response);\n } else {\n this.requestDidError(event);\n }\n }\n requestDidError(event) {\n this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n }\n }\n let id = 0;\n class DirectUpload {\n constructor(file, url, delegate, customHeaders = {}) {\n this.id = ++id;\n this.file = file;\n this.url = url;\n this.delegate = delegate;\n this.customHeaders = customHeaders;\n }\n create(callback) {\n FileChecksum.create(this.file, ((error, checksum) => {\n if (error) {\n callback(error);\n return;\n }\n const blob = new BlobRecord(this.file, checksum, this.url, this.customHeaders);\n notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n blob.create((error => {\n if (error) {\n callback(error);\n } else {\n const upload = new BlobUpload(blob);\n notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n upload.create((error => {\n if (error) {\n callback(error);\n } else {\n callback(null, blob.toJSON());\n }\n }));\n }\n }));\n }));\n }\n }\n function notify(object, methodName, ...messages) {\n if (object && typeof object[methodName] == \"function\") {\n return object[methodName](...messages);\n }\n }\n class DirectUploadController {\n constructor(input, file) {\n this.input = input;\n this.file = file;\n this.directUpload = new DirectUpload(this.file, this.url, this);\n this.dispatch(\"initialize\");\n }\n start(callback) {\n const hiddenInput = document.createElement(\"input\");\n hiddenInput.type = \"hidden\";\n hiddenInput.name = this.input.name;\n this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n this.dispatch(\"start\");\n this.directUpload.create(((error, attributes) => {\n if (error) {\n hiddenInput.parentNode.removeChild(hiddenInput);\n this.dispatchError(error);\n } else {\n hiddenInput.value = attributes.signed_id;\n }\n this.dispatch(\"end\");\n callback(error);\n }));\n }\n uploadRequestDidProgress(event) {\n const progress = event.loaded / event.total * 100;\n if (progress) {\n this.dispatch(\"progress\", {\n progress: progress\n });\n }\n }\n get url() {\n return this.input.getAttribute(\"data-direct-upload-url\");\n }\n dispatch(name, detail = {}) {\n detail.file = this.file;\n detail.id = this.directUpload.id;\n return dispatchEvent(this.input, `direct-upload:${name}`, {\n detail: detail\n });\n }\n dispatchError(error) {\n const event = this.dispatch(\"error\", {\n error: error\n });\n if (!event.defaultPrevented) {\n alert(error);\n }\n }\n directUploadWillCreateBlobWithXHR(xhr) {\n this.dispatch(\"before-blob-request\", {\n xhr: xhr\n });\n }\n directUploadWillStoreFileWithXHR(xhr) {\n this.dispatch(\"before-storage-request\", {\n xhr: xhr\n });\n xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n }\n }\n const inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n class DirectUploadsController {\n constructor(form) {\n this.form = form;\n this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n }\n start(callback) {\n const controllers = this.createDirectUploadControllers();\n const startNextController = () => {\n const controller = controllers.shift();\n if (controller) {\n controller.start((error => {\n if (error) {\n callback(error);\n this.dispatch(\"end\");\n } else {\n startNextController();\n }\n }));\n } else {\n callback();\n this.dispatch(\"end\");\n }\n };\n this.dispatch(\"start\");\n startNextController();\n }\n createDirectUploadControllers() {\n const controllers = [];\n this.inputs.forEach((input => {\n toArray(input.files).forEach((file => {\n const controller = new DirectUploadController(input, file);\n controllers.push(controller);\n }));\n }));\n return controllers;\n }\n dispatch(name, detail = {}) {\n return dispatchEvent(this.form, `direct-uploads:${name}`, {\n detail: detail\n });\n }\n }\n const processingAttribute = \"data-direct-uploads-processing\";\n const submitButtonsByForm = new WeakMap;\n let started = false;\n function start() {\n if (!started) {\n started = true;\n document.addEventListener(\"click\", didClick, true);\n document.addEventListener(\"submit\", didSubmitForm, true);\n document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n }\n }\n function didClick(event) {\n const button = event.target.closest(\"button, input\");\n if (button && button.type === \"submit\" && button.form) {\n submitButtonsByForm.set(button.form, button);\n }\n }\n function didSubmitForm(event) {\n handleFormSubmissionEvent(event);\n }\n function didSubmitRemoteElement(event) {\n if (event.target.tagName == \"FORM\") {\n handleFormSubmissionEvent(event);\n }\n }\n function handleFormSubmissionEvent(event) {\n const form = event.target;\n if (form.hasAttribute(processingAttribute)) {\n event.preventDefault();\n return;\n }\n const controller = new DirectUploadsController(form);\n const {inputs: inputs} = controller;\n if (inputs.length) {\n event.preventDefault();\n form.setAttribute(processingAttribute, \"\");\n inputs.forEach(disable);\n controller.start((error => {\n form.removeAttribute(processingAttribute);\n if (error) {\n inputs.forEach(enable);\n } else {\n submitForm(form);\n }\n }));\n }\n }\n function submitForm(form) {\n let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n if (button) {\n const {disabled: disabled} = button;\n button.disabled = false;\n button.focus();\n button.click();\n button.disabled = disabled;\n } else {\n button = document.createElement(\"input\");\n button.type = \"submit\";\n button.style.display = \"none\";\n form.appendChild(button);\n button.click();\n form.removeChild(button);\n }\n submitButtonsByForm.delete(form);\n }\n function disable(input) {\n input.disabled = true;\n }\n function enable(input) {\n input.disabled = false;\n }\n function autostart() {\n if (window.ActiveStorage) {\n start();\n }\n }\n setTimeout(autostart, 1);\n exports.DirectUpload = DirectUpload;\n exports.DirectUploadController = DirectUploadController;\n exports.DirectUploadsController = DirectUploadsController;\n exports.start = start;\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n}));\n", "/*!\nTurbo 8.0.5\nCopyright \u00A9 2024 37signals LLC\n */\n/**\n * The MIT License (MIT)\n *\n * Copyright (c) 2019 Javan Makhmali\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\n * all 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\n * THE SOFTWARE.\n */\n\n(function (prototype) {\n if (typeof prototype.requestSubmit == \"function\") return\n\n prototype.requestSubmit = function (submitter) {\n if (submitter) {\n validateSubmitter(submitter, this);\n submitter.click();\n } else {\n submitter = document.createElement(\"input\");\n submitter.type = \"submit\";\n submitter.hidden = true;\n this.appendChild(submitter);\n submitter.click();\n this.removeChild(submitter);\n }\n };\n\n function validateSubmitter(submitter, form) {\n submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n submitter.form == form ||\n raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n }\n\n function raise(errorConstructor, message, name) {\n throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n const candidate = element ? element.closest(\"input, button\") : null;\n return candidate?.type == \"submit\" ? candidate : null\n}\n\nfunction clickCaptured(event) {\n const submitter = findSubmitterFromClickTarget(event.target);\n\n if (submitter && submitter.form) {\n submittersByForm.set(submitter.form, submitter);\n }\n}\n\n(function () {\n if (\"submitter\" in Event.prototype) return\n\n let prototype = window.Event.prototype;\n // Certain versions of Safari 15 have a bug where they won't\n // populate the submitter. This hurts TurboDrive's enable/disable detection.\n // See https://bugs.webkit.org/show_bug.cgi?id=229660\n if (\"SubmitEvent\" in window) {\n const prototypeOfSubmitEvent = window.SubmitEvent.prototype;\n\n if (/Apple Computer/.test(navigator.vendor) && !(\"submitter\" in prototypeOfSubmitEvent)) {\n prototype = prototypeOfSubmitEvent;\n } else {\n return // polyfill not needed\n }\n }\n\n addEventListener(\"click\", clickCaptured, true);\n\n Object.defineProperty(prototype, \"submitter\", {\n get() {\n if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n return submittersByForm.get(this.target)\n }\n }\n });\n})();\n\nconst FrameLoadingStyle = {\n eager: \"eager\",\n lazy: \"lazy\"\n};\n\n/**\n * Contains a fragment of HTML which is updated based on navigation within\n * it (e.g. via links or form submissions).\n *\n * @customElement turbo-frame\n * @example\n * <turbo-frame id=\"messages\">\n * <a href=\"/messages/expanded\">\n * Show all expanded messages in this frame.\n * </a>\n *\n * <form action=\"/messages\">\n * Show response from this form within this frame.\n * </form>\n * </turbo-frame>\n */\nclass FrameElement extends HTMLElement {\n static delegateConstructor = undefined\n\n loaded = Promise.resolve()\n\n static get observedAttributes() {\n return [\"disabled\", \"loading\", \"src\"]\n }\n\n constructor() {\n super();\n this.delegate = new FrameElement.delegateConstructor(this);\n }\n\n connectedCallback() {\n this.delegate.connect();\n }\n\n disconnectedCallback() {\n this.delegate.disconnect();\n }\n\n reload() {\n return this.delegate.sourceURLReloaded()\n }\n\n attributeChangedCallback(name) {\n if (name == \"loading\") {\n this.delegate.loadingStyleChanged();\n } else if (name == \"src\") {\n this.delegate.sourceURLChanged();\n } else if (name == \"disabled\") {\n this.delegate.disabledChanged();\n }\n }\n\n /**\n * Gets the URL to lazily load source HTML from\n */\n get src() {\n return this.getAttribute(\"src\")\n }\n\n /**\n * Sets the URL to lazily load source HTML from\n */\n set src(value) {\n if (value) {\n this.setAttribute(\"src\", value);\n } else {\n this.removeAttribute(\"src\");\n }\n }\n\n /**\n * Gets the refresh mode for the frame.\n */\n get refresh() {\n return this.getAttribute(\"refresh\")\n }\n\n /**\n * Sets the refresh mode for the frame.\n */\n set refresh(value) {\n if (value) {\n this.setAttribute(\"refresh\", value);\n } else {\n this.removeAttribute(\"refresh\");\n }\n }\n\n /**\n * Determines if the element is loading\n */\n get loading() {\n return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\")\n }\n\n /**\n * Sets the value of if the element is loading\n */\n set loading(value) {\n if (value) {\n this.setAttribute(\"loading\", value);\n } else {\n this.removeAttribute(\"loading\");\n }\n }\n\n /**\n * Gets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n get disabled() {\n return this.hasAttribute(\"disabled\")\n }\n\n /**\n * Sets the disabled state of the frame.\n *\n * If disabled, no requests will be intercepted by the frame.\n */\n set disabled(value) {\n if (value) {\n this.setAttribute(\"disabled\", \"\");\n } else {\n this.removeAttribute(\"disabled\");\n }\n }\n\n /**\n * Gets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n get autoscroll() {\n return this.hasAttribute(\"autoscroll\")\n }\n\n /**\n * Sets the autoscroll state of the frame.\n *\n * If true, the frame will be scrolled into view automatically on update.\n */\n set autoscroll(value) {\n if (value) {\n this.setAttribute(\"autoscroll\", \"\");\n } else {\n this.removeAttribute(\"autoscroll\");\n }\n }\n\n /**\n * Determines if the element has finished loading\n */\n get complete() {\n return !this.delegate.isLoading\n }\n\n /**\n * Gets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isActive() {\n return this.ownerDocument === document && !this.isPreview\n }\n\n /**\n * Sets the active state of the frame.\n *\n * If inactive, source changes will not be observed.\n */\n get isPreview() {\n return this.ownerDocument?.documentElement?.hasAttribute(\"data-turbo-preview\")\n }\n}\n\nfunction frameLoadingStyleFromString(style) {\n switch (style.toLowerCase()) {\n case \"lazy\":\n return FrameLoadingStyle.lazy\n default:\n return FrameLoadingStyle.eager\n }\n}\n\nfunction expandURL(locatable) {\n return new URL(locatable.toString(), document.baseURI)\n}\n\nfunction getAnchor(url) {\n let anchorMatch;\n if (url.hash) {\n return url.hash.slice(1)\n // eslint-disable-next-line no-cond-assign\n } else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n return anchorMatch[1]\n }\n}\n\nfunction getAction$1(form, submitter) {\n const action = submitter?.getAttribute(\"formaction\") || form.getAttribute(\"action\") || form.action;\n\n return expandURL(action)\n}\n\nfunction getExtension(url) {\n return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\"\n}\n\nfunction isHTML(url) {\n return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/)\n}\n\nfunction isPrefixedBy(baseURL, url) {\n const prefix = getPrefix(url);\n return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix)\n}\n\nfunction locationIsVisitable(location, rootLocation) {\n return isPrefixedBy(location, rootLocation) && isHTML(location)\n}\n\nfunction getRequestURL(url) {\n const anchor = getAnchor(url);\n return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href\n}\n\nfunction toCacheKey(url) {\n return getRequestURL(url)\n}\n\nfunction urlsAreEqual(left, right) {\n return expandURL(left).href == expandURL(right).href\n}\n\nfunction getPathComponents(url) {\n return url.pathname.split(\"/\").slice(1)\n}\n\nfunction getLastPathComponent(url) {\n return getPathComponents(url).slice(-1)[0]\n}\n\nfunction getPrefix(url) {\n return addTrailingSlash(url.origin + url.pathname)\n}\n\nfunction addTrailingSlash(value) {\n return value.endsWith(\"/\") ? value : value + \"/\"\n}\n\nclass FetchResponse {\n constructor(response) {\n this.response = response;\n }\n\n get succeeded() {\n return this.response.ok\n }\n\n get failed() {\n return !this.succeeded\n }\n\n get clientError() {\n return this.statusCode >= 400 && this.statusCode <= 499\n }\n\n get serverError() {\n return this.statusCode >= 500 && this.statusCode <= 599\n }\n\n get redirected() {\n return this.response.redirected\n }\n\n get location() {\n return expandURL(this.response.url)\n }\n\n get isHTML() {\n return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/)\n }\n\n get statusCode() {\n return this.response.status\n }\n\n get contentType() {\n return this.header(\"Content-Type\")\n }\n\n get responseText() {\n return this.response.clone().text()\n }\n\n get responseHTML() {\n if (this.isHTML) {\n return this.response.clone().text()\n } else {\n return Promise.resolve(undefined)\n }\n }\n\n header(name) {\n return this.response.headers.get(name)\n }\n}\n\nfunction activateScriptElement(element) {\n if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n return element\n } else {\n const createdScriptElement = document.createElement(\"script\");\n const cspNonce = getMetaContent(\"csp-nonce\");\n if (cspNonce) {\n createdScriptElement.nonce = cspNonce;\n }\n createdScriptElement.textContent = element.textContent;\n createdScriptElement.async = false;\n copyElementAttributes(createdScriptElement, element);\n return createdScriptElement\n }\n}\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n for (const { name, value } of sourceElement.attributes) {\n destinationElement.setAttribute(name, value);\n }\n}\n\nfunction createDocumentFragment(html) {\n const template = document.createElement(\"template\");\n template.innerHTML = html;\n return template.content\n}\n\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n const event = new CustomEvent(eventName, {\n cancelable,\n bubbles: true,\n composed: true,\n detail\n });\n\n if (target && target.isConnected) {\n target.dispatchEvent(event);\n } else {\n document.documentElement.dispatchEvent(event);\n }\n\n return event\n}\n\nfunction nextRepaint() {\n if (document.visibilityState === \"hidden\") {\n return nextEventLoopTick()\n } else {\n return nextAnimationFrame()\n }\n}\n\nfunction nextAnimationFrame() {\n return new Promise((resolve) => requestAnimationFrame(() => resolve()))\n}\n\nfunction nextEventLoopTick() {\n return new Promise((resolve) => setTimeout(() => resolve(), 0))\n}\n\nfunction nextMicrotask() {\n return Promise.resolve()\n}\n\nfunction parseHTMLDocument(html = \"\") {\n return new DOMParser().parseFromString(html, \"text/html\")\n}\n\nfunction unindent(strings, ...values) {\n const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n const match = lines[0].match(/^\\s+/);\n const indent = match ? match[0].length : 0;\n return lines.map((line) => line.slice(indent)).join(\"\\n\")\n}\n\nfunction interpolate(strings, values) {\n return strings.reduce((result, string, i) => {\n const value = values[i] == undefined ? \"\" : values[i];\n return result + string + value\n }, \"\")\n}\n\nfunction uuid() {\n return Array.from({ length: 36 })\n .map((_, i) => {\n if (i == 8 || i == 13 || i == 18 || i == 23) {\n return \"-\"\n } else if (i == 14) {\n return \"4\"\n } else if (i == 19) {\n return (Math.floor(Math.random() * 4) + 8).toString(16)\n } else {\n return Math.floor(Math.random() * 15).toString(16)\n }\n })\n .join(\"\")\n}\n\nfunction getAttribute(attributeName, ...elements) {\n for (const value of elements.map((element) => element?.getAttribute(attributeName))) {\n if (typeof value == \"string\") return value\n }\n\n return null\n}\n\nfunction hasAttribute(attributeName, ...elements) {\n return elements.some((element) => element && element.hasAttribute(attributeName))\n}\n\nfunction markAsBusy(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.setAttribute(\"busy\", \"\");\n }\n element.setAttribute(\"aria-busy\", \"true\");\n }\n}\n\nfunction clearBusyState(...elements) {\n for (const element of elements) {\n if (element.localName == \"turbo-frame\") {\n element.removeAttribute(\"busy\");\n }\n\n element.removeAttribute(\"aria-busy\");\n }\n}\n\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n return new Promise((resolve) => {\n const onComplete = () => {\n element.removeEventListener(\"error\", onComplete);\n element.removeEventListener(\"load\", onComplete);\n resolve();\n };\n\n element.addEventListener(\"load\", onComplete, { once: true });\n element.addEventListener(\"error\", onComplete, { once: true });\n setTimeout(resolve, timeoutInMilliseconds);\n })\n}\n\nfunction getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n}\n\nfunction isAction(action) {\n return action == \"advance\" || action == \"replace\" || action == \"restore\"\n}\n\nfunction getVisitAction(...elements) {\n const action = getAttribute(\"data-turbo-action\", ...elements);\n\n return isAction(action) ? action : null\n}\n\nfunction getMetaElement(name) {\n return document.querySelector(`meta[name=\"${name}\"]`)\n}\n\nfunction getMetaContent(name) {\n const element = getMetaElement(name);\n return element && element.content\n}\n\nfunction setMetaContent(name, content) {\n let element = getMetaElement(name);\n\n if (!element) {\n element = document.createElement(\"meta\");\n element.setAttribute(\"name\", name);\n\n document.head.appendChild(element);\n }\n\n element.setAttribute(\"content\", content);\n\n return element\n}\n\nfunction findClosestRecursively(element, selector) {\n if (element instanceof Element) {\n return (\n element.closest(selector) || findClosestRecursively(element.assignedSlot || element.getRootNode()?.host, selector)\n )\n }\n}\n\nfunction elementIsFocusable(element) {\n const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n\n return !!element && element.closest(inertDisabledOrHidden) == null && typeof element.focus == \"function\"\n}\n\nfunction queryAutofocusableElement(elementOrDocumentFragment) {\n return Array.from(elementOrDocumentFragment.querySelectorAll(\"[autofocus]\")).find(elementIsFocusable)\n}\n\nasync function around(callback, reader) {\n const before = reader();\n\n callback();\n\n await nextAnimationFrame();\n\n const after = reader();\n\n return [before, after]\n}\n\nfunction doesNotTargetIFrame(name) {\n if (name === \"_blank\") {\n return false\n } else if (name) {\n for (const element of document.getElementsByName(name)) {\n if (element instanceof HTMLIFrameElement) return false\n }\n\n return true\n } else {\n return true\n }\n}\n\nfunction findLinkFromClickTarget(target) {\n return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\")\n}\n\nfunction getLocationForLink(link) {\n return expandURL(link.getAttribute(\"href\") || \"\")\n}\n\nfunction debounce(fn, delay) {\n let timeoutId = null;\n\n return (...args) => {\n const callback = () => fn.apply(this, args);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(callback, delay);\n }\n}\n\nclass LimitedSet extends Set {\n constructor(maxSize) {\n super();\n this.maxSize = maxSize;\n }\n\n add(value) {\n if (this.size >= this.maxSize) {\n const iterator = this.values();\n const oldestValue = iterator.next().value;\n this.delete(oldestValue);\n }\n super.add(value);\n }\n}\n\nconst recentRequests = new LimitedSet(20);\n\nconst nativeFetch = window.fetch;\n\nfunction fetchWithTurboHeaders(url, options = {}) {\n const modifiedHeaders = new Headers(options.headers || {});\n const requestUID = uuid();\n recentRequests.add(requestUID);\n modifiedHeaders.append(\"X-Turbo-Request-Id\", requestUID);\n\n return nativeFetch(url, {\n ...options,\n headers: modifiedHeaders\n })\n}\n\nfunction fetchMethodFromString(method) {\n switch (method.toLowerCase()) {\n case \"get\":\n return FetchMethod.get\n case \"post\":\n return FetchMethod.post\n case \"put\":\n return FetchMethod.put\n case \"patch\":\n return FetchMethod.patch\n case \"delete\":\n return FetchMethod.delete\n }\n}\n\nconst FetchMethod = {\n get: \"get\",\n post: \"post\",\n put: \"put\",\n patch: \"patch\",\n delete: \"delete\"\n};\n\nfunction fetchEnctypeFromString(encoding) {\n switch (encoding.toLowerCase()) {\n case FetchEnctype.multipart:\n return FetchEnctype.multipart\n case FetchEnctype.plain:\n return FetchEnctype.plain\n default:\n return FetchEnctype.urlEncoded\n }\n}\n\nconst FetchEnctype = {\n urlEncoded: \"application/x-www-form-urlencoded\",\n multipart: \"multipart/form-data\",\n plain: \"text/plain\"\n};\n\nclass FetchRequest {\n abortController = new AbortController()\n #resolveRequestPromise = (_value) => {}\n\n constructor(delegate, method, location, requestBody = new URLSearchParams(), target = null, enctype = FetchEnctype.urlEncoded) {\n const [url, body] = buildResourceAndBody(expandURL(location), method, requestBody, enctype);\n\n this.delegate = delegate;\n this.url = url;\n this.target = target;\n this.fetchOptions = {\n credentials: \"same-origin\",\n redirect: \"follow\",\n method: method.toUpperCase(),\n headers: { ...this.defaultHeaders },\n body: body,\n signal: this.abortSignal,\n referrer: this.delegate.referrer?.href\n };\n this.enctype = enctype;\n }\n\n get method() {\n return this.fetchOptions.method\n }\n\n set method(value) {\n const fetchBody = this.isSafe ? this.url.searchParams : this.fetchOptions.body || new FormData();\n const fetchMethod = fetchMethodFromString(value) || FetchMethod.get;\n\n this.url.search = \"\";\n\n const [url, body] = buildResourceAndBody(this.url, fetchMethod, fetchBody, this.enctype);\n\n this.url = url;\n this.fetchOptions.body = body;\n this.fetchOptions.method = fetchMethod.toUpperCase();\n }\n\n get headers() {\n return this.fetchOptions.headers\n }\n\n set headers(value) {\n this.fetchOptions.headers = value;\n }\n\n get body() {\n if (this.isSafe) {\n return this.url.searchParams\n } else {\n return this.fetchOptions.body\n }\n }\n\n set body(value) {\n this.fetchOptions.body = value;\n }\n\n get location() {\n return this.url\n }\n\n get params() {\n return this.url.searchParams\n }\n\n get entries() {\n return this.body ? Array.from(this.body.entries()) : []\n }\n\n cancel() {\n this.abortController.abort();\n }\n\n async perform() {\n const { fetchOptions } = this;\n this.delegate.prepareRequest(this);\n const event = await this.#allowRequestToBeIntercepted(fetchOptions);\n try {\n this.delegate.requestStarted(this);\n\n if (event.detail.fetchRequest) {\n this.response = event.detail.fetchRequest.response;\n } else {\n this.response = fetchWithTurboHeaders(this.url.href, fetchOptions);\n }\n\n const response = await this.response;\n return await this.receive(response)\n } catch (error) {\n if (error.name !== \"AbortError\") {\n if (this.#willDelegateErrorHandling(error)) {\n this.delegate.requestErrored(this, error);\n }\n throw error\n }\n } finally {\n this.delegate.requestFinished(this);\n }\n }\n\n async receive(response) {\n const fetchResponse = new FetchResponse(response);\n const event = dispatch(\"turbo:before-fetch-response\", {\n cancelable: true,\n detail: { fetchResponse },\n target: this.target\n });\n if (event.defaultPrevented) {\n this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n } else if (fetchResponse.succeeded) {\n this.delegate.requestSucceededWithResponse(this, fetchResponse);\n } else {\n this.delegate.requestFailedWithResponse(this, fetchResponse);\n }\n return fetchResponse\n }\n\n get defaultHeaders() {\n return {\n Accept: \"text/html, application/xhtml+xml\"\n }\n }\n\n get isSafe() {\n return isSafe(this.method)\n }\n\n get abortSignal() {\n return this.abortController.signal\n }\n\n acceptResponseType(mimeType) {\n this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n }\n\n async #allowRequestToBeIntercepted(fetchOptions) {\n const requestInterception = new Promise((resolve) => (this.#resolveRequestPromise = resolve));\n const event = dispatch(\"turbo:before-fetch-request\", {\n cancelable: true,\n detail: {\n fetchOptions,\n url: this.url,\n resume: this.#resolveRequestPromise\n },\n target: this.target\n });\n this.url = event.detail.url;\n if (event.defaultPrevented) await requestInterception;\n\n return event\n }\n\n #willDelegateErrorHandling(error) {\n const event = dispatch(\"turbo:fetch-request-error\", {\n target: this.target,\n cancelable: true,\n detail: { request: this, error: error }\n });\n\n return !event.defaultPrevented\n }\n}\n\nfunction isSafe(fetchMethod) {\n return fetchMethodFromString(fetchMethod) == FetchMethod.get\n}\n\nfunction buildResourceAndBody(resource, method, requestBody, enctype) {\n const searchParams =\n Array.from(requestBody).length > 0 ? new URLSearchParams(entriesExcludingFiles(requestBody)) : resource.searchParams;\n\n if (isSafe(method)) {\n return [mergeIntoURLSearchParams(resource, searchParams), null]\n } else if (enctype == FetchEnctype.urlEncoded) {\n return [resource, searchParams]\n } else {\n return [resource, requestBody]\n }\n}\n\nfunction entriesExcludingFiles(requestBody) {\n const entries = [];\n\n for (const [name, value] of requestBody) {\n if (value instanceof File) continue\n else entries.push([name, value]);\n }\n\n return entries\n}\n\nfunction mergeIntoURLSearchParams(url, requestBody) {\n const searchParams = new URLSearchParams(entriesExcludingFiles(requestBody));\n\n url.search = searchParams.toString();\n\n return url\n}\n\nclass AppearanceObserver {\n started = false\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n this.intersectionObserver = new IntersectionObserver(this.intersect);\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n this.intersectionObserver.observe(this.element);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n this.intersectionObserver.unobserve(this.element);\n }\n }\n\n intersect = (entries) => {\n const lastEntry = entries.slice(-1)[0];\n if (lastEntry?.isIntersecting) {\n this.delegate.elementAppearedInViewport(this.element);\n }\n }\n}\n\nclass StreamMessage {\n static contentType = \"text/vnd.turbo-stream.html\"\n\n static wrap(message) {\n if (typeof message == \"string\") {\n return new this(createDocumentFragment(message))\n } else {\n return message\n }\n }\n\n constructor(fragment) {\n this.fragment = importStreamElements(fragment);\n }\n}\n\nfunction importStreamElements(fragment) {\n for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n const streamElement = document.importNode(element, true);\n\n for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n }\n\n element.replaceWith(streamElement);\n }\n\n return fragment\n}\n\nconst PREFETCH_DELAY = 100;\n\nclass PrefetchCache {\n #prefetchTimeout = null\n #prefetched = null\n\n get(url) {\n if (this.#prefetched && this.#prefetched.url === url && this.#prefetched.expire > Date.now()) {\n return this.#prefetched.request\n }\n }\n\n setLater(url, request, ttl) {\n this.clear();\n\n this.#prefetchTimeout = setTimeout(() => {\n request.perform();\n this.set(url, request, ttl);\n this.#prefetchTimeout = null;\n }, PREFETCH_DELAY);\n }\n\n set(url, request, ttl) {\n this.#prefetched = { url, request, expire: new Date(new Date().getTime() + ttl) };\n }\n\n clear() {\n if (this.#prefetchTimeout) clearTimeout(this.#prefetchTimeout);\n this.#prefetched = null;\n }\n}\n\nconst cacheTtl = 10 * 1000;\nconst prefetchCache = new PrefetchCache();\n\nconst FormSubmissionState = {\n initialized: \"initialized\",\n requesting: \"requesting\",\n waiting: \"waiting\",\n receiving: \"receiving\",\n stopping: \"stopping\",\n stopped: \"stopped\"\n};\n\nclass FormSubmission {\n state = FormSubmissionState.initialized\n\n static confirmMethod(message, _element, _submitter) {\n return Promise.resolve(confirm(message))\n }\n\n constructor(delegate, formElement, submitter, mustRedirect = false) {\n const method = getMethod(formElement, submitter);\n const action = getAction(getFormAction(formElement, submitter), method);\n const body = buildFormData(formElement, submitter);\n const enctype = getEnctype(formElement, submitter);\n\n this.delegate = delegate;\n this.formElement = formElement;\n this.submitter = submitter;\n this.fetchRequest = new FetchRequest(this, method, action, body, formElement, enctype);\n this.mustRedirect = mustRedirect;\n }\n\n get method() {\n return this.fetchRequest.method\n }\n\n set method(value) {\n this.fetchRequest.method = value;\n }\n\n get action() {\n return this.fetchRequest.url.toString()\n }\n\n set action(value) {\n this.fetchRequest.url = expandURL(value);\n }\n\n get body() {\n return this.fetchRequest.body\n }\n\n get enctype() {\n return this.fetchRequest.enctype\n }\n\n get isSafe() {\n return this.fetchRequest.isSafe\n }\n\n get location() {\n return this.fetchRequest.url\n }\n\n // The submission process\n\n async start() {\n const { initialized, requesting } = FormSubmissionState;\n const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n\n if (typeof confirmationMessage === \"string\") {\n const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n if (!answer) {\n return\n }\n }\n\n if (this.state == initialized) {\n this.state = requesting;\n return this.fetchRequest.perform()\n }\n }\n\n stop() {\n const { stopping, stopped } = FormSubmissionState;\n if (this.state != stopping && this.state != stopped) {\n this.state = stopping;\n this.fetchRequest.cancel();\n return true\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (!request.isSafe) {\n const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n if (token) {\n request.headers[\"X-CSRF-Token\"] = token;\n }\n }\n\n if (this.requestAcceptsTurboStreamResponse(request)) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n this.state = FormSubmissionState.waiting;\n this.submitter?.setAttribute(\"disabled\", \"\");\n this.setSubmitsWith();\n markAsBusy(this.formElement);\n dispatch(\"turbo:submit-start\", {\n target: this.formElement,\n detail: { formSubmission: this }\n });\n this.delegate.formSubmissionStarted(this);\n }\n\n requestPreventedHandlingResponse(request, response) {\n prefetchCache.clear();\n\n this.result = { success: response.succeeded, fetchResponse: response };\n }\n\n requestSucceededWithResponse(request, response) {\n if (response.clientError || response.serverError) {\n this.delegate.formSubmissionFailedWithResponse(this, response);\n return\n }\n\n prefetchCache.clear();\n\n if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n const error = new Error(\"Form responses must redirect to another location\");\n this.delegate.formSubmissionErrored(this, error);\n } else {\n this.state = FormSubmissionState.receiving;\n this.result = { success: true, fetchResponse: response };\n this.delegate.formSubmissionSucceededWithResponse(this, response);\n }\n }\n\n requestFailedWithResponse(request, response) {\n this.result = { success: false, fetchResponse: response };\n this.delegate.formSubmissionFailedWithResponse(this, response);\n }\n\n requestErrored(request, error) {\n this.result = { success: false, error };\n this.delegate.formSubmissionErrored(this, error);\n }\n\n requestFinished(_request) {\n this.state = FormSubmissionState.stopped;\n this.submitter?.removeAttribute(\"disabled\");\n this.resetSubmitterText();\n clearBusyState(this.formElement);\n dispatch(\"turbo:submit-end\", {\n target: this.formElement,\n detail: { formSubmission: this, ...this.result }\n });\n this.delegate.formSubmissionFinished(this);\n }\n\n // Private\n\n setSubmitsWith() {\n if (!this.submitter || !this.submitsWith) return\n\n if (this.submitter.matches(\"button\")) {\n this.originalSubmitText = this.submitter.innerHTML;\n this.submitter.innerHTML = this.submitsWith;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n this.originalSubmitText = input.value;\n input.value = this.submitsWith;\n }\n }\n\n resetSubmitterText() {\n if (!this.submitter || !this.originalSubmitText) return\n\n if (this.submitter.matches(\"button\")) {\n this.submitter.innerHTML = this.originalSubmitText;\n } else if (this.submitter.matches(\"input\")) {\n const input = this.submitter;\n input.value = this.originalSubmitText;\n }\n }\n\n requestMustRedirect(request) {\n return !request.isSafe && this.mustRedirect\n }\n\n requestAcceptsTurboStreamResponse(request) {\n return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement)\n }\n\n get submitsWith() {\n return this.submitter?.getAttribute(\"data-turbo-submits-with\")\n }\n}\n\nfunction buildFormData(formElement, submitter) {\n const formData = new FormData(formElement);\n const name = submitter?.getAttribute(\"name\");\n const value = submitter?.getAttribute(\"value\");\n\n if (name) {\n formData.append(name, value || \"\");\n }\n\n return formData\n}\n\nfunction getCookieValue(cookieName) {\n if (cookieName != null) {\n const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n if (cookie) {\n const value = cookie.split(\"=\").slice(1).join(\"=\");\n return value ? decodeURIComponent(value) : undefined\n }\n }\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n return response.statusCode == 200 && !response.redirected\n}\n\nfunction getFormAction(formElement, submitter) {\n const formElementAction = typeof formElement.action === \"string\" ? formElement.action : null;\n\n if (submitter?.hasAttribute(\"formaction\")) {\n return submitter.getAttribute(\"formaction\") || \"\"\n } else {\n return formElement.getAttribute(\"action\") || formElementAction || \"\"\n }\n}\n\nfunction getAction(formAction, fetchMethod) {\n const action = expandURL(formAction);\n\n if (isSafe(fetchMethod)) {\n action.search = \"\";\n }\n\n return action\n}\n\nfunction getMethod(formElement, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || formElement.getAttribute(\"method\") || \"\";\n return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get\n}\n\nfunction getEnctype(formElement, submitter) {\n return fetchEnctypeFromString(submitter?.getAttribute(\"formenctype\") || formElement.enctype)\n}\n\nclass Snapshot {\n constructor(element) {\n this.element = element;\n }\n\n get activeElement() {\n return this.element.ownerDocument.activeElement\n }\n\n get children() {\n return [...this.element.children]\n }\n\n hasAnchor(anchor) {\n return this.getElementForAnchor(anchor) != null\n }\n\n getElementForAnchor(anchor) {\n return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null\n }\n\n get isConnected() {\n return this.element.isConnected\n }\n\n get firstAutofocusableElement() {\n return queryAutofocusableElement(this.element)\n }\n\n get permanentElements() {\n return queryPermanentElementsAll(this.element)\n }\n\n getPermanentElementById(id) {\n return getPermanentElementById(this.element, id)\n }\n\n getPermanentElementMapForSnapshot(snapshot) {\n const permanentElementMap = {};\n\n for (const currentPermanentElement of this.permanentElements) {\n const { id } = currentPermanentElement;\n const newPermanentElement = snapshot.getPermanentElementById(id);\n if (newPermanentElement) {\n permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n }\n }\n\n return permanentElementMap\n }\n}\n\nfunction getPermanentElementById(node, id) {\n return node.querySelector(`#${id}[data-turbo-permanent]`)\n}\n\nfunction queryPermanentElementsAll(node) {\n return node.querySelectorAll(\"[id][data-turbo-permanent]\")\n}\n\nclass FormSubmitObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n this.started = false;\n }\n }\n\n submitCaptured = () => {\n this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n }\n\n submitBubbled = (event) => {\n if (!event.defaultPrevented) {\n const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n const submitter = event.submitter || undefined;\n\n if (\n form &&\n submissionDoesNotDismissDialog(form, submitter) &&\n submissionDoesNotTargetIFrame(form, submitter) &&\n this.delegate.willSubmitForm(form, submitter)\n ) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.delegate.formSubmitted(form, submitter);\n }\n }\n }\n}\n\nfunction submissionDoesNotDismissDialog(form, submitter) {\n const method = submitter?.getAttribute(\"formmethod\") || form.getAttribute(\"method\");\n\n return method != \"dialog\"\n}\n\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n const target = submitter?.getAttribute(\"formtarget\") || form.getAttribute(\"target\");\n\n return doesNotTargetIFrame(target)\n}\n\nclass View {\n #resolveRenderPromise = (_value) => {}\n #resolveInterceptionPromise = (_value) => {}\n\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n // Scrolling\n\n scrollToAnchor(anchor) {\n const element = this.snapshot.getElementForAnchor(anchor);\n if (element) {\n this.scrollToElement(element);\n this.focusElement(element);\n } else {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n }\n\n scrollToAnchorFromLocation(location) {\n this.scrollToAnchor(getAnchor(location));\n }\n\n scrollToElement(element) {\n element.scrollIntoView();\n }\n\n focusElement(element) {\n if (element instanceof HTMLElement) {\n if (element.hasAttribute(\"tabindex\")) {\n element.focus();\n } else {\n element.setAttribute(\"tabindex\", \"-1\");\n element.focus();\n element.removeAttribute(\"tabindex\");\n }\n }\n }\n\n scrollToPosition({ x, y }) {\n this.scrollRoot.scrollTo(x, y);\n }\n\n scrollToTop() {\n this.scrollToPosition({ x: 0, y: 0 });\n }\n\n get scrollRoot() {\n return window\n }\n\n // Rendering\n\n async render(renderer) {\n const { isPreview, shouldRender, willRender, newSnapshot: snapshot } = renderer;\n\n // A workaround to ignore tracked element mismatch reloads when performing\n // a promoted Visit from a frame navigation\n const shouldInvalidate = willRender;\n\n if (shouldRender) {\n try {\n this.renderPromise = new Promise((resolve) => (this.#resolveRenderPromise = resolve));\n this.renderer = renderer;\n await this.prepareToRenderSnapshot(renderer);\n\n const renderInterception = new Promise((resolve) => (this.#resolveInterceptionPromise = resolve));\n const options = { resume: this.#resolveInterceptionPromise, render: this.renderer.renderElement, renderMethod: this.renderer.renderMethod };\n const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n if (!immediateRender) await renderInterception;\n\n await this.renderSnapshot(renderer);\n this.delegate.viewRenderedSnapshot(snapshot, isPreview, this.renderer.renderMethod);\n this.delegate.preloadOnLoadLinksForView(this.element);\n this.finishRenderingSnapshot(renderer);\n } finally {\n delete this.renderer;\n this.#resolveRenderPromise(undefined);\n delete this.renderPromise;\n }\n } else if (shouldInvalidate) {\n this.invalidate(renderer.reloadReason);\n }\n }\n\n invalidate(reason) {\n this.delegate.viewInvalidated(reason);\n }\n\n async prepareToRenderSnapshot(renderer) {\n this.markAsPreview(renderer.isPreview);\n await renderer.prepareToRender();\n }\n\n markAsPreview(isPreview) {\n if (isPreview) {\n this.element.setAttribute(\"data-turbo-preview\", \"\");\n } else {\n this.element.removeAttribute(\"data-turbo-preview\");\n }\n }\n\n markVisitDirection(direction) {\n this.element.setAttribute(\"data-turbo-visit-direction\", direction);\n }\n\n unmarkVisitDirection() {\n this.element.removeAttribute(\"data-turbo-visit-direction\");\n }\n\n async renderSnapshot(renderer) {\n await renderer.render();\n }\n\n finishRenderingSnapshot(renderer) {\n renderer.finishRendering();\n }\n}\n\nclass FrameView extends View {\n missing() {\n this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n }\n\n get snapshot() {\n return new Snapshot(this.element)\n }\n}\n\nclass LinkInterceptor {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.element = element;\n }\n\n start() {\n this.element.addEventListener(\"click\", this.clickBubbled);\n document.addEventListener(\"turbo:click\", this.linkClicked);\n document.addEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n stop() {\n this.element.removeEventListener(\"click\", this.clickBubbled);\n document.removeEventListener(\"turbo:click\", this.linkClicked);\n document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n }\n\n clickBubbled = (event) => {\n if (this.clickEventIsSignificant(event)) {\n this.clickEvent = event;\n } else {\n delete this.clickEvent;\n }\n }\n\n linkClicked = (event) => {\n if (this.clickEvent && this.clickEventIsSignificant(event)) {\n if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n this.clickEvent.preventDefault();\n event.preventDefault();\n this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n }\n }\n delete this.clickEvent;\n }\n\n willVisit = (_event) => {\n delete this.clickEvent;\n }\n\n clickEventIsSignificant(event) {\n const target = event.composed ? event.target?.parentElement : event.target;\n const element = findLinkFromClickTarget(target) || target;\n\n return element instanceof Element && element.closest(\"turbo-frame, html\") == this.element\n }\n}\n\nclass LinkClickObserver {\n started = false\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (!this.started) {\n this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n this.started = false;\n }\n }\n\n clickCaptured = () => {\n this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n }\n\n clickBubbled = (event) => {\n if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n const target = (event.composedPath && event.composedPath()[0]) || event.target;\n const link = findLinkFromClickTarget(target);\n if (link && doesNotTargetIFrame(link.target)) {\n const location = getLocationForLink(link);\n if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n event.preventDefault();\n this.delegate.followedLinkToLocation(link, location);\n }\n }\n }\n }\n\n clickEventIsSignificant(event) {\n return !(\n (event.target && event.target.isContentEditable) ||\n event.defaultPrevented ||\n event.which > 1 ||\n event.altKey ||\n event.ctrlKey ||\n event.metaKey ||\n event.shiftKey\n )\n }\n}\n\nclass FormLinkClickObserver {\n constructor(delegate, element) {\n this.delegate = delegate;\n this.linkInterceptor = new LinkClickObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n }\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return false\n }\n\n prefetchAndCacheRequestToLocation(link, location) {\n return\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, originalEvent) {\n return (\n this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n (link.hasAttribute(\"data-turbo-method\") || link.hasAttribute(\"data-turbo-stream\"))\n )\n }\n\n followedLinkToLocation(link, location) {\n const form = document.createElement(\"form\");\n\n const type = \"hidden\";\n for (const [name, value] of location.searchParams) {\n form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n }\n\n const action = Object.assign(location, { search: \"\" });\n form.setAttribute(\"data-turbo\", \"true\");\n form.setAttribute(\"action\", action.href);\n form.setAttribute(\"hidden\", \"\");\n\n const method = link.getAttribute(\"data-turbo-method\");\n if (method) form.setAttribute(\"method\", method);\n\n const turboFrame = link.getAttribute(\"data-turbo-frame\");\n if (turboFrame) form.setAttribute(\"data-turbo-frame\", turboFrame);\n\n const turboAction = getVisitAction(link);\n if (turboAction) form.setAttribute(\"data-turbo-action\", turboAction);\n\n const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n if (turboConfirm) form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n\n const turboStream = link.hasAttribute(\"data-turbo-stream\");\n if (turboStream) form.setAttribute(\"data-turbo-stream\", \"\");\n\n this.delegate.submittedFormLinkToLocation(link, location, form);\n\n document.body.appendChild(form);\n form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n requestAnimationFrame(() => form.requestSubmit());\n }\n}\n\nclass Bardo {\n static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n const bardo = new this(delegate, permanentElementMap);\n bardo.enter();\n await callback();\n bardo.leave();\n }\n\n constructor(delegate, permanentElementMap) {\n this.delegate = delegate;\n this.permanentElementMap = permanentElementMap;\n }\n\n enter() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n }\n }\n\n leave() {\n for (const id in this.permanentElementMap) {\n const [currentPermanentElement] = this.permanentElementMap[id];\n this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n this.delegate.leavingBardo(currentPermanentElement);\n }\n }\n\n replaceNewPermanentElementWithPlaceholder(permanentElement) {\n const placeholder = createPlaceholderForPermanentElement(permanentElement);\n permanentElement.replaceWith(placeholder);\n }\n\n replaceCurrentPermanentElementWithClone(permanentElement) {\n const clone = permanentElement.cloneNode(true);\n permanentElement.replaceWith(clone);\n }\n\n replacePlaceholderWithPermanentElement(permanentElement) {\n const placeholder = this.getPlaceholderById(permanentElement.id);\n placeholder?.replaceWith(permanentElement);\n }\n\n getPlaceholderById(id) {\n return this.placeholders.find((element) => element.content == id)\n }\n\n get placeholders() {\n return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")]\n }\n}\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n const element = document.createElement(\"meta\");\n element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n element.setAttribute(\"content\", permanentElement.id);\n return element\n}\n\nclass Renderer {\n #activeElement = null\n\n constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n this.currentSnapshot = currentSnapshot;\n this.newSnapshot = newSnapshot;\n this.isPreview = isPreview;\n this.willRender = willRender;\n this.renderElement = renderElement;\n this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n }\n\n get shouldRender() {\n return true\n }\n\n get shouldAutofocus() {\n return true\n }\n\n get reloadReason() {\n return\n }\n\n prepareToRender() {\n return\n }\n\n render() {\n // Abstract method\n }\n\n finishRendering() {\n if (this.resolvingFunctions) {\n this.resolvingFunctions.resolve();\n delete this.resolvingFunctions;\n }\n }\n\n async preservingPermanentElements(callback) {\n await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n }\n\n focusFirstAutofocusableElement() {\n if (this.shouldAutofocus) {\n const element = this.connectedSnapshot.firstAutofocusableElement;\n if (element) {\n element.focus();\n }\n }\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement) {\n if (this.#activeElement) return\n\n if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n this.#activeElement = this.currentSnapshot.activeElement;\n }\n }\n\n leavingBardo(currentPermanentElement) {\n if (currentPermanentElement.contains(this.#activeElement) && this.#activeElement instanceof HTMLElement) {\n this.#activeElement.focus();\n\n this.#activeElement = null;\n }\n }\n\n get connectedSnapshot() {\n return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot\n }\n\n get currentElement() {\n return this.currentSnapshot.element\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n get permanentElementMap() {\n return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot)\n }\n\n get renderMethod() {\n return \"replace\"\n }\n}\n\nclass FrameRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const destinationRange = document.createRange();\n destinationRange.selectNodeContents(currentElement);\n destinationRange.deleteContents();\n\n const frameElement = newElement;\n const sourceRange = frameElement.ownerDocument?.createRange();\n if (sourceRange) {\n sourceRange.selectNodeContents(frameElement);\n currentElement.appendChild(sourceRange.extractContents());\n }\n }\n\n constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n this.delegate = delegate;\n }\n\n get shouldRender() {\n return true\n }\n\n async render() {\n await nextRepaint();\n this.preservingPermanentElements(() => {\n this.loadFrameElement();\n });\n this.scrollFrameIntoView();\n await nextRepaint();\n this.focusFirstAutofocusableElement();\n await nextRepaint();\n this.activateScriptElements();\n }\n\n loadFrameElement() {\n this.delegate.willRenderFrame(this.currentElement, this.newElement);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n scrollFrameIntoView() {\n if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n const element = this.currentElement.firstElementChild;\n const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n\n if (element) {\n element.scrollIntoView({ block, behavior });\n return true\n }\n }\n return false\n }\n\n activateScriptElements() {\n for (const inertScriptElement of this.newScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n get newScriptElements() {\n return this.currentElement.querySelectorAll(\"script\")\n }\n}\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nfunction readScrollBehavior(value, defaultValue) {\n if (value == \"auto\" || value == \"smooth\") {\n return value\n } else {\n return defaultValue\n }\n}\n\nclass ProgressBar {\n static animationDuration = 300 /*ms*/\n\n static get defaultCSS() {\n return unindent`\n .turbo-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 2147483647;\n transition:\n width ${ProgressBar.animationDuration}ms ease-out,\n opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n transform: translate3d(0, 0, 0);\n }\n `\n }\n\n hiding = false\n value = 0\n visible = false\n\n constructor() {\n this.stylesheetElement = this.createStylesheetElement();\n this.progressElement = this.createProgressElement();\n this.installStylesheetElement();\n this.setValue(0);\n }\n\n show() {\n if (!this.visible) {\n this.visible = true;\n this.installProgressElement();\n this.startTrickling();\n }\n }\n\n hide() {\n if (this.visible && !this.hiding) {\n this.hiding = true;\n this.fadeProgressElement(() => {\n this.uninstallProgressElement();\n this.stopTrickling();\n this.visible = false;\n this.hiding = false;\n });\n }\n }\n\n setValue(value) {\n this.value = value;\n this.refresh();\n }\n\n // Private\n\n installStylesheetElement() {\n document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n }\n\n installProgressElement() {\n this.progressElement.style.width = \"0\";\n this.progressElement.style.opacity = \"1\";\n document.documentElement.insertBefore(this.progressElement, document.body);\n this.refresh();\n }\n\n fadeProgressElement(callback) {\n this.progressElement.style.opacity = \"0\";\n setTimeout(callback, ProgressBar.animationDuration * 1.5);\n }\n\n uninstallProgressElement() {\n if (this.progressElement.parentNode) {\n document.documentElement.removeChild(this.progressElement);\n }\n }\n\n startTrickling() {\n if (!this.trickleInterval) {\n this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n }\n }\n\n stopTrickling() {\n window.clearInterval(this.trickleInterval);\n delete this.trickleInterval;\n }\n\n trickle = () => {\n this.setValue(this.value + Math.random() / 100);\n }\n\n refresh() {\n requestAnimationFrame(() => {\n this.progressElement.style.width = `${10 + this.value * 90}%`;\n });\n }\n\n createStylesheetElement() {\n const element = document.createElement(\"style\");\n element.type = \"text/css\";\n element.textContent = ProgressBar.defaultCSS;\n if (this.cspNonce) {\n element.nonce = this.cspNonce;\n }\n return element\n }\n\n createProgressElement() {\n const element = document.createElement(\"div\");\n element.className = \"turbo-progress-bar\";\n return element\n }\n\n get cspNonce() {\n return getMetaContent(\"csp-nonce\")\n }\n}\n\nclass HeadSnapshot extends Snapshot {\n detailsByOuterHTML = this.children\n .filter((element) => !elementIsNoscript(element))\n .map((element) => elementWithoutNonce(element))\n .reduce((result, element) => {\n const { outerHTML } = element;\n const details =\n outerHTML in result\n ? result[outerHTML]\n : {\n type: elementType(element),\n tracked: elementIsTracked(element),\n elements: []\n };\n return {\n ...result,\n [outerHTML]: {\n ...details,\n elements: [...details.elements, element]\n }\n }\n }, {})\n\n get trackedElementSignature() {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n .join(\"\")\n }\n\n getScriptElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot)\n }\n\n getStylesheetElementsNotInSnapshot(snapshot) {\n return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot)\n }\n\n getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n return Object.keys(this.detailsByOuterHTML)\n .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n .filter(({ type }) => type == matchedType)\n .map(({ elements: [element] }) => element)\n }\n\n get provisionalElements() {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n if (type == null && !tracked) {\n return [...result, ...elements]\n } else if (elements.length > 1) {\n return [...result, ...elements.slice(1)]\n } else {\n return result\n }\n }, [])\n }\n\n getMetaValue(name) {\n const element = this.findMetaElementByName(name);\n return element ? element.getAttribute(\"content\") : null\n }\n\n findMetaElementByName(name) {\n return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n const {\n elements: [element]\n } = this.detailsByOuterHTML[outerHTML];\n return elementIsMetaElementWithName(element, name) ? element : result\n }, undefined | undefined)\n }\n}\n\nfunction elementType(element) {\n if (elementIsScript(element)) {\n return \"script\"\n } else if (elementIsStylesheet(element)) {\n return \"stylesheet\"\n }\n}\n\nfunction elementIsTracked(element) {\n return element.getAttribute(\"data-turbo-track\") == \"reload\"\n}\n\nfunction elementIsScript(element) {\n const tagName = element.localName;\n return tagName == \"script\"\n}\n\nfunction elementIsNoscript(element) {\n const tagName = element.localName;\n return tagName == \"noscript\"\n}\n\nfunction elementIsStylesheet(element) {\n const tagName = element.localName;\n return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\")\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n const tagName = element.localName;\n return tagName == \"meta\" && element.getAttribute(\"name\") == name\n}\n\nfunction elementWithoutNonce(element) {\n if (element.hasAttribute(\"nonce\")) {\n element.setAttribute(\"nonce\", \"\");\n }\n\n return element\n}\n\nclass PageSnapshot extends Snapshot {\n static fromHTMLString(html = \"\") {\n return this.fromDocument(parseHTMLDocument(html))\n }\n\n static fromElement(element) {\n return this.fromDocument(element.ownerDocument)\n }\n\n static fromDocument({ documentElement, body, head }) {\n return new this(documentElement, body, new HeadSnapshot(head))\n }\n\n constructor(documentElement, body, headSnapshot) {\n super(body);\n this.documentElement = documentElement;\n this.headSnapshot = headSnapshot;\n }\n\n clone() {\n const clonedElement = this.element.cloneNode(true);\n\n const selectElements = this.element.querySelectorAll(\"select\");\n const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n\n for (const [index, source] of selectElements.entries()) {\n const clone = clonedSelectElements[index];\n for (const option of clone.selectedOptions) option.selected = false;\n for (const option of source.selectedOptions) clone.options[option.index].selected = true;\n }\n\n for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n clonedPasswordInput.value = \"\";\n }\n\n return new PageSnapshot(this.documentElement, clonedElement, this.headSnapshot)\n }\n\n get lang() {\n return this.documentElement.getAttribute(\"lang\")\n }\n\n get headElement() {\n return this.headSnapshot.element\n }\n\n get rootLocation() {\n const root = this.getSetting(\"root\") ?? \"/\";\n return expandURL(root)\n }\n\n get cacheControlValue() {\n return this.getSetting(\"cache-control\")\n }\n\n get isPreviewable() {\n return this.cacheControlValue != \"no-preview\"\n }\n\n get isCacheable() {\n return this.cacheControlValue != \"no-cache\"\n }\n\n get isVisitable() {\n return this.getSetting(\"visit-control\") != \"reload\"\n }\n\n get prefersViewTransitions() {\n return this.headSnapshot.getMetaValue(\"view-transition\") === \"same-origin\"\n }\n\n get shouldMorphPage() {\n return this.getSetting(\"refresh-method\") === \"morph\"\n }\n\n get shouldPreserveScrollPosition() {\n return this.getSetting(\"refresh-scroll\") === \"preserve\"\n }\n\n // Private\n\n getSetting(name) {\n return this.headSnapshot.getMetaValue(`turbo-${name}`)\n }\n}\n\nclass ViewTransitioner {\n #viewTransitionStarted = false\n #lastOperation = Promise.resolve()\n\n renderChange(useViewTransition, render) {\n if (useViewTransition && this.viewTransitionsAvailable && !this.#viewTransitionStarted) {\n this.#viewTransitionStarted = true;\n this.#lastOperation = this.#lastOperation.then(async () => {\n await document.startViewTransition(render).finished;\n });\n } else {\n this.#lastOperation = this.#lastOperation.then(render);\n }\n\n return this.#lastOperation\n }\n\n get viewTransitionsAvailable() {\n return document.startViewTransition\n }\n}\n\nconst defaultOptions = {\n action: \"advance\",\n historyChanged: false,\n visitCachedSnapshot: () => {},\n willRender: true,\n updateHistory: true,\n shouldCacheSnapshot: true,\n acceptsStreamResponse: false\n};\n\nconst TimingMetric = {\n visitStart: \"visitStart\",\n requestStart: \"requestStart\",\n requestEnd: \"requestEnd\",\n visitEnd: \"visitEnd\"\n};\n\nconst VisitState = {\n initialized: \"initialized\",\n started: \"started\",\n canceled: \"canceled\",\n failed: \"failed\",\n completed: \"completed\"\n};\n\nconst SystemStatusCode = {\n networkFailure: 0,\n timeoutFailure: -1,\n contentTypeMismatch: -2\n};\n\nconst Direction = {\n advance: \"forward\",\n restore: \"back\",\n replace: \"none\"\n};\n\nclass Visit {\n identifier = uuid() // Required by turbo-ios\n timingMetrics = {}\n\n followedRedirect = false\n historyChanged = false\n scrolled = false\n shouldCacheSnapshot = true\n acceptsStreamResponse = false\n snapshotCached = false\n state = VisitState.initialized\n viewTransitioner = new ViewTransitioner()\n\n constructor(delegate, location, restorationIdentifier, options = {}) {\n this.delegate = delegate;\n this.location = location;\n this.restorationIdentifier = restorationIdentifier || uuid();\n\n const {\n action,\n historyChanged,\n referrer,\n snapshot,\n snapshotHTML,\n response,\n visitCachedSnapshot,\n willRender,\n updateHistory,\n shouldCacheSnapshot,\n acceptsStreamResponse,\n direction\n } = {\n ...defaultOptions,\n ...options\n };\n this.action = action;\n this.historyChanged = historyChanged;\n this.referrer = referrer;\n this.snapshot = snapshot;\n this.snapshotHTML = snapshotHTML;\n this.response = response;\n this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n this.isPageRefresh = this.view.isPageRefresh(this);\n this.visitCachedSnapshot = visitCachedSnapshot;\n this.willRender = willRender;\n this.updateHistory = updateHistory;\n this.scrolled = !willRender;\n this.shouldCacheSnapshot = shouldCacheSnapshot;\n this.acceptsStreamResponse = acceptsStreamResponse;\n this.direction = direction || Direction[action];\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get history() {\n return this.delegate.history\n }\n\n get restorationData() {\n return this.history.getRestorationDataForIdentifier(this.restorationIdentifier)\n }\n\n get silent() {\n return this.isSamePage\n }\n\n start() {\n if (this.state == VisitState.initialized) {\n this.recordTimingMetric(TimingMetric.visitStart);\n this.state = VisitState.started;\n this.adapter.visitStarted(this);\n this.delegate.visitStarted(this);\n }\n }\n\n cancel() {\n if (this.state == VisitState.started) {\n if (this.request) {\n this.request.cancel();\n }\n this.cancelRender();\n this.state = VisitState.canceled;\n }\n }\n\n complete() {\n if (this.state == VisitState.started) {\n this.recordTimingMetric(TimingMetric.visitEnd);\n this.adapter.visitCompleted(this);\n this.state = VisitState.completed;\n this.followRedirect();\n\n if (!this.followedRedirect) {\n this.delegate.visitCompleted(this);\n }\n }\n }\n\n fail() {\n if (this.state == VisitState.started) {\n this.state = VisitState.failed;\n this.adapter.visitFailed(this);\n this.delegate.visitCompleted(this);\n }\n }\n\n changeHistory() {\n if (!this.historyChanged && this.updateHistory) {\n const actionForHistory = this.location.href === this.referrer?.href ? \"replace\" : this.action;\n const method = getHistoryMethodForAction(actionForHistory);\n this.history.update(method, this.location, this.restorationIdentifier);\n this.historyChanged = true;\n }\n }\n\n issueRequest() {\n if (this.hasPreloadedResponse()) {\n this.simulateRequest();\n } else if (this.shouldIssueRequest() && !this.request) {\n this.request = new FetchRequest(this, FetchMethod.get, this.location);\n this.request.perform();\n }\n }\n\n simulateRequest() {\n if (this.response) {\n this.startRequest();\n this.recordResponse();\n this.finishRequest();\n }\n }\n\n startRequest() {\n this.recordTimingMetric(TimingMetric.requestStart);\n this.adapter.visitRequestStarted(this);\n }\n\n recordResponse(response = this.response) {\n this.response = response;\n if (response) {\n const { statusCode } = response;\n if (isSuccessful(statusCode)) {\n this.adapter.visitRequestCompleted(this);\n } else {\n this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n }\n }\n }\n\n finishRequest() {\n this.recordTimingMetric(TimingMetric.requestEnd);\n this.adapter.visitRequestFinished(this);\n }\n\n loadResponse() {\n if (this.response) {\n const { statusCode, responseHTML } = this.response;\n this.render(async () => {\n if (this.shouldCacheSnapshot) this.cacheSnapshot();\n if (this.view.renderPromise) await this.view.renderPromise;\n\n if (isSuccessful(statusCode) && responseHTML != null) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n await this.renderPageSnapshot(snapshot, false);\n\n this.adapter.visitRendered(this);\n this.complete();\n } else {\n await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n this.adapter.visitRendered(this);\n this.fail();\n }\n });\n }\n }\n\n getCachedSnapshot() {\n const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n if (this.action == \"restore\" || snapshot.isPreviewable) {\n return snapshot\n }\n }\n }\n\n getPreloadedSnapshot() {\n if (this.snapshotHTML) {\n return PageSnapshot.fromHTMLString(this.snapshotHTML)\n }\n }\n\n hasCachedSnapshot() {\n return this.getCachedSnapshot() != null\n }\n\n loadCachedSnapshot() {\n const snapshot = this.getCachedSnapshot();\n if (snapshot) {\n const isPreview = this.shouldIssueRequest();\n this.render(async () => {\n this.cacheSnapshot();\n if (this.isSamePage || this.isPageRefresh) {\n this.adapter.visitRendered(this);\n } else {\n if (this.view.renderPromise) await this.view.renderPromise;\n\n await this.renderPageSnapshot(snapshot, isPreview);\n\n this.adapter.visitRendered(this);\n if (!isPreview) {\n this.complete();\n }\n }\n });\n }\n }\n\n followRedirect() {\n if (this.redirectedToLocation && !this.followedRedirect && this.response?.redirected) {\n this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n action: \"replace\",\n response: this.response,\n shouldCacheSnapshot: false,\n willRender: false\n });\n this.followedRedirect = true;\n }\n }\n\n goToSamePageAnchor() {\n if (this.isSamePage) {\n this.render(async () => {\n this.cacheSnapshot();\n this.performScroll();\n this.changeHistory();\n this.adapter.visitRendered(this);\n });\n }\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n if (this.acceptsStreamResponse) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted() {\n this.startRequest();\n }\n\n requestPreventedHandlingResponse(_request, _response) {}\n\n async requestSucceededWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.redirectedToLocation = response.redirected ? response.location : undefined;\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n async requestFailedWithResponse(request, response) {\n const responseHTML = await response.responseHTML;\n const { redirected, statusCode } = response;\n if (responseHTML == undefined) {\n this.recordResponse({\n statusCode: SystemStatusCode.contentTypeMismatch,\n redirected\n });\n } else {\n this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n }\n }\n\n requestErrored(_request, _error) {\n this.recordResponse({\n statusCode: SystemStatusCode.networkFailure,\n redirected: false\n });\n }\n\n requestFinished() {\n this.finishRequest();\n }\n\n // Scrolling\n\n performScroll() {\n if (!this.scrolled && !this.view.forceReloaded && !this.view.shouldPreserveScrollPosition(this)) {\n if (this.action == \"restore\") {\n this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n } else {\n this.scrollToAnchor() || this.view.scrollToTop();\n }\n if (this.isSamePage) {\n this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n }\n\n this.scrolled = true;\n }\n }\n\n scrollToRestoredPosition() {\n const { scrollPosition } = this.restorationData;\n if (scrollPosition) {\n this.view.scrollToPosition(scrollPosition);\n return true\n }\n }\n\n scrollToAnchor() {\n const anchor = getAnchor(this.location);\n if (anchor != null) {\n this.view.scrollToAnchor(anchor);\n return true\n }\n }\n\n // Instrumentation\n\n recordTimingMetric(metric) {\n this.timingMetrics[metric] = new Date().getTime();\n }\n\n getTimingMetrics() {\n return { ...this.timingMetrics }\n }\n\n // Private\n\n getHistoryMethodForAction(action) {\n switch (action) {\n case \"replace\":\n return history.replaceState\n case \"advance\":\n case \"restore\":\n return history.pushState\n }\n }\n\n hasPreloadedResponse() {\n return typeof this.response == \"object\"\n }\n\n shouldIssueRequest() {\n if (this.isSamePage) {\n return false\n } else if (this.action == \"restore\") {\n return !this.hasCachedSnapshot()\n } else {\n return this.willRender\n }\n }\n\n cacheSnapshot() {\n if (!this.snapshotCached) {\n this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n this.snapshotCached = true;\n }\n }\n\n async render(callback) {\n this.cancelRender();\n this.frame = await nextRepaint();\n await callback();\n delete this.frame;\n }\n\n async renderPageSnapshot(snapshot, isPreview) {\n await this.viewTransitioner.renderChange(this.view.shouldTransitionTo(snapshot), async () => {\n await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n this.performScroll();\n });\n }\n\n cancelRender() {\n if (this.frame) {\n cancelAnimationFrame(this.frame);\n delete this.frame;\n }\n }\n}\n\nfunction isSuccessful(statusCode) {\n return statusCode >= 200 && statusCode < 300\n}\n\nclass BrowserAdapter {\n progressBar = new ProgressBar()\n\n constructor(session) {\n this.session = session;\n }\n\n visitProposedToLocation(location, options) {\n if (locationIsVisitable(location, this.navigator.rootLocation)) {\n this.navigator.startVisit(location, options?.restorationIdentifier || uuid(), options);\n } else {\n window.location.href = location.toString();\n }\n }\n\n visitStarted(visit) {\n this.location = visit.location;\n visit.loadCachedSnapshot();\n visit.issueRequest();\n visit.goToSamePageAnchor();\n }\n\n visitRequestStarted(visit) {\n this.progressBar.setValue(0);\n if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n this.showVisitProgressBarAfterDelay();\n } else {\n this.showProgressBar();\n }\n }\n\n visitRequestCompleted(visit) {\n visit.loadResponse();\n }\n\n visitRequestFailedWithStatusCode(visit, statusCode) {\n switch (statusCode) {\n case SystemStatusCode.networkFailure:\n case SystemStatusCode.timeoutFailure:\n case SystemStatusCode.contentTypeMismatch:\n return this.reload({\n reason: \"request_failed\",\n context: {\n statusCode\n }\n })\n default:\n return visit.loadResponse()\n }\n }\n\n visitRequestFinished(_visit) {}\n\n visitCompleted(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n pageInvalidated(reason) {\n this.reload(reason);\n }\n\n visitFailed(_visit) {\n this.progressBar.setValue(1);\n this.hideVisitProgressBar();\n }\n\n visitRendered(_visit) {}\n\n // Form Submission Delegate\n\n formSubmissionStarted(_formSubmission) {\n this.progressBar.setValue(0);\n this.showFormProgressBarAfterDelay();\n }\n\n formSubmissionFinished(_formSubmission) {\n this.progressBar.setValue(1);\n this.hideFormProgressBar();\n }\n\n // Private\n\n showVisitProgressBarAfterDelay() {\n this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n\n hideVisitProgressBar() {\n this.progressBar.hide();\n if (this.visitProgressBarTimeout != null) {\n window.clearTimeout(this.visitProgressBarTimeout);\n delete this.visitProgressBarTimeout;\n }\n }\n\n showFormProgressBarAfterDelay() {\n if (this.formProgressBarTimeout == null) {\n this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n }\n }\n\n hideFormProgressBar() {\n this.progressBar.hide();\n if (this.formProgressBarTimeout != null) {\n window.clearTimeout(this.formProgressBarTimeout);\n delete this.formProgressBarTimeout;\n }\n }\n\n showProgressBar = () => {\n this.progressBar.show();\n }\n\n reload(reason) {\n dispatch(\"turbo:reload\", { detail: reason });\n\n window.location.href = this.location?.toString() || window.location.href;\n }\n\n get navigator() {\n return this.session.navigator\n }\n}\n\nclass CacheObserver {\n selector = \"[data-turbo-temporary]\"\n deprecatedSelector = \"[data-turbo-cache=false]\"\n\n started = false\n\n start() {\n if (!this.started) {\n this.started = true;\n addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n }\n }\n\n removeTemporaryElements = (_event) => {\n for (const element of this.temporaryElements) {\n element.remove();\n }\n }\n\n get temporaryElements() {\n return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]\n }\n\n get temporaryElementsWithDeprecation() {\n const elements = document.querySelectorAll(this.deprecatedSelector);\n\n if (elements.length) {\n console.warn(\n `The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`\n );\n }\n\n return [...elements]\n }\n}\n\nclass FrameRedirector {\n constructor(session, element) {\n this.session = session;\n this.element = element;\n this.linkInterceptor = new LinkInterceptor(this, element);\n this.formSubmitObserver = new FormSubmitObserver(this, element);\n }\n\n start() {\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n\n stop() {\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldRedirect(element)\n }\n\n linkClickIntercepted(element, url, event) {\n const frame = this.#findFrameElement(element);\n if (frame) {\n frame.delegate.linkClickIntercepted(element, url, event);\n }\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return (\n element.closest(\"turbo-frame\") == null &&\n this.#shouldSubmit(element, submitter) &&\n this.#shouldRedirect(element, submitter)\n )\n }\n\n formSubmitted(element, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n if (frame) {\n frame.delegate.formSubmitted(element, submitter);\n }\n }\n\n #shouldSubmit(form, submitter) {\n const action = getAction$1(form, submitter);\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const rootLocation = expandURL(meta?.content ?? \"/\");\n\n return this.#shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation)\n }\n\n #shouldRedirect(element, submitter) {\n const isNavigatable =\n element instanceof HTMLFormElement\n ? this.session.submissionIsNavigatable(element, submitter)\n : this.session.elementIsNavigatable(element);\n\n if (isNavigatable) {\n const frame = this.#findFrameElement(element, submitter);\n return frame ? frame != element.closest(\"turbo-frame\") : false\n } else {\n return false\n }\n }\n\n #findFrameElement(element, submitter) {\n const id = submitter?.getAttribute(\"data-turbo-frame\") || element.getAttribute(\"data-turbo-frame\");\n if (id && id != \"_top\") {\n const frame = this.element.querySelector(`#${id}:not([disabled])`);\n if (frame instanceof FrameElement) {\n return frame\n }\n }\n }\n}\n\nclass History {\n location\n restorationIdentifier = uuid()\n restorationData = {}\n started = false\n pageLoaded = false\n currentIndex = 0\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"popstate\", this.onPopState, false);\n addEventListener(\"load\", this.onPageLoad, false);\n this.currentIndex = history.state?.turbo?.restorationIndex || 0;\n this.started = true;\n this.replace(new URL(window.location.href));\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"popstate\", this.onPopState, false);\n removeEventListener(\"load\", this.onPageLoad, false);\n this.started = false;\n }\n }\n\n push(location, restorationIdentifier) {\n this.update(history.pushState, location, restorationIdentifier);\n }\n\n replace(location, restorationIdentifier) {\n this.update(history.replaceState, location, restorationIdentifier);\n }\n\n update(method, location, restorationIdentifier = uuid()) {\n if (method === history.pushState) ++this.currentIndex;\n\n const state = { turbo: { restorationIdentifier, restorationIndex: this.currentIndex } };\n method.call(history, state, \"\", location.href);\n this.location = location;\n this.restorationIdentifier = restorationIdentifier;\n }\n\n // Restoration data\n\n getRestorationDataForIdentifier(restorationIdentifier) {\n return this.restorationData[restorationIdentifier] || {}\n }\n\n updateRestorationData(additionalData) {\n const { restorationIdentifier } = this;\n const restorationData = this.restorationData[restorationIdentifier];\n this.restorationData[restorationIdentifier] = {\n ...restorationData,\n ...additionalData\n };\n }\n\n // Scroll restoration\n\n assumeControlOfScrollRestoration() {\n if (!this.previousScrollRestoration) {\n this.previousScrollRestoration = history.scrollRestoration ?? \"auto\";\n history.scrollRestoration = \"manual\";\n }\n }\n\n relinquishControlOfScrollRestoration() {\n if (this.previousScrollRestoration) {\n history.scrollRestoration = this.previousScrollRestoration;\n delete this.previousScrollRestoration;\n }\n }\n\n // Event handlers\n\n onPopState = (event) => {\n if (this.shouldHandlePopState()) {\n const { turbo } = event.state || {};\n if (turbo) {\n this.location = new URL(window.location.href);\n const { restorationIdentifier, restorationIndex } = turbo;\n this.restorationIdentifier = restorationIdentifier;\n const direction = restorationIndex > this.currentIndex ? \"forward\" : \"back\";\n this.delegate.historyPoppedToLocationWithRestorationIdentifierAndDirection(this.location, restorationIdentifier, direction);\n this.currentIndex = restorationIndex;\n }\n }\n }\n\n onPageLoad = async (_event) => {\n await nextMicrotask();\n this.pageLoaded = true;\n }\n\n // Private\n\n shouldHandlePopState() {\n // Safari dispatches a popstate event after window's load event, ignore it\n return this.pageIsLoaded()\n }\n\n pageIsLoaded() {\n return this.pageLoaded || document.readyState == \"complete\"\n }\n}\n\nclass LinkPrefetchObserver {\n started = false\n #prefetchedLink = null\n\n constructor(delegate, eventTarget) {\n this.delegate = delegate;\n this.eventTarget = eventTarget;\n }\n\n start() {\n if (this.started) return\n\n if (this.eventTarget.readyState === \"loading\") {\n this.eventTarget.addEventListener(\"DOMContentLoaded\", this.#enable, { once: true });\n } else {\n this.#enable();\n }\n }\n\n stop() {\n if (!this.started) return\n\n this.eventTarget.removeEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.removeEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.removeEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = false;\n }\n\n #enable = () => {\n this.eventTarget.addEventListener(\"mouseenter\", this.#tryToPrefetchRequest, {\n capture: true,\n passive: true\n });\n this.eventTarget.addEventListener(\"mouseleave\", this.#cancelRequestIfObsolete, {\n capture: true,\n passive: true\n });\n\n this.eventTarget.addEventListener(\"turbo:before-fetch-request\", this.#tryToUsePrefetchedRequest, true);\n this.started = true;\n }\n\n #tryToPrefetchRequest = (event) => {\n if (getMetaContent(\"turbo-prefetch\") === \"false\") return\n\n const target = event.target;\n const isLink = target.matches && target.matches(\"a[href]:not([target^=_]):not([download])\");\n\n if (isLink && this.#isPrefetchable(target)) {\n const link = target;\n const location = getLocationForLink(link);\n\n if (this.delegate.canPrefetchRequestToLocation(link, location)) {\n this.#prefetchedLink = link;\n\n const fetchRequest = new FetchRequest(\n this,\n FetchMethod.get,\n location,\n new URLSearchParams(),\n target\n );\n\n prefetchCache.setLater(location.toString(), fetchRequest, this.#cacheTtl);\n }\n }\n }\n\n #cancelRequestIfObsolete = (event) => {\n if (event.target === this.#prefetchedLink) this.#cancelPrefetchRequest();\n }\n\n #cancelPrefetchRequest = () => {\n prefetchCache.clear();\n this.#prefetchedLink = null;\n }\n\n #tryToUsePrefetchedRequest = (event) => {\n if (event.target.tagName !== \"FORM\" && event.detail.fetchOptions.method === \"GET\") {\n const cached = prefetchCache.get(event.detail.url.toString());\n\n if (cached) {\n // User clicked link, use cache response\n event.detail.fetchRequest = cached;\n }\n\n prefetchCache.clear();\n }\n }\n\n prepareRequest(request) {\n const link = request.target;\n\n request.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n\n const turboFrame = link.closest(\"turbo-frame\");\n const turboFrameTarget = link.getAttribute(\"data-turbo-frame\") || turboFrame?.getAttribute(\"target\") || turboFrame?.id;\n\n if (turboFrameTarget && turboFrameTarget !== \"_top\") {\n request.headers[\"Turbo-Frame\"] = turboFrameTarget;\n }\n }\n\n // Fetch request interface\n\n requestSucceededWithResponse() {}\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n get #cacheTtl() {\n return Number(getMetaContent(\"turbo-prefetch-cache-time\")) || cacheTtl\n }\n\n #isPrefetchable(link) {\n const href = link.getAttribute(\"href\");\n\n if (!href) return false\n\n if (unfetchableLink(link)) return false\n if (linkToTheSamePage(link)) return false\n if (linkOptsOut(link)) return false\n if (nonSafeLink(link)) return false\n if (eventPrevented(link)) return false\n\n return true\n }\n}\n\nconst unfetchableLink = (link) => {\n return link.origin !== document.location.origin || ![\"http:\", \"https:\"].includes(link.protocol) || link.hasAttribute(\"target\")\n};\n\nconst linkToTheSamePage = (link) => {\n return (link.pathname + link.search === document.location.pathname + document.location.search) || link.href.startsWith(\"#\")\n};\n\nconst linkOptsOut = (link) => {\n if (link.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n if (link.getAttribute(\"data-turbo\") === \"false\") return true\n\n const turboPrefetchParent = findClosestRecursively(link, \"[data-turbo-prefetch]\");\n if (turboPrefetchParent && turboPrefetchParent.getAttribute(\"data-turbo-prefetch\") === \"false\") return true\n\n return false\n};\n\nconst nonSafeLink = (link) => {\n const turboMethod = link.getAttribute(\"data-turbo-method\");\n if (turboMethod && turboMethod.toLowerCase() !== \"get\") return true\n\n if (isUJS(link)) return true\n if (link.hasAttribute(\"data-turbo-confirm\")) return true\n if (link.hasAttribute(\"data-turbo-stream\")) return true\n\n return false\n};\n\nconst isUJS = (link) => {\n return link.hasAttribute(\"data-remote\") || link.hasAttribute(\"data-behavior\") || link.hasAttribute(\"data-confirm\") || link.hasAttribute(\"data-method\")\n};\n\nconst eventPrevented = (link) => {\n const event = dispatch(\"turbo:before-prefetch\", { target: link, cancelable: true });\n return event.defaultPrevented\n};\n\nclass Navigator {\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n proposeVisit(location, options = {}) {\n if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n this.delegate.visitProposedToLocation(location, options);\n }\n }\n\n startVisit(locatable, restorationIdentifier, options = {}) {\n this.stop();\n this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, {\n referrer: this.location,\n ...options\n });\n this.currentVisit.start();\n }\n\n submitForm(form, submitter) {\n this.stop();\n this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n this.formSubmission.start();\n }\n\n stop() {\n if (this.formSubmission) {\n this.formSubmission.stop();\n delete this.formSubmission;\n }\n\n if (this.currentVisit) {\n this.currentVisit.cancel();\n delete this.currentVisit;\n }\n }\n\n get adapter() {\n return this.delegate.adapter\n }\n\n get view() {\n return this.delegate.view\n }\n\n get rootLocation() {\n return this.view.snapshot.rootLocation\n }\n\n get history() {\n return this.delegate.history\n }\n\n // Form submission delegate\n\n formSubmissionStarted(formSubmission) {\n // Not all adapters implement formSubmissionStarted\n if (typeof this.adapter.formSubmissionStarted === \"function\") {\n this.adapter.formSubmissionStarted(formSubmission);\n }\n }\n\n async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n if (formSubmission == this.formSubmission) {\n const responseHTML = await fetchResponse.responseHTML;\n if (responseHTML) {\n const shouldCacheSnapshot = formSubmission.isSafe;\n if (!shouldCacheSnapshot) {\n this.view.clearSnapshotCache();\n }\n\n const { statusCode, redirected } = fetchResponse;\n const action = this.#getActionForFormSubmission(formSubmission, fetchResponse);\n const visitOptions = {\n action,\n shouldCacheSnapshot,\n response: { statusCode, responseHTML, redirected }\n };\n this.proposeVisit(fetchResponse.location, visitOptions);\n }\n }\n }\n\n async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n const responseHTML = await fetchResponse.responseHTML;\n\n if (responseHTML) {\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n if (fetchResponse.serverError) {\n await this.view.renderError(snapshot, this.currentVisit);\n } else {\n await this.view.renderPage(snapshot, false, true, this.currentVisit);\n }\n if(!snapshot.shouldPreserveScrollPosition) {\n this.view.scrollToTop();\n }\n this.view.clearSnapshotCache();\n }\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished(formSubmission) {\n // Not all adapters implement formSubmissionFinished\n if (typeof this.adapter.formSubmissionFinished === \"function\") {\n this.adapter.formSubmissionFinished(formSubmission);\n }\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n this.delegate.visitStarted(visit);\n }\n\n visitCompleted(visit) {\n this.delegate.visitCompleted(visit);\n delete this.currentVisit;\n }\n\n locationWithActionIsSamePage(location, action) {\n const anchor = getAnchor(location);\n const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n\n return (\n action !== \"replace\" &&\n getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n (isRestorationToTop || (anchor != null && anchor !== currentAnchor))\n )\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n }\n\n // Visits\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n #getActionForFormSubmission(formSubmission, fetchResponse) {\n const { submitter, formElement } = formSubmission;\n return getVisitAction(submitter, formElement) || this.#getDefaultAction(fetchResponse)\n }\n\n #getDefaultAction(fetchResponse) {\n const sameLocationRedirect = fetchResponse.redirected && fetchResponse.location.href === this.location?.href;\n return sameLocationRedirect ? \"replace\" : \"advance\"\n }\n}\n\nconst PageStage = {\n initial: 0,\n loading: 1,\n interactive: 2,\n complete: 3\n};\n\nclass PageObserver {\n stage = PageStage.initial\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n if (this.stage == PageStage.initial) {\n this.stage = PageStage.loading;\n }\n document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n addEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n removeEventListener(\"pagehide\", this.pageWillUnload, false);\n this.started = false;\n }\n }\n\n interpretReadyState = () => {\n const { readyState } = this;\n if (readyState == \"interactive\") {\n this.pageIsInteractive();\n } else if (readyState == \"complete\") {\n this.pageIsComplete();\n }\n }\n\n pageIsInteractive() {\n if (this.stage == PageStage.loading) {\n this.stage = PageStage.interactive;\n this.delegate.pageBecameInteractive();\n }\n }\n\n pageIsComplete() {\n this.pageIsInteractive();\n if (this.stage == PageStage.interactive) {\n this.stage = PageStage.complete;\n this.delegate.pageLoaded();\n }\n }\n\n pageWillUnload = () => {\n this.delegate.pageWillUnload();\n }\n\n get readyState() {\n return document.readyState\n }\n}\n\nclass ScrollObserver {\n started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.started) {\n addEventListener(\"scroll\", this.onScroll, false);\n this.onScroll();\n this.started = true;\n }\n }\n\n stop() {\n if (this.started) {\n removeEventListener(\"scroll\", this.onScroll, false);\n this.started = false;\n }\n }\n\n onScroll = () => {\n this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n }\n\n // Private\n\n updatePosition(position) {\n this.delegate.scrollPositionChanged(position);\n }\n}\n\nclass StreamMessageRenderer {\n render({ fragment }) {\n Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => {\n withAutofocusFromFragment(fragment, () => {\n withPreservedFocus(() => {\n document.documentElement.appendChild(fragment);\n });\n });\n });\n }\n\n // Bardo delegate\n\n enteringBardo(currentPermanentElement, newPermanentElement) {\n newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n }\n\n leavingBardo() {}\n}\n\nfunction getPermanentElementMapForFragment(fragment) {\n const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n const permanentElementMap = {};\n for (const permanentElementInDocument of permanentElementsInDocument) {\n const { id } = permanentElementInDocument;\n\n for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n\n if (elementInStream) {\n permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n }\n }\n }\n\n return permanentElementMap\n}\n\nasync function withAutofocusFromFragment(fragment, callback) {\n const generatedID = `turbo-stream-autofocus-${uuid()}`;\n const turboStreams = fragment.querySelectorAll(\"turbo-stream\");\n const elementWithAutofocus = firstAutofocusableElementInStreams(turboStreams);\n let willAutofocusId = null;\n\n if (elementWithAutofocus) {\n if (elementWithAutofocus.id) {\n willAutofocusId = elementWithAutofocus.id;\n } else {\n willAutofocusId = generatedID;\n }\n\n elementWithAutofocus.id = willAutofocusId;\n }\n\n callback();\n await nextRepaint();\n\n const hasNoActiveElement = document.activeElement == null || document.activeElement == document.body;\n\n if (hasNoActiveElement && willAutofocusId) {\n const elementToAutofocus = document.getElementById(willAutofocusId);\n\n if (elementIsFocusable(elementToAutofocus)) {\n elementToAutofocus.focus();\n }\n if (elementToAutofocus && elementToAutofocus.id == generatedID) {\n elementToAutofocus.removeAttribute(\"id\");\n }\n }\n}\n\nasync function withPreservedFocus(callback) {\n const [activeElementBeforeRender, activeElementAfterRender] = await around(callback, () => document.activeElement);\n\n const restoreFocusTo = activeElementBeforeRender && activeElementBeforeRender.id;\n\n if (restoreFocusTo) {\n const elementToFocus = document.getElementById(restoreFocusTo);\n\n if (elementIsFocusable(elementToFocus) && elementToFocus != activeElementAfterRender) {\n elementToFocus.focus();\n }\n }\n}\n\nfunction firstAutofocusableElementInStreams(nodeListOfStreamElements) {\n for (const streamElement of nodeListOfStreamElements) {\n const elementWithAutofocus = queryAutofocusableElement(streamElement.templateElement.content);\n\n if (elementWithAutofocus) return elementWithAutofocus\n }\n\n return null\n}\n\nclass StreamObserver {\n sources = new Set()\n #started = false\n\n constructor(delegate) {\n this.delegate = delegate;\n }\n\n start() {\n if (!this.#started) {\n this.#started = true;\n addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n stop() {\n if (this.#started) {\n this.#started = false;\n removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n }\n }\n\n connectStreamSource(source) {\n if (!this.streamSourceIsConnected(source)) {\n this.sources.add(source);\n source.addEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n disconnectStreamSource(source) {\n if (this.streamSourceIsConnected(source)) {\n this.sources.delete(source);\n source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n }\n }\n\n streamSourceIsConnected(source) {\n return this.sources.has(source)\n }\n\n inspectFetchResponse = (event) => {\n const response = fetchResponseFromEvent(event);\n if (response && fetchResponseIsStream(response)) {\n event.preventDefault();\n this.receiveMessageResponse(response);\n }\n }\n\n receiveMessageEvent = (event) => {\n if (this.#started && typeof event.data == \"string\") {\n this.receiveMessageHTML(event.data);\n }\n }\n\n async receiveMessageResponse(response) {\n const html = await response.responseHTML;\n if (html) {\n this.receiveMessageHTML(html);\n }\n }\n\n receiveMessageHTML(html) {\n this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n }\n}\n\nfunction fetchResponseFromEvent(event) {\n const fetchResponse = event.detail?.fetchResponse;\n if (fetchResponse instanceof FetchResponse) {\n return fetchResponse\n }\n}\n\nfunction fetchResponseIsStream(response) {\n const contentType = response.contentType ?? \"\";\n return contentType.startsWith(StreamMessage.contentType)\n}\n\nclass ErrorRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n const { documentElement, body } = document;\n\n documentElement.replaceChild(newElement, body);\n }\n\n async render() {\n this.replaceHeadAndBody();\n this.activateScriptElements();\n }\n\n replaceHeadAndBody() {\n const { documentElement, head } = document;\n documentElement.replaceChild(this.newHead, head);\n this.renderElement(this.currentElement, this.newElement);\n }\n\n activateScriptElements() {\n for (const replaceableElement of this.scriptElements) {\n const parentNode = replaceableElement.parentNode;\n if (parentNode) {\n const element = activateScriptElement(replaceableElement);\n parentNode.replaceChild(element, replaceableElement);\n }\n }\n }\n\n get newHead() {\n return this.newSnapshot.headSnapshot.element\n }\n\n get scriptElements() {\n return document.documentElement.querySelectorAll(\"script\")\n }\n}\n\n// base IIFE to define idiomorph\nvar Idiomorph = (function () {\n\n //=============================================================================\n // AND NOW IT BEGINS...\n //=============================================================================\n let EMPTY_SET = new Set();\n\n // default configuration values, updatable by users now\n let defaults = {\n morphStyle: \"outerHTML\",\n callbacks : {\n beforeNodeAdded: noOp,\n afterNodeAdded: noOp,\n beforeNodeMorphed: noOp,\n afterNodeMorphed: noOp,\n beforeNodeRemoved: noOp,\n afterNodeRemoved: noOp,\n beforeAttributeUpdated: noOp,\n\n },\n head: {\n style: 'merge',\n shouldPreserve: function (elt) {\n return elt.getAttribute(\"im-preserve\") === \"true\";\n },\n shouldReAppend: function (elt) {\n return elt.getAttribute(\"im-re-append\") === \"true\";\n },\n shouldRemove: noOp,\n afterHeadMorphed: noOp,\n }\n };\n\n //=============================================================================\n // Core Morphing Algorithm - morph, morphNormalizedContent, morphOldNodeTo, morphChildren\n //=============================================================================\n function morph(oldNode, newContent, config = {}) {\n\n if (oldNode instanceof Document) {\n oldNode = oldNode.documentElement;\n }\n\n if (typeof newContent === 'string') {\n newContent = parseContent(newContent);\n }\n\n let normalizedContent = normalizeContent(newContent);\n\n let ctx = createMorphContext(oldNode, normalizedContent, config);\n\n return morphNormalizedContent(oldNode, normalizedContent, ctx);\n }\n\n function morphNormalizedContent(oldNode, normalizedNewContent, ctx) {\n if (ctx.head.block) {\n let oldHead = oldNode.querySelector('head');\n let newHead = normalizedNewContent.querySelector('head');\n if (oldHead && newHead) {\n let promises = handleHeadElement(newHead, oldHead, ctx);\n // when head promises resolve, call morph again, ignoring the head tag\n Promise.all(promises).then(function () {\n morphNormalizedContent(oldNode, normalizedNewContent, Object.assign(ctx, {\n head: {\n block: false,\n ignore: true\n }\n }));\n });\n return;\n }\n }\n\n if (ctx.morphStyle === \"innerHTML\") {\n\n // innerHTML, so we are only updating the children\n morphChildren(normalizedNewContent, oldNode, ctx);\n return oldNode.children;\n\n } else if (ctx.morphStyle === \"outerHTML\" || ctx.morphStyle == null) {\n // otherwise find the best element match in the new content, morph that, and merge its siblings\n // into either side of the best match\n let bestMatch = findBestNodeMatch(normalizedNewContent, oldNode, ctx);\n\n // stash the siblings that will need to be inserted on either side of the best match\n let previousSibling = bestMatch?.previousSibling;\n let nextSibling = bestMatch?.nextSibling;\n\n // morph it\n let morphedNode = morphOldNodeTo(oldNode, bestMatch, ctx);\n\n if (bestMatch) {\n // if there was a best match, merge the siblings in too and return the\n // whole bunch\n return insertSiblings(previousSibling, morphedNode, nextSibling);\n } else {\n // otherwise nothing was added to the DOM\n return []\n }\n } else {\n throw \"Do not understand how to morph style \" + ctx.morphStyle;\n }\n }\n\n\n /**\n * @param possibleActiveElement\n * @param ctx\n * @returns {boolean}\n */\n function ignoreValueOfActiveElement(possibleActiveElement, ctx) {\n return ctx.ignoreActiveValue && possibleActiveElement === document.activeElement && possibleActiveElement !== document.body;\n }\n\n /**\n * @param oldNode root node to merge content into\n * @param newContent new content to merge\n * @param ctx the merge context\n * @returns {Element} the element that ended up in the DOM\n */\n function morphOldNodeTo(oldNode, newContent, ctx) {\n if (ctx.ignoreActive && oldNode === document.activeElement) ; else if (newContent == null) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n\n oldNode.remove();\n ctx.callbacks.afterNodeRemoved(oldNode);\n return null;\n } else if (!isSoftMatch(oldNode, newContent)) {\n if (ctx.callbacks.beforeNodeRemoved(oldNode) === false) return oldNode;\n if (ctx.callbacks.beforeNodeAdded(newContent) === false) return oldNode;\n\n oldNode.parentElement.replaceChild(newContent, oldNode);\n ctx.callbacks.afterNodeAdded(newContent);\n ctx.callbacks.afterNodeRemoved(oldNode);\n return newContent;\n } else {\n if (ctx.callbacks.beforeNodeMorphed(oldNode, newContent) === false) return oldNode;\n\n if (oldNode instanceof HTMLHeadElement && ctx.head.ignore) ; else if (oldNode instanceof HTMLHeadElement && ctx.head.style !== \"morph\") {\n handleHeadElement(newContent, oldNode, ctx);\n } else {\n syncNodeFrom(newContent, oldNode, ctx);\n if (!ignoreValueOfActiveElement(oldNode, ctx)) {\n morphChildren(newContent, oldNode, ctx);\n }\n }\n ctx.callbacks.afterNodeMorphed(oldNode, newContent);\n return oldNode;\n }\n }\n\n /**\n * This is the core algorithm for matching up children. The idea is to use id sets to try to match up\n * nodes as faithfully as possible. We greedily match, which allows us to keep the algorithm fast, but\n * by using id sets, we are able to better match up with content deeper in the DOM.\n *\n * Basic algorithm is, for each node in the new content:\n *\n * - if we have reached the end of the old parent, append the new content\n * - if the new content has an id set match with the current insertion point, morph\n * - search for an id set match\n * - if id set match found, morph\n * - otherwise search for a \"soft\" match\n * - if a soft match is found, morph\n * - otherwise, prepend the new node before the current insertion point\n *\n * The two search algorithms terminate if competing node matches appear to outweigh what can be achieved\n * with the current node. See findIdSetMatch() and findSoftMatch() for details.\n *\n * @param {Element} newParent the parent element of the new content\n * @param {Element } oldParent the old content that we are merging the new content into\n * @param ctx the merge context\n */\n function morphChildren(newParent, oldParent, ctx) {\n\n let nextNewChild = newParent.firstChild;\n let insertionPoint = oldParent.firstChild;\n let newChild;\n\n // run through all the new content\n while (nextNewChild) {\n\n newChild = nextNewChild;\n nextNewChild = newChild.nextSibling;\n\n // if we are at the end of the exiting parent's children, just append\n if (insertionPoint == null) {\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.appendChild(newChild);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // if the current node has an id set match then morph\n if (isIdSetMatch(newChild, insertionPoint, ctx)) {\n morphOldNodeTo(insertionPoint, newChild, ctx);\n insertionPoint = insertionPoint.nextSibling;\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // otherwise search forward in the existing old children for an id set match\n let idSetMatch = findIdSetMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a potential match, remove the nodes until that point and morph\n if (idSetMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, idSetMatch, ctx);\n morphOldNodeTo(idSetMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // no id set match found, so scan forward for a soft match for the current node\n let softMatch = findSoftMatch(newParent, oldParent, newChild, insertionPoint, ctx);\n\n // if we found a soft match for the current node, morph\n if (softMatch) {\n insertionPoint = removeNodesBetween(insertionPoint, softMatch, ctx);\n morphOldNodeTo(softMatch, newChild, ctx);\n removeIdsFromConsideration(ctx, newChild);\n continue;\n }\n\n // abandon all hope of morphing, just insert the new child before the insertion point\n // and move on\n if (ctx.callbacks.beforeNodeAdded(newChild) === false) return;\n\n oldParent.insertBefore(newChild, insertionPoint);\n ctx.callbacks.afterNodeAdded(newChild);\n removeIdsFromConsideration(ctx, newChild);\n }\n\n // remove any remaining old nodes that didn't match up with new content\n while (insertionPoint !== null) {\n\n let tempNode = insertionPoint;\n insertionPoint = insertionPoint.nextSibling;\n removeNode(tempNode, ctx);\n }\n }\n\n //=============================================================================\n // Attribute Syncing Code\n //=============================================================================\n\n /**\n * @param attr {String} the attribute to be mutated\n * @param to {Element} the element that is going to be updated\n * @param updateType {(\"update\"|\"remove\")}\n * @param ctx the merge context\n * @returns {boolean} true if the attribute should be ignored, false otherwise\n */\n function ignoreAttribute(attr, to, updateType, ctx) {\n if(attr === 'value' && ctx.ignoreActiveValue && to === document.activeElement){\n return true;\n }\n return ctx.callbacks.beforeAttributeUpdated(attr, to, updateType) === false;\n }\n\n /**\n * syncs a given node with another node, copying over all attributes and\n * inner element state from the 'from' node to the 'to' node\n *\n * @param {Element} from the element to copy attributes & state from\n * @param {Element} to the element to copy attributes & state to\n * @param ctx the merge context\n */\n function syncNodeFrom(from, to, ctx) {\n let type = from.nodeType;\n\n // if is an element type, sync the attributes from the\n // new node into the new node\n if (type === 1 /* element type */) {\n const fromAttributes = from.attributes;\n const toAttributes = to.attributes;\n for (const fromAttribute of fromAttributes) {\n if (ignoreAttribute(fromAttribute.name, to, 'update', ctx)) {\n continue;\n }\n if (to.getAttribute(fromAttribute.name) !== fromAttribute.value) {\n to.setAttribute(fromAttribute.name, fromAttribute.value);\n }\n }\n // iterate backwards to avoid skipping over items when a delete occurs\n for (let i = toAttributes.length - 1; 0 <= i; i--) {\n const toAttribute = toAttributes[i];\n if (ignoreAttribute(toAttribute.name, to, 'remove', ctx)) {\n continue;\n }\n if (!from.hasAttribute(toAttribute.name)) {\n to.removeAttribute(toAttribute.name);\n }\n }\n }\n\n // sync text nodes\n if (type === 8 /* comment */ || type === 3 /* text */) {\n if (to.nodeValue !== from.nodeValue) {\n to.nodeValue = from.nodeValue;\n }\n }\n\n if (!ignoreValueOfActiveElement(to, ctx)) {\n // sync input values\n syncInputValue(from, to, ctx);\n }\n }\n\n /**\n * @param from {Element} element to sync the value from\n * @param to {Element} element to sync the value to\n * @param attributeName {String} the attribute name\n * @param ctx the merge context\n */\n function syncBooleanAttribute(from, to, attributeName, ctx) {\n if (from[attributeName] !== to[attributeName]) {\n let ignoreUpdate = ignoreAttribute(attributeName, to, 'update', ctx);\n if (!ignoreUpdate) {\n to[attributeName] = from[attributeName];\n }\n if (from[attributeName]) {\n if (!ignoreUpdate) {\n to.setAttribute(attributeName, from[attributeName]);\n }\n } else {\n if (!ignoreAttribute(attributeName, to, 'remove', ctx)) {\n to.removeAttribute(attributeName);\n }\n }\n }\n }\n\n /**\n * NB: many bothans died to bring us information:\n *\n * https://github.com/patrick-steele-idem/morphdom/blob/master/src/specialElHandlers.js\n * https://github.com/choojs/nanomorph/blob/master/lib/morph.jsL113\n *\n * @param from {Element} the element to sync the input value from\n * @param to {Element} the element to sync the input value to\n * @param ctx the merge context\n */\n function syncInputValue(from, to, ctx) {\n if (from instanceof HTMLInputElement &&\n to instanceof HTMLInputElement &&\n from.type !== 'file') {\n\n let fromValue = from.value;\n let toValue = to.value;\n\n // sync boolean attributes\n syncBooleanAttribute(from, to, 'checked', ctx);\n syncBooleanAttribute(from, to, 'disabled', ctx);\n\n if (!from.hasAttribute('value')) {\n if (!ignoreAttribute('value', to, 'remove', ctx)) {\n to.value = '';\n to.removeAttribute('value');\n }\n } else if (fromValue !== toValue) {\n if (!ignoreAttribute('value', to, 'update', ctx)) {\n to.setAttribute('value', fromValue);\n to.value = fromValue;\n }\n }\n } else if (from instanceof HTMLOptionElement) {\n syncBooleanAttribute(from, to, 'selected', ctx);\n } else if (from instanceof HTMLTextAreaElement && to instanceof HTMLTextAreaElement) {\n let fromValue = from.value;\n let toValue = to.value;\n if (ignoreAttribute('value', to, 'update', ctx)) {\n return;\n }\n if (fromValue !== toValue) {\n to.value = fromValue;\n }\n if (to.firstChild && to.firstChild.nodeValue !== fromValue) {\n to.firstChild.nodeValue = fromValue;\n }\n }\n }\n\n //=============================================================================\n // the HEAD tag can be handled specially, either w/ a 'merge' or 'append' style\n //=============================================================================\n function handleHeadElement(newHeadTag, currentHead, ctx) {\n\n let added = [];\n let removed = [];\n let preserved = [];\n let nodesToAppend = [];\n\n let headMergeStyle = ctx.head.style;\n\n // put all new head elements into a Map, by their outerHTML\n let srcToNewHeadNodes = new Map();\n for (const newHeadChild of newHeadTag.children) {\n srcToNewHeadNodes.set(newHeadChild.outerHTML, newHeadChild);\n }\n\n // for each elt in the current head\n for (const currentHeadElt of currentHead.children) {\n\n // If the current head element is in the map\n let inNewContent = srcToNewHeadNodes.has(currentHeadElt.outerHTML);\n let isReAppended = ctx.head.shouldReAppend(currentHeadElt);\n let isPreserved = ctx.head.shouldPreserve(currentHeadElt);\n if (inNewContent || isPreserved) {\n if (isReAppended) {\n // remove the current version and let the new version replace it and re-execute\n removed.push(currentHeadElt);\n } else {\n // this element already exists and should not be re-appended, so remove it from\n // the new content map, preserving it in the DOM\n srcToNewHeadNodes.delete(currentHeadElt.outerHTML);\n preserved.push(currentHeadElt);\n }\n } else {\n if (headMergeStyle === \"append\") {\n // we are appending and this existing element is not new content\n // so if and only if it is marked for re-append do we do anything\n if (isReAppended) {\n removed.push(currentHeadElt);\n nodesToAppend.push(currentHeadElt);\n }\n } else {\n // if this is a merge, we remove this content since it is not in the new head\n if (ctx.head.shouldRemove(currentHeadElt) !== false) {\n removed.push(currentHeadElt);\n }\n }\n }\n }\n\n // Push the remaining new head elements in the Map into the\n // nodes to append to the head tag\n nodesToAppend.push(...srcToNewHeadNodes.values());\n\n let promises = [];\n for (const newNode of nodesToAppend) {\n let newElt = document.createRange().createContextualFragment(newNode.outerHTML).firstChild;\n if (ctx.callbacks.beforeNodeAdded(newElt) !== false) {\n if (newElt.href || newElt.src) {\n let resolve = null;\n let promise = new Promise(function (_resolve) {\n resolve = _resolve;\n });\n newElt.addEventListener('load', function () {\n resolve();\n });\n promises.push(promise);\n }\n currentHead.appendChild(newElt);\n ctx.callbacks.afterNodeAdded(newElt);\n added.push(newElt);\n }\n }\n\n // remove all removed elements, after we have appended the new elements to avoid\n // additional network requests for things like style sheets\n for (const removedElement of removed) {\n if (ctx.callbacks.beforeNodeRemoved(removedElement) !== false) {\n currentHead.removeChild(removedElement);\n ctx.callbacks.afterNodeRemoved(removedElement);\n }\n }\n\n ctx.head.afterHeadMorphed(currentHead, {added: added, kept: preserved, removed: removed});\n return promises;\n }\n\n function noOp() {\n }\n\n /*\n Deep merges the config object and the Idiomoroph.defaults object to\n produce a final configuration object\n */\n function mergeDefaults(config) {\n let finalConfig = {};\n // copy top level stuff into final config\n Object.assign(finalConfig, defaults);\n Object.assign(finalConfig, config);\n\n // copy callbacks into final config (do this to deep merge the callbacks)\n finalConfig.callbacks = {};\n Object.assign(finalConfig.callbacks, defaults.callbacks);\n Object.assign(finalConfig.callbacks, config.callbacks);\n\n // copy head config into final config (do this to deep merge the head)\n finalConfig.head = {};\n Object.assign(finalConfig.head, defaults.head);\n Object.assign(finalConfig.head, config.head);\n return finalConfig;\n }\n\n function createMorphContext(oldNode, newContent, config) {\n config = mergeDefaults(config);\n return {\n target: oldNode,\n newContent: newContent,\n config: config,\n morphStyle: config.morphStyle,\n ignoreActive: config.ignoreActive,\n ignoreActiveValue: config.ignoreActiveValue,\n idMap: createIdMap(oldNode, newContent),\n deadIds: new Set(),\n callbacks: config.callbacks,\n head: config.head\n }\n }\n\n function isIdSetMatch(node1, node2, ctx) {\n if (node1 == null || node2 == null) {\n return false;\n }\n if (node1.nodeType === node2.nodeType && node1.tagName === node2.tagName) {\n if (node1.id !== \"\" && node1.id === node2.id) {\n return true;\n } else {\n return getIdIntersectionCount(ctx, node1, node2) > 0;\n }\n }\n return false;\n }\n\n function isSoftMatch(node1, node2) {\n if (node1 == null || node2 == null) {\n return false;\n }\n return node1.nodeType === node2.nodeType && node1.tagName === node2.tagName\n }\n\n function removeNodesBetween(startInclusive, endExclusive, ctx) {\n while (startInclusive !== endExclusive) {\n let tempNode = startInclusive;\n startInclusive = startInclusive.nextSibling;\n removeNode(tempNode, ctx);\n }\n removeIdsFromConsideration(ctx, endExclusive);\n return endExclusive.nextSibling;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential id match\n // for the newChild. We stop if we find a potential id match for the new child OR\n // if the number of potential id matches we are discarding is greater than the\n // potential id matches for the new child\n //=============================================================================\n function findIdSetMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n // max id matches we are willing to discard in our search\n let newChildPotentialIdCount = getIdIntersectionCount(ctx, newChild, oldParent);\n\n let potentialMatch = null;\n\n // only search forward if there is a possibility of an id match\n if (newChildPotentialIdCount > 0) {\n let potentialMatch = insertionPoint;\n // if there is a possibility of an id match, scan forward\n // keep track of the potential id match count we are discarding (the\n // newChildPotentialIdCount must be greater than this to make it likely\n // worth it)\n let otherMatchCount = 0;\n while (potentialMatch != null) {\n\n // If we have an id match, return the current potential match\n if (isIdSetMatch(newChild, potentialMatch, ctx)) {\n return potentialMatch;\n }\n\n // computer the other potential matches of this new content\n otherMatchCount += getIdIntersectionCount(ctx, potentialMatch, newContent);\n if (otherMatchCount > newChildPotentialIdCount) {\n // if we have more potential id matches in _other_ content, we\n // do not have a good candidate for an id match, so return null\n return null;\n }\n\n // advanced to the next old content child\n potentialMatch = potentialMatch.nextSibling;\n }\n }\n return potentialMatch;\n }\n\n //=============================================================================\n // Scans forward from the insertionPoint in the old parent looking for a potential soft match\n // for the newChild. We stop if we find a potential soft match for the new child OR\n // if we find a potential id match in the old parents children OR if we find two\n // potential soft matches for the next two pieces of new content\n //=============================================================================\n function findSoftMatch(newContent, oldParent, newChild, insertionPoint, ctx) {\n\n let potentialSoftMatch = insertionPoint;\n let nextSibling = newChild.nextSibling;\n let siblingSoftMatchCount = 0;\n\n while (potentialSoftMatch != null) {\n\n if (getIdIntersectionCount(ctx, potentialSoftMatch, newContent) > 0) {\n // the current potential soft match has a potential id set match with the remaining new\n // content so bail out of looking\n return null;\n }\n\n // if we have a soft match with the current node, return it\n if (isSoftMatch(newChild, potentialSoftMatch)) {\n return potentialSoftMatch;\n }\n\n if (isSoftMatch(nextSibling, potentialSoftMatch)) {\n // the next new node has a soft match with this node, so\n // increment the count of future soft matches\n siblingSoftMatchCount++;\n nextSibling = nextSibling.nextSibling;\n\n // If there are two future soft matches, bail to allow the siblings to soft match\n // so that we don't consume future soft matches for the sake of the current node\n if (siblingSoftMatchCount >= 2) {\n return null;\n }\n }\n\n // advanced to the next old content child\n potentialSoftMatch = potentialSoftMatch.nextSibling;\n }\n\n return potentialSoftMatch;\n }\n\n function parseContent(newContent) {\n let parser = new DOMParser();\n\n // remove svgs to avoid false-positive matches on head, etc.\n let contentWithSvgsRemoved = newContent.replace(/<svg(\\s[^>]*>|>)([\\s\\S]*?)<\\/svg>/gim, '');\n\n // if the newContent contains a html, head or body tag, we can simply parse it w/o wrapping\n if (contentWithSvgsRemoved.match(/<\\/html>/) || contentWithSvgsRemoved.match(/<\\/head>/) || contentWithSvgsRemoved.match(/<\\/body>/)) {\n let content = parser.parseFromString(newContent, \"text/html\");\n // if it is a full HTML document, return the document itself as the parent container\n if (contentWithSvgsRemoved.match(/<\\/html>/)) {\n content.generatedByIdiomorph = true;\n return content;\n } else {\n // otherwise return the html element as the parent container\n let htmlElement = content.firstChild;\n if (htmlElement) {\n htmlElement.generatedByIdiomorph = true;\n return htmlElement;\n } else {\n return null;\n }\n }\n } else {\n // if it is partial HTML, wrap it in a template tag to provide a parent element and also to help\n // deal with touchy tags like tr, tbody, etc.\n let responseDoc = parser.parseFromString(\"<body><template>\" + newContent + \"</template></body>\", \"text/html\");\n let content = responseDoc.body.querySelector('template').content;\n content.generatedByIdiomorph = true;\n return content\n }\n }\n\n function normalizeContent(newContent) {\n if (newContent == null) {\n // noinspection UnnecessaryLocalVariableJS\n const dummyParent = document.createElement('div');\n return dummyParent;\n } else if (newContent.generatedByIdiomorph) {\n // the template tag created by idiomorph parsing can serve as a dummy parent\n return newContent;\n } else if (newContent instanceof Node) {\n // a single node is added as a child to a dummy parent\n const dummyParent = document.createElement('div');\n dummyParent.append(newContent);\n return dummyParent;\n } else {\n // all nodes in the array or HTMLElement collection are consolidated under\n // a single dummy parent element\n const dummyParent = document.createElement('div');\n for (const elt of [...newContent]) {\n dummyParent.append(elt);\n }\n return dummyParent;\n }\n }\n\n function insertSiblings(previousSibling, morphedNode, nextSibling) {\n let stack = [];\n let added = [];\n while (previousSibling != null) {\n stack.push(previousSibling);\n previousSibling = previousSibling.previousSibling;\n }\n while (stack.length > 0) {\n let node = stack.pop();\n added.push(node); // push added preceding siblings on in order and insert\n morphedNode.parentElement.insertBefore(node, morphedNode);\n }\n added.push(morphedNode);\n while (nextSibling != null) {\n stack.push(nextSibling);\n added.push(nextSibling); // here we are going in order, so push on as we scan, rather than add\n nextSibling = nextSibling.nextSibling;\n }\n while (stack.length > 0) {\n morphedNode.parentElement.insertBefore(stack.pop(), morphedNode.nextSibling);\n }\n return added;\n }\n\n function findBestNodeMatch(newContent, oldNode, ctx) {\n let currentElement;\n currentElement = newContent.firstChild;\n let bestElement = currentElement;\n let score = 0;\n while (currentElement) {\n let newScore = scoreElement(currentElement, oldNode, ctx);\n if (newScore > score) {\n bestElement = currentElement;\n score = newScore;\n }\n currentElement = currentElement.nextSibling;\n }\n return bestElement;\n }\n\n function scoreElement(node1, node2, ctx) {\n if (isSoftMatch(node1, node2)) {\n return .5 + getIdIntersectionCount(ctx, node1, node2);\n }\n return 0;\n }\n\n function removeNode(tempNode, ctx) {\n removeIdsFromConsideration(ctx, tempNode);\n if (ctx.callbacks.beforeNodeRemoved(tempNode) === false) return;\n\n tempNode.remove();\n ctx.callbacks.afterNodeRemoved(tempNode);\n }\n\n //=============================================================================\n // ID Set Functions\n //=============================================================================\n\n function isIdInConsideration(ctx, id) {\n return !ctx.deadIds.has(id);\n }\n\n function idIsWithinNode(ctx, id, targetNode) {\n let idSet = ctx.idMap.get(targetNode) || EMPTY_SET;\n return idSet.has(id);\n }\n\n function removeIdsFromConsideration(ctx, node) {\n let idSet = ctx.idMap.get(node) || EMPTY_SET;\n for (const id of idSet) {\n ctx.deadIds.add(id);\n }\n }\n\n function getIdIntersectionCount(ctx, node1, node2) {\n let sourceSet = ctx.idMap.get(node1) || EMPTY_SET;\n let matchCount = 0;\n for (const id of sourceSet) {\n // a potential match is an id in the source and potentialIdsSet, but\n // that has not already been merged into the DOM\n if (isIdInConsideration(ctx, id) && idIsWithinNode(ctx, id, node2)) {\n ++matchCount;\n }\n }\n return matchCount;\n }\n\n /**\n * A bottom up algorithm that finds all elements with ids inside of the node\n * argument and populates id sets for those nodes and all their parents, generating\n * a set of ids contained within all nodes for the entire hierarchy in the DOM\n *\n * @param node {Element}\n * @param {Map<Node, Set<String>>} idMap\n */\n function populateIdMapForNode(node, idMap) {\n let nodeParent = node.parentElement;\n // find all elements with an id property\n let idElements = node.querySelectorAll('[id]');\n for (const elt of idElements) {\n let current = elt;\n // walk up the parent hierarchy of that element, adding the id\n // of element to the parent's id set\n while (current !== nodeParent && current != null) {\n let idSet = idMap.get(current);\n // if the id set doesn't exist, create it and insert it in the map\n if (idSet == null) {\n idSet = new Set();\n idMap.set(current, idSet);\n }\n idSet.add(elt.id);\n current = current.parentElement;\n }\n }\n }\n\n /**\n * This function computes a map of nodes to all ids contained within that node (inclusive of the\n * node). This map can be used to ask if two nodes have intersecting sets of ids, which allows\n * for a looser definition of \"matching\" than tradition id matching, and allows child nodes\n * to contribute to a parent nodes matching.\n *\n * @param {Element} oldContent the old content that will be morphed\n * @param {Element} newContent the new content to morph to\n * @returns {Map<Node, Set<String>>} a map of nodes to id sets for the\n */\n function createIdMap(oldContent, newContent) {\n let idMap = new Map();\n populateIdMapForNode(oldContent, idMap);\n populateIdMapForNode(newContent, idMap);\n return idMap;\n }\n\n //=============================================================================\n // This is what ends up becoming the Idiomorph global object\n //=============================================================================\n return {\n morph,\n defaults\n }\n })();\n\nfunction morphElements(currentElement, newElement, { callbacks, ...options } = {}) {\n Idiomorph.morph(currentElement, newElement, {\n ...options,\n callbacks: new DefaultIdiomorphCallbacks(callbacks)\n });\n}\n\nfunction morphChildren(currentElement, newElement) {\n morphElements(currentElement, newElement.children, {\n morphStyle: \"innerHTML\"\n });\n}\n\nclass DefaultIdiomorphCallbacks {\n #beforeNodeMorphed\n\n constructor({ beforeNodeMorphed } = {}) {\n this.#beforeNodeMorphed = beforeNodeMorphed || (() => true);\n }\n\n beforeNodeAdded = (node) => {\n return !(node.id && node.hasAttribute(\"data-turbo-permanent\") && document.getElementById(node.id))\n }\n\n beforeNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n if (!currentElement.hasAttribute(\"data-turbo-permanent\") && this.#beforeNodeMorphed(currentElement, newElement)) {\n const event = dispatch(\"turbo:before-morph-element\", {\n cancelable: true,\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n return !event.defaultPrevented\n } else {\n return false\n }\n }\n }\n\n beforeAttributeUpdated = (attributeName, target, mutationType) => {\n const event = dispatch(\"turbo:before-morph-attribute\", {\n cancelable: true,\n target,\n detail: { attributeName, mutationType }\n });\n\n return !event.defaultPrevented\n }\n\n beforeNodeRemoved = (node) => {\n return this.beforeNodeMorphed(node)\n }\n\n afterNodeMorphed = (currentElement, newElement) => {\n if (currentElement instanceof Element) {\n dispatch(\"turbo:morph-element\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n }\n }\n}\n\nclass MorphingFrameRenderer extends FrameRenderer {\n static renderElement(currentElement, newElement) {\n dispatch(\"turbo:before-frame-morph\", {\n target: currentElement,\n detail: { currentElement, newElement }\n });\n\n morphChildren(currentElement, newElement);\n }\n}\n\nclass PageRenderer extends Renderer {\n static renderElement(currentElement, newElement) {\n if (document.body && newElement instanceof HTMLBodyElement) {\n document.body.replaceWith(newElement);\n } else {\n document.documentElement.appendChild(newElement);\n }\n }\n\n get shouldRender() {\n return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical\n }\n\n get reloadReason() {\n if (!this.newSnapshot.isVisitable) {\n return {\n reason: \"turbo_visit_control_is_reload\"\n }\n }\n\n if (!this.trackedElementsAreIdentical) {\n return {\n reason: \"tracked_element_mismatch\"\n }\n }\n }\n\n async prepareToRender() {\n this.#setLanguage();\n await this.mergeHead();\n }\n\n async render() {\n if (this.willRender) {\n await this.replaceBody();\n }\n }\n\n finishRendering() {\n super.finishRendering();\n if (!this.isPreview) {\n this.focusFirstAutofocusableElement();\n }\n }\n\n get currentHeadSnapshot() {\n return this.currentSnapshot.headSnapshot\n }\n\n get newHeadSnapshot() {\n return this.newSnapshot.headSnapshot\n }\n\n get newElement() {\n return this.newSnapshot.element\n }\n\n #setLanguage() {\n const { documentElement } = this.currentSnapshot;\n const { lang } = this.newSnapshot;\n\n if (lang) {\n documentElement.setAttribute(\"lang\", lang);\n } else {\n documentElement.removeAttribute(\"lang\");\n }\n }\n\n async mergeHead() {\n const mergedHeadElements = this.mergeProvisionalElements();\n const newStylesheetElements = this.copyNewHeadStylesheetElements();\n this.copyNewHeadScriptElements();\n\n await mergedHeadElements;\n await newStylesheetElements;\n\n if (this.willRender) {\n this.removeUnusedDynamicStylesheetElements();\n }\n }\n\n async replaceBody() {\n await this.preservingPermanentElements(async () => {\n this.activateNewBody();\n await this.assignNewBody();\n });\n }\n\n get trackedElementsAreIdentical() {\n return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature\n }\n\n async copyNewHeadStylesheetElements() {\n const loadingElements = [];\n\n for (const element of this.newHeadStylesheetElements) {\n loadingElements.push(waitForLoad(element));\n\n document.head.appendChild(element);\n }\n\n await Promise.all(loadingElements);\n }\n\n copyNewHeadScriptElements() {\n for (const element of this.newHeadScriptElements) {\n document.head.appendChild(activateScriptElement(element));\n }\n }\n\n removeUnusedDynamicStylesheetElements() {\n for (const element of this.unusedDynamicStylesheetElements) {\n document.head.removeChild(element);\n }\n }\n\n async mergeProvisionalElements() {\n const newHeadElements = [...this.newHeadProvisionalElements];\n\n for (const element of this.currentHeadProvisionalElements) {\n if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n document.head.removeChild(element);\n }\n }\n\n for (const element of newHeadElements) {\n document.head.appendChild(element);\n }\n }\n\n isCurrentElementInElementList(element, elementList) {\n for (const [index, newElement] of elementList.entries()) {\n // if title element...\n if (element.tagName == \"TITLE\") {\n if (newElement.tagName != \"TITLE\") {\n continue\n }\n if (element.innerHTML == newElement.innerHTML) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n // if any other element...\n if (newElement.isEqualNode(element)) {\n elementList.splice(index, 1);\n return true\n }\n }\n\n return false\n }\n\n removeCurrentHeadProvisionalElements() {\n for (const element of this.currentHeadProvisionalElements) {\n document.head.removeChild(element);\n }\n }\n\n copyNewHeadProvisionalElements() {\n for (const element of this.newHeadProvisionalElements) {\n document.head.appendChild(element);\n }\n }\n\n activateNewBody() {\n document.adoptNode(this.newElement);\n this.activateNewBodyScriptElements();\n }\n\n activateNewBodyScriptElements() {\n for (const inertScriptElement of this.newBodyScriptElements) {\n const activatedScriptElement = activateScriptElement(inertScriptElement);\n inertScriptElement.replaceWith(activatedScriptElement);\n }\n }\n\n async assignNewBody() {\n await this.renderElement(this.currentElement, this.newElement);\n }\n\n get unusedDynamicStylesheetElements() {\n return this.oldHeadStylesheetElements.filter((element) => {\n return element.getAttribute(\"data-turbo-track\") === \"dynamic\"\n })\n }\n\n get oldHeadStylesheetElements() {\n return this.currentHeadSnapshot.getStylesheetElementsNotInSnapshot(this.newHeadSnapshot)\n }\n\n get newHeadStylesheetElements() {\n return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get newHeadScriptElements() {\n return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot)\n }\n\n get currentHeadProvisionalElements() {\n return this.currentHeadSnapshot.provisionalElements\n }\n\n get newHeadProvisionalElements() {\n return this.newHeadSnapshot.provisionalElements\n }\n\n get newBodyScriptElements() {\n return this.newElement.querySelectorAll(\"script\")\n }\n}\n\nclass MorphingPageRenderer extends PageRenderer {\n static renderElement(currentElement, newElement) {\n morphElements(currentElement, newElement, {\n callbacks: {\n beforeNodeMorphed: element => !canRefreshFrame(element)\n }\n });\n\n for (const frame of currentElement.querySelectorAll(\"turbo-frame\")) {\n if (canRefreshFrame(frame)) refreshFrame(frame);\n }\n\n dispatch(\"turbo:morph\", { detail: { currentElement, newElement } });\n }\n\n async preservingPermanentElements(callback) {\n return await callback()\n }\n\n get renderMethod() {\n return \"morph\"\n }\n\n get shouldAutofocus() {\n return false\n }\n}\n\nfunction canRefreshFrame(frame) {\n return frame instanceof FrameElement &&\n frame.src &&\n frame.refresh === \"morph\" &&\n !frame.closest(\"[data-turbo-permanent]\")\n}\n\nfunction refreshFrame(frame) {\n frame.addEventListener(\"turbo:before-frame-render\", ({ detail }) => {\n detail.render = MorphingFrameRenderer.renderElement;\n }, { once: true });\n\n frame.reload();\n}\n\nclass SnapshotCache {\n keys = []\n snapshots = {}\n\n constructor(size) {\n this.size = size;\n }\n\n has(location) {\n return toCacheKey(location) in this.snapshots\n }\n\n get(location) {\n if (this.has(location)) {\n const snapshot = this.read(location);\n this.touch(location);\n return snapshot\n }\n }\n\n put(location, snapshot) {\n this.write(location, snapshot);\n this.touch(location);\n return snapshot\n }\n\n clear() {\n this.snapshots = {};\n }\n\n // Private\n\n read(location) {\n return this.snapshots[toCacheKey(location)]\n }\n\n write(location, snapshot) {\n this.snapshots[toCacheKey(location)] = snapshot;\n }\n\n touch(location) {\n const key = toCacheKey(location);\n const index = this.keys.indexOf(key);\n if (index > -1) this.keys.splice(index, 1);\n this.keys.unshift(key);\n this.trim();\n }\n\n trim() {\n for (const key of this.keys.splice(this.size)) {\n delete this.snapshots[key];\n }\n }\n}\n\nclass PageView extends View {\n snapshotCache = new SnapshotCache(10)\n lastRenderedLocation = new URL(location.href)\n forceReloaded = false\n\n shouldTransitionTo(newSnapshot) {\n return this.snapshot.prefersViewTransitions && newSnapshot.prefersViewTransitions\n }\n\n renderPage(snapshot, isPreview = false, willRender = true, visit) {\n const shouldMorphPage = this.isPageRefresh(visit) && this.snapshot.shouldMorphPage;\n const rendererClass = shouldMorphPage ? MorphingPageRenderer : PageRenderer;\n\n const renderer = new rendererClass(this.snapshot, snapshot, rendererClass.renderElement, isPreview, willRender);\n\n if (!renderer.shouldRender) {\n this.forceReloaded = true;\n } else {\n visit?.changeHistory();\n }\n\n return this.render(renderer)\n }\n\n renderError(snapshot, visit) {\n visit?.changeHistory();\n const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n return this.render(renderer)\n }\n\n clearSnapshotCache() {\n this.snapshotCache.clear();\n }\n\n async cacheSnapshot(snapshot = this.snapshot) {\n if (snapshot.isCacheable) {\n this.delegate.viewWillCacheSnapshot();\n const { lastRenderedLocation: location } = this;\n await nextEventLoopTick();\n const cachedSnapshot = snapshot.clone();\n this.snapshotCache.put(location, cachedSnapshot);\n return cachedSnapshot\n }\n }\n\n getCachedSnapshotForLocation(location) {\n return this.snapshotCache.get(location)\n }\n\n isPageRefresh(visit) {\n return !visit || (this.lastRenderedLocation.pathname === visit.location.pathname && visit.action === \"replace\")\n }\n\n shouldPreserveScrollPosition(visit) {\n return this.isPageRefresh(visit) && this.snapshot.shouldPreserveScrollPosition\n }\n\n get snapshot() {\n return PageSnapshot.fromElement(this.element)\n }\n}\n\nclass Preloader {\n selector = \"a[data-turbo-preload]\"\n\n constructor(delegate, snapshotCache) {\n this.delegate = delegate;\n this.snapshotCache = snapshotCache;\n }\n\n start() {\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", this.#preloadAll);\n } else {\n this.preloadOnLoadLinksForView(document.body);\n }\n }\n\n stop() {\n document.removeEventListener(\"DOMContentLoaded\", this.#preloadAll);\n }\n\n preloadOnLoadLinksForView(element) {\n for (const link of element.querySelectorAll(this.selector)) {\n if (this.delegate.shouldPreloadLink(link)) {\n this.preloadURL(link);\n }\n }\n }\n\n async preloadURL(link) {\n const location = new URL(link.href);\n\n if (this.snapshotCache.has(location)) {\n return\n }\n\n const fetchRequest = new FetchRequest(this, FetchMethod.get, location, new URLSearchParams(), link);\n await fetchRequest.perform();\n }\n\n // Fetch request delegate\n\n prepareRequest(fetchRequest) {\n fetchRequest.headers[\"X-Sec-Purpose\"] = \"prefetch\";\n }\n\n async requestSucceededWithResponse(fetchRequest, fetchResponse) {\n try {\n const responseHTML = await fetchResponse.responseHTML;\n const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n\n this.snapshotCache.put(fetchRequest.url, snapshot);\n } catch (_) {\n // If we cannot preload that is ok!\n }\n }\n\n requestStarted(fetchRequest) {}\n\n requestErrored(fetchRequest) {}\n\n requestFinished(fetchRequest) {}\n\n requestPreventedHandlingResponse(fetchRequest, fetchResponse) {}\n\n requestFailedWithResponse(fetchRequest, fetchResponse) {}\n\n #preloadAll = () => {\n this.preloadOnLoadLinksForView(document.body);\n }\n}\n\nclass Cache {\n constructor(session) {\n this.session = session;\n }\n\n clear() {\n this.session.clearCache();\n }\n\n resetCacheControl() {\n this.#setCacheControl(\"\");\n }\n\n exemptPageFromCache() {\n this.#setCacheControl(\"no-cache\");\n }\n\n exemptPageFromPreview() {\n this.#setCacheControl(\"no-preview\");\n }\n\n #setCacheControl(value) {\n setMetaContent(\"turbo-cache-control\", value);\n }\n}\n\nclass Session {\n navigator = new Navigator(this)\n history = new History(this)\n view = new PageView(this, document.documentElement)\n adapter = new BrowserAdapter(this)\n\n pageObserver = new PageObserver(this)\n cacheObserver = new CacheObserver()\n linkPrefetchObserver = new LinkPrefetchObserver(this, document)\n linkClickObserver = new LinkClickObserver(this, window)\n formSubmitObserver = new FormSubmitObserver(this, document)\n scrollObserver = new ScrollObserver(this)\n streamObserver = new StreamObserver(this)\n formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement)\n frameRedirector = new FrameRedirector(this, document.documentElement)\n streamMessageRenderer = new StreamMessageRenderer()\n cache = new Cache(this)\n\n drive = true\n enabled = true\n progressBarDelay = 500\n started = false\n formMode = \"on\"\n #pageRefreshDebouncePeriod = 150\n\n constructor(recentRequests) {\n this.recentRequests = recentRequests;\n this.preloader = new Preloader(this, this.view.snapshotCache);\n this.debouncedRefresh = this.refresh;\n this.pageRefreshDebouncePeriod = this.pageRefreshDebouncePeriod;\n }\n\n start() {\n if (!this.started) {\n this.pageObserver.start();\n this.cacheObserver.start();\n this.linkPrefetchObserver.start();\n this.formLinkClickObserver.start();\n this.linkClickObserver.start();\n this.formSubmitObserver.start();\n this.scrollObserver.start();\n this.streamObserver.start();\n this.frameRedirector.start();\n this.history.start();\n this.preloader.start();\n this.started = true;\n this.enabled = true;\n }\n }\n\n disable() {\n this.enabled = false;\n }\n\n stop() {\n if (this.started) {\n this.pageObserver.stop();\n this.cacheObserver.stop();\n this.linkPrefetchObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkClickObserver.stop();\n this.formSubmitObserver.stop();\n this.scrollObserver.stop();\n this.streamObserver.stop();\n this.frameRedirector.stop();\n this.history.stop();\n this.preloader.stop();\n this.started = false;\n }\n }\n\n registerAdapter(adapter) {\n this.adapter = adapter;\n }\n\n visit(location, options = {}) {\n const frameElement = options.frame ? document.getElementById(options.frame) : null;\n\n if (frameElement instanceof FrameElement) {\n const action = options.action || getVisitAction(frameElement);\n\n frameElement.delegate.proposeVisitIfNavigatedWithAction(frameElement, action);\n frameElement.src = location.toString();\n } else {\n this.navigator.proposeVisit(expandURL(location), options);\n }\n }\n\n refresh(url, requestId) {\n const isRecentRequest = requestId && this.recentRequests.has(requestId);\n if (!isRecentRequest && !this.navigator.currentVisit) {\n this.visit(url, { action: \"replace\", shouldCacheSnapshot: false });\n }\n }\n\n connectStreamSource(source) {\n this.streamObserver.connectStreamSource(source);\n }\n\n disconnectStreamSource(source) {\n this.streamObserver.disconnectStreamSource(source);\n }\n\n renderStreamMessage(message) {\n this.streamMessageRenderer.render(StreamMessage.wrap(message));\n }\n\n clearCache() {\n this.view.clearSnapshotCache();\n }\n\n setProgressBarDelay(delay) {\n this.progressBarDelay = delay;\n }\n\n setFormMode(mode) {\n this.formMode = mode;\n }\n\n get location() {\n return this.history.location\n }\n\n get restorationIdentifier() {\n return this.history.restorationIdentifier\n }\n\n get pageRefreshDebouncePeriod() {\n return this.#pageRefreshDebouncePeriod\n }\n\n set pageRefreshDebouncePeriod(value) {\n this.refresh = debounce(this.debouncedRefresh.bind(this), value);\n this.#pageRefreshDebouncePeriod = value;\n }\n\n // Preloader delegate\n\n shouldPreloadLink(element) {\n const isUnsafe = element.hasAttribute(\"data-turbo-method\");\n const isStream = element.hasAttribute(\"data-turbo-stream\");\n const frameTarget = element.getAttribute(\"data-turbo-frame\");\n const frame = frameTarget == \"_top\" ?\n null :\n document.getElementById(frameTarget) || findClosestRecursively(element, \"turbo-frame:not([disabled])\");\n\n if (isUnsafe || isStream || frame instanceof FrameElement) {\n return false\n } else {\n const location = new URL(element.href);\n\n return this.elementIsNavigatable(element) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n }\n\n // History delegate\n\n historyPoppedToLocationWithRestorationIdentifierAndDirection(location, restorationIdentifier, direction) {\n if (this.enabled) {\n this.navigator.startVisit(location, restorationIdentifier, {\n action: \"restore\",\n historyChanged: true,\n direction\n });\n } else {\n this.adapter.pageInvalidated({\n reason: \"turbo_disabled\"\n });\n }\n }\n\n // Scroll observer delegate\n\n scrollPositionChanged(position) {\n this.history.updateRestorationData({ scrollPosition: position });\n }\n\n // Form click observer delegate\n\n willSubmitFormLinkToLocation(link, location) {\n return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation)\n }\n\n submittedFormLinkToLocation() {}\n\n // Link hover observer delegate\n\n canPrefetchRequestToLocation(link, location) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation)\n )\n }\n\n // Link click observer delegate\n\n willFollowLinkToLocation(link, location, event) {\n return (\n this.elementIsNavigatable(link) &&\n locationIsVisitable(location, this.snapshot.rootLocation) &&\n this.applicationAllowsFollowingLinkToLocation(link, location, event)\n )\n }\n\n followedLinkToLocation(link, location) {\n const action = this.getActionForLink(link);\n const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n\n this.visit(location.href, { action, acceptsStreamResponse });\n }\n\n // Navigator delegate\n\n allowsVisitingLocationWithAction(location, action) {\n return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location)\n }\n\n visitProposedToLocation(location, options) {\n extendURLWithDeprecatedProperties(location);\n this.adapter.visitProposedToLocation(location, options);\n }\n\n // Visit delegate\n\n visitStarted(visit) {\n if (!visit.acceptsStreamResponse) {\n markAsBusy(document.documentElement);\n this.view.markVisitDirection(visit.direction);\n }\n extendURLWithDeprecatedProperties(visit.location);\n if (!visit.silent) {\n this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n }\n }\n\n visitCompleted(visit) {\n this.view.unmarkVisitDirection();\n clearBusyState(document.documentElement);\n this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n }\n\n locationWithActionIsSamePage(location, action) {\n return this.navigator.locationWithActionIsSamePage(location, action)\n }\n\n visitScrolledToSamePageLocation(oldURL, newURL) {\n this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return (\n this.submissionIsNavigatable(form, submitter) &&\n locationIsVisitable(expandURL(action), this.snapshot.rootLocation)\n )\n }\n\n formSubmitted(form, submitter) {\n this.navigator.submitForm(form, submitter);\n }\n\n // Page observer delegate\n\n pageBecameInteractive() {\n this.view.lastRenderedLocation = this.location;\n this.notifyApplicationAfterPageLoad();\n }\n\n pageLoaded() {\n this.history.assumeControlOfScrollRestoration();\n }\n\n pageWillUnload() {\n this.history.relinquishControlOfScrollRestoration();\n }\n\n // Stream observer delegate\n\n receivedMessageFromStream(message) {\n this.renderStreamMessage(message);\n }\n\n // Page view delegate\n\n viewWillCacheSnapshot() {\n if (!this.navigator.currentVisit?.silent) {\n this.notifyApplicationBeforeCachingSnapshot();\n }\n }\n\n allowsImmediateRender({ element }, options) {\n const event = this.notifyApplicationBeforeRender(element, options);\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, renderMethod) {\n this.view.lastRenderedLocation = this.history.location;\n this.notifyApplicationAfterRender(renderMethod);\n }\n\n preloadOnLoadLinksForView(element) {\n this.preloader.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated(reason) {\n this.adapter.pageInvalidated(reason);\n }\n\n // Frame element\n\n frameLoaded(frame) {\n this.notifyApplicationAfterFrameLoad(frame);\n }\n\n frameRendered(fetchResponse, frame) {\n this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n }\n\n // Application events\n\n applicationAllowsFollowingLinkToLocation(link, location, ev) {\n const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n return !event.defaultPrevented\n }\n\n applicationAllowsVisitingLocation(location) {\n const event = this.notifyApplicationBeforeVisitingLocation(location);\n return !event.defaultPrevented\n }\n\n notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n return dispatch(\"turbo:click\", {\n target: link,\n detail: { url: location.href, originalEvent: event },\n cancelable: true\n })\n }\n\n notifyApplicationBeforeVisitingLocation(location) {\n return dispatch(\"turbo:before-visit\", {\n detail: { url: location.href },\n cancelable: true\n })\n }\n\n notifyApplicationAfterVisitingLocation(location, action) {\n return dispatch(\"turbo:visit\", { detail: { url: location.href, action } })\n }\n\n notifyApplicationBeforeCachingSnapshot() {\n return dispatch(\"turbo:before-cache\")\n }\n\n notifyApplicationBeforeRender(newBody, options) {\n return dispatch(\"turbo:before-render\", {\n detail: { newBody, ...options },\n cancelable: true\n })\n }\n\n notifyApplicationAfterRender(renderMethod) {\n return dispatch(\"turbo:render\", { detail: { renderMethod } })\n }\n\n notifyApplicationAfterPageLoad(timing = {}) {\n return dispatch(\"turbo:load\", {\n detail: { url: this.location.href, timing }\n })\n }\n\n notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n dispatchEvent(\n new HashChangeEvent(\"hashchange\", {\n oldURL: oldURL.toString(),\n newURL: newURL.toString()\n })\n );\n }\n\n notifyApplicationAfterFrameLoad(frame) {\n return dispatch(\"turbo:frame-load\", { target: frame })\n }\n\n notifyApplicationAfterFrameRender(fetchResponse, frame) {\n return dispatch(\"turbo:frame-render\", {\n detail: { fetchResponse },\n target: frame,\n cancelable: true\n })\n }\n\n // Helpers\n\n submissionIsNavigatable(form, submitter) {\n if (this.formMode == \"off\") {\n return false\n } else {\n const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n\n if (this.formMode == \"optin\") {\n return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null\n } else {\n return submitterIsNavigatable && this.elementIsNavigatable(form)\n }\n }\n }\n\n elementIsNavigatable(element) {\n const container = findClosestRecursively(element, \"[data-turbo]\");\n const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n\n // Check if Drive is enabled on the session or we're within a Frame.\n if (this.drive || withinFrame) {\n // Element is navigatable by default, unless `data-turbo=\"false\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") != \"false\"\n } else {\n return true\n }\n } else {\n // Element isn't navigatable by default, unless `data-turbo=\"true\"`.\n if (container) {\n return container.getAttribute(\"data-turbo\") == \"true\"\n } else {\n return false\n }\n }\n }\n\n // Private\n\n getActionForLink(link) {\n return getVisitAction(link) || \"advance\"\n }\n\n get snapshot() {\n return this.view.snapshot\n }\n}\n\n// Older versions of the Turbo Native adapters referenced the\n// `Location#absoluteURL` property in their implementations of\n// the `Adapter#visitProposedToLocation()` and `#visitStarted()`\n// methods. The Location class has since been removed in favor\n// of the DOM URL API, and accordingly all Adapter methods now\n// receive URL objects.\n//\n// We alias #absoluteURL to #toString() here to avoid crashing\n// older adapters which do not expect URL objects. We should\n// consider removing this support at some point in the future.\n\nfunction extendURLWithDeprecatedProperties(url) {\n Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nconst deprecatedLocationPropertyDescriptors = {\n absoluteURL: {\n get() {\n return this.toString()\n }\n }\n};\n\nconst session = new Session(recentRequests);\nconst { cache, navigator: navigator$1 } = session;\n\n/**\n * Starts the main session.\n * This initialises any necessary observers such as those to monitor\n * link interactions.\n */\nfunction start() {\n session.start();\n}\n\n/**\n * Registers an adapter for the main session.\n *\n * @param adapter Adapter to register\n */\nfunction registerAdapter(adapter) {\n session.registerAdapter(adapter);\n}\n\n/**\n * Performs an application visit to the given location.\n *\n * @param location Location to visit (a URL or path)\n * @param options Options to apply\n * @param options.action Type of history navigation to apply (\"restore\",\n * \"replace\" or \"advance\")\n * @param options.historyChanged Specifies whether the browser history has\n * already been changed for this visit or not\n * @param options.referrer Specifies the referrer of this visit such that\n * navigations to the same page will not result in a new history entry.\n * @param options.snapshotHTML Cached snapshot to render\n * @param options.response Response of the specified location\n */\nfunction visit(location, options) {\n session.visit(location, options);\n}\n\n/**\n * Connects a stream source to the main session.\n *\n * @param source Stream source to connect\n */\nfunction connectStreamSource(source) {\n session.connectStreamSource(source);\n}\n\n/**\n * Disconnects a stream source from the main session.\n *\n * @param source Stream source to disconnect\n */\nfunction disconnectStreamSource(source) {\n session.disconnectStreamSource(source);\n}\n\n/**\n * Renders a stream message to the main session by appending it to the\n * current document.\n *\n * @param message Message to render\n */\nfunction renderStreamMessage(message) {\n session.renderStreamMessage(message);\n}\n\n/**\n * Removes all entries from the Turbo Drive page cache.\n * Call this when state has changed on the server that may affect cached pages.\n *\n * @deprecated since version 7.2.0 in favor of `Turbo.cache.clear()`\n */\nfunction clearCache() {\n console.warn(\n \"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\"\n );\n session.clearCache();\n}\n\n/**\n * Sets the delay after which the progress bar will appear during navigation.\n *\n * The progress bar appears after 500ms by default.\n *\n * Note that this method has no effect when used with the iOS or Android\n * adapters.\n *\n * @param delay Time to delay in milliseconds\n */\nfunction setProgressBarDelay(delay) {\n session.setProgressBarDelay(delay);\n}\n\nfunction setConfirmMethod(confirmMethod) {\n FormSubmission.confirmMethod = confirmMethod;\n}\n\nfunction setFormMode(mode) {\n session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n __proto__: null,\n navigator: navigator$1,\n session: session,\n cache: cache,\n PageRenderer: PageRenderer,\n PageSnapshot: PageSnapshot,\n FrameRenderer: FrameRenderer,\n fetch: fetchWithTurboHeaders,\n start: start,\n registerAdapter: registerAdapter,\n visit: visit,\n connectStreamSource: connectStreamSource,\n disconnectStreamSource: disconnectStreamSource,\n renderStreamMessage: renderStreamMessage,\n clearCache: clearCache,\n setProgressBarDelay: setProgressBarDelay,\n setConfirmMethod: setConfirmMethod,\n setFormMode: setFormMode\n});\n\nclass TurboFrameMissingError extends Error {}\n\nclass FrameController {\n fetchResponseLoaded = (_fetchResponse) => Promise.resolve()\n #currentFetchRequest = null\n #resolveVisitPromise = () => {}\n #connected = false\n #hasBeenLoaded = false\n #ignoredAttributes = new Set()\n action = null\n\n constructor(element) {\n this.element = element;\n this.view = new FrameView(this, this.element);\n this.appearanceObserver = new AppearanceObserver(this, this.element);\n this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n this.linkInterceptor = new LinkInterceptor(this, this.element);\n this.restorationIdentifier = uuid();\n this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n }\n\n // Frame delegate\n\n connect() {\n if (!this.#connected) {\n this.#connected = true;\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.#loadSourceURL();\n }\n this.formLinkClickObserver.start();\n this.linkInterceptor.start();\n this.formSubmitObserver.start();\n }\n }\n\n disconnect() {\n if (this.#connected) {\n this.#connected = false;\n this.appearanceObserver.stop();\n this.formLinkClickObserver.stop();\n this.linkInterceptor.stop();\n this.formSubmitObserver.stop();\n }\n }\n\n disabledChanged() {\n if (this.loadingStyle == FrameLoadingStyle.eager) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLChanged() {\n if (this.#isIgnoringChangesTo(\"src\")) return\n\n if (this.element.isConnected) {\n this.complete = false;\n }\n\n if (this.loadingStyle == FrameLoadingStyle.eager || this.#hasBeenLoaded) {\n this.#loadSourceURL();\n }\n }\n\n sourceURLReloaded() {\n const { src } = this.element;\n this.element.removeAttribute(\"complete\");\n this.element.src = null;\n this.element.src = src;\n return this.element.loaded\n }\n\n loadingStyleChanged() {\n if (this.loadingStyle == FrameLoadingStyle.lazy) {\n this.appearanceObserver.start();\n } else {\n this.appearanceObserver.stop();\n this.#loadSourceURL();\n }\n }\n\n async #loadSourceURL() {\n if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n this.element.loaded = this.#visit(expandURL(this.sourceURL));\n this.appearanceObserver.stop();\n await this.element.loaded;\n this.#hasBeenLoaded = true;\n }\n }\n\n async loadResponse(fetchResponse) {\n if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n this.sourceURL = fetchResponse.response.url;\n }\n\n try {\n const html = await fetchResponse.responseHTML;\n if (html) {\n const document = parseHTMLDocument(html);\n const pageSnapshot = PageSnapshot.fromDocument(document);\n\n if (pageSnapshot.isVisitable) {\n await this.#loadFrameResponse(fetchResponse, document);\n } else {\n await this.#handleUnvisitableFrameResponse(fetchResponse);\n }\n }\n } finally {\n this.fetchResponseLoaded = () => Promise.resolve();\n }\n }\n\n // Appearance observer delegate\n\n elementAppearedInViewport(element) {\n this.proposeVisitIfNavigatedWithAction(element, getVisitAction(element));\n this.#loadSourceURL();\n }\n\n // Form link click observer delegate\n\n willSubmitFormLinkToLocation(link) {\n return this.#shouldInterceptNavigation(link)\n }\n\n submittedFormLinkToLocation(link, _location, form) {\n const frame = this.#findFrameElement(link);\n if (frame) form.setAttribute(\"data-turbo-frame\", frame.id);\n }\n\n // Link interceptor delegate\n\n shouldInterceptLinkClick(element, _location, _event) {\n return this.#shouldInterceptNavigation(element)\n }\n\n linkClickIntercepted(element, location) {\n this.#navigateFrame(element, location);\n }\n\n // Form submit observer delegate\n\n willSubmitForm(element, submitter) {\n return element.closest(\"turbo-frame\") == this.element && this.#shouldInterceptNavigation(element, submitter)\n }\n\n formSubmitted(element, submitter) {\n if (this.formSubmission) {\n this.formSubmission.stop();\n }\n\n this.formSubmission = new FormSubmission(this, element, submitter);\n const { fetchRequest } = this.formSubmission;\n this.prepareRequest(fetchRequest);\n this.formSubmission.start();\n }\n\n // Fetch request delegate\n\n prepareRequest(request) {\n request.headers[\"Turbo-Frame\"] = this.id;\n\n if (this.currentNavigationElement?.hasAttribute(\"data-turbo-stream\")) {\n request.acceptResponseType(StreamMessage.contentType);\n }\n }\n\n requestStarted(_request) {\n markAsBusy(this.element);\n }\n\n requestPreventedHandlingResponse(_request, _response) {\n this.#resolveVisitPromise();\n }\n\n async requestSucceededWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n async requestFailedWithResponse(request, response) {\n await this.loadResponse(response);\n this.#resolveVisitPromise();\n }\n\n requestErrored(request, error) {\n console.error(error);\n this.#resolveVisitPromise();\n }\n\n requestFinished(_request) {\n clearBusyState(this.element);\n }\n\n // Form submission delegate\n\n formSubmissionStarted({ formElement }) {\n markAsBusy(formElement, this.#findFrameElement(formElement));\n }\n\n formSubmissionSucceededWithResponse(formSubmission, response) {\n const frame = this.#findFrameElement(formSubmission.formElement, formSubmission.submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(formSubmission.submitter, formSubmission.formElement, frame));\n frame.delegate.loadResponse(response);\n\n if (!formSubmission.isSafe) {\n session.clearCache();\n }\n }\n\n formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n this.element.delegate.loadResponse(fetchResponse);\n session.clearCache();\n }\n\n formSubmissionErrored(formSubmission, error) {\n console.error(error);\n }\n\n formSubmissionFinished({ formElement }) {\n clearBusyState(formElement, this.#findFrameElement(formElement));\n }\n\n // View delegate\n\n allowsImmediateRender({ element: newFrame }, options) {\n const event = dispatch(\"turbo:before-frame-render\", {\n target: this.element,\n detail: { newFrame, ...options },\n cancelable: true\n });\n const {\n defaultPrevented,\n detail: { render }\n } = event;\n\n if (this.view.renderer && render) {\n this.view.renderer.renderElement = render;\n }\n\n return !defaultPrevented\n }\n\n viewRenderedSnapshot(_snapshot, _isPreview, _renderMethod) {}\n\n preloadOnLoadLinksForView(element) {\n session.preloadOnLoadLinksForView(element);\n }\n\n viewInvalidated() {}\n\n // Frame renderer delegate\n\n willRenderFrame(currentElement, _newElement) {\n this.previousFrameElement = currentElement.cloneNode(true);\n }\n\n visitCachedSnapshot = ({ element }) => {\n const frame = element.querySelector(\"#\" + this.element.id);\n\n if (frame && this.previousFrameElement) {\n frame.replaceChildren(...this.previousFrameElement.children);\n }\n\n delete this.previousFrameElement;\n }\n\n // Private\n\n async #loadFrameResponse(fetchResponse, document) {\n const newFrameElement = await this.extractForeignFrameElement(document.body);\n\n if (newFrameElement) {\n const snapshot = new Snapshot(newFrameElement);\n const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n if (this.view.renderPromise) await this.view.renderPromise;\n this.changeHistory();\n\n await this.view.render(renderer);\n this.complete = true;\n session.frameRendered(fetchResponse, this.element);\n session.frameLoaded(this.element);\n await this.fetchResponseLoaded(fetchResponse);\n } else if (this.#willHandleFrameMissingFromResponse(fetchResponse)) {\n this.#handleFrameMissingFromResponse(fetchResponse);\n }\n }\n\n async #visit(url) {\n const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n\n this.#currentFetchRequest?.cancel();\n this.#currentFetchRequest = request;\n\n return new Promise((resolve) => {\n this.#resolveVisitPromise = () => {\n this.#resolveVisitPromise = () => {};\n this.#currentFetchRequest = null;\n resolve();\n };\n request.perform();\n })\n }\n\n #navigateFrame(element, url, submitter) {\n const frame = this.#findFrameElement(element, submitter);\n\n frame.delegate.proposeVisitIfNavigatedWithAction(frame, getVisitAction(submitter, element, frame));\n\n this.#withCurrentNavigationElement(element, () => {\n frame.src = url;\n });\n }\n\n proposeVisitIfNavigatedWithAction(frame, action = null) {\n this.action = action;\n\n if (this.action) {\n const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n const { visitCachedSnapshot } = frame.delegate;\n\n frame.delegate.fetchResponseLoaded = async (fetchResponse) => {\n if (frame.src) {\n const { statusCode, redirected } = fetchResponse;\n const responseHTML = await fetchResponse.responseHTML;\n const response = { statusCode, redirected, responseHTML };\n const options = {\n response,\n visitCachedSnapshot,\n willRender: false,\n updateHistory: false,\n restorationIdentifier: this.restorationIdentifier,\n snapshot: pageSnapshot\n };\n\n if (this.action) options.action = this.action;\n\n session.visit(frame.src, options);\n }\n };\n }\n }\n\n changeHistory() {\n if (this.action) {\n const method = getHistoryMethodForAction(this.action);\n session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n }\n }\n\n async #handleUnvisitableFrameResponse(fetchResponse) {\n console.warn(\n `The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`\n );\n\n await this.#visitResponse(fetchResponse.response);\n }\n\n #willHandleFrameMissingFromResponse(fetchResponse) {\n this.element.setAttribute(\"complete\", \"\");\n\n const response = fetchResponse.response;\n const visit = async (url, options) => {\n if (url instanceof Response) {\n this.#visitResponse(url);\n } else {\n session.visit(url, options);\n }\n };\n\n const event = dispatch(\"turbo:frame-missing\", {\n target: this.element,\n detail: { response, visit },\n cancelable: true\n });\n\n return !event.defaultPrevented\n }\n\n #handleFrameMissingFromResponse(fetchResponse) {\n this.view.missing();\n this.#throwFrameMissingError(fetchResponse);\n }\n\n #throwFrameMissingError(fetchResponse) {\n const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n throw new TurboFrameMissingError(message)\n }\n\n async #visitResponse(response) {\n const wrapped = new FetchResponse(response);\n const responseHTML = await wrapped.responseHTML;\n const { location, redirected, statusCode } = wrapped;\n\n return session.visit(location, { response: { redirected, statusCode, responseHTML } })\n }\n\n #findFrameElement(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n return getFrameElementById(id) ?? this.element\n }\n\n async extractForeignFrameElement(container) {\n let element;\n const id = CSS.escape(this.id);\n\n try {\n element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n if (element) {\n return element\n }\n\n element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n if (element) {\n await element.loaded;\n return await this.extractForeignFrameElement(element)\n }\n } catch (error) {\n console.error(error);\n return new FrameElement()\n }\n\n return null\n }\n\n #formActionIsVisitable(form, submitter) {\n const action = getAction$1(form, submitter);\n\n return locationIsVisitable(expandURL(action), this.rootLocation)\n }\n\n #shouldInterceptNavigation(element, submitter) {\n const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n\n if (element instanceof HTMLFormElement && !this.#formActionIsVisitable(element, submitter)) {\n return false\n }\n\n if (!this.enabled || id == \"_top\") {\n return false\n }\n\n if (id) {\n const frameElement = getFrameElementById(id);\n if (frameElement) {\n return !frameElement.disabled\n }\n }\n\n if (!session.elementIsNavigatable(element)) {\n return false\n }\n\n if (submitter && !session.elementIsNavigatable(submitter)) {\n return false\n }\n\n return true\n }\n\n // Computed properties\n\n get id() {\n return this.element.id\n }\n\n get enabled() {\n return !this.element.disabled\n }\n\n get sourceURL() {\n if (this.element.src) {\n return this.element.src\n }\n }\n\n set sourceURL(sourceURL) {\n this.#ignoringChangesToAttribute(\"src\", () => {\n this.element.src = sourceURL ?? null;\n });\n }\n\n get loadingStyle() {\n return this.element.loading\n }\n\n get isLoading() {\n return this.formSubmission !== undefined || this.#resolveVisitPromise() !== undefined\n }\n\n get complete() {\n return this.element.hasAttribute(\"complete\")\n }\n\n set complete(value) {\n if (value) {\n this.element.setAttribute(\"complete\", \"\");\n } else {\n this.element.removeAttribute(\"complete\");\n }\n }\n\n get isActive() {\n return this.element.isActive && this.#connected\n }\n\n get rootLocation() {\n const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n const root = meta?.content ?? \"/\";\n return expandURL(root)\n }\n\n #isIgnoringChangesTo(attributeName) {\n return this.#ignoredAttributes.has(attributeName)\n }\n\n #ignoringChangesToAttribute(attributeName, callback) {\n this.#ignoredAttributes.add(attributeName);\n callback();\n this.#ignoredAttributes.delete(attributeName);\n }\n\n #withCurrentNavigationElement(element, callback) {\n this.currentNavigationElement = element;\n callback();\n delete this.currentNavigationElement;\n }\n}\n\nfunction getFrameElementById(id) {\n if (id != null) {\n const element = document.getElementById(id);\n if (element instanceof FrameElement) {\n return element\n }\n }\n}\n\nfunction activateElement(element, currentURL) {\n if (element) {\n const src = element.getAttribute(\"src\");\n if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`)\n }\n if (element.ownerDocument !== document) {\n element = document.importNode(element, true);\n }\n\n if (element instanceof FrameElement) {\n element.connectedCallback();\n element.disconnectedCallback();\n return element\n }\n }\n}\n\nconst StreamActions = {\n after() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e.nextSibling));\n },\n\n append() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.append(this.templateContent));\n },\n\n before() {\n this.targetElements.forEach((e) => e.parentElement?.insertBefore(this.templateContent, e));\n },\n\n prepend() {\n this.removeDuplicateTargetChildren();\n this.targetElements.forEach((e) => e.prepend(this.templateContent));\n },\n\n remove() {\n this.targetElements.forEach((e) => e.remove());\n },\n\n replace() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphElements(targetElement, this.templateContent);\n } else {\n targetElement.replaceWith(this.templateContent);\n }\n });\n },\n\n update() {\n const method = this.getAttribute(\"method\");\n\n this.targetElements.forEach((targetElement) => {\n if (method === \"morph\") {\n morphChildren(targetElement, this.templateContent);\n } else {\n targetElement.innerHTML = \"\";\n targetElement.append(this.templateContent);\n }\n });\n },\n\n refresh() {\n session.refresh(this.baseURI, this.requestId);\n }\n};\n\n// <turbo-stream action=replace target=id><template>...\n\n/**\n * Renders updates to the page from a stream of messages.\n *\n * Using the `action` attribute, this can be configured one of eight ways:\n *\n * - `after` - inserts the result after the target\n * - `append` - appends the result to the target\n * - `before` - inserts the result before the target\n * - `prepend` - prepends the result to the target\n * - `refresh` - initiates a page refresh\n * - `remove` - removes the target\n * - `replace` - replaces the outer HTML of the target\n * - `update` - replaces the inner HTML of the target\n *\n * @customElement turbo-stream\n * @example\n * <turbo-stream action=\"append\" target=\"dom_id\">\n * <template>\n * Content to append to target designated with the dom_id.\n * </template>\n * </turbo-stream>\n */\nclass StreamElement extends HTMLElement {\n static async renderElement(newElement) {\n await newElement.performAction();\n }\n\n async connectedCallback() {\n try {\n await this.render();\n } catch (error) {\n console.error(error);\n } finally {\n this.disconnect();\n }\n }\n\n async render() {\n return (this.renderPromise ??= (async () => {\n const event = this.beforeRenderEvent;\n\n if (this.dispatchEvent(event)) {\n await nextRepaint();\n await event.detail.render(this);\n }\n })())\n }\n\n disconnect() {\n try {\n this.remove();\n // eslint-disable-next-line no-empty\n } catch {}\n }\n\n /**\n * Removes duplicate children (by ID)\n */\n removeDuplicateTargetChildren() {\n this.duplicateChildren.forEach((c) => c.remove());\n }\n\n /**\n * Gets the list of duplicate children (i.e. those with the same ID)\n */\n get duplicateChildren() {\n const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n const newChildrenIds = [...(this.templateContent?.children || [])].filter((c) => !!c.id).map((c) => c.id);\n\n return existingChildren.filter((c) => newChildrenIds.includes(c.id))\n }\n\n /**\n * Gets the action function to be performed.\n */\n get performAction() {\n if (this.action) {\n const actionFunction = StreamActions[this.action];\n if (actionFunction) {\n return actionFunction\n }\n this.#raise(\"unknown action\");\n }\n this.#raise(\"action attribute is missing\");\n }\n\n /**\n * Gets the target elements which the template will be rendered to.\n */\n get targetElements() {\n if (this.target) {\n return this.targetElementsById\n } else if (this.targets) {\n return this.targetElementsByQuery\n } else {\n this.#raise(\"target or targets attribute is missing\");\n }\n }\n\n /**\n * Gets the contents of the main `<template>`.\n */\n get templateContent() {\n return this.templateElement.content.cloneNode(true)\n }\n\n /**\n * Gets the main `<template>` used for rendering\n */\n get templateElement() {\n if (this.firstElementChild === null) {\n const template = this.ownerDocument.createElement(\"template\");\n this.appendChild(template);\n return template\n } else if (this.firstElementChild instanceof HTMLTemplateElement) {\n return this.firstElementChild\n }\n this.#raise(\"first child element must be a <template> element\");\n }\n\n /**\n * Gets the current action.\n */\n get action() {\n return this.getAttribute(\"action\")\n }\n\n /**\n * Gets the current target (an element ID) to which the result will\n * be rendered.\n */\n get target() {\n return this.getAttribute(\"target\")\n }\n\n /**\n * Gets the current \"targets\" selector (a CSS selector)\n */\n get targets() {\n return this.getAttribute(\"targets\")\n }\n\n /**\n * Reads the request-id attribute\n */\n get requestId() {\n return this.getAttribute(\"request-id\")\n }\n\n #raise(message) {\n throw new Error(`${this.description}: ${message}`)\n }\n\n get description() {\n return (this.outerHTML.match(/<[^>]+>/) ?? [])[0] ?? \"<turbo-stream>\"\n }\n\n get beforeRenderEvent() {\n return new CustomEvent(\"turbo:before-stream-render\", {\n bubbles: true,\n cancelable: true,\n detail: { newStream: this, render: StreamElement.renderElement }\n })\n }\n\n get targetElementsById() {\n const element = this.ownerDocument?.getElementById(this.target);\n\n if (element !== null) {\n return [element]\n } else {\n return []\n }\n }\n\n get targetElementsByQuery() {\n const elements = this.ownerDocument?.querySelectorAll(this.targets);\n\n if (elements.length !== 0) {\n return Array.prototype.slice.call(elements)\n } else {\n return []\n }\n }\n}\n\nclass StreamSourceElement extends HTMLElement {\n streamSource = null\n\n connectedCallback() {\n this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n\n connectStreamSource(this.streamSource);\n }\n\n disconnectedCallback() {\n if (this.streamSource) {\n this.streamSource.close();\n\n disconnectStreamSource(this.streamSource);\n }\n }\n\n get src() {\n return this.getAttribute(\"src\") || \"\"\n }\n}\n\nFrameElement.delegateConstructor = FrameController;\n\nif (customElements.get(\"turbo-frame\") === undefined) {\n customElements.define(\"turbo-frame\", FrameElement);\n}\n\nif (customElements.get(\"turbo-stream\") === undefined) {\n customElements.define(\"turbo-stream\", StreamElement);\n}\n\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n let element = document.currentScript;\n if (!element) return\n if (element.hasAttribute(\"data-turbo-suppress-warning\")) return\n\n element = element.parentElement;\n while (element) {\n if (element == document.body) {\n return console.warn(\n unindent`\n You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n \u2014\u2014\n Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n `,\n element.outerHTML\n )\n }\n\n element = element.parentElement;\n }\n})();\n\nwindow.Turbo = { ...Turbo, StreamActions };\nstart();\n\nexport { FetchEnctype, FetchMethod, FetchRequest, FetchResponse, FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, fetchWithTurboHeaders as fetch, fetchEnctypeFromString, fetchMethodFromString, isSafe, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n const { subscriptions } = await getConsumer()\n return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// 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, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n if (!obj || typeof obj !== 'object') return obj;\n if (obj instanceof Date || obj instanceof RegExp) return obj;\n if (Array.isArray(obj)) return obj.map(walk);\n return Object.keys(obj).reduce(function (acc, key) {\n var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n return '_' + x.toLowerCase();\n });\n acc[camel] = walk(obj[key]);\n return acc;\n }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n async connectedCallback() {\n connectStreamSource(this)\n this.subscription = await subscribeTo(this.channel, {\n received: this.dispatchMessageEvent.bind(this),\n connected: this.subscriptionConnected.bind(this),\n disconnected: this.subscriptionDisconnected.bind(this)\n })\n }\n\n disconnectedCallback() {\n disconnectStreamSource(this)\n if (this.subscription) this.subscription.unsubscribe()\n }\n\n dispatchMessageEvent(data) {\n const event = new MessageEvent(\"message\", { data })\n return this.dispatchEvent(event)\n }\n\n subscriptionConnected() {\n this.setAttribute(\"connected\", \"\")\n }\n\n subscriptionDisconnected() {\n this.removeAttribute(\"connected\")\n }\n\n get channel() {\n const channel = this.getAttribute(\"channel\")\n const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n if (event.target instanceof HTMLFormElement) {\n const { target: form, detail: { fetchOptions } } = event\n\n form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n const method = determineFetchMethod(submitter, body, form)\n\n if (!/get/i.test(method)) {\n if (/post/i.test(method)) {\n body.delete(\"_method\")\n } else {\n body.set(\"_method\", method)\n }\n\n fetchOptions.method = \"post\"\n }\n }, { once: true })\n }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n const formMethod = determineFormMethod(submitter)\n const overrideMethod = body.get(\"_method\")\n const method = form.getAttribute(\"method\") || \"get\"\n\n if (typeof formMethod == \"string\") {\n return formMethod\n } else if (typeof overrideMethod == \"string\") {\n return overrideMethod\n } else {\n return method\n }\n}\n\nfunction determineFormMethod(submitter) {\n if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n // Rails 7 ActionView::Helpers::FormBuilder#button method has an override\n // for formmethod if the button does not have name or value attributes\n // set, which is the default. This means that if you use <%= f.button\n // formmethod: :delete %>, it will generate a <button name=\"_method\"\n // value=\"delete\" formmethod=\"post\">. Therefore, if the submitter's name\n // is already _method, it's value attribute already contains the desired\n // method.\n if (submitter.name === '_method') {\n return submitter.value\n } else if (submitter.hasAttribute(\"formmethod\")) {\n return submitter.formMethod\n } else {\n return null\n }\n } else {\n return null\n }\n}\n\nfunction isBodyInit(body) {\n return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\nwindow.Turbo = Turbo\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 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", "import { Controller } from \"@hotwired/stimulus\"\n\nconst optionSelector = \"[role='option']:not([aria-disabled])\"\nconst activeSelector = \"[aria-selected='true']\"\n\nexport default class Autocomplete extends Controller {\n static targets = [\"input\", \"hidden\", \"results\"]\n static classes = [\"selected\"]\n static values = {\n ready: Boolean,\n submitOnEnter: Boolean,\n url: String,\n minLength: Number,\n delay: { type: Number, default: 300 },\n queryParam: { type: String, default: \"q\" },\n }\n static uniqOptionId = 0\n\n connect() {\n this.close()\n\n if(!this.inputTarget.hasAttribute(\"autocomplete\")) this.inputTarget.setAttribute(\"autocomplete\", \"off\")\n this.inputTarget.setAttribute(\"spellcheck\", \"false\")\n\n this.mouseDown = false\n\n this.onInputChange = debounce(this.onInputChange, this.delayValue)\n\n this.inputTarget.addEventListener(\"keydown\", this.onKeydown)\n this.inputTarget.addEventListener(\"blur\", this.onInputBlur)\n this.inputTarget.addEventListener(\"input\", this.onInputChange)\n this.resultsTarget.addEventListener(\"mousedown\", this.onResultsMouseDown)\n this.resultsTarget.addEventListener(\"click\", this.onResultsClick)\n\n if (this.inputTarget.hasAttribute(\"autofocus\")) {\n this.inputTarget.focus()\n }\n\n this.readyValue = true\n }\n\n disconnect() {\n if (this.hasInputTarget) {\n this.inputTarget.removeEventListener(\"keydown\", this.onKeydown)\n this.inputTarget.removeEventListener(\"blur\", this.onInputBlur)\n this.inputTarget.removeEventListener(\"input\", this.onInputChange)\n }\n\n if (this.hasResultsTarget) {\n this.resultsTarget.removeEventListener(\"mousedown\", this.onResultsMouseDown)\n this.resultsTarget.removeEventListener(\"click\", this.onResultsClick)\n }\n }\n\n sibling(next) {\n const options = this.options\n const selected = this.selectedOption\n const index = options.indexOf(selected)\n const sibling = next ? options[index + 1] : options[index - 1]\n const def = next ? options[0] : options[options.length - 1]\n return sibling || def\n }\n\n select(target) {\n const previouslySelected = this.selectedOption\n if (previouslySelected) {\n previouslySelected.removeAttribute(\"aria-selected\")\n previouslySelected.classList.remove(...this.selectedClassesOrDefault)\n }\n\n target.setAttribute(\"aria-selected\", \"true\")\n target.classList.add(...this.selectedClassesOrDefault)\n this.inputTarget.setAttribute(\"aria-activedescendant\", target.id)\n target.scrollIntoView({ behavior: \"auto\", block: \"nearest\" })\n }\n\n onKeydown = (event) => {\n const handler = this[`on${event.key}Keydown`]\n if (handler) handler(event)\n }\n\n onEscapeKeydown = (event) => {\n if (!this.resultsShown) return\n\n this.hideAndRemoveOptions()\n event.stopPropagation()\n event.preventDefault()\n }\n\n onArrowDownKeydown = (event) => {\n const item = this.sibling(true)\n if (item) this.select(item)\n event.preventDefault()\n }\n\n onArrowUpKeydown = (event) => {\n const item = this.sibling(false)\n if (item) this.select(item)\n event.preventDefault()\n }\n\n onTabKeydown = (event) => {\n const selected = this.selectedOption\n if (selected) this.commit(selected)\n }\n\n onEnterKeydown = (event) => {\n const selected = this.selectedOption\n if (selected && this.resultsShown) {\n this.commit(selected)\n if (!this.hasSubmitOnEnterValue) {\n event.preventDefault()\n }\n }\n }\n\n onInputBlur = () => {\n if (this.mouseDown) return\n this.close()\n }\n\n commit(selected) {\n if (selected.getAttribute(\"aria-disabled\") === \"true\") return\n\n if (selected instanceof HTMLAnchorElement) {\n selected.click()\n this.close()\n return\n }\n\n const textValue = selected.getAttribute(\"data-autocomplete-label\") || selected.textContent.trim()\n const value = selected.getAttribute(\"data-autocomplete-value\") || textValue\n this.inputTarget.value = textValue\n\n if (this.hasHiddenTarget) {\n this.hiddenTarget.value = value\n this.hiddenTarget.dispatchEvent(new Event(\"input\"))\n this.hiddenTarget.dispatchEvent(new Event(\"change\"))\n } else {\n this.inputTarget.value = value\n }\n\n this.inputTarget.focus()\n this.hideAndRemoveOptions()\n\n this.element.dispatchEvent(\n new CustomEvent(\"autocomplete.change\", {\n bubbles: true,\n detail: { value: value, textValue: textValue, selected: selected }\n })\n )\n }\n\n clear() {\n this.inputTarget.value = \"\"\n if (this.hasHiddenTarget) this.hiddenTarget.value = \"\"\n }\n\n onResultsClick = (event) => {\n if (!(event.target instanceof Element)) return\n const selected = event.target.closest(optionSelector)\n if (selected) this.commit(selected)\n }\n\n onResultsMouseDown = () => {\n this.mouseDown = true\n this.resultsTarget.addEventListener(\"mouseup\", () => {\n this.mouseDown = false\n }, { once: true })\n }\n\n onInputChange = () => {\n if (this.hasHiddenTarget) this.hiddenTarget.value = \"\"\n\n const query = this.inputTarget.value.trim()\n if (query && query.length >= this.minLengthValue) {\n this.fetchResults(query)\n } else {\n this.hideAndRemoveOptions()\n }\n }\n\n identifyOptions() {\n const prefix = this.resultsTarget.id || \"stimulus-autocomplete\"\n const optionsWithoutId = this.resultsTarget.querySelectorAll(`${optionSelector}:not([id])`)\n optionsWithoutId.forEach(el => el.id = `${prefix}-option-${Autocomplete.uniqOptionId++}`)\n }\n\n hideAndRemoveOptions() {\n this.close()\n this.resultsTarget.innerHTML = null\n }\n\n fetchResults = async (query) => {\n if (!this.hasUrlValue) return\n\n const url = this.buildURL(query)\n try {\n this.element.dispatchEvent(new CustomEvent(\"loadstart\"))\n const html = await this.doFetch(url)\n this.replaceResults(html)\n this.element.dispatchEvent(new CustomEvent(\"load\"))\n this.element.dispatchEvent(new CustomEvent(\"loadend\"))\n } catch(error) {\n this.element.dispatchEvent(new CustomEvent(\"error\"))\n this.element.dispatchEvent(new CustomEvent(\"loadend\"))\n throw error\n }\n }\n\n buildURL(query) {\n const url = new URL(this.urlValue, window.location.href)\n const params = new URLSearchParams(url.search.slice(1))\n params.append(this.queryParamValue, query)\n url.search = params.toString()\n\n return url.toString()\n }\n\n doFetch = async (url) => {\n const response = await fetch(url, this.optionsForFetch())\n\n if (!response.ok) {\n throw new Error(`Server responded with status ${response.status}`)\n }\n\n const html = await response.text()\n return html\n }\n\n replaceResults(html) {\n this.resultsTarget.innerHTML = html\n this.identifyOptions()\n if (!!this.options) {\n this.open()\n } else {\n this.close()\n }\n }\n\n open() {\n if (this.resultsShown) return\n\n this.resultsShown = true\n this.element.setAttribute(\"aria-expanded\", \"true\")\n this.element.dispatchEvent(\n new CustomEvent(\"toggle\", {\n detail: { action: \"open\", inputTarget: this.inputTarget, resultsTarget: this.resultsTarget }\n })\n )\n }\n\n close() {\n if (!this.resultsShown) return\n\n this.resultsShown = false\n this.inputTarget.removeAttribute(\"aria-activedescendant\")\n this.element.setAttribute(\"aria-expanded\", \"false\")\n this.element.dispatchEvent(\n new CustomEvent(\"toggle\", {\n detail: { action: \"close\", inputTarget: this.inputTarget, resultsTarget: this.resultsTarget }\n })\n )\n }\n\n get resultsShown() {\n return !this.resultsTarget.hidden\n }\n\n set resultsShown(value) {\n this.resultsTarget.hidden = !value\n }\n\n get options() {\n return Array.from(this.resultsTarget.querySelectorAll(optionSelector))\n }\n\n get selectedOption() {\n return this.resultsTarget.querySelector(activeSelector)\n }\n\n get selectedClassesOrDefault() {\n return this.hasSelectedClass ? this.selectedClasses : [\"active\"]\n }\n\n optionsForFetch() {\n return { headers: { \"X-Requested-With\": \"XMLHttpRequest\" } } // override if you need\n }\n}\n\nconst debounce = (fn, delay = 10) => {\n let timeoutId = null\n\n return (...args) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(fn, delay)\n }\n}\n\nexport { Autocomplete }\n", "export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n", "export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n", "var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "/*\nStimulus 3.0.0\nCopyright © 2021 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 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())\n .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n }\n bindingConnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n }\n bindingDisconnected(binding) {\n this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n }\n handleError(error, message, detail = {}) {\n this.application.handleError(error, `Error ${message}`, detail);\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).sort().forEach(key => {\n parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n });\n return parts.join(\":\");\n }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n const source = descriptorString.trim();\n const matches = source.match(descriptorPattern) || [];\n return {\n eventTarget: parseEventTarget(matches[4]),\n eventName: matches[2],\n eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n identifier: matches[5],\n methodName: matches[7]\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.split(\":\").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 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\nclass Action {\n constructor(element, index, descriptor) {\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 }\n static forToken(token) {\n return new this(token.element, token.index, parseActionDescriptorString(token.content));\n }\n toString() {\n const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n }\n get params() {\n if (this.eventTarget instanceof Element) {\n return this.getParamsFromEventTargetAttributes(this.eventTarget);\n }\n else {\n return {};\n }\n }\n getParamsFromEventTargetAttributes(eventTarget) {\n const params = {};\n const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n const attributes = Array.from(eventTarget.attributes);\n attributes.forEach(({ name, value }) => {\n const match = name.match(pattern);\n const key = match && match[1];\n if (key) {\n Object.assign(params, { [camelize(key)]: typecast(value) });\n }\n });\n return params;\n }\n get eventTargetName() {\n return stringifyEventTarget(this.eventTarget);\n }\n}\nconst defaultEventNames = {\n \"a\": e => \"click\",\n \"button\": e => \"click\",\n \"form\": e => \"submit\",\n \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n \"select\": e => \"change\",\n \"textarea\": e => \"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 if (this.willBeInvokedByEvent(event)) {\n this.invokeWithEvent(event);\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 invokeWithEvent(event) {\n const { target, currentTarget } = event;\n try {\n const { params } = this.action;\n const actionEvent = Object.assign(event, { params });\n this.method.call(this.controller, actionEvent);\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 (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.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, { attributes: true, childList: true, subtree: 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 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(node, attributeName) {\n const element = node;\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 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\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\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 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 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)\n .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.trim().split(/\\s+/).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));\n this.bindingsByAction.clear();\n }\n parseValueForToken(token) {\n const action = Action.forToken(token);\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 this.invokeChangedCallbacksForDefaultValues();\n }\n start() {\n this.stringMapObserver.start();\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 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 }\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 if (!this.targetsByName.has(name, element)) {\n this.targetsByName.add(name, element);\n this.delegate.targetConnected(element, name);\n }\n }\n disconnectTarget(element, name) {\n if (this.targetsByName.has(name, element)) {\n this.targetsByName.delete(name, element);\n 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\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 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 try {\n this.controller.connect();\n this.logDebugActivity(\"connect\");\n }\n catch (error) {\n this.handleError(error, \"connecting controller\");\n }\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.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 invokeControllerMethod(methodName, ...args) {\n const controller = this.controller;\n if (typeof controller[methodName] == \"function\") {\n controller[methodName](...args);\n }\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\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) => [\n ...Object.getOwnPropertyNames(object),\n ...Object.getOwnPropertySymbols(object)\n ];\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 () { this.a.call(this); };\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\n || this.findTarget(targetName)\n || 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 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 }\n findElement(selector) {\n return this.element.matches(selector)\n ? this.element\n : 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}\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 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 }\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 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};\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 }\n static start(element, schema) {\n const application = new Application(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 if (controllerConstructor.shouldLoad) {\n this.load({ identifier, controllerConstructor });\n }\n }\n load(head, ...rest) {\n const definitions = Array.isArray(head) ? head : [head, ...rest];\n definitions.forEach(definition => this.router.loadDefinition(definition));\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 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);\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) {\n const definition = parseValueDefinitionPair(valueDefinitionPair);\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]) {\n return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n switch (constant) {\n case Array: return \"array\";\n case Boolean: return \"boolean\";\n case Number: return \"number\";\n case Object: return \"object\";\n case String: return \"string\";\n }\n}\nfunction parseValueTypeDefault(defaultValue) {\n switch (typeof defaultValue) {\n case \"boolean\": return \"boolean\";\n case \"number\": return \"number\";\n case \"string\": 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(typeObject) {\n const typeFromObject = parseValueTypeConstant(typeObject.type);\n if (typeFromObject) {\n const defaultValueType = parseValueTypeDefault(typeObject.default);\n if (typeFromObject !== defaultValueType) {\n throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n }\n return typeFromObject;\n }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n const typeFromObject = parseValueTypeObject(typeDefinition);\n const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n const typeFromConstant = parseValueTypeConstant(typeDefinition);\n const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n if (type)\n return type;\n throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n const constant = parseValueTypeConstant(typeDefinition);\n if (constant)\n return defaultValuesByType[constant];\n const defaultValue = typeDefinition.default;\n if (defaultValue !== undefined)\n return defaultValue;\n return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n const key = `${dasherize(token)}-value`;\n const type = parseValueTypeDefinition(typeDefinition);\n return {\n type,\n key,\n name: camelize(key),\n get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n reader: readers[type],\n writer: writers[type] || writers.default\n };\n}\nconst defaultValuesByType = {\n get array() { return []; },\n boolean: false,\n number: 0,\n get object() { return {}; },\n string: \"\"\n};\nconst readers = {\n array(value) {\n const array = JSON.parse(value);\n if (!Array.isArray(array)) {\n throw new TypeError(\"Expected array\");\n }\n return array;\n },\n boolean(value) {\n return !(value == \"0\" || value == \"false\");\n },\n number(value) {\n return Number(value);\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 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 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 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 = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "export const kebabCase = string =>\n string\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n\nexport const capitalize = string => {\n return string.charAt(0).toUpperCase() + string.slice(1);\n};\n", "const booleanOptions = [\n 'allowInput',\n 'altInput',\n 'animate',\n 'clickOpens',\n 'closeOnSelect',\n 'disableMobile',\n 'enableSeconds',\n 'enableTime',\n 'inline',\n 'noCalendar',\n 'shorthandCurrentMonth',\n 'static',\n 'time_24hr',\n 'weekNumbers',\n 'wrap'\n]\n\nconst stringOptions = [\n 'altInputClass',\n 'conjunction',\n 'mode',\n 'nextArrow',\n 'position',\n 'prevArrow',\n 'monthSelectorType'\n]\n\nconst numberOptions = [\n 'defaultHour',\n 'defaultMinute',\n 'defaultSeconds',\n 'hourIncrement',\n 'minuteIncrement',\n 'showMonths'\n]\n\nconst arrayOptions = ['disable', 'enable', 'disableDaysOfWeek', 'enableDaysOfWeek']\n\nconst arrayOrStringOptions = ['defaultDate']\n\nconst dateOptions = ['maxDate', 'minDate', 'maxTime', 'minTime', 'now']\n\nexport const dateFormats = ['altFormat', 'ariaDateFormat', 'dateFormat']\n\nexport const options = {\n string: stringOptions,\n boolean: booleanOptions,\n date: dateOptions,\n array: arrayOptions,\n number: numberOptions,\n arrayOrString: arrayOrStringOptions\n}\n", "export const events = ['change', 'open', 'close', 'monthChange', 'yearChange', 'ready', 'valueUpdate', 'dayCreate']\n", "export const elements = [\n 'calendarContainer',\n 'currentYearElement',\n 'days',\n 'daysContainer',\n 'input',\n 'nextMonthNav',\n 'monthNav',\n 'prevMonthNav',\n 'rContainer',\n 'selectedDateElem',\n 'todayDateElem',\n 'weekdayContainer'\n]\n", "export const mapping = {\n '%Y': 'Y',\n '%y': 'y',\n '%C': 'Y',\n '%m': 'm',\n '%-m': 'n',\n '%_m': 'n',\n '%B': 'F',\n '%^B': 'F',\n '%b': 'M',\n '%^b': 'M',\n '%h': 'M',\n '%^h': 'M',\n '%d': 'd',\n '%-d': 'j',\n '%e': 'j',\n '%H': 'H',\n '%k': 'H',\n '%I': 'h',\n '%l': 'h',\n '%-l': 'h',\n '%P': 'K',\n '%p': 'K',\n '%M': 'i',\n '%S': 'S',\n '%A': 'l',\n '%a': 'D',\n '%w': 'w'\n}\n\nconst strftimeRegex = new RegExp(\n Object.keys(mapping)\n .join('|')\n .replace(new RegExp('\\\\^', 'g'), '\\\\^'),\n 'g'\n)\n\nexport const convertDateFormat = (format) => {\n return format.replace(strftimeRegex, (match) => {\n return mapping[match]\n })\n}\n", "import { Controller } from '@hotwired/stimulus'\nimport flatpickr from 'flatpickr'\nimport { kebabCase, capitalize } from './utils'\nimport { options, dateFormats } from './config_options'\nimport { events } from './events'\nimport { elements } from './elements'\nimport { convertDateFormat } from './strftime_mapping'\n\nclass StimulusFlatpickr extends Controller {\n static targets = ['instance']\n\n initialize() {\n this.config = {}\n }\n\n connect() {\n this._initializeEvents()\n this._initializeOptions()\n this._initializeDateFormats()\n\n this.fp = flatpickr(this.flatpickrElement, {\n ...this.config\n })\n\n this._initializeElements()\n }\n\n disconnect() {\n const value = this.inputTarget.value\n this.fp.destroy()\n this.inputTarget.value = value\n }\n\n _initializeEvents() {\n events.forEach((event) => {\n if (this[event]) {\n const hook = `on${capitalize(event)}`\n this.config[hook] = this[event].bind(this)\n }\n })\n }\n\n _initializeOptions() {\n Object.keys(options).forEach((optionType) => {\n const optionsCamelCase = options[optionType]\n optionsCamelCase.forEach((option) => {\n const optionKebab = kebabCase(option)\n if (this.data.has(optionKebab)) {\n this.config[option] = this[`_${optionType}`](optionKebab)\n }\n })\n })\n this._handleDaysOfWeek()\n }\n\n _handleDaysOfWeek() {\n if (this.config.disableDaysOfWeek) {\n this.config.disableDaysOfWeek = this._validateDaysOfWeek(this.config.disableDaysOfWeek)\n this.config.disable = [...(this.config.disable || []), this._disable.bind(this)]\n }\n\n if (this.config.enableDaysOfWeek) {\n this.config.enableDaysOfWeek = this._validateDaysOfWeek(this.config.enableDaysOfWeek)\n this.config.enable = [...(this.config.enable || []), this._enable.bind(this)]\n }\n }\n\n _validateDaysOfWeek(days) {\n if (Array.isArray(days)) {\n return days.map((day) => parseInt(day))\n } else {\n console.error('days of week must be a valid array')\n return []\n }\n }\n\n _disable(date) {\n const disabledDays = this.config.disableDaysOfWeek\n return disabledDays.includes(date.getDay())\n }\n\n _enable(date) {\n const enabledDays = this.config.enableDaysOfWeek\n return enabledDays.includes(date.getDay())\n }\n\n _initializeDateFormats() {\n dateFormats.forEach((dateFormat) => {\n if (this.data.has(dateFormat)) {\n this.config[dateFormat] = convertDateFormat(this.data.get(dateFormat))\n }\n })\n }\n\n _initializeElements() {\n elements.forEach((element) => {\n this[`${element}Target`] = this.fp[element]\n })\n }\n\n _string(option) {\n return this.data.get(option)\n }\n\n _date(option) {\n return this.data.get(option)\n }\n\n _boolean(option) {\n return !(this.data.get(option) == '0' || this.data.get(option) == 'false')\n }\n\n _array(option) {\n return JSON.parse(this.data.get(option))\n }\n\n _number(option) {\n return parseInt(this.data.get(option))\n }\n\n _arrayOrString(option) {\n const val = this.data.get(option)\n try {\n return JSON.parse(val)\n } catch (e) {\n return val\n }\n }\n\n get flatpickrElement() {\n return (this.hasInstanceTarget && this.instanceTarget) || this.element\n }\n}\n\nexport default StimulusFlatpickr\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"content\", \"showMoreButton\"];\n static values = { autoclose: Boolean };\n\n outsideClickListener = (e) => {\n if (!this.element.contains(e.target) || e.target.target == \"_blank\") {\n this.contentTarget.classList.add(\"hidden\");\n this.element.classList.remove(\"active\");\n }\n };\n\n connect() {\n if (this.autocloseValue) {\n addEventListener(\"click\", this.outsideClickListener);\n }\n }\n\n toggle(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.autocloseValue) {\n document.querySelectorAll('[data-controller=\"click-toggle\"].active').forEach((element) => {\n if (element === this.element) return;\n element.querySelector('[data-action=\"click-toggle#toggle\"]').click();\n });\n }\n this.contentTarget.classList.toggle(\"hidden\");\n this.element.classList.toggle(\"active\");\n }\n\n close() {\n this.contentTarget.classList.add(\"hidden\");\n this.element.classList.remove(\"active\");\n }\n\n handleKeydown(event) {\n if (event.target.tagName === \"A\" && (event.key === \"Enter\" || event.key === \" \")) {\n if (event.target.target === \"_blank\") {\n window.open(event.target.href, \"_blank\");\n } else {\n window.location.href = event.target.href;\n }\n } else {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n this.toggle(event);\n } else if (event.key === \"Escape\") {\n this.close(event);\n }\n }\n }\n\n // I had to do a new action to toggle hidden class to multiple elements\n // since when I wrapped the tags inside a div I broke all the styles :(\n multipleToggle(e) {\n const target = e.target;\n e.preventDefault();\n e.stopPropagation();\n\n this.contentTargets.forEach((element) => {\n element.classList.toggle(\"hidden\");\n });\n\n if (!this.hasShowMoreButtonTarget) return;\n\n if (target.dataset.state === \"closed\") {\n target.dataset.state = \"open\";\n target.innerHTML = \"Show less\";\n } else {\n target.dataset.state = \"closed\";\n target.innerHTML = \"Show more\";\n }\n }\n\n disconnect() {\n removeEventListener(\"click\", this.outsideClickListener);\n this.contentTarget.classList.add(\"hidden\");\n this.element.classList.remove(\"active\");\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; }\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.1.2\"\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 * \u250C\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2510\n * FolderNode File\n * \u250C\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2510\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<typeof someArray>` 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 \u2014 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\u2019t 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\u2019t 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 \u2014 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;", "let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nexport let customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nexport let nanoid = (size = 21) => {\n let id = ''\n let i = size\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\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-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;", "/**\n * Takes a full filename string and returns an object {name, extension}\n */\nexport default function getFileNameAndExtension(fullFileName) {\n const lastDot = fullFileName.lastIndexOf('.');\n // these count as no extension: \"no-dot\", \"trailing-dot.\"\n if (lastDot === -1 || lastDot === fullFileName.length - 1) {\n return {\n name: fullFileName,\n extension: undefined\n };\n }\n return {\n name: fullFileName.slice(0, lastDot),\n extension: fullFileName.slice(lastDot + 1)\n };\n}", "// ___Why not add the mime-types package?\n// It's 19.7kB gzipped, and we only need mime types for well-known extensions (for file previews).\n// ___Where to take new extensions from?\n// https://github.com/jshttp/mime-db/blob/master/db.json\n\nexport default {\n __proto__: null,\n md: 'text/markdown',\n markdown: 'text/markdown',\n mp4: 'video/mp4',\n mp3: 'audio/mp3',\n svg: 'image/svg+xml',\n jpg: 'image/jpeg',\n png: 'image/png',\n webp: 'image/webp',\n gif: 'image/gif',\n heic: 'image/heic',\n heif: 'image/heif',\n yaml: 'text/yaml',\n yml: 'text/yaml',\n csv: 'text/csv',\n tsv: 'text/tab-separated-values',\n tab: 'text/tab-separated-values',\n avi: 'video/x-msvideo',\n mks: 'video/x-matroska',\n mkv: 'video/x-matroska',\n mov: 'video/quicktime',\n dicom: 'application/dicom',\n doc: 'application/msword',\n docm: 'application/vnd.ms-word.document.macroenabled.12',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n dot: 'application/msword',\n dotm: 'application/vnd.ms-word.template.macroenabled.12',\n dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n xla: 'application/vnd.ms-excel',\n xlam: 'application/vnd.ms-excel.addin.macroenabled.12',\n xlc: 'application/vnd.ms-excel',\n xlf: 'application/x-xliff+xml',\n xlm: 'application/vnd.ms-excel',\n xls: 'application/vnd.ms-excel',\n xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',\n xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n xlt: 'application/vnd.ms-excel',\n xltm: 'application/vnd.ms-excel.template.macroenabled.12',\n xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n xlw: 'application/vnd.ms-excel',\n txt: 'text/plain',\n text: 'text/plain',\n conf: 'text/plain',\n log: 'text/plain',\n pdf: 'application/pdf',\n zip: 'application/zip',\n '7z': 'application/x-7z-compressed',\n rar: 'application/x-rar-compressed',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n dmg: 'application/x-apple-diskimage'\n};", "import getFileNameAndExtension from \"./getFileNameAndExtension.js\";\nimport mimeTypes from \"./mimeTypes.js\";\nexport default function getFileType(file) {\n var _getFileNameAndExtens;\n if (file.type) return file.type;\n const fileExtension = file.name ? (_getFileNameAndExtens = getFileNameAndExtension(file.name).extension) == null ? void 0 : _getFileNameAndExtens.toLowerCase() : null;\n if (fileExtension && fileExtension in mimeTypes) {\n // else, see if we can map extension to a mime type\n return mimeTypes[fileExtension];\n }\n // if all fails, fall back to a generic byte stream type\n return 'application/octet-stream';\n}", "import getFileType from \"./getFileType.js\";\nfunction encodeCharacter(character) {\n return character.charCodeAt(0).toString(32);\n}\nfunction encodeFilename(name) {\n let suffix = '';\n return name.replace(/[^A-Z0-9]/gi, character => {\n suffix += `-${encodeCharacter(character)}`;\n return '/';\n }) + suffix;\n}\n\n/**\n * Takes a file object and turns it into fileID, by converting file.name to lowercase,\n * removing extra characters and adding type, size and lastModified\n */\nexport default function generateFileID(file, instanceId) {\n // It's tempting to do `[items].filter(Boolean).join('-')` here, but that\n // is slower! simple string concatenation is fast\n\n let id = instanceId || 'uppy';\n if (typeof file.name === 'string') {\n id += `-${encodeFilename(file.name.toLowerCase())}`;\n }\n if (file.type !== undefined) {\n id += `-${file.type}`;\n }\n if (file.meta && typeof file.meta.relativePath === 'string') {\n id += `-${encodeFilename(file.meta.relativePath.toLowerCase())}`;\n }\n if (file.data.size !== undefined) {\n id += `-${file.data.size}`;\n }\n if (file.data.lastModified !== undefined) {\n id += `-${file.data.lastModified}`;\n }\n return id;\n}\n\n// If the provider has a stable, unique ID, then we can use that to identify the file.\n// Then we don't have to generate our own ID, and we can add the same file many times if needed (different path)\nfunction hasFileStableId(file) {\n if (!file.isRemote || !file.remote) return false;\n // These are the providers that it seems like have stable IDs for their files. The other's I haven't checked yet.\n const stableIdProviders = new Set(['box', 'dropbox', 'drive', 'facebook', 'unsplash']);\n return stableIdProviders.has(file.remote.provider);\n}\nexport function getSafeFileId(file, instanceId) {\n if (hasFileStableId(file)) return file.id;\n const fileType = getFileType(file);\n return generateFileID({\n ...file,\n type: fileType\n }, instanceId);\n}", "// 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}", "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}", "/**\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};", "import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n", "import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n", "import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n", "import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function (update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/**\n * @param {import('./internal').Component} a\n * @param {import('./internal').Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\trenderComponent(c);\n\t\t\tif (rerenderQueue.length > renderQueueLength) {\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t}\n\t\t}\n\t}\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n", "import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {import('./internal').Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType =\n\t\tcontext);\n}\n", "export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n", "import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\nimport { isArray } from '../util';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getLastDom(oldParentVNode).nextSibling;\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 1\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * @param {import('../internal').VNode} vnode\n */\nfunction getLastDom(vnode) {\n\tif (vnode.type == null || typeof vnode.type === 'string') {\n\t\treturn vnode._dom;\n\t}\n\n\tif (vnode._children) {\n\t\tfor (let i = vnode._children.length - 1; i >= 0; i--) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child) {\n\t\t\t\tlet lastDom = getLastDom(child);\n\t\t\t\tif (lastDom) {\n\t\t\t\t\treturn lastDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n", "import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'width' &&\n\t\t\tname !== 'height' &&\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// aria- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\treturn this._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n", "import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\t\t\tc._vnode = newVNode;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\t// In cases of bailing due to strict-equality we have to reset force as well\n\t\t\t\t\tc._force = false;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n", "import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n", "import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n", "/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n", "/**\n * Check if an object is a DOM element. Duck-typing based on `nodeType`.\n */\nexport default function isDOMElement(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n if (!('nodeType' in obj)) return false;\n return obj.nodeType === Node.ELEMENT_NODE;\n}", "import isDOMElement from \"./isDOMElement.js\";\nfunction findDOMElement(element, context) {\n if (context === void 0) {\n context = document;\n }\n if (typeof element === 'string') {\n return context.querySelector(element);\n }\n if (isDOMElement(element)) {\n return element;\n }\n return null;\n}\nexport default findDOMElement;", "/**\n * Get the declared text direction for an element.\n */\n\nfunction getTextDirection(element) {\n var _element;\n // There is another way to determine text direction using getComputedStyle(), as done here:\n // https://github.com/pencil-js/text-direction/blob/2a235ce95089b3185acec3b51313cbba921b3811/text-direction.js\n //\n // We do not use that approach because we are interested specifically in the _declared_ text direction.\n // If no text direction is declared, we have to provide our own explicit text direction so our\n // bidirectional CSS style sheets work.\n while (element && !element.dir) {\n // eslint-disable-next-line no-param-reassign\n element = element.parentNode;\n }\n return (_element = element) == null ? void 0 : _element.dir;\n}\nexport default getTextDirection;", "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\u2019s an object \u2014 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 <body> with a single <div> element,\n // Preact thinks it\u2019s 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);\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 \u2014 Preact just adds null into target, not replacing\n targetElement.innerHTML = '';\n }\n render(this.render(this.uppy.getState()), 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 <script> tag initializing Uppy is right before the closing </body> tag at the end of the page. ' + '(see https://github.com/transloadit/uppy/issues/1042)\\n\\n' + 'If you meant to target a plugin, please confirm that your `import` statements or `require` calls are correct.';\n }\n throw new Error(message);\n }\n\n /**\n * Called when plugin is mounted, whether in DOM or into another plugin.\n * Needed because sometimes plugins are mounted separately/after `install`,\n * so this.el and this.parent might not be available in `install`.\n * This is the case with @uppy/react plugins, for example.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n render(state) {\n throw new Error('Extend the render method to add your plugin to a DOM element');\n }\n update(state) {\n if (this.el != null) {\n var _classPrivateFieldLoo, _classPrivateFieldLoo2;\n (_classPrivateFieldLoo = (_classPrivateFieldLoo2 = _classPrivateFieldLooseBase(this, _updateUI))[_updateUI]) == null || _classPrivateFieldLoo.call(_classPrivateFieldLoo2, state);\n }\n }\n unmount() {\n if (this.isTargetDOMEl) {\n var _this$el;\n (_this$el = this.el) == null || _this$el.remove();\n }\n this.onUnmount();\n }\n onMount() {}\n onUnmount() {}\n}\nexport default UIPlugin;", "/**\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};", "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 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\u2026\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 { 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 };", "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 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 {\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\u2019s not an Upload button,\n // but \u201CConfirm Restore Button\u201D\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 { h, Component, createRef } from 'preact';\nconst TRANSITION_MS = 300;\nexport default class FadeIn extends Component {\n constructor() {\n super(...arguments);\n this.ref = createRef();\n }\n componentWillEnter(callback) {\n this.ref.current.style.opacity = '1';\n this.ref.current.style.transform = 'none';\n setTimeout(callback, TRANSITION_MS);\n }\n componentWillLeave(callback) {\n this.ref.current.style.opacity = '0';\n this.ref.current.style.transform = 'translateY(350%)';\n setTimeout(callback, TRANSITION_MS);\n }\n render() {\n const {\n children\n } = this.props;\n return h(\"div\", {\n className: \"uppy-Informer-animated\",\n ref: this.ref\n }, children);\n }\n}", "// INFO: not typing copy pasted libarary code\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\n/* eslint-disable */\n/**\n * @source https://github.com/developit/preact-transition-group\n */\n\nimport { Component, cloneElement, h, toChildArray } from 'preact';\nfunction assign(obj, props) {\n return Object.assign(obj, props);\n}\nfunction getKey(vnode, fallback) {\n var _vnode$key;\n return (_vnode$key = vnode == null ? void 0 : vnode.key) != null ? _vnode$key : fallback;\n}\nfunction linkRef(component, name) {\n const cache = component._ptgLinkedRefs || (component._ptgLinkedRefs = {});\n return cache[name] || (cache[name] = c => {\n component.refs[name] = c;\n });\n}\nfunction getChildMapping(children) {\n const out = {};\n for (let i = 0; i < children.length; i++) {\n if (children[i] != null) {\n const key = getKey(children[i], i.toString(36));\n out[key] = children[i];\n }\n }\n return out;\n}\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n const getValueForKey = key => next.hasOwnProperty(key) ? next[key] : prev[key];\n\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n const nextKeysPending = {};\n let pendingKeys = [];\n for (const prevKey in prev) {\n if (next.hasOwnProperty(prevKey)) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n const childMapping = {};\n for (const nextKey in next) {\n if (nextKeysPending.hasOwnProperty(nextKey)) {\n for (let i = 0; i < nextKeysPending[nextKey].length; i++) {\n const pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n childMapping[nextKey] = getValueForKey(nextKey);\n }\n\n // Finally, add the keys which didn't appear before any key in `next`\n for (let i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n return childMapping;\n}\nconst identity = i => i;\nclass TransitionGroup extends Component {\n constructor(props, context) {\n super(props, context);\n this.refs = {};\n this.state = {\n children: getChildMapping(toChildArray(toChildArray(this.props.children)) || [])\n };\n this.performAppear = this.performAppear.bind(this);\n this.performEnter = this.performEnter.bind(this);\n this.performLeave = this.performLeave.bind(this);\n }\n componentWillMount() {\n this.currentlyTransitioningKeys = {};\n this.keysToAbortLeave = [];\n this.keysToEnter = [];\n this.keysToLeave = [];\n }\n componentDidMount() {\n const initialChildMapping = this.state.children;\n for (const key in initialChildMapping) {\n if (initialChildMapping[key]) {\n // this.performAppear(getKey(initialChildMapping[key], key));\n this.performAppear(key);\n }\n }\n }\n componentWillReceiveProps(nextProps) {\n const nextChildMapping = getChildMapping(toChildArray(nextProps.children) || []);\n const prevChildMapping = this.state.children;\n this.setState(prevState => ({\n children: mergeChildMappings(prevState.children, nextChildMapping)\n }));\n let key;\n for (key in nextChildMapping) {\n if (nextChildMapping.hasOwnProperty(key)) {\n const hasPrev = prevChildMapping && prevChildMapping.hasOwnProperty(key);\n // We should re-enter the component and abort its leave function\n if (nextChildMapping[key] && hasPrev && this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n this.keysToAbortLeave.push(key);\n } else if (nextChildMapping[key] && !hasPrev && !this.currentlyTransitioningKeys[key]) {\n this.keysToEnter.push(key);\n }\n }\n }\n for (key in prevChildMapping) {\n if (prevChildMapping.hasOwnProperty(key)) {\n const hasNext = nextChildMapping && nextChildMapping.hasOwnProperty(key);\n if (prevChildMapping[key] && !hasNext && !this.currentlyTransitioningKeys[key]) {\n this.keysToLeave.push(key);\n }\n }\n }\n }\n componentDidUpdate() {\n const {\n keysToEnter\n } = this;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n const {\n keysToLeave\n } = this;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n }\n _finishAbort(key) {\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n this.keysToAbortLeave.splice(idx, 1);\n }\n }\n performAppear(key) {\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component != null && component.componentWillAppear) {\n component.componentWillAppear(this._handleDoneAppearing.bind(this, key));\n } else {\n this._handleDoneAppearing(key);\n }\n }\n _handleDoneAppearing(key) {\n const component = this.refs[key];\n if (component != null && component.componentDidAppear) {\n component.componentDidAppear();\n }\n delete this.currentlyTransitioningKeys[key];\n this._finishAbort(key);\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully appeared. Remove it.\n this.performLeave(key);\n }\n }\n performEnter(key) {\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component != null && component.componentWillEnter) {\n component.componentWillEnter(this._handleDoneEntering.bind(this, key));\n } else {\n this._handleDoneEntering(key);\n }\n }\n _handleDoneEntering(key) {\n const component = this.refs[key];\n if (component != null && component.componentDidEnter) {\n component.componentDidEnter();\n }\n delete this.currentlyTransitioningKeys[key];\n this._finishAbort(key);\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (!currentChildMapping || !currentChildMapping.hasOwnProperty(key)) {\n // This was removed before it had fully entered. Remove it.\n this.performLeave(key);\n }\n }\n performLeave(key) {\n // If we should immediately abort this leave function,\n // don't run the leave transition at all.\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n return;\n }\n this.currentlyTransitioningKeys[key] = true;\n const component = this.refs[key];\n if (component != null && component.componentWillLeave) {\n component.componentWillLeave(this._handleDoneLeaving.bind(this, key));\n } else {\n // Note that this is somewhat dangerous b/c it calls setState()\n // again, effectively mutating the component before all the work\n // is done.\n this._handleDoneLeaving(key);\n }\n }\n _handleDoneLeaving(key) {\n // If we should immediately abort the leave,\n // then skip this altogether\n const idx = this.keysToAbortLeave.indexOf(key);\n if (idx !== -1) {\n return;\n }\n const component = this.refs[key];\n if (component != null && component.componentDidLeave) {\n component.componentDidLeave();\n }\n delete this.currentlyTransitioningKeys[key];\n const currentChildMapping = getChildMapping(toChildArray(this.props.children) || []);\n if (currentChildMapping && currentChildMapping.hasOwnProperty(key)) {\n // This entered again before it fully left. Add it again.\n this.performEnter(key);\n } else {\n const children = assign({}, this.state.children);\n delete children[key];\n this.setState({\n children\n });\n }\n }\n render(_ref, _ref2) {\n let {\n childFactory,\n transitionLeave,\n transitionName,\n transitionAppear,\n transitionEnter,\n transitionLeaveTimeout,\n transitionEnterTimeout,\n transitionAppearTimeout,\n component,\n ...props\n } = _ref;\n let {\n children\n } = _ref2;\n // TODO: we could get rid of the need for the wrapper node\n // by cloning a single child\n const childrenToRender = Object.entries(children).map(_ref3 => {\n let [key, child] = _ref3;\n if (!child) return undefined;\n const ref = linkRef(this, key);\n return cloneElement(childFactory(child), {\n ref,\n key\n });\n }).filter(Boolean);\n return h(component, props, childrenToRender);\n }\n}\nTransitionGroup.defaultProps = {\n component: 'span',\n childFactory: identity\n};\nexport default TransitionGroup;", "/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n/* eslint-disable jsx-a11y/click-events-have-key-events */\nimport { h } from 'preact';\nimport { UIPlugin } from '@uppy/core';\nimport FadeIn from \"./FadeIn.js\";\nimport TransitionGroup from \"./TransitionGroup.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.0\"\n};\n/**\n * Informer\n * Shows rad message bubbles\n * used like this: `uppy.info('hello world', 'info', 5000)`\n * or for errors: `uppy.info('Error uploading img.jpg', 'error', 5000)`\n *\n */\nexport default class Informer extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, opts);\n this.render = state => {\n return h(\"div\", {\n className: \"uppy uppy-Informer\"\n }, h(TransitionGroup, null, state.info.map(info => h(FadeIn, {\n key: info.message\n }, h(\"p\", {\n role: \"alert\"\n }, info.message, ' ', info.details && h(\"span\", {\n \"aria-label\": info.details,\n \"data-microtip-position\": \"top-left\",\n \"data-microtip-size\": \"medium\",\n role: \"tooltip\",\n onClick: () =>\n // eslint-disable-next-line no-alert\n alert(`${info.message} \\n\\n ${info.details}`)\n }, \"?\"))))));\n };\n this.type = 'progressindicator';\n this.id = this.opts.id || 'Informer';\n this.title = 'Informer';\n }\n install() {\n const {\n target\n } = this.opts;\n if (target) {\n this.mount(target, this);\n }\n }\n}\nInformer.VERSION = packageJson.version;", "const DATA_URL_PATTERN = /^data:([^/]+\\/[^,;]+(?:[^,]*?))(;base64)?,([\\s\\S]*)$/;\nfunction dataURItoBlob(dataURI, opts, toFile) {\n var _ref, _opts$mimeType;\n // get the base64 data\n const dataURIData = DATA_URL_PATTERN.exec(dataURI);\n\n // user may provide mime type, if not get it from data URI\n const mimeType = (_ref = (_opts$mimeType = opts.mimeType) != null ? _opts$mimeType : dataURIData == null ? void 0 : dataURIData[1]) != null ? _ref : 'plain/text';\n let data; // We add `!` to tell TS we're OK with `data` being not defined when the dataURI is invalid.\n if ((dataURIData == null ? void 0 : dataURIData[2]) != null) {\n const binary = atob(decodeURIComponent(dataURIData[3]));\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n data = [bytes];\n } else if ((dataURIData == null ? void 0 : dataURIData[3]) != null) {\n data = [decodeURIComponent(dataURIData[3])];\n }\n\n // Convert to a File?\n if (toFile) {\n return new File(data, opts.name || '', {\n type: mimeType\n });\n }\n return new Blob(data, {\n type: mimeType\n });\n}\nexport default dataURItoBlob;", "/**\n * Check if a URL string is an object URL from `URL.createObjectURL`.\n */\nexport default function isObjectURL(url) {\n return url.startsWith('blob:');\n}", "export default function isPreviewSupported(fileType) {\n if (!fileType) return false;\n // list of images that browsers can preview\n return /^[^/]+\\/(jpe?g|gif|png|svg|svg\\+xml|bmp|webp|avif)$/.test(fileType);\n}", "function e(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}var t=\"undefined\"!=typeof self?self:global;const s=\"undefined\"!=typeof navigator,i=s&&\"undefined\"==typeof HTMLImageElement,n=!(\"undefined\"==typeof global||\"undefined\"==typeof process||!process.versions||!process.versions.node),r=t.Buffer,a=!!r,h=e=>void 0!==e;function f(e){return void 0===e||(e instanceof Map?0===e.size:0===Object.values(e).filter(h).length)}function l(e){let t=new Error(e);throw delete t.stack,t}function o(e){let t=function(e){let t=0;return e.ifd0.enabled&&(t+=1024),e.exif.enabled&&(t+=2048),e.makerNote&&(t+=2048),e.userComment&&(t+=1024),e.gps.enabled&&(t+=512),e.interop.enabled&&(t+=100),e.ifd1.enabled&&(t+=1024),t+2048}(e);return e.jfif.enabled&&(t+=50),e.xmp.enabled&&(t+=2e4),e.iptc.enabled&&(t+=14e3),e.icc.enabled&&(t+=6e3),t}const u=e=>String.fromCharCode.apply(null,e),d=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-8\"):void 0;class c{static from(e,t){return e instanceof this&&e.le===t?e:new c(e,void 0,void 0,t)}constructor(e,t=0,s,i){if(\"boolean\"==typeof i&&(this.le=i),Array.isArray(e)&&(e=new Uint8Array(e)),0===e)this.byteOffset=0,this.byteLength=0;else if(e instanceof ArrayBuffer){void 0===s&&(s=e.byteLength-t);let i=new DataView(e,t,s);this._swapDataView(i)}else if(e instanceof Uint8Array||e instanceof DataView||e instanceof c){void 0===s&&(s=e.byteLength-t),(t+=e.byteOffset)+s>e.byteOffset+e.byteLength&&l(\"Creating view outside of available memory in ArrayBuffer\");let i=new DataView(e.buffer,t,s);this._swapDataView(i)}else if(\"number\"==typeof e){let t=new DataView(new ArrayBuffer(e));this._swapDataView(t)}else l(\"Invalid input argument for BufferView: \"+e)}_swapArrayBuffer(e){this._swapDataView(new DataView(e))}_swapBuffer(e){this._swapDataView(new DataView(e.buffer,e.byteOffset,e.byteLength))}_swapDataView(e){this.dataView=e,this.buffer=e.buffer,this.byteOffset=e.byteOffset,this.byteLength=e.byteLength}_lengthToEnd(e){return this.byteLength-e}set(e,t,s=c){return e instanceof DataView||e instanceof c?e=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Uint8Array||l(\"BufferView.set(): Invalid data argument.\"),this.toUint8().set(e,t),new s(this,t,e.byteLength)}subarray(e,t){return t=t||this._lengthToEnd(e),new c(this,e,t)}toUint8(){return new Uint8Array(this.buffer,this.byteOffset,this.byteLength)}getUint8Array(e,t){return new Uint8Array(this.buffer,this.byteOffset+e,t)}getString(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return i=s,d?d.decode(i):a?Buffer.from(i).toString(\"utf8\"):decodeURIComponent(escape(u(i)));var i}getLatin1String(e=0,t=this.byteLength){let s=this.getUint8Array(e,t);return u(s)}getUnicodeString(e=0,t=this.byteLength){const s=[];for(let i=0;i<t&&e+i<this.byteLength;i+=2)s.push(this.getUint16(e+i));return u(s)}getInt8(e){return this.dataView.getInt8(e)}getUint8(e){return this.dataView.getUint8(e)}getInt16(e,t=this.le){return this.dataView.getInt16(e,t)}getInt32(e,t=this.le){return this.dataView.getInt32(e,t)}getUint16(e,t=this.le){return this.dataView.getUint16(e,t)}getUint32(e,t=this.le){return this.dataView.getUint32(e,t)}getFloat32(e,t=this.le){return this.dataView.getFloat32(e,t)}getFloat64(e,t=this.le){return this.dataView.getFloat64(e,t)}getFloat(e,t=this.le){return this.dataView.getFloat32(e,t)}getDouble(e,t=this.le){return this.dataView.getFloat64(e,t)}getUintBytes(e,t,s){switch(t){case 1:return this.getUint8(e,s);case 2:return this.getUint16(e,s);case 4:return this.getUint32(e,s);case 8:return this.getUint64&&this.getUint64(e,s)}}getUint(e,t,s){switch(t){case 8:return this.getUint8(e,s);case 16:return this.getUint16(e,s);case 32:return this.getUint32(e,s);case 64:return this.getUint64&&this.getUint64(e,s)}}toString(e){return this.dataView.toString(e,this.constructor.name)}ensureChunk(){}}function p(e,t){l(`${e} '${t}' was not loaded, try using full build of exifr.`)}class g extends Map{constructor(e){super(),this.kind=e}get(e,t){return this.has(e)||p(this.kind,e),t&&(e in t||function(e,t){l(`Unknown ${e} '${t}'.`)}(this.kind,e),t[e].enabled||p(this.kind,e)),super.get(e)}keyList(){return Array.from(this.keys())}}var m=new g(\"file parser\"),y=new g(\"segment parser\"),b=new g(\"file reader\");let w=t.fetch;function k(e,t){return(i=e).startsWith(\"data:\")||i.length>1e4?v(e,t,\"base64\"):n&&e.includes(\"://\")?O(e,t,\"url\",S):n?v(e,t,\"fs\"):s?O(e,t,\"url\",S):void l(\"Invalid input argument\");var i}async function O(e,t,s,i){return b.has(s)?v(e,t,s):i?async function(e,t){let s=await t(e);return new c(s)}(e,i):void l(`Parser ${s} is not loaded`)}async function v(e,t,s){let i=new(b.get(s))(e,t);return await i.read(),i}const S=e=>w(e).then((e=>e.arrayBuffer())),A=e=>new Promise(((t,s)=>{let i=new FileReader;i.onloadend=()=>t(i.result||new ArrayBuffer),i.onerror=s,i.readAsArrayBuffer(e)}));class U extends Map{get tagKeys(){return this.allKeys||(this.allKeys=Array.from(this.keys())),this.allKeys}get tagValues(){return this.allValues||(this.allValues=Array.from(this.values())),this.allValues}}function x(e,t,s){let i=new U;for(let[e,t]of s)i.set(e,t);if(Array.isArray(t))for(let s of t)e.set(s,i);else e.set(t,i);return i}function C(e,t,s){let i,n=e.get(t);for(i of s)n.set(i[0],i[1])}const B=new Map,V=new Map,I=new Map,L=[\"chunked\",\"firstChunkSize\",\"firstChunkSizeNode\",\"firstChunkSizeBrowser\",\"chunkSize\",\"chunkLimit\"],T=[\"jfif\",\"xmp\",\"icc\",\"iptc\",\"ihdr\"],z=[\"tiff\",...T],P=[\"ifd0\",\"ifd1\",\"exif\",\"gps\",\"interop\"],F=[...z,...P],j=[\"makerNote\",\"userComment\"],E=[\"translateKeys\",\"translateValues\",\"reviveValues\",\"multiSegment\"],M=[...E,\"sanitize\",\"mergeOutput\",\"silentErrors\"];class _{get translate(){return this.translateKeys||this.translateValues||this.reviveValues}}class D extends _{get needed(){return this.enabled||this.deps.size>0}constructor(t,s,i,n){if(super(),e(this,\"enabled\",!1),e(this,\"skip\",new Set),e(this,\"pick\",new Set),e(this,\"deps\",new Set),e(this,\"translateKeys\",!1),e(this,\"translateValues\",!1),e(this,\"reviveValues\",!1),this.key=t,this.enabled=s,this.parse=this.enabled,this.applyInheritables(n),this.canBeFiltered=P.includes(t),this.canBeFiltered&&(this.dict=B.get(t)),void 0!==i)if(Array.isArray(i))this.parse=this.enabled=!0,this.canBeFiltered&&i.length>0&&this.translateTagSet(i,this.pick);else if(\"object\"==typeof i){if(this.enabled=!0,this.parse=!1!==i.parse,this.canBeFiltered){let{pick:e,skip:t}=i;e&&e.length>0&&this.translateTagSet(e,this.pick),t&&t.length>0&&this.translateTagSet(t,this.skip)}this.applyInheritables(i)}else!0===i||!1===i?this.parse=this.enabled=i:l(`Invalid options argument: ${i}`)}applyInheritables(e){let t,s;for(t of E)s=e[t],void 0!==s&&(this[t]=s)}translateTagSet(e,t){if(this.dict){let s,i,{tagKeys:n,tagValues:r}=this.dict;for(s of e)\"string\"==typeof s?(i=r.indexOf(s),-1===i&&(i=n.indexOf(Number(s))),-1!==i&&t.add(Number(n[i]))):t.add(s)}else for(let s of e)t.add(s)}finalizeFilters(){!this.enabled&&this.deps.size>0?(this.enabled=!0,X(this.pick,this.deps)):this.enabled&&this.pick.size>0&&X(this.pick,this.deps)}}var N={jfif:!1,tiff:!0,xmp:!1,icc:!1,iptc:!1,ifd0:!0,ifd1:!1,exif:!0,gps:!0,interop:!1,ihdr:void 0,makerNote:!1,userComment:!1,multiSegment:!1,skip:[],pick:[],translateKeys:!0,translateValues:!0,reviveValues:!0,sanitize:!0,mergeOutput:!0,silentErrors:!0,chunked:!0,firstChunkSize:void 0,firstChunkSizeNode:512,firstChunkSizeBrowser:65536,chunkSize:65536,chunkLimit:5},$=new Map;class R extends _{static useCached(e){let t=$.get(e);return void 0!==t||(t=new this(e),$.set(e,t)),t}constructor(e){super(),!0===e?this.setupFromTrue():void 0===e?this.setupFromUndefined():Array.isArray(e)?this.setupFromArray(e):\"object\"==typeof e?this.setupFromObject(e):l(`Invalid options argument ${e}`),void 0===this.firstChunkSize&&(this.firstChunkSize=s?this.firstChunkSizeBrowser:this.firstChunkSizeNode),this.mergeOutput&&(this.ifd1.enabled=!1),this.filterNestedSegmentTags(),this.traverseTiffDependencyTree(),this.checkLoadedPlugins()}setupFromUndefined(){let e;for(e of L)this[e]=N[e];for(e of M)this[e]=N[e];for(e of j)this[e]=N[e];for(e of F)this[e]=new D(e,N[e],void 0,this)}setupFromTrue(){let e;for(e of L)this[e]=N[e];for(e of M)this[e]=N[e];for(e of j)this[e]=!0;for(e of F)this[e]=new D(e,!0,void 0,this)}setupFromArray(e){let t;for(t of L)this[t]=N[t];for(t of M)this[t]=N[t];for(t of j)this[t]=N[t];for(t of F)this[t]=new D(t,!1,void 0,this);this.setupGlobalFilters(e,void 0,P)}setupFromObject(e){let t;for(t of(P.ifd0=P.ifd0||P.image,P.ifd1=P.ifd1||P.thumbnail,Object.assign(this,e),L))this[t]=W(e[t],N[t]);for(t of M)this[t]=W(e[t],N[t]);for(t of j)this[t]=W(e[t],N[t]);for(t of z)this[t]=new D(t,N[t],e[t],this);for(t of P)this[t]=new D(t,N[t],e[t],this.tiff);this.setupGlobalFilters(e.pick,e.skip,P,F),!0===e.tiff?this.batchEnableWithBool(P,!0):!1===e.tiff?this.batchEnableWithUserValue(P,e):Array.isArray(e.tiff)?this.setupGlobalFilters(e.tiff,void 0,P):\"object\"==typeof e.tiff&&this.setupGlobalFilters(e.tiff.pick,e.tiff.skip,P)}batchEnableWithBool(e,t){for(let s of e)this[s].enabled=t}batchEnableWithUserValue(e,t){for(let s of e){let e=t[s];this[s].enabled=!1!==e&&void 0!==e}}setupGlobalFilters(e,t,s,i=s){if(e&&e.length){for(let e of i)this[e].enabled=!1;let t=K(e,s);for(let[e,s]of t)X(this[e].pick,s),this[e].enabled=!0}else if(t&&t.length){let e=K(t,s);for(let[t,s]of e)X(this[t].skip,s)}}filterNestedSegmentTags(){let{ifd0:e,exif:t,xmp:s,iptc:i,icc:n}=this;this.makerNote?t.deps.add(37500):t.skip.add(37500),this.userComment?t.deps.add(37510):t.skip.add(37510),s.enabled||e.skip.add(700),i.enabled||e.skip.add(33723),n.enabled||e.skip.add(34675)}traverseTiffDependencyTree(){let{ifd0:e,exif:t,gps:s,interop:i}=this;i.needed&&(t.deps.add(40965),e.deps.add(40965)),t.needed&&e.deps.add(34665),s.needed&&e.deps.add(34853),this.tiff.enabled=P.some((e=>!0===this[e].enabled))||this.makerNote||this.userComment;for(let e of P)this[e].finalizeFilters()}get onlyTiff(){return!T.map((e=>this[e].enabled)).some((e=>!0===e))&&this.tiff.enabled}checkLoadedPlugins(){for(let e of z)this[e].enabled&&!y.has(e)&&p(\"segment parser\",e)}}function K(e,t){let s,i,n,r,a=[];for(n of t){for(r of(s=B.get(n),i=[],s))(e.includes(r[0])||e.includes(r[1]))&&i.push(r[0]);i.length&&a.push([n,i])}return a}function W(e,t){return void 0!==e?e:void 0!==t?t:void 0}function X(e,t){for(let s of t)e.add(s)}e(R,\"default\",N);class H{constructor(t){e(this,\"parsers\",{}),e(this,\"output\",{}),e(this,\"errors\",[]),e(this,\"pushToErrors\",(e=>this.errors.push(e))),this.options=R.useCached(t)}async read(e){this.file=await function(e,t){return\"string\"==typeof e?k(e,t):s&&!i&&e instanceof HTMLImageElement?k(e.src,t):e instanceof Uint8Array||e instanceof ArrayBuffer||e instanceof DataView?new c(e):s&&e instanceof Blob?O(e,t,\"blob\",A):void l(\"Invalid input argument\")}(e,this.options)}setup(){if(this.fileParser)return;let{file:e}=this,t=e.getUint16(0);for(let[s,i]of m)if(i.canHandle(e,t))return this.fileParser=new i(this.options,this.file,this.parsers),e[s]=!0;this.file.close&&this.file.close(),l(\"Unknown file format\")}async parse(){let{output:e,errors:t}=this;return this.setup(),this.options.silentErrors?(await this.executeParsers().catch(this.pushToErrors),t.push(...this.fileParser.errors)):await this.executeParsers(),this.file.close&&this.file.close(),this.options.silentErrors&&t.length>0&&(e.errors=t),f(s=e)?void 0:s;var s}async executeParsers(){let{output:e}=this;await this.fileParser.parse();let t=Object.values(this.parsers).map((async t=>{let s=await t.parse();t.assignToOutput(e,s)}));this.options.silentErrors&&(t=t.map((e=>e.catch(this.pushToErrors)))),await Promise.all(t)}async extractThumbnail(){this.setup();let{options:e,file:t}=this,s=y.get(\"tiff\",e);var i;if(t.tiff?i={start:0,type:\"tiff\"}:t.jpeg&&(i=await this.fileParser.getOrFindSegment(\"tiff\")),void 0===i)return;let n=await this.fileParser.ensureSegmentChunk(i),r=this.parsers.tiff=new s(n,e,t),a=await r.extractThumbnail();return t.close&&t.close(),a}}async function Y(e,t){let s=new H(t);return await s.read(e),s.parse()}var G=Object.freeze({__proto__:null,parse:Y,Exifr:H,fileParsers:m,segmentParsers:y,fileReaders:b,tagKeys:B,tagValues:V,tagRevivers:I,createDictionary:x,extendDictionary:C,fetchUrlAsArrayBuffer:S,readBlobAsArrayBuffer:A,chunkedProps:L,otherSegments:T,segments:z,tiffBlocks:P,segmentsAndBlocks:F,tiffExtractables:j,inheritables:E,allFormatters:M,Options:R});class J{static findPosition(e,t){let s=e.getUint16(t+2)+2,i=\"function\"==typeof this.headerLength?this.headerLength(e,t,s):this.headerLength,n=t+i,r=s-i;return{offset:t,length:s,headerLength:i,start:n,size:r,end:n+r}}static parse(e,t={}){return new this(e,new R({[this.type]:t}),e).parse()}normalizeInput(e){return e instanceof c?e:new c(e)}constructor(t,s={},i){e(this,\"errors\",[]),e(this,\"raw\",new Map),e(this,\"handleError\",(e=>{if(!this.options.silentErrors)throw e;this.errors.push(e.message)})),this.chunk=this.normalizeInput(t),this.file=i,this.type=this.constructor.type,this.globalOptions=this.options=s,this.localOptions=s[this.type],this.canTranslate=this.localOptions&&this.localOptions.translate}translate(){this.canTranslate&&(this.translated=this.translateBlock(this.raw,this.type))}get output(){return this.translated?this.translated:this.raw?Object.fromEntries(this.raw):void 0}translateBlock(e,t){let s=I.get(t),i=V.get(t),n=B.get(t),r=this.options[t],a=r.reviveValues&&!!s,h=r.translateValues&&!!i,f=r.translateKeys&&!!n,l={};for(let[t,r]of e)a&&s.has(t)?r=s.get(t)(r):h&&i.has(t)&&(r=this.translateValue(r,i.get(t))),f&&n.has(t)&&(t=n.get(t)||t),l[t]=r;return l}translateValue(e,t){return t[e]||t.DEFAULT||e}assignToOutput(e,t){this.assignObjectToOutput(e,this.constructor.type,t)}assignObjectToOutput(e,t,s){if(this.globalOptions.mergeOutput)return Object.assign(e,s);e[t]?Object.assign(e[t],s):e[t]=s}}e(J,\"headerLength\",4),e(J,\"type\",void 0),e(J,\"multiSegment\",!1),e(J,\"canHandle\",(()=>!1));function q(e){return 192===e||194===e||196===e||219===e||221===e||218===e||254===e}function Q(e){return e>=224&&e<=239}function Z(e,t,s){for(let[i,n]of y)if(n.canHandle(e,t,s))return i}class ee extends class{constructor(t,s,i){e(this,\"errors\",[]),e(this,\"ensureSegmentChunk\",(async e=>{let t=e.start,s=e.size||65536;if(this.file.chunked)if(this.file.available(t,s))e.chunk=this.file.subarray(t,s);else try{e.chunk=await this.file.readChunk(t,s)}catch(t){l(`Couldn't read segment: ${JSON.stringify(e)}. ${t.message}`)}else this.file.byteLength>t+s?e.chunk=this.file.subarray(t,s):void 0===e.size?e.chunk=this.file.subarray(t):l(\"Segment unreachable: \"+JSON.stringify(e));return e.chunk})),this.extendOptions&&this.extendOptions(t),this.options=t,this.file=s,this.parsers=i}injectSegment(e,t){this.options[e].enabled&&this.createParser(e,t)}createParser(e,t){let s=new(y.get(e))(t,this.options,this.file);return this.parsers[e]=s}createParsers(e){for(let t of e){let{type:e,chunk:s}=t,i=this.options[e];if(i&&i.enabled){let t=this.parsers[e];t&&t.append||t||this.createParser(e,s)}}}async readSegments(e){let t=e.map(this.ensureSegmentChunk);await Promise.all(t)}}{constructor(...t){super(...t),e(this,\"appSegments\",[]),e(this,\"jpegSegments\",[]),e(this,\"unknownSegments\",[])}static canHandle(e,t){return 65496===t}async parse(){await this.findAppSegments(),await this.readSegments(this.appSegments),this.mergeMultiSegments(),this.createParsers(this.mergedAppSegments||this.appSegments)}setupSegmentFinderArgs(e){!0===e?(this.findAll=!0,this.wanted=new Set(y.keyList())):(e=void 0===e?y.keyList().filter((e=>this.options[e].enabled)):e.filter((e=>this.options[e].enabled&&y.has(e))),this.findAll=!1,this.remaining=new Set(e),this.wanted=new Set(e)),this.unfinishedMultiSegment=!1}async findAppSegments(e=0,t){this.setupSegmentFinderArgs(t);let{file:s,findAll:i,wanted:n,remaining:r}=this;if(!i&&this.file.chunked&&(i=Array.from(n).some((e=>{let t=y.get(e),s=this.options[e];return t.multiSegment&&s.multiSegment})),i&&await this.file.readWhole()),e=this.findAppSegmentsInRange(e,s.byteLength),!this.options.onlyTiff&&s.chunked){let t=!1;for(;r.size>0&&!t&&(s.canReadNextChunk||this.unfinishedMultiSegment);){let{nextChunkOffset:i}=s,n=this.appSegments.some((e=>!this.file.available(e.offset||e.start,e.length||e.size)));if(t=e>i&&!n?!await s.readNextChunk(e):!await s.readNextChunk(i),void 0===(e=this.findAppSegmentsInRange(e,s.byteLength)))return}}}findAppSegmentsInRange(e,t){t-=2;let s,i,n,r,a,h,{file:f,findAll:l,wanted:o,remaining:u,options:d}=this;for(;e<t;e++)if(255===f.getUint8(e))if(s=f.getUint8(e+1),Q(s)){if(i=f.getUint16(e+2),n=Z(f,e,i),n&&o.has(n)&&(r=y.get(n),a=r.findPosition(f,e),h=d[n],a.type=n,this.appSegments.push(a),!l&&(r.multiSegment&&h.multiSegment?(this.unfinishedMultiSegment=a.chunkNumber<a.chunkCount,this.unfinishedMultiSegment||u.delete(n)):u.delete(n),0===u.size)))break;d.recordUnknownSegments&&(a=J.findPosition(f,e),a.marker=s,this.unknownSegments.push(a)),e+=i+1}else if(q(s)){if(i=f.getUint16(e+2),218===s&&!1!==d.stopAfterSos)return;d.recordJpegSegments&&this.jpegSegments.push({offset:e,length:i,marker:s}),e+=i+1}return e}mergeMultiSegments(){if(!this.appSegments.some((e=>e.multiSegment)))return;let e=function(e,t){let s,i,n,r=new Map;for(let a=0;a<e.length;a++)s=e[a],i=s[t],r.has(i)?n=r.get(i):r.set(i,n=[]),n.push(s);return Array.from(r)}(this.appSegments,\"type\");this.mergedAppSegments=e.map((([e,t])=>{let s=y.get(e,this.options);if(s.handleMultiSegments){return{type:e,chunk:s.handleMultiSegments(t)}}return t[0]}))}getSegment(e){return this.appSegments.find((t=>t.type===e))}async getOrFindSegment(e){let t=this.getSegment(e);return void 0===t&&(await this.findAppSegments(0,[e]),t=this.getSegment(e)),t}}e(ee,\"type\",\"jpeg\"),m.set(\"jpeg\",ee);const te=[void 0,1,1,2,4,8,1,1,2,4,8,4,8,4];class se extends J{parseHeader(){var e=this.chunk.getUint16();18761===e?this.le=!0:19789===e&&(this.le=!1),this.chunk.le=this.le,this.headerParsed=!0}parseTags(e,t,s=new Map){let{pick:i,skip:n}=this.options[t];i=new Set(i);let r=i.size>0,a=0===n.size,h=this.chunk.getUint16(e);e+=2;for(let f=0;f<h;f++){let h=this.chunk.getUint16(e);if(r){if(i.has(h)&&(s.set(h,this.parseTag(e,h,t)),i.delete(h),0===i.size))break}else!a&&n.has(h)||s.set(h,this.parseTag(e,h,t));e+=12}return s}parseTag(e,t,s){let{chunk:i}=this,n=i.getUint16(e+2),r=i.getUint32(e+4),a=te[n];if(a*r<=4?e+=8:e=i.getUint32(e+8),(n<1||n>13)&&l(`Invalid TIFF value type. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e}`),e>i.byteLength&&l(`Invalid TIFF value offset. block: ${s.toUpperCase()}, tag: ${t.toString(16)}, type: ${n}, offset ${e} is outside of chunk size ${i.byteLength}`),1===n)return i.getUint8Array(e,r);if(2===n)return\"\"===(h=function(e){for(;e.endsWith(\"\\0\");)e=e.slice(0,-1);return e}(h=i.getString(e,r)).trim())?void 0:h;var h;if(7===n)return i.getUint8Array(e,r);if(1===r)return this.parseTagValue(n,e);{let t=new(function(e){switch(e){case 1:return Uint8Array;case 3:return Uint16Array;case 4:return Uint32Array;case 5:return Array;case 6:return Int8Array;case 8:return Int16Array;case 9:return Int32Array;case 10:return Array;case 11:return Float32Array;case 12:return Float64Array;default:return Array}}(n))(r),s=a;for(let i=0;i<r;i++)t[i]=this.parseTagValue(n,e),e+=s;return t}}parseTagValue(e,t){let{chunk:s}=this;switch(e){case 1:return s.getUint8(t);case 3:return s.getUint16(t);case 4:return s.getUint32(t);case 5:return s.getUint32(t)/s.getUint32(t+4);case 6:return s.getInt8(t);case 8:return s.getInt16(t);case 9:return s.getInt32(t);case 10:return s.getInt32(t)/s.getInt32(t+4);case 11:return s.getFloat(t);case 12:return s.getDouble(t);case 13:return s.getUint32(t);default:l(`Invalid tiff type ${e}`)}}}class ie extends se{static canHandle(e,t){return 225===e.getUint8(t+1)&&1165519206===e.getUint32(t+4)&&0===e.getUint16(t+8)}async parse(){this.parseHeader();let{options:e}=this;return e.ifd0.enabled&&await this.parseIfd0Block(),e.exif.enabled&&await this.safeParse(\"parseExifBlock\"),e.gps.enabled&&await this.safeParse(\"parseGpsBlock\"),e.interop.enabled&&await this.safeParse(\"parseInteropBlock\"),e.ifd1.enabled&&await this.safeParse(\"parseThumbnailBlock\"),this.createOutput()}safeParse(e){let t=this[e]();return void 0!==t.catch&&(t=t.catch(this.handleError)),t}findIfd0Offset(){void 0===this.ifd0Offset&&(this.ifd0Offset=this.chunk.getUint32(4))}findIfd1Offset(){if(void 0===this.ifd1Offset){this.findIfd0Offset();let e=this.chunk.getUint16(this.ifd0Offset),t=this.ifd0Offset+2+12*e;this.ifd1Offset=this.chunk.getUint32(t)}}parseBlock(e,t){let s=new Map;return this[t]=s,this.parseTags(e,t,s),s}async parseIfd0Block(){if(this.ifd0)return;let{file:e}=this;this.findIfd0Offset(),this.ifd0Offset<8&&l(\"Malformed EXIF data\"),!e.chunked&&this.ifd0Offset>e.byteLength&&l(`IFD0 offset points to outside of file.\\nthis.ifd0Offset: ${this.ifd0Offset}, file.byteLength: ${e.byteLength}`),e.tiff&&await e.ensureChunk(this.ifd0Offset,o(this.options));let t=this.parseBlock(this.ifd0Offset,\"ifd0\");return 0!==t.size?(this.exifOffset=t.get(34665),this.interopOffset=t.get(40965),this.gpsOffset=t.get(34853),this.xmp=t.get(700),this.iptc=t.get(33723),this.icc=t.get(34675),this.options.sanitize&&(t.delete(34665),t.delete(40965),t.delete(34853),t.delete(700),t.delete(33723),t.delete(34675)),t):void 0}async parseExifBlock(){if(this.exif)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.exifOffset)return;this.file.tiff&&await this.file.ensureChunk(this.exifOffset,o(this.options));let e=this.parseBlock(this.exifOffset,\"exif\");return this.interopOffset||(this.interopOffset=e.get(40965)),this.makerNote=e.get(37500),this.userComment=e.get(37510),this.options.sanitize&&(e.delete(40965),e.delete(37500),e.delete(37510)),this.unpack(e,41728),this.unpack(e,41729),e}unpack(e,t){let s=e.get(t);s&&1===s.length&&e.set(t,s[0])}async parseGpsBlock(){if(this.gps)return;if(this.ifd0||await this.parseIfd0Block(),void 0===this.gpsOffset)return;let e=this.parseBlock(this.gpsOffset,\"gps\");return e&&e.has(2)&&e.has(4)&&(e.set(\"latitude\",ne(...e.get(2),e.get(1))),e.set(\"longitude\",ne(...e.get(4),e.get(3)))),e}async parseInteropBlock(){if(!this.interop&&(this.ifd0||await this.parseIfd0Block(),void 0!==this.interopOffset||this.exif||await this.parseExifBlock(),void 0!==this.interopOffset))return this.parseBlock(this.interopOffset,\"interop\")}async parseThumbnailBlock(e=!1){if(!this.ifd1&&!this.ifd1Parsed&&(!this.options.mergeOutput||e))return this.findIfd1Offset(),this.ifd1Offset>0&&(this.parseBlock(this.ifd1Offset,\"ifd1\"),this.ifd1Parsed=!0),this.ifd1}async extractThumbnail(){if(this.headerParsed||this.parseHeader(),this.ifd1Parsed||await this.parseThumbnailBlock(!0),void 0===this.ifd1)return;let e=this.ifd1.get(513),t=this.ifd1.get(514);return this.chunk.getUint8Array(e,t)}get image(){return this.ifd0}get thumbnail(){return this.ifd1}createOutput(){let e,t,s,i={};for(t of P)if(e=this[t],!f(e))if(s=this.canTranslate?this.translateBlock(e,t):Object.fromEntries(e),this.options.mergeOutput){if(\"ifd1\"===t)continue;Object.assign(i,s)}else i[t]=s;return this.makerNote&&(i.makerNote=this.makerNote),this.userComment&&(i.userComment=this.userComment),i}assignToOutput(e,t){if(this.globalOptions.mergeOutput)Object.assign(e,t);else for(let[s,i]of Object.entries(t))this.assignObjectToOutput(e,s,i)}}function ne(e,t,s,i){var n=e+t/60+s/3600;return\"S\"!==i&&\"W\"!==i||(n*=-1),n}e(ie,\"type\",\"tiff\"),e(ie,\"headerLength\",10),y.set(\"tiff\",ie);var re=Object.freeze({__proto__:null,default:G,Exifr:H,fileParsers:m,segmentParsers:y,fileReaders:b,tagKeys:B,tagValues:V,tagRevivers:I,createDictionary:x,extendDictionary:C,fetchUrlAsArrayBuffer:S,readBlobAsArrayBuffer:A,chunkedProps:L,otherSegments:T,segments:z,tiffBlocks:P,segmentsAndBlocks:F,tiffExtractables:j,inheritables:E,allFormatters:M,Options:R,parse:Y});const ae={ifd0:!1,ifd1:!1,exif:!1,gps:!1,interop:!1,sanitize:!1,reviveValues:!0,translateKeys:!1,translateValues:!1,mergeOutput:!1},he=Object.assign({},ae,{firstChunkSize:4e4,gps:[1,2,3,4]});async function fe(e){let t=new H(he);await t.read(e);let s=await t.parse();if(s&&s.gps){let{latitude:e,longitude:t}=s.gps;return{latitude:e,longitude:t}}}const le=Object.assign({},ae,{tiff:!1,ifd1:!0,mergeOutput:!1});async function oe(e){let t=new H(le);await t.read(e);let s=await t.extractThumbnail();return s&&a?r.from(s):s}async function ue(e){let t=await this.thumbnail(e);if(void 0!==t){let e=new Blob([t]);return URL.createObjectURL(e)}}const de=Object.assign({},ae,{firstChunkSize:4e4,ifd0:[274]});async function ce(e){let t=new H(de);await t.read(e);let s=await t.parse();if(s&&s.ifd0)return s.ifd0[274]}const pe=Object.freeze({1:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:0,rad:0},2:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:0,rad:0},3:{dimensionSwapped:!1,scaleX:1,scaleY:1,deg:180,rad:180*Math.PI/180},4:{dimensionSwapped:!1,scaleX:-1,scaleY:1,deg:180,rad:180*Math.PI/180},5:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:90,rad:90*Math.PI/180},6:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:90,rad:90*Math.PI/180},7:{dimensionSwapped:!0,scaleX:1,scaleY:-1,deg:270,rad:270*Math.PI/180},8:{dimensionSwapped:!0,scaleX:1,scaleY:1,deg:270,rad:270*Math.PI/180}});let ge=!0,me=!0;if(\"object\"==typeof navigator){let e=navigator.userAgent;if(e.includes(\"iPad\")||e.includes(\"iPhone\")){let t=e.match(/OS (\\d+)_(\\d+)/);if(t){let[,e,s]=t,i=Number(e)+.1*Number(s);ge=i<13.4,me=!1}}else if(e.includes(\"OS X 10\")){let[,t]=e.match(/OS X 10[_.](\\d+)/);ge=me=Number(t)<15}if(e.includes(\"Chrome/\")){let[,t]=e.match(/Chrome\\/(\\d+)/);ge=me=Number(t)<81}else if(e.includes(\"Firefox/\")){let[,t]=e.match(/Firefox\\/(\\d+)/);ge=me=Number(t)<77}}async function ye(e){let t=await ce(e);return Object.assign({canvas:ge,css:me},pe[t])}class be extends c{constructor(...t){super(...t),e(this,\"ranges\",new we),0!==this.byteLength&&this.ranges.add(0,this.byteLength)}_tryExtend(e,t,s){if(0===e&&0===this.byteLength&&s){let e=new DataView(s.buffer||s,s.byteOffset,s.byteLength);this._swapDataView(e)}else{let s=e+t;if(s>this.byteLength){let{dataView:e}=this._extend(s);this._swapDataView(e)}}}_extend(e){let t;t=a?r.allocUnsafe(e):new Uint8Array(e);let s=new DataView(t.buffer,t.byteOffset,t.byteLength);return t.set(new Uint8Array(this.buffer,this.byteOffset,this.byteLength),0),{uintView:t,dataView:s}}subarray(e,t,s=!1){return t=t||this._lengthToEnd(e),s&&this._tryExtend(e,t),this.ranges.add(e,t),super.subarray(e,t)}set(e,t,s=!1){s&&this._tryExtend(t,e.byteLength,e);let i=super.set(e,t);return this.ranges.add(t,i.byteLength),i}async ensureChunk(e,t){this.chunked&&(this.ranges.available(e,t)||await this.readChunk(e,t))}available(e,t){return this.ranges.available(e,t)}}class we{constructor(){e(this,\"list\",[])}get length(){return this.list.length}add(e,t,s=0){let i=e+t,n=this.list.filter((t=>ke(e,t.offset,i)||ke(e,t.end,i)));if(n.length>0){e=Math.min(e,...n.map((e=>e.offset))),i=Math.max(i,...n.map((e=>e.end))),t=i-e;let s=n.shift();s.offset=e,s.length=t,s.end=i,this.list=this.list.filter((e=>!n.includes(e)))}else this.list.push({offset:e,length:t,end:i})}available(e,t){let s=e+t;return this.list.some((t=>t.offset<=e&&s<=t.end))}}function ke(e,t,s){return e<=t&&t<=s}class Oe extends be{constructor(t,s){super(0),e(this,\"chunksRead\",0),this.input=t,this.options=s}async readWhole(){this.chunked=!1,await this.readChunk(this.nextChunkOffset)}async readChunked(){this.chunked=!0,await this.readChunk(0,this.options.firstChunkSize)}async readNextChunk(e=this.nextChunkOffset){if(this.fullyRead)return this.chunksRead++,!1;let t=this.options.chunkSize,s=await this.readChunk(e,t);return!!s&&s.byteLength===t}async readChunk(e,t){if(this.chunksRead++,0!==(t=this.safeWrapAddress(e,t)))return this._readChunk(e,t)}safeWrapAddress(e,t){return void 0!==this.size&&e+t>this.size?Math.max(0,this.size-e):t}get nextChunkOffset(){if(0!==this.ranges.list.length)return this.ranges.list[0].length}get canReadNextChunk(){return this.chunksRead<this.options.chunkLimit}get fullyRead(){return void 0!==this.size&&this.nextChunkOffset===this.size}read(){return this.options.chunked?this.readChunked():this.readWhole()}close(){}}b.set(\"blob\",class extends Oe{async readWhole(){this.chunked=!1;let e=await A(this.input);this._swapArrayBuffer(e)}readChunked(){return this.chunked=!0,this.size=this.input.size,super.readChunked()}async _readChunk(e,t){let s=t?e+t:void 0,i=this.input.slice(e,s),n=await A(i);return this.set(n,e,!0)}});export default re;export{H as Exifr,R as Options,M as allFormatters,L as chunkedProps,x as createDictionary,C as extendDictionary,S as fetchUrlAsArrayBuffer,m as fileParsers,b as fileReaders,fe as gps,he as gpsOnlyOptions,E as inheritables,ce as orientation,de as orientationOnlyOptions,T as otherSegments,Y as parse,A as readBlobAsArrayBuffer,ge as rotateCanvas,me as rotateCss,ye as rotation,pe as rotations,y as segmentParsers,z as segments,F as segmentsAndBlocks,B as tagKeys,I as tagRevivers,V as tagValues,oe as thumbnail,le as thumbnailOnlyOptions,ue as thumbnailUrl,P as tiffBlocks,j as tiffExtractables};\n", "export default {\n strings: {\n generatingThumbnails: 'Generating thumbnails...'\n }\n};", "import { UIPlugin } from '@uppy/core';\nimport dataURItoBlob from '@uppy/utils/lib/dataURItoBlob';\nimport isObjectURL from '@uppy/utils/lib/isObjectURL';\nimport isPreviewSupported from '@uppy/utils/lib/isPreviewSupported';\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport { rotation } from 'exifr/dist/mini.esm.mjs';\nimport locale from \"./locale.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.0\"\n};\n/**\n * Save a <canvas> element's content to a Blob object.\n *\n */\nfunction canvasToBlob(canvas, type, quality) {\n try {\n canvas.getContext('2d').getImageData(0, 0, 1, 1);\n } catch (err) {\n if (err.code === 18) {\n return Promise.reject(new Error('cannot read image, probably an svg with external resources'));\n }\n }\n if (canvas.toBlob) {\n return new Promise(resolve => {\n canvas.toBlob(resolve, type, quality);\n }).then(blob => {\n if (blob === null) {\n throw new Error('cannot read image, probably an svg with external resources');\n }\n return blob;\n });\n }\n return Promise.resolve().then(() => {\n return dataURItoBlob(canvas.toDataURL(type, quality), {});\n }).then(blob => {\n if (blob === null) {\n throw new Error('could not extract blob, probably an old browser');\n }\n return blob;\n });\n}\nfunction rotateImage(image, translate) {\n let w = image.width;\n let h = image.height;\n if (translate.deg === 90 || translate.deg === 270) {\n w = image.height;\n h = image.width;\n }\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n const context = canvas.getContext('2d');\n context.translate(w / 2, h / 2);\n if (translate.canvas) {\n context.rotate(translate.rad);\n context.scale(translate.scaleX, translate.scaleY);\n }\n context.drawImage(image, -image.width / 2, -image.height / 2, image.width, image.height);\n return canvas;\n}\n\n/**\n * Make sure the image doesn\u2019t exceed browser/device canvas limits.\n * For ios with 256 RAM and ie\n */\nfunction protect(image) {\n // https://stackoverflow.com/questions/6081483/maximum-size-of-a-canvas-element\n\n const ratio = image.width / image.height;\n const maxSquare = 5000000; // ios max canvas square\n const maxSize = 4096; // ie max canvas dimensions\n\n let maxW = Math.floor(Math.sqrt(maxSquare * ratio));\n let maxH = Math.floor(maxSquare / Math.sqrt(maxSquare * ratio));\n if (maxW > maxSize) {\n maxW = maxSize;\n maxH = Math.round(maxW / ratio);\n }\n if (maxH > maxSize) {\n maxH = maxSize;\n maxW = Math.round(ratio * maxH);\n }\n if (image.width > maxW) {\n const canvas = document.createElement('canvas');\n canvas.width = maxW;\n canvas.height = maxH;\n canvas.getContext('2d').drawImage(image, 0, 0, maxW, maxH);\n return canvas;\n }\n return image;\n}\nconst defaultOptions = {\n thumbnailWidth: null,\n thumbnailHeight: null,\n thumbnailType: 'image/jpeg',\n waitForThumbnailsBeforeUpload: false,\n lazy: false\n};\n/**\n * The Thumbnail Generator plugin\n */\n\nexport default class ThumbnailGenerator extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts\n });\n this.onFileAdded = file => {\n if (!file.preview && file.data && isPreviewSupported(file.type) && !file.isRemote) {\n this.addToQueue(file.id);\n }\n };\n /**\n * Cancel a lazy request for a thumbnail if the thumbnail has not yet been generated.\n */\n this.onCancelRequest = file => {\n const index = this.queue.indexOf(file.id);\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n };\n /**\n * Clean up the thumbnail for a file. Cancel lazy requests and free the thumbnail URL.\n */\n this.onFileRemoved = file => {\n const index = this.queue.indexOf(file.id);\n if (index !== -1) {\n this.queue.splice(index, 1);\n }\n\n // Clean up object URLs.\n if (file.preview && isObjectURL(file.preview)) {\n URL.revokeObjectURL(file.preview);\n }\n };\n this.onRestored = () => {\n const restoredFiles = this.uppy.getFiles().filter(file => file.isRestored);\n restoredFiles.forEach(file => {\n // Only add blob URLs; they are likely invalid after being restored.\n if (!file.preview || isObjectURL(file.preview)) {\n this.addToQueue(file.id);\n }\n });\n };\n this.onAllFilesRemoved = () => {\n this.queue = [];\n };\n this.waitUntilAllProcessed = fileIDs => {\n fileIDs.forEach(fileID => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-progress', file, {\n mode: 'indeterminate',\n message: this.i18n('generatingThumbnails')\n });\n });\n const emitPreprocessCompleteForAll = () => {\n fileIDs.forEach(fileID => {\n const file = this.uppy.getFile(fileID);\n this.uppy.emit('preprocess-complete', file);\n });\n };\n return new Promise(resolve => {\n if (this.queueProcessing) {\n this.uppy.once('thumbnail:all-generated', () => {\n emitPreprocessCompleteForAll();\n resolve();\n });\n } else {\n emitPreprocessCompleteForAll();\n resolve();\n }\n });\n };\n this.type = 'modifier';\n this.id = this.opts.id || 'ThumbnailGenerator';\n this.title = 'Thumbnail Generator';\n this.queue = [];\n this.queueProcessing = false;\n this.defaultThumbnailDimension = 200;\n this.thumbnailType = this.opts.thumbnailType;\n this.defaultLocale = locale;\n this.i18nInit();\n if (this.opts.lazy && this.opts.waitForThumbnailsBeforeUpload) {\n throw new Error('ThumbnailGenerator: The `lazy` and `waitForThumbnailsBeforeUpload` options are mutually exclusive. Please ensure at most one of them is set to `true`.');\n }\n }\n createThumbnail(file, targetWidth, targetHeight) {\n const originalUrl = URL.createObjectURL(file.data);\n const onload = new Promise((resolve, reject) => {\n const image = new Image();\n image.src = originalUrl;\n image.addEventListener('load', () => {\n URL.revokeObjectURL(originalUrl);\n resolve(image);\n });\n image.addEventListener('error', event => {\n URL.revokeObjectURL(originalUrl);\n reject(event.error || new Error('Could not create thumbnail'));\n });\n });\n const orientationPromise = rotation(file.data).catch(() => 1);\n return Promise.all([onload, orientationPromise]).then(_ref => {\n let [image, orientation] = _ref;\n const dimensions = this.getProportionalDimensions(image, targetWidth, targetHeight, orientation.deg);\n const rotatedImage = rotateImage(image, orientation);\n const resizedImage = this.resizeImage(rotatedImage, dimensions.width, dimensions.height);\n return canvasToBlob(resizedImage, this.thumbnailType, 80);\n }).then(blob => {\n return URL.createObjectURL(blob);\n });\n }\n\n /**\n * Get the new calculated dimensions for the given image and a target width\n * or height. If both width and height are given, only width is taken into\n * account. If neither width nor height are given, the default dimension\n * is used.\n */\n getProportionalDimensions(img, width, height, deg) {\n // eslint-disable-line no-shadow\n let aspect = img.width / img.height;\n if (deg === 90 || deg === 270) {\n aspect = img.height / img.width;\n }\n if (width != null) {\n return {\n width,\n height: Math.round(width / aspect)\n };\n }\n if (height != null) {\n return {\n width: Math.round(height * aspect),\n height\n };\n }\n return {\n width: this.defaultThumbnailDimension,\n height: Math.round(this.defaultThumbnailDimension / aspect)\n };\n }\n\n /**\n * Resize an image to the target `width` and `height`.\n *\n * Returns a Canvas with the resized image on it.\n */\n // eslint-disable-next-line class-methods-use-this\n resizeImage(image, targetWidth, targetHeight) {\n // Resizing in steps refactored to use a solution from\n // https://blog.uploadcare.com/image-resize-in-browsers-is-broken-e38eed08df01\n\n let img = protect(image);\n let steps = Math.ceil(Math.log2(img.width / targetWidth));\n if (steps < 1) {\n steps = 1;\n }\n let sW = targetWidth * 2 ** (steps - 1);\n let sH = targetHeight * 2 ** (steps - 1);\n const x = 2;\n while (steps--) {\n const canvas = document.createElement('canvas');\n canvas.width = sW;\n canvas.height = sH;\n canvas.getContext('2d').drawImage(img, 0, 0, sW, sH);\n img = canvas;\n sW = Math.round(sW / x);\n sH = Math.round(sH / x);\n }\n return img;\n }\n\n /**\n * Set the preview URL for a file.\n */\n setPreviewURL(fileID, preview) {\n this.uppy.setFileState(fileID, {\n preview\n });\n }\n addToQueue(fileID) {\n this.queue.push(fileID);\n if (this.queueProcessing === false) {\n this.processQueue();\n }\n }\n processQueue() {\n this.queueProcessing = true;\n if (this.queue.length > 0) {\n const current = this.uppy.getFile(this.queue.shift());\n if (!current) {\n this.uppy.log('[ThumbnailGenerator] file was removed before a thumbnail could be generated, but not removed from the queue. This is probably a bug', 'error');\n return Promise.resolve();\n }\n return this.requestThumbnail(current).catch(() => {}) // eslint-disable-line node/handle-callback-err\n .then(() => this.processQueue());\n }\n this.queueProcessing = false;\n this.uppy.log('[ThumbnailGenerator] Emptied thumbnail queue');\n this.uppy.emit('thumbnail:all-generated');\n return Promise.resolve();\n }\n requestThumbnail(file) {\n if (isPreviewSupported(file.type) && !file.isRemote) {\n return this.createThumbnail(file, this.opts.thumbnailWidth, this.opts.thumbnailHeight).then(preview => {\n this.setPreviewURL(file.id, preview);\n this.uppy.log(`[ThumbnailGenerator] Generated thumbnail for ${file.id}`);\n this.uppy.emit('thumbnail:generated', this.uppy.getFile(file.id), preview);\n }).catch(err => {\n this.uppy.log(`[ThumbnailGenerator] Failed thumbnail for ${file.id}:`, 'warning');\n this.uppy.log(err, 'warning');\n this.uppy.emit('thumbnail:error', this.uppy.getFile(file.id), err);\n });\n }\n return Promise.resolve();\n }\n install() {\n this.uppy.on('file-removed', this.onFileRemoved);\n this.uppy.on('cancel-all', this.onAllFilesRemoved);\n if (this.opts.lazy) {\n this.uppy.on('thumbnail:request', this.onFileAdded);\n this.uppy.on('thumbnail:cancel', this.onCancelRequest);\n } else {\n this.uppy.on('thumbnail:request', this.onFileAdded);\n this.uppy.on('file-added', this.onFileAdded);\n this.uppy.on('restored', this.onRestored);\n }\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.addPreProcessor(this.waitUntilAllProcessed);\n }\n }\n uninstall() {\n this.uppy.off('file-removed', this.onFileRemoved);\n this.uppy.off('cancel-all', this.onAllFilesRemoved);\n if (this.opts.lazy) {\n this.uppy.off('thumbnail:request', this.onFileAdded);\n this.uppy.off('thumbnail:cancel', this.onCancelRequest);\n } else {\n this.uppy.off('thumbnail:request', this.onFileAdded);\n this.uppy.off('file-added', this.onFileAdded);\n this.uppy.off('restored', this.onRestored);\n }\n if (this.opts.waitForThumbnailsBeforeUpload) {\n this.uppy.removePreProcessor(this.waitUntilAllProcessed);\n }\n }\n}\nThumbnailGenerator.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 * Converts list into array\n */\nexport default Array.from;", "/**\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 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 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<File>\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}", "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 getFileNameAndExtension from \"./getFileNameAndExtension.js\";\nexport default function remoteFileObjToLocal(file) {\n return {\n ...file,\n type: file.mimeType,\n extension: file.name ? getFileNameAndExtension(file.name).extension : null\n };\n}", "import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {import('./internal').Component} */\nlet previousComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array<import('./internal').Component>} */\nlet afterPaintEffects = [];\n\nlet EMPTY = [];\n\nlet oldBeforeDiff = options._diff;\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._diff = vnode => {\n\tcurrentComponent = null;\n\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n};\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tconst hooks = currentComponent.__hooks;\n\tif (hooks) {\n\t\tif (previousComponent === currentComponent) {\n\t\t\thooks._pendingEffects = [];\n\t\t\tcurrentComponent._renderCallbacks = [];\n\t\t\thooks._list.forEach(hookItem => {\n\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t}\n\t\t\t\thookItem._pendingValue = EMPTY;\n\t\t\t\thookItem._nextValue = hookItem._pendingArgs = undefined;\n\t\t\t});\n\t\t} else {\n\t\t\thooks._pendingEffects.forEach(invokeCleanup);\n\t\t\thooks._pendingEffects.forEach(invokeEffect);\n\t\t\thooks._pendingEffects = [];\n\t\t}\n\t}\n\tpreviousComponent = currentComponent;\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tif (c.__hooks._pendingEffects.length) afterPaint(afterPaintEffects.push(c));\n\t\tc.__hooks._list.forEach(hookItem => {\n\t\t\tif (hookItem._pendingArgs) {\n\t\t\t\thookItem._args = hookItem._pendingArgs;\n\t\t\t}\n\t\t\tif (hookItem._pendingValue !== EMPTY) {\n\t\t\t\thookItem._value = hookItem._pendingValue;\n\t\t\t}\n\t\t\thookItem._pendingArgs = undefined;\n\t\t\thookItem._pendingValue = EMPTY;\n\t\t});\n\t}\n\tpreviousComponent = currentComponent = null;\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (c && c.__hooks) {\n\t\tlet hasErrored;\n\t\tc.__hooks._list.forEach(s => {\n\t\t\ttry {\n\t\t\t\tinvokeCleanup(s);\n\t\t\t} catch (e) {\n\t\t\t\thasErrored = e;\n\t\t\t}\n\t\t});\n\t\tc.__hooks = undefined;\n\t\tif (hasErrored) options._catchError(hasErrored, c._vnode);\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {any}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({ _pendingValue: EMPTY });\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater<any>} [initialState]\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer<any, any>} reducer\n * @param {import('./index').StateUpdater<any>} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\thookState._reducer = reducer;\n\tif (!hookState._component) {\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst currentValue = hookState._nextValue\n\t\t\t\t\t? hookState._nextValue[0]\n\t\t\t\t\t: hookState._value[0];\n\t\t\t\tconst nextValue = hookState._reducer(currentValue, action);\n\n\t\t\t\tif (currentValue !== nextValue) {\n\t\t\t\t\thookState._nextValue = [nextValue, hookState._value[1]];\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\n\t\thookState._component = currentComponent;\n\n\t\tif (!currentComponent._hasScuFromHooks) {\n\t\t\tcurrentComponent._hasScuFromHooks = true;\n\t\t\tlet prevScu = currentComponent.shouldComponentUpdate;\n\t\t\tconst prevCWU = currentComponent.componentWillUpdate;\n\n\t\t\t// If we're dealing with a forced update `shouldComponentUpdate` will\n\t\t\t// not be called. But we use that to update the hook values, so we\n\t\t\t// need to call it.\n\t\t\tcurrentComponent.componentWillUpdate = function (p, s, c) {\n\t\t\t\tif (this._force) {\n\t\t\t\t\tlet tmp = prevScu;\n\t\t\t\t\t// Clear to avoid other sCU hooks from being called\n\t\t\t\t\tprevScu = undefined;\n\t\t\t\t\tupdateHookState(p, s, c);\n\t\t\t\t\tprevScu = tmp;\n\t\t\t\t}\n\n\t\t\t\tif (prevCWU) prevCWU.call(this, p, s, c);\n\t\t\t};\n\n\t\t\t// This SCU has the purpose of bailing out after repeated updates\n\t\t\t// to stateful hooks.\n\t\t\t// we store the next value in _nextValue[0] and keep doing that for all\n\t\t\t// state setters, if we have next states and\n\t\t\t// all next states within a component end up being equal to their original state\n\t\t\t// we are safe to bail out for this specific component.\n\t\t\t/**\n\t\t\t *\n\t\t\t * @type {import('./internal').Component[\"shouldComponentUpdate\"]}\n\t\t\t */\n\t\t\t// @ts-ignore - We don't use TS to downtranspile\n\t\t\t// eslint-disable-next-line no-inner-declarations\n\t\t\tfunction updateHookState(p, s, c) {\n\t\t\t\tif (!hookState._component.__hooks) return true;\n\n\t\t\t\tconst stateHooks = hookState._component.__hooks._list.filter(\n\t\t\t\t\tx => x._component\n\t\t\t\t);\n\t\t\t\tconst allHooksEmpty = stateHooks.every(x => !x._nextValue);\n\t\t\t\t// When we have no updated hooks in the component we invoke the previous SCU or\n\t\t\t\t// traverse the VDOM tree further.\n\t\t\t\tif (allHooksEmpty) {\n\t\t\t\t\treturn prevScu ? prevScu.call(this, p, s, c) : true;\n\t\t\t\t}\n\n\t\t\t\t// We check whether we have components with a nextValue set that\n\t\t\t\t// have values that aren't equal to one another this pushes\n\t\t\t\t// us to update further down the tree\n\t\t\t\tlet shouldUpdate = false;\n\t\t\t\tstateHooks.forEach(hookItem => {\n\t\t\t\t\tif (hookItem._nextValue) {\n\t\t\t\t\t\tconst currentValue = hookItem._value[0];\n\t\t\t\t\t\thookItem._value = hookItem._nextValue;\n\t\t\t\t\t\thookItem._nextValue = undefined;\n\t\t\t\t\t\tif (currentValue !== hookItem._value[0]) shouldUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn shouldUpdate || hookState._component.props !== p\n\t\t\t\t\t? prevScu\n\t\t\t\t\t\t? prevScu.call(this, p, s, c)\n\t\t\t\t\t\t: true\n\t\t\t\t\t: false;\n\t\t\t}\n\n\t\t\tcurrentComponent.shouldComponentUpdate = updateHookState;\n\t\t}\n\t}\n\n\treturn hookState._nextValue || hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._pendingArgs = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') {\n\t\t\t\tref(createHandle());\n\t\t\t\treturn () => ref(null);\n\t\t\t} else if (ref) {\n\t\t\t\tref.current = createHandle();\n\t\t\t\treturn () => (ref.current = null);\n\t\t\t}\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._pendingValue = factory();\n\t\tstate._pendingArgs = args;\n\t\tstate._factory = factory;\n\t\treturn state._pendingValue;\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\t/** @type {import('./internal').ContextHookState} */\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {<T>(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\n/**\n * @param {(error: any, errorInfo: import('preact').ErrorInfo) => void} cb\n */\nexport function useErrorBoundary(cb) {\n\t/** @type {import('./internal').ErrorBoundaryHookState} */\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = (err, errorInfo) => {\n\t\t\tif (state._value) state._value(err, errorInfo);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\nexport function useId() {\n\tconst state = getHookState(currentIndex++, 11);\n\tif (!state._value) {\n\t\t// Grab either the root node or the nearest async boundary node.\n\t\t/** @type {import('./internal.d').VNode} */\n\t\tlet root = currentComponent._vnode;\n\t\twhile (root !== null && !root._mask && root._parent !== null) {\n\t\t\troot = root._parent;\n\t\t}\n\n\t\tlet mask = root._mask || (root._mask = [0, 0]);\n\t\tstate._value = 'P' + mask[0] + '-' + mask[1]++;\n\t}\n\n\treturn state._value;\n}\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tlet component;\n\twhile ((component = afterPaintEffects.shift())) {\n\t\tif (!component._parentDom || !component.__hooks) continue;\n\t\ttry {\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t} catch (e) {\n\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t}\n}\n\nlet HAS_RAF = typeof requestAnimationFrame == 'function';\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tif (HAS_RAF) cancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (HAS_RAF) {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\t// A hook cleanup can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\tlet cleanup = hook._cleanup;\n\tif (typeof cleanup == 'function') {\n\t\thook._cleanup = undefined;\n\t\tcleanup();\n\t}\n\n\tcurrentComponent = comp;\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\t// A hook call can introduce a call to render which creates a new root, this will call options.vnode\n\t// and move the currentComponent away.\n\tconst comp = currentComponent;\n\thook._cleanup = hook._value();\n\tcurrentComponent = comp;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn (\n\t\t!oldArgs ||\n\t\toldArgs.length !== newArgs.length ||\n\t\tnewArgs.some((arg, index) => arg !== oldArgs[index])\n\t);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n", "import { h } from 'preact';\nimport { useCallback } from 'preact/hooks';\nfunction GoogleIcon() {\n return h(\"svg\", {\n width: \"26\",\n height: \"26\",\n viewBox: \"0 0 26 26\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"g\", {\n fill: \"none\",\n \"fill-rule\": \"evenodd\"\n }, h(\"circle\", {\n fill: \"#FFF\",\n cx: \"13\",\n cy: \"13\",\n r: \"13\"\n }), h(\"path\", {\n d: \"M21.64 13.205c0-.639-.057-1.252-.164-1.841H13v3.481h4.844a4.14 4.14 0 01-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615z\",\n fill: \"#4285F4\",\n \"fill-rule\": \"nonzero\"\n }), h(\"path\", {\n d: \"M13 22c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H4.957v2.332A8.997 8.997 0 0013 22z\",\n fill: \"#34A853\",\n \"fill-rule\": \"nonzero\"\n }), h(\"path\", {\n d: \"M7.964 14.71A5.41 5.41 0 017.682 13c0-.593.102-1.17.282-1.71V8.958H4.957A8.996 8.996 0 004 13c0 1.452.348 2.827.957 4.042l3.007-2.332z\",\n fill: \"#FBBC05\",\n \"fill-rule\": \"nonzero\"\n }), h(\"path\", {\n d: \"M13 7.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C17.463 4.891 15.426 4 13 4a8.997 8.997 0 00-8.043 4.958l3.007 2.332C8.672 9.163 10.656 7.58 13 7.58z\",\n fill: \"#EA4335\",\n \"fill-rule\": \"nonzero\"\n }), h(\"path\", {\n d: \"M4 4h18v18H4z\"\n })));\n}\nfunction DefaultForm(_ref) {\n let {\n pluginName,\n i18n,\n onAuth\n } = _ref;\n // In order to comply with Google's brand we need to create a different button\n // for the Google Drive plugin\n const isGoogleDrive = pluginName === 'Google Drive';\n const onSubmit = useCallback(e => {\n e.preventDefault();\n onAuth();\n }, [onAuth]);\n return h(\"form\", {\n onSubmit: onSubmit\n }, isGoogleDrive ? h(\"button\", {\n type: \"submit\",\n className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn uppy-Provider-btn-google\",\n \"data-uppy-super-focusable\": true\n }, h(GoogleIcon, null), i18n('signInWithGoogle')) : h(\"button\", {\n type: \"submit\",\n className: \"uppy-u-reset uppy-c-btn uppy-c-btn-primary uppy-Provider-authBtn\",\n \"data-uppy-super-focusable\": true\n }, i18n('authenticateWith', {\n pluginName\n })));\n}\nconst defaultRenderForm = _ref2 => {\n let {\n pluginName,\n i18n,\n onAuth\n } = _ref2;\n return h(DefaultForm, {\n pluginName: pluginName,\n i18n: i18n,\n onAuth: onAuth\n });\n};\nexport default function AuthView(_ref3) {\n let {\n loading,\n pluginName,\n pluginIcon,\n i18n,\n handleAuth,\n renderForm = defaultRenderForm\n } = _ref3;\n return h(\"div\", {\n className: \"uppy-Provider-auth\"\n }, h(\"div\", {\n className: \"uppy-Provider-authIcon\"\n }, pluginIcon()), h(\"div\", {\n className: \"uppy-Provider-authTitle\"\n }, i18n('authenticateWithTitle', {\n pluginName\n })), h(\"div\", {\n className: \"uppy-Provider-authForm\"\n }, renderForm({\n pluginName,\n i18n,\n loading,\n onAuth: handleAuth\n })));\n}", "/* eslint-disable react/destructuring-assignment */\nimport { h } from 'preact';\nimport classNames from 'classnames';\nimport User from \"./User.js\";\nimport Breadcrumbs from \"../Breadcrumbs.js\";\nexport default function Header(props) {\n return h(\"div\", {\n className: \"uppy-ProviderBrowser-header\"\n }, h(\"div\", {\n className: classNames('uppy-ProviderBrowser-headerBar', !props.showBreadcrumbs && 'uppy-ProviderBrowser-headerBar--simple')\n }, props.showBreadcrumbs && h(Breadcrumbs, {\n openFolder: props.openFolder,\n breadcrumbs: props.breadcrumbs,\n breadcrumbsIcon: props.pluginIcon && props.pluginIcon(),\n title: props.title,\n i18n: props.i18n\n }), h(User, {\n logout: props.logout,\n username: props.username,\n i18n: props.i18n\n })));\n}", "import { h, Fragment } from 'preact';\nexport default function User(_ref) {\n let {\n i18n,\n logout,\n username\n } = _ref;\n return h(Fragment, null, username && h(\"span\", {\n className: \"uppy-ProviderBrowser-user\",\n key: \"username\"\n }, username), h(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"uppy-u-reset uppy-c-btn uppy-ProviderBrowser-userLogout\",\n key: \"logout\"\n }, i18n('logOut')));\n}", "import { h, Fragment } from 'preact';\nexport default function Breadcrumbs(props) {\n const {\n openFolder,\n title,\n breadcrumbsIcon,\n breadcrumbs,\n i18n\n } = props;\n return h(\"div\", {\n className: \"uppy-Provider-breadcrumbs\"\n }, h(\"div\", {\n className: \"uppy-Provider-breadcrumbsIcon\"\n }, breadcrumbsIcon), breadcrumbs.map((folder, index) => {\n var _folder$data$name;\n return h(Fragment, null, h(\"button\", {\n key: folder.id,\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn\",\n onClick: () => openFolder(folder.id)\n }, folder.type === 'root' ? title : (_folder$data$name = folder.data.name) != null ? _folder$data$name : i18n('unnamed')), breadcrumbs.length === index + 1 ? '' : ' / ');\n }));\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 * \u00A9 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;", "/* eslint-disable react/jsx-props-no-spreading */\nimport { h } from 'preact';\nimport classNames from 'classnames';\nimport GridItem from \"./components/GridItem.js\";\nimport ListItem from \"./components/ListItem.js\";\nexport default function Item(props) {\n const {\n viewType,\n toggleCheckbox,\n showTitles,\n i18n,\n openFolder,\n file\n } = props;\n const restrictionError = file.type === 'folder' ? null : file.restrictionError;\n const isDisabled = !!restrictionError && file.status !== 'checked';\n const ourProps = {\n file,\n openFolder,\n toggleCheckbox,\n i18n,\n viewType,\n showTitles,\n className: classNames('uppy-ProviderBrowserItem', {\n 'uppy-ProviderBrowserItem--disabled': isDisabled\n }, {\n 'uppy-ProviderBrowserItem--noPreview': file.data.icon === 'video'\n }, {\n 'uppy-ProviderBrowserItem--is-checked': file.status === 'checked'\n }, {\n 'uppy-ProviderBrowserItem--is-partial': file.status === 'partial'\n }),\n isDisabled,\n restrictionError\n };\n switch (viewType) {\n case 'grid':\n return h(GridItem, ourProps);\n case 'list':\n return h(ListItem, ourProps);\n case 'unsplash':\n return h(GridItem, ourProps, h(\"a\", {\n href: `${file.data.author.url}?utm_source=Companion&utm_medium=referral`,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n className: \"uppy-ProviderBrowserItem-author\",\n tabIndex: -1\n }, file.data.author.name));\n default:\n throw new Error(`There is no such type ${viewType}`);\n }\n}", "import { h } from 'preact';\nfunction FileIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: 11,\n height: 14.5,\n viewBox: \"0 0 44 58\"\n }, h(\"path\", {\n d: \"M27.437.517a1 1 0 0 0-.094.03H4.25C2.037.548.217 2.368.217 4.58v48.405c0 2.212 1.82 4.03 4.03 4.03H39.03c2.21 0 4.03-1.818 4.03-4.03V15.61a1 1 0 0 0-.03-.28 1 1 0 0 0 0-.093 1 1 0 0 0-.03-.032 1 1 0 0 0 0-.03 1 1 0 0 0-.032-.063 1 1 0 0 0-.03-.063 1 1 0 0 0-.032 0 1 1 0 0 0-.03-.063 1 1 0 0 0-.032-.03 1 1 0 0 0-.03-.063 1 1 0 0 0-.063-.062l-14.593-14a1 1 0 0 0-.062-.062A1 1 0 0 0 28 .708a1 1 0 0 0-.374-.157 1 1 0 0 0-.156 0 1 1 0 0 0-.03-.03l-.003-.003zM4.25 2.547h22.218v9.97c0 2.21 1.82 4.03 4.03 4.03h10.564v36.438a2.02 2.02 0 0 1-2.032 2.032H4.25c-1.13 0-2.032-.9-2.032-2.032V4.58c0-1.13.902-2.032 2.03-2.032zm24.218 1.345l10.375 9.937.75.718H30.5c-1.13 0-2.032-.9-2.032-2.03V3.89z\"\n }));\n}\nfunction FolderIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n style: {\n minWidth: 16,\n marginRight: 3\n },\n viewBox: \"0 0 276.157 276.157\"\n }, h(\"path\", {\n d: \"M273.08 101.378c-3.3-4.65-8.86-7.32-15.254-7.32h-24.34V67.59c0-10.2-8.3-18.5-18.5-18.5h-85.322c-3.63 0-9.295-2.875-11.436-5.805l-6.386-8.735c-4.982-6.814-15.104-11.954-23.546-11.954H58.73c-9.292 0-18.638 6.608-21.737 15.372l-2.033 5.752c-.958 2.71-4.72 5.37-7.596 5.37H18.5C8.3 49.09 0 57.39 0 67.59v167.07c0 .886.16 1.73.443 2.52.152 3.306 1.18 6.424 3.053 9.064 3.3 4.652 8.86 7.32 15.255 7.32h188.487c11.395 0 23.27-8.425 27.035-19.18l40.677-116.188c2.11-6.035 1.43-12.164-1.87-16.816zM18.5 64.088h8.864c9.295 0 18.64-6.607 21.738-15.37l2.032-5.75c.96-2.712 4.722-5.373 7.597-5.373h29.565c3.63 0 9.295 2.876 11.437 5.806l6.386 8.735c4.982 6.815 15.104 11.954 23.546 11.954h85.322c1.898 0 3.5 1.602 3.5 3.5v26.47H69.34c-11.395 0-23.27 8.423-27.035 19.178L15 191.23V67.59c0-1.898 1.603-3.5 3.5-3.5zm242.29 49.15l-40.676 116.188c-1.674 4.78-7.812 9.135-12.877 9.135H18.75c-1.447 0-2.576-.372-3.02-.997-.442-.625-.422-1.814.057-3.18l40.677-116.19c1.674-4.78 7.812-9.134 12.877-9.134h188.487c1.448 0 2.577.372 3.02.997.443.625.423 1.814-.056 3.18z\"\n }));\n}\nfunction VideoIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n style: {\n width: 16,\n marginRight: 4\n },\n viewBox: \"0 0 58 58\"\n }, h(\"path\", {\n d: \"M36.537 28.156l-11-7a1.005 1.005 0 0 0-1.02-.033C24.2 21.3 24 21.635 24 22v14a1 1 0 0 0 1.537.844l11-7a1.002 1.002 0 0 0 0-1.688zM26 34.18V23.82L34.137 29 26 34.18z\"\n }), h(\"path\", {\n d: \"M57 6H1a1 1 0 0 0-1 1v44a1 1 0 0 0 1 1h56a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1zM10 28H2v-9h8v9zm-8 2h8v9H2v-9zm10 10V8h34v42H12V40zm44-12h-8v-9h8v9zm-8 2h8v9h-8v-9zm8-22v9h-8V8h8zM2 8h8v9H2V8zm0 42v-9h8v9H2zm54 0h-8v-9h8v9z\"\n }));\n}\nexport default function ItemIcon(_ref) {\n let {\n itemIconString,\n alt = undefined\n } = _ref;\n if (itemIconString === null) return null;\n switch (itemIconString) {\n case 'file':\n return h(FileIcon, null);\n case 'folder':\n return h(FolderIcon, null);\n case 'video':\n return h(VideoIcon, null);\n default:\n {\n return h(\"img\", {\n src: itemIconString,\n alt: alt\n // @ts-expect-error TS does not understand but attribute exists here.\n ,\n referrerPolicy: \"no-referrer\",\n loading: \"lazy\",\n width: 16,\n height: 16\n });\n }\n }\n}", "import { h } from 'preact';\nimport ItemIcon from \"./ItemIcon.js\";\nfunction GridItem(_ref) {\n var _file$data$name, _file$data$name2;\n let {\n file,\n toggleCheckbox,\n className,\n isDisabled,\n restrictionError,\n showTitles,\n children = null,\n i18n\n } = _ref;\n return h(\"li\", {\n className: className,\n title: isDisabled && restrictionError ? restrictionError : undefined\n }, h(\"input\", {\n type: \"checkbox\",\n className: \"uppy-u-reset uppy-ProviderBrowserItem-checkbox uppy-ProviderBrowserItem-checkbox--grid\",\n onChange: toggleCheckbox,\n name: \"listitem\",\n id: file.id,\n checked: file.status === 'checked',\n disabled: isDisabled,\n \"data-uppy-super-focusable\": true\n }), h(\"label\", {\n htmlFor: file.id,\n \"aria-label\": (_file$data$name = file.data.name) != null ? _file$data$name : i18n('unnamed'),\n className: \"uppy-u-reset uppy-ProviderBrowserItem-inner\"\n }, h(ItemIcon, {\n itemIconString: file.data.thumbnail || file.data.icon\n }), showTitles && ((_file$data$name2 = file.data.name) != null ? _file$data$name2 : i18n('unnamed')), children));\n}\nexport default GridItem;", "import { h } from 'preact';\nimport ItemIcon from \"./ItemIcon.js\";\n\n// if folder:\n// + checkbox (selects all files from folder)\n// + folder name (opens folder)\n// if file:\n// + checkbox (selects file)\n// + file name (selects file)\n\nexport default function ListItem(_ref) {\n var _file$data$name, _file$data$name2, _file$data$name3;\n let {\n file,\n openFolder,\n className,\n isDisabled,\n restrictionError,\n toggleCheckbox,\n showTitles,\n i18n\n } = _ref;\n return h(\"li\", {\n className: className,\n title: file.status !== 'checked' && restrictionError ? restrictionError : undefined\n }, h(\"input\", {\n type: \"checkbox\",\n className: \"uppy-u-reset uppy-ProviderBrowserItem-checkbox\",\n onChange: toggleCheckbox\n // for the <label/>\n ,\n name: \"listitem\",\n id: file.id,\n checked: file.status === 'checked',\n \"aria-label\": file.data.isFolder ? i18n('allFilesFromFolderNamed', {\n name: (_file$data$name = file.data.name) != null ? _file$data$name : i18n('unnamed')\n }) : null,\n disabled: isDisabled,\n \"data-uppy-super-focusable\": true\n }), file.data.isFolder ?\n // button to open a folder\n h(\"button\", {\n type: \"button\",\n className: \"uppy-u-reset uppy-c-btn uppy-ProviderBrowserItem-inner\",\n onClick: () => openFolder(file.id),\n \"aria-label\": i18n('openFolderNamed', {\n name: (_file$data$name2 = file.data.name) != null ? _file$data$name2 : i18n('unnamed')\n })\n }, h(\"div\", {\n className: \"uppy-ProviderBrowserItem-iconWrap\"\n }, h(ItemIcon, {\n itemIconString: file.data.icon\n })), showTitles && file.data.name ? h(\"span\", null, file.data.name) : i18n('unnamed'))\n // label for a checkbox\n : h(\"label\", {\n htmlFor: file.id,\n className: \"uppy-u-reset uppy-ProviderBrowserItem-inner\"\n }, h(\"div\", {\n className: \"uppy-ProviderBrowserItem-iconWrap\"\n }, h(ItemIcon, {\n itemIconString: file.data.icon\n })), showTitles && ((_file$data$name3 = file.data.name) != null ? _file$data$name3 : i18n('unnamed'))));\n}", "import { h } from 'preact';\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore untyped\nimport VirtualList from '@uppy/utils/lib/VirtualList';\nimport { useEffect, useState } from 'preact/hooks';\nimport Item from \"./Item/index.js\";\nfunction Browser(props) {\n const {\n displayedPartialTree,\n viewType,\n toggleCheckbox,\n handleScroll,\n showTitles,\n i18n,\n isLoading,\n openFolder,\n noResultsLabel,\n virtualList\n } = props;\n const [isShiftKeyPressed, setIsShiftKeyPressed] = useState(false);\n\n // This records whether the user is holding the SHIFT key this very moment.\n // Typically, this is implemented using `onClick((e) => e.shiftKey)` -\n // however we can't use that, because for accessibility reasons\n // we're using html tags that don't support `e.shiftKey` property (see #3768).\n useEffect(() => {\n const handleKeyUp = e => {\n if (e.key === 'Shift') setIsShiftKeyPressed(false);\n };\n const handleKeyDown = e => {\n if (e.key === 'Shift') setIsShiftKeyPressed(true);\n };\n document.addEventListener('keyup', handleKeyUp);\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keyup', handleKeyUp);\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n if (isLoading) {\n return h(\"div\", {\n className: \"uppy-Provider-loading\"\n }, typeof isLoading === 'string' ? isLoading : i18n('loading'));\n }\n if (displayedPartialTree.length === 0) {\n return h(\"div\", {\n className: \"uppy-Provider-empty\"\n }, noResultsLabel);\n }\n const renderItem = item => h(Item, {\n viewType: viewType,\n toggleCheckbox: event => {\n var _document$getSelectio;\n event.stopPropagation();\n event.preventDefault();\n // Prevent shift-clicking from highlighting file names\n // (https://stackoverflow.com/a/1527797/3192470)\n (_document$getSelectio = document.getSelection()) == null || _document$getSelectio.removeAllRanges();\n toggleCheckbox(item, isShiftKeyPressed);\n },\n showTitles: showTitles,\n i18n: i18n,\n openFolder: openFolder,\n file: item\n });\n if (virtualList) {\n return h(\"div\", {\n className: \"uppy-ProviderBrowser-body\"\n }, h(\"ul\", {\n className: \"uppy-ProviderBrowser-list\"\n }, h(VirtualList, {\n data: displayedPartialTree,\n renderRow: renderItem,\n rowHeight: 31\n })));\n }\n return h(\"div\", {\n className: \"uppy-ProviderBrowser-body\"\n }, h(\"ul\", {\n className: \"uppy-ProviderBrowser-list\",\n onScroll: handleScroll,\n role: \"listbox\"\n // making <ul> not focusable for firefox\n ,\n tabIndex: -1\n }, displayedPartialTree.map(renderItem)));\n}\nexport default Browser;", "const afterOpenFolder = (oldPartialTree, discoveredItems, clickedFolder, currentPagePath, validateSingleFile) => {\n const discoveredFolders = discoveredItems.filter(i => i.isFolder === true);\n const discoveredFiles = discoveredItems.filter(i => i.isFolder === false);\n const isParentFolderChecked = clickedFolder.type === 'folder' && clickedFolder.status === 'checked';\n const folders = discoveredFolders.map(folder => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: isParentFolderChecked ? 'checked' : 'unchecked',\n parentId: clickedFolder.id,\n data: folder\n }));\n const files = discoveredFiles.map(file => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: isParentFolderChecked && !restrictionError ? 'checked' : 'unchecked',\n parentId: clickedFolder.id,\n data: file\n };\n });\n\n // just doing `clickedFolder.cached = true` in a non-mutating way\n const updatedClickedFolder = {\n ...clickedFolder,\n cached: true,\n nextPagePath: currentPagePath\n };\n const partialTreeWithUpdatedClickedFolder = oldPartialTree.map(folder => folder.id === updatedClickedFolder.id ? updatedClickedFolder : folder);\n const newPartialTree = [...partialTreeWithUpdatedClickedFolder, ...folders, ...files];\n return newPartialTree;\n};\nexport default afterOpenFolder;", "const afterScrollFolder = (oldPartialTree, currentFolderId, items, nextPagePath, validateSingleFile) => {\n const currentFolder = oldPartialTree.find(i => i.id === currentFolderId);\n const newFolders = items.filter(i => i.isFolder === true);\n const newFiles = items.filter(i => i.isFolder === false);\n\n // just doing `scrolledFolder.nextPagePath = ...` in a non-mutating way\n const scrolledFolder = {\n ...currentFolder,\n nextPagePath\n };\n const partialTreeWithUpdatedScrolledFolder = oldPartialTree.map(folder => folder.id === scrolledFolder.id ? scrolledFolder : folder);\n const isParentFolderChecked = scrolledFolder.type === 'folder' && scrolledFolder.status === 'checked';\n const folders = newFolders.map(folder => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: isParentFolderChecked ? 'checked' : 'unchecked',\n parentId: scrolledFolder.id,\n data: folder\n }));\n const files = newFiles.map(file => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: isParentFolderChecked && !restrictionError ? 'checked' : 'unchecked',\n parentId: scrolledFolder.id,\n data: file\n };\n });\n const newPartialTree = [...partialTreeWithUpdatedScrolledFolder, ...folders, ...files];\n return newPartialTree;\n};\nexport default afterScrollFolder;", "/**\n * One-level copying is sufficient as mutations within our `partialTree` are limited to properties\n * such as `.status`, `.cached`, `.nextPagePath`, and not `.data = { THIS }`.\n */\nconst shallowClone = partialTree => {\n return partialTree.map(item => ({\n ...item\n }));\n};\nexport default shallowClone;", "/* eslint-disable no-param-reassign */\n\nimport shallowClone from \"./shallowClone.js\";\n\n/*\n FROM | TO\n\n root | root\n folder | folder\n folder \u2705\uFE0E | folder \u2705\uFE0E\n file | file \u2705\uFE0E\n file | file \u2705\uFE0E\n folder | folder \u2705\uFE0E\n file | file \u2705\uFE0E\n file | file\n file | file\n*/\nconst percolateDown = (tree, id, shouldMarkAsChecked) => {\n const children = tree.filter(item => item.type !== 'root' && item.parentId === id);\n children.forEach(item => {\n item.status = shouldMarkAsChecked && !(item.type === 'file' && item.restrictionError) ? 'checked' : 'unchecked';\n percolateDown(tree, item.id, shouldMarkAsChecked);\n });\n};\n\n/*\n FROM | TO\n\n root | root\n folder | folder\n folder | folder [\u25AC] ('partial' status)\n file | file\n folder | folder \u2705\uFE0E\n file \u2705\uFE0E | file \u2705\uFE0E\n file | file\n file | file\n*/\nconst percolateUp = (tree, id) => {\n const folder = tree.find(item => item.id === id);\n if (folder.type === 'root') return;\n const validChildren = tree.filter(item =>\n // is a child\n item.type !== 'root' && item.parentId === folder.id &&\n // does pass validations\n !(item.type === 'file' && item.restrictionError));\n const areAllChildrenChecked = validChildren.every(item => item.status === 'checked');\n const areAllChildrenUnchecked = validChildren.every(item => item.status === 'unchecked');\n if (areAllChildrenChecked) {\n folder.status = 'checked';\n } else if (areAllChildrenUnchecked) {\n folder.status = 'unchecked';\n } else {\n folder.status = 'partial';\n }\n percolateUp(tree, folder.parentId);\n};\nconst afterToggleCheckbox = (oldTree, clickedRange) => {\n const tree = shallowClone(oldTree);\n if (clickedRange.length >= 2) {\n // We checked two or more items\n const newlyCheckedItems = tree.filter(item => item.type !== 'root' && clickedRange.includes(item.id));\n newlyCheckedItems.forEach(item => {\n if (item.type === 'file') {\n item.status = item.restrictionError ? 'unchecked' : 'checked';\n } else {\n item.status = 'checked';\n }\n });\n newlyCheckedItems.forEach(item => {\n percolateDown(tree, item.id, true);\n });\n percolateUp(tree, newlyCheckedItems[0].parentId);\n } else {\n // We checked exactly one item\n const clickedItem = tree.find(item => item.id === clickedRange[0]);\n clickedItem.status = clickedItem.status === 'checked' ? 'unchecked' : 'checked';\n percolateDown(tree, clickedItem.id, clickedItem.status === 'checked');\n percolateUp(tree, clickedItem.parentId);\n }\n return tree;\n};\nexport default afterToggleCheckbox;", "import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n", "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", "// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n", "import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n", "import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n", "/* eslint-disable no-param-reassign */\n\n// p-queue does not have a `\"main\"` field in its `package.json`, and that makes `import/no-unresolved` freak out.\n// We can safely ignore it because bundlers will happily use the `\"exports\"` field instead.\n// eslint-disable-next-line import/no-unresolved\nimport PQueue from 'p-queue';\nimport shallowClone from \"./shallowClone.js\";\nconst recursivelyFetch = async (queue, poorTree, poorFolder, apiList, validateSingleFile) => {\n let items = [];\n let currentPath = poorFolder.cached ? poorFolder.nextPagePath : poorFolder.id;\n while (currentPath) {\n const response = await apiList(currentPath);\n items = items.concat(response.items);\n currentPath = response.nextPagePath;\n }\n const newFolders = items.filter(i => i.isFolder === true);\n const newFiles = items.filter(i => i.isFolder === false);\n const folders = newFolders.map(folder => ({\n type: 'folder',\n id: folder.requestPath,\n cached: false,\n nextPagePath: null,\n status: 'checked',\n parentId: poorFolder.id,\n data: folder\n }));\n const files = newFiles.map(file => {\n const restrictionError = validateSingleFile(file);\n return {\n type: 'file',\n id: file.requestPath,\n restrictionError,\n status: restrictionError ? 'unchecked' : 'checked',\n parentId: poorFolder.id,\n data: file\n };\n });\n poorFolder.cached = true;\n poorFolder.nextPagePath = null;\n poorTree.push(...files, ...folders);\n folders.forEach(async folder => {\n queue.add(() => recursivelyFetch(queue, poorTree, folder, apiList, validateSingleFile));\n });\n};\nconst afterFill = async (partialTree, apiList, validateSingleFile, reportProgress) => {\n const queue = new PQueue({\n concurrency: 6\n });\n\n // fill up the missing parts of a partialTree!\n const poorTree = shallowClone(partialTree);\n const poorFolders = poorTree.filter(item => item.type === 'folder' && item.status === 'checked' && (\n // either \"not yet cached at all\" or \"some pages are left to fetch\"\n item.cached === false || item.nextPagePath));\n // per each poor folder, recursively fetch all files and make them .checked!\n poorFolders.forEach(poorFolder => {\n queue.add(() => recursivelyFetch(queue, poorTree, poorFolder, apiList, validateSingleFile));\n });\n queue.on('completed', () => {\n const nOfFilesChecked = poorTree.filter(i => i.type === 'file' && i.status === 'checked').length;\n reportProgress(nOfFilesChecked);\n });\n await queue.onIdle();\n return poorTree;\n};\nexport default afterFill;", "import afterOpenFolder from \"./afterOpenFolder.js\";\nimport afterScrollFolder from \"./afterScrollFolder.js\";\nimport afterToggleCheckbox from \"./afterToggleCheckbox.js\";\nimport afterFill from \"./afterFill.js\";\nexport default {\n afterOpenFolder,\n afterScrollFolder,\n afterToggleCheckbox,\n afterFill\n};", "const shouldHandleScroll = event => {\n const {\n scrollHeight,\n scrollTop,\n offsetHeight\n } = event.target;\n const scrollPosition = scrollHeight - (scrollTop + offsetHeight);\n return scrollPosition < 50;\n};\nexport default shouldHandleScroll;", "const handleError = uppy => error => {\n // authError just means we're not authenticated, don't report it\n if (error.isAuthError) {\n return;\n }\n // AbortError means the user has clicked \"cancel\" on an operation\n if (error.name === 'AbortError') {\n uppy.log('Aborting request', 'warning');\n return;\n }\n uppy.log(error, 'error');\n if (error.name === 'UserFacingApiError') {\n uppy.info({\n message: uppy.i18n('companionError'),\n details: uppy.i18n(error.message)\n }, 'warning', 5000);\n }\n};\nexport default handleError;", "// Shift-clicking selects a single consecutive list of items\n// starting at the previous click.\nconst getClickedRange = (clickedId, displayedPartialTree, isShiftKeyPressed, lastCheckbox) => {\n const lastCheckboxIndex = displayedPartialTree.findIndex(item => item.id === lastCheckbox);\n if (lastCheckboxIndex !== -1 && isShiftKeyPressed) {\n const newCheckboxIndex = displayedPartialTree.findIndex(item => item.id === clickedId);\n const clickedRange = displayedPartialTree.slice(Math.min(lastCheckboxIndex, newCheckboxIndex), Math.max(lastCheckboxIndex, newCheckboxIndex) + 1);\n return clickedRange.map(item => item.id);\n }\n return [clickedId];\n};\nexport default getClickedRange;", "import { h } from 'preact';\nimport { useEffect, useState, useCallback } from 'preact/hooks';\nimport { nanoid } from 'nanoid/non-secure';\nfunction SearchInput(_ref) {\n let {\n searchString,\n setSearchString,\n submitSearchString,\n wrapperClassName,\n inputClassName,\n inputLabel,\n clearSearchLabel = '',\n showButton = false,\n buttonLabel = '',\n buttonCSSClassName = ''\n } = _ref;\n const onInput = e => {\n setSearchString(e.target.value);\n };\n const submit = useCallback(ev => {\n ev.preventDefault();\n submitSearchString();\n }, [submitSearchString]);\n\n // We do this to avoid nested <form>s\n // (See https://github.com/transloadit/uppy/pull/5050#discussion_r1640392516)\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', submit);\n return () => {\n form.removeEventListener('submit', submit);\n document.body.removeChild(form);\n };\n }, [form, submit]);\n return h(\"section\", {\n className: wrapperClassName\n }, h(\"input\", {\n className: `uppy-u-reset ${inputClassName}`,\n type: \"search\",\n \"aria-label\": inputLabel,\n placeholder: inputLabel,\n value: searchString,\n onInput: onInput,\n form: form.id,\n \"data-uppy-super-focusable\": true\n }), !showButton &&\n // \uD83D\uDD0D\n h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon uppy-ProviderBrowser-searchFilterIcon\",\n width: \"12\",\n height: \"12\",\n viewBox: \"0 0 12 12\"\n }, h(\"path\", {\n d: \"M8.638 7.99l3.172 3.172a.492.492 0 1 1-.697.697L7.91 8.656a4.977 4.977 0 0 1-2.983.983C2.206 9.639 0 7.481 0 4.819 0 2.158 2.206 0 4.927 0c2.721 0 4.927 2.158 4.927 4.82a4.74 4.74 0 0 1-1.216 3.17zm-3.71.685c2.176 0 3.94-1.726 3.94-3.856 0-2.129-1.764-3.855-3.94-3.855C2.75.964.984 2.69.984 4.819c0 2.13 1.765 3.856 3.942 3.856z\"\n })), !showButton && searchString &&\n // \u274C\n h(\"button\", {\n className: \"uppy-u-reset uppy-ProviderBrowser-searchFilterReset\",\n type: \"button\",\n \"aria-label\": clearSearchLabel,\n title: clearSearchLabel,\n onClick: () => setSearchString('')\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n viewBox: \"0 0 19 19\"\n }, h(\"path\", {\n d: \"M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z\"\n }))), showButton && h(\"button\", {\n className: `uppy-u-reset uppy-c-btn uppy-c-btn-primary ${buttonCSSClassName}`,\n type: \"submit\",\n form: form.id\n }, buttonLabel));\n}\nexport default SearchInput;", "import { h } from 'preact';\nimport classNames from 'classnames';\nimport { useMemo } from 'preact/hooks';\nimport getNumberOfSelectedFiles from \"./utils/PartialTreeUtils/getNumberOfSelectedFiles.js\";\nexport default function FooterActions(_ref) {\n let {\n cancelSelection,\n donePicking,\n i18n,\n partialTree,\n validateAggregateRestrictions\n } = _ref;\n const aggregateRestrictionError = useMemo(() => {\n return validateAggregateRestrictions(partialTree);\n }, [partialTree, validateAggregateRestrictions]);\n const nOfSelectedFiles = useMemo(() => {\n return getNumberOfSelectedFiles(partialTree);\n }, [partialTree]);\n if (nOfSelectedFiles === 0) {\n return null;\n }\n return h(\"div\", {\n className: \"uppy-ProviderBrowser-footer\"\n }, h(\"div\", {\n className: \"uppy-ProviderBrowser-footer-buttons\"\n }, h(\"button\", {\n className: classNames('uppy-u-reset uppy-c-btn uppy-c-btn-primary', {\n 'uppy-c-btn--disabled': aggregateRestrictionError\n }),\n disabled: !!aggregateRestrictionError,\n onClick: donePicking,\n type: \"button\"\n }, i18n('selectX', {\n smart_count: nOfSelectedFiles\n })), h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-c-btn-link\",\n onClick: cancelSelection,\n type: \"button\"\n }, i18n('cancel'))), aggregateRestrictionError && h(\"div\", {\n className: \"uppy-ProviderBrowser-footer-error\"\n }, aggregateRestrictionError));\n}", "/**\n * We're interested in all 'checked' leaves of this tree,\n * but we don't yet know how many files there are inside of each checked folder.\n * `getNumberOfSelectedFiles()` returns the most intuitive number we can show to the user\n * in this situation.\n */\nconst getNumberOfSelectedFiles = partialTree => {\n const checkedLeaves = partialTree.filter(item => {\n if (item.type === 'file' && item.status === 'checked') {\n return true;\n }\n if (item.type === 'folder' && item.status === 'checked') {\n const doesItHaveChildren = partialTree.some(i => i.type !== 'root' && i.parentId === item.id);\n return !doesItHaveChildren;\n }\n return false;\n });\n return checkedLeaves.length;\n};\nexport default getNumberOfSelectedFiles;", "// TODO: document what is a \"tagFile\" or get rid of this concept\nconst getTagFile = (file, plugin, provider) => {\n var _file$author, _file$author2;\n const tagFile = {\n id: file.id,\n source: plugin.id,\n name: file.name || file.id,\n type: file.mimeType,\n isRemote: true,\n data: file,\n preview: file.thumbnail || undefined,\n meta: {\n authorName: (_file$author = file.author) == null ? void 0 : _file$author.name,\n authorUrl: (_file$author2 = file.author) == null ? void 0 : _file$author2.url,\n // We need to do this `|| null` check, because null value\n // for .relDirPath is `undefined` and for .relativePath is `null`.\n // I do think we should just use `null` everywhere.\n relativePath: file.relDirPath || null,\n absolutePath: file.absDirPath\n },\n body: {\n fileId: file.id\n },\n remote: {\n companionUrl: plugin.opts.companionUrl,\n // @ts-expect-error untyped for now\n url: `${provider.fileUrl(file.requestPath)}`,\n body: {\n fileId: file.id\n },\n providerName: provider.name,\n provider: provider.provider,\n requestClientId: provider.provider\n }\n };\n return tagFile;\n};\nexport default getTagFile;", "import { getSafeFileId } from '@uppy/utils/lib/generateFileID';\nimport getTagFile from \"./getTagFile.js\";\nconst addFiles = (companionFiles, plugin, provider) => {\n const tagFiles = companionFiles.map(f => getTagFile(f, plugin, provider));\n const filesToAdd = [];\n const filesAlreadyAdded = [];\n tagFiles.forEach(tagFile => {\n if (plugin.uppy.checkIfFileAlreadyExists(getSafeFileId(tagFile, plugin.uppy.getID()))) {\n filesAlreadyAdded.push(tagFile);\n } else {\n filesToAdd.push(tagFile);\n }\n });\n if (filesToAdd.length > 0) {\n plugin.uppy.info(plugin.uppy.i18n('addedNumFiles', {\n numFiles: filesToAdd.length\n }));\n }\n if (filesAlreadyAdded.length > 0) {\n plugin.uppy.info(`Not adding ${filesAlreadyAdded.length} files because they already exist`);\n }\n plugin.uppy.addFiles(filesToAdd);\n};\nexport default addFiles;", "/* eslint-disable no-param-reassign */\n\nconst getPath = (partialTree, id, cache) => {\n const sId = id === null ? 'null' : id;\n if (cache[sId]) return cache[sId];\n const file = partialTree.find(f => f.id === id);\n if (file.type === 'root') return [];\n const meAndParentPath = [...getPath(partialTree, file.parentId, cache), file];\n cache[sId] = meAndParentPath;\n return meAndParentPath;\n};\n\n// See \"Uppy file properties\" documentation for `.absolutePath` and `.relativePath`\n// (https://uppy.io/docs/uppy/#working-with-uppy-files)\nconst getCheckedFilesWithPaths = partialTree => {\n // Equivalent to `const cache = {}`, but makes keys such as 'hasOwnProperty' safe too\n const cache = Object.create(null);\n\n // We're only interested in injecting paths into 'checked' files\n const checkedFiles = partialTree.filter(item => item.type === 'file' && item.status === 'checked');\n const companionFilesWithInjectedPaths = checkedFiles.map(file => {\n const absFolders = getPath(partialTree, file.id, cache);\n const firstCheckedFolderIndex = absFolders.findIndex(i => i.type === 'folder' && i.status === 'checked');\n const relFolders = absFolders.slice(firstCheckedFolderIndex);\n const absDirPath = `/${absFolders.map(i => i.data.name).join('/')}`;\n const relDirPath = relFolders.length === 1 ?\n // Must return `undefined` (which later turns into `null` in `.getTagFile()`)\n // (https://github.com/transloadit/uppy/pull/4537#issuecomment-1629136652)\n undefined : relFolders.map(i => i.data.name).join('/');\n return {\n ...file.data,\n absDirPath,\n relDirPath\n };\n });\n return companionFilesWithInjectedPaths;\n};\nexport default getCheckedFilesWithPaths;", "const getBreadcrumbs = (partialTree, currentFolderId) => {\n let folder = partialTree.find(f => f.id === currentFolderId);\n let breadcrumbs = [];\n // eslint-disable-next-line no-constant-condition\n while (true) {\n breadcrumbs = [folder, ...breadcrumbs];\n if (folder.type === 'root') break;\n const currentParentId = folder.parentId;\n folder = partialTree.find(f => f.id === currentParentId);\n }\n return breadcrumbs;\n};\nexport default getBreadcrumbs;", "import { h } from 'preact';\nimport classNames from 'classnames';\nimport remoteFileObjToLocal from '@uppy/utils/lib/remoteFileObjToLocal';\nimport SearchInput from \"../SearchInput.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 FooterActions from \"../FooterActions.js\";\nimport addFiles from \"../utils/addFiles.js\";\nimport getCheckedFilesWithPaths from \"../utils/PartialTreeUtils/getCheckedFilesWithPaths.js\";\nconst defaultState = {\n loading: false,\n searchString: '',\n partialTree: [{\n type: 'root',\n id: null,\n cached: false,\n nextPagePath: null\n }],\n currentFolderId: null,\n isInputMode: true\n};\n/**\n * SearchProviderView, used for Unsplash and future image search providers.\n * Extends generic View, shared with regular providers like Google Drive and Instagram.\n */\nexport default class SearchProviderView {\n constructor(plugin, opts) {\n this.isHandlingScroll = false;\n this.lastCheckbox = null;\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 } = this.plugin.getPluginState();\n return partialTree.filter(item => item.type !== 'root');\n };\n this.setSearchString = searchString => {\n this.plugin.setPluginState({\n searchString\n });\n if (searchString === '') {\n this.plugin.setPluginState({\n partialTree: []\n });\n }\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: 'grid',\n showTitles: true,\n showFilter: true\n };\n this.opts = {\n ...defaultOptions,\n ...opts\n };\n this.setSearchString = this.setSearchString.bind(this);\n this.search = this.search.bind(this);\n this.resetPluginState = this.resetPluginState.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.donePicking = this.donePicking.bind(this);\n this.cancelSelection = this.cancelSelection.bind(this);\n this.toggleCheckbox = this.toggleCheckbox.bind(this);\n this.render = this.render.bind(this);\n\n // Set default state for the plugin\n this.resetPluginState();\n\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\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 resetPluginState() {\n this.plugin.setPluginState(defaultState);\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 search() {\n const {\n searchString\n } = this.plugin.getPluginState();\n if (searchString === '') return;\n this.setLoading(true);\n try {\n const response = await this.provider.search(searchString);\n const newPartialTree = [{\n type: 'root',\n id: null,\n cached: false,\n nextPagePath: response.nextPageQuery\n }, ...response.items.map(item => ({\n type: 'file',\n id: item.requestPath,\n status: 'unchecked',\n parentId: null,\n data: item\n }))];\n this.plugin.setPluginState({\n partialTree: newPartialTree,\n isInputMode: false\n });\n } catch (error) {\n handleError(this.plugin.uppy)(error);\n }\n this.setLoading(false);\n }\n async handleScroll(event) {\n const {\n partialTree,\n searchString\n } = this.plugin.getPluginState();\n const root = partialTree.find(i => i.type === 'root');\n if (shouldHandleScroll(event) && !this.isHandlingScroll && root.nextPagePath) {\n this.isHandlingScroll = true;\n try {\n const response = await this.provider.search(searchString, root.nextPagePath);\n const newRoot = {\n ...root,\n nextPagePath: response.nextPageQuery\n };\n const oldItems = partialTree.filter(i => i.type !== 'root');\n const newPartialTree = [newRoot, ...oldItems, ...response.items.map(item => ({\n type: 'file',\n id: item.requestPath,\n status: 'unchecked',\n parentId: null,\n data: item\n }))];\n this.plugin.setPluginState({\n partialTree: newPartialTree\n });\n } catch (error) {\n handleError(this.plugin.uppy)(error);\n }\n this.isHandlingScroll = false;\n }\n }\n async donePicking() {\n const {\n partialTree\n } = this.plugin.getPluginState();\n\n // 1. Add files\n const companionFiles = getCheckedFilesWithPaths(partialTree);\n addFiles(companionFiles, this.plugin, this.provider);\n\n // 2. Reset state\n this.resetPluginState();\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 isInputMode,\n searchString,\n loading,\n partialTree\n } = this.plugin.getPluginState();\n const {\n i18n\n } = this.plugin.uppy;\n const opts = {\n ...this.opts,\n ...viewOptions\n };\n if (isInputMode) {\n return h(SearchInput, {\n searchString: searchString,\n setSearchString: this.setSearchString,\n submitSearchString: this.search,\n inputLabel: i18n('enterTextToSearch'),\n buttonLabel: i18n('searchImages'),\n wrapperClassName: \"uppy-SearchProvider\",\n inputClassName: \"uppy-c-textInput uppy-SearchProvider-input\",\n showButton: true,\n buttonCSSClassName: \"uppy-SearchProvider-searchButton\"\n });\n }\n return h(\"div\", {\n className: classNames('uppy-ProviderBrowser', `uppy-ProviderBrowser-viewType--${opts.viewType}`)\n }, opts.showFilter && h(SearchInput, {\n searchString: searchString,\n setSearchString: this.setSearchString,\n submitSearchString: this.search,\n inputLabel: i18n('search'),\n clearSearchLabel: i18n('resetSearch'),\n wrapperClassName: \"uppy-ProviderBrowser-searchFilter\",\n inputClassName: \"uppy-ProviderBrowser-searchFilterInput\"\n }), h(Browser, {\n toggleCheckbox: this.toggleCheckbox,\n displayedPartialTree: this.getDisplayedPartialTree(),\n handleScroll: this.handleScroll,\n openFolder: async () => {},\n noResultsLabel: i18n('noSearchResults'),\n viewType: opts.viewType,\n showTitles: opts.showTitles,\n isLoading: loading,\n i18n: i18n,\n virtualList: false\n }), h(FooterActions, {\n partialTree: partialTree,\n donePicking: this.donePicking,\n cancelSelection: this.cancelSelection,\n i18n: i18n,\n validateAggregateRestrictions: this.validateAggregateRestrictions\n }));\n }\n}\nSearchProviderView.VERSION = packageJson.version;", "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 <ul> is focusable, but we don't have <ul>s in our FOCUSABLE_ELEMENTS. Which means that if we tab into\n// the <ul>, 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 <ul>.\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}", "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}", "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 \u201Ccentered single file\u201D 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}", "/**\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}", "/* 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\u2019s 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}", "export type validArrayValue = any[] | null | undefined;\n\nexport default function shallowEqualArrays(\n arrA: validArrayValue,\n arrB: validArrayValue\n): boolean {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n const len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n", "export type validObjectValue = Record<string, any> | null | undefined;\n\nexport default function shallowEqualObjects<T>(\n objA: validObjectValue,\n objB: validObjectValue\n): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n\n if (\n objA[key] !== objB[key] ||\n !Object.prototype.hasOwnProperty.call(objB, key)\n ) {\n return false;\n }\n }\n\n return true;\n}\n", "import shallowEqualArrays from \"./arrays\";\nimport shallowEqualObjects from \"./objects\";\n\ntype Comparable = Record<string, any> | any[] | null | undefined;\n\nfunction shallowEqual<T extends Comparable>(a: T, b: T): boolean {\n const aIsArr = Array.isArray(a);\n const bIsArr = Array.isArray(b);\n\n if (aIsArr !== bIsArr) {\n return false;\n }\n\n if (aIsArr && bIsArr) {\n return shallowEqualArrays(a, b);\n }\n\n return shallowEqualObjects(a, b);\n}\n\nexport { shallowEqual, shallowEqualObjects, shallowEqualArrays };\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}", "/* 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}", "/**\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)}\u2026`;\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}", "/**\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}", "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}", "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 \u2014 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 <input/> 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\u2019t 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\u2019t 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;", "import { h } from 'preact';\nimport classNames from 'classnames';\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 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 className: \"uppy-DashboardContent-panelBody\"\n }, uppy.getPlugin(activePickerPanel.id).render(state)));\n}\nexport default PickerPanelContent;", "// ignore drop/paste events if they are not in input or textarea \u2014\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 \u2014\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;", "/* 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';\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 { 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 { 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;", "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 \u201CAdd more files\u201D screen\n addMoreFiles: 'Add more files',\n addingMoreFiles: 'Adding more files',\n // Used as the header for import panels, e.g., \u201CImport from Google Drive\u201D.\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 \u2014 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 \u201CEditing image.png\u201D.\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.0.3\"\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\u2019t 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\u2019t 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 \u2014\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\u2019t 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;", "const mimeToExtensions = {\n __proto__: null,\n 'audio/mp3': 'mp3',\n 'audio/mp4': 'mp4',\n 'audio/ogg': 'ogg',\n 'audio/webm': 'webm',\n 'image/gif': 'gif',\n 'image/heic': 'heic',\n 'image/heif': 'heif',\n 'image/jpeg': 'jpg',\n 'image/png': 'png',\n 'image/svg+xml': 'svg',\n 'video/mp4': 'mp4',\n 'video/ogg': 'ogv',\n 'video/quicktime': 'mov',\n 'video/webm': 'webm',\n 'video/x-matroska': 'mkv',\n 'video/x-msvideo': 'avi'\n};\nexport default function getFileTypeExtension(mimeType) {\n // Remove the ; bit in 'video/x-matroska;codecs=avc1'\n // eslint-disable-next-line no-param-reassign\n ;\n [mimeType] = mimeType.split(';', 1);\n return mimeToExtensions[mimeType] || null;\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); }\nfunction _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 { UIPlugin } from '@uppy/core';\nimport getFileTypeExtension from '@uppy/utils/lib/getFileTypeExtension';\nimport mimeTypes from '@uppy/utils/lib/mimeTypes';\nimport isMobile from 'is-mobile';\nimport canvasToBlob from '@uppy/utils/lib/canvasToBlob';\nimport supportsMediaRecorder from \"./supportsMediaRecorder.js\";\nimport CameraIcon from \"./CameraIcon.js\";\nimport CameraScreen from \"./CameraScreen.js\";\nimport PermissionsScreen from \"./PermissionsScreen.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.1\"\n};\nimport locale from \"./locale.js\";\n\n/**\n * Normalize a MIME type or file extension into a MIME type.\n *\n * @param fileType - MIME type or a file extension prefixed with `.`.\n * @returns The MIME type or `undefined` if the fileType is an extension and is not known.\n */\nfunction toMimeType(fileType) {\n if (fileType[0] === '.') {\n return mimeTypes[fileType.slice(1)];\n }\n return fileType;\n}\n\n/**\n * Is this MIME type a video?\n */\nfunction isVideoMimeType(mimeType) {\n return /^video\\/[^*]+$/.test(mimeType);\n}\n\n/**\n * Is this MIME type an image?\n */\nfunction isImageMimeType(mimeType) {\n return /^image\\/[^*]+$/.test(mimeType);\n}\nfunction getMediaDevices() {\n // bug in the compatibility data\n // eslint-disable-next-line compat/compat\n return navigator.mediaDevices;\n}\nfunction isModeAvailable(modes, mode) {\n return modes.includes(mode);\n}\n// set default options\nconst defaultOptions = {\n onBeforeSnapshot: () => Promise.resolve(),\n countdown: false,\n modes: ['video-audio', 'video-only', 'audio-only', 'picture'],\n mirror: true,\n showVideoSourceDropdown: false,\n preferredImageMimeType: null,\n preferredVideoMimeType: null,\n showRecordingLength: false,\n mobileNativeCamera: isMobile({\n tablet: true\n })\n};\n\n/**\n * Webcam\n */\nvar _enableMirror = /*#__PURE__*/_classPrivateFieldLooseKey(\"enableMirror\");\nexport default class Webcam extends UIPlugin {\n constructor(uppy, opts) {\n super(uppy, {\n ...defaultOptions,\n ...opts\n });\n // enableMirror is used to toggle mirroring, for instance when discarding the video,\n // while `opts.mirror` is used to remember the initial user setting\n Object.defineProperty(this, _enableMirror, {\n writable: true,\n value: void 0\n });\n this.stream = null;\n this.recorder = null;\n this.recordingChunks = null;\n this.captureInProgress = false;\n this.mediaDevices = getMediaDevices();\n this.supportsUserMedia = !!this.mediaDevices;\n // eslint-disable-next-line no-restricted-globals\n this.protocol = location.protocol.match(/https/i) ? 'https' : 'http';\n this.id = this.opts.id || 'Webcam';\n this.type = 'acquirer';\n this.capturedMediaFile = null;\n this.icon = () => 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 fillRule: \"nonzero\"\n }));\n this.defaultLocale = locale;\n this.i18nInit();\n this.title = this.i18n('pluginNameCamera');\n _classPrivateFieldLooseBase(this, _enableMirror)[_enableMirror] = this.opts.mirror;\n this.install = this.install.bind(this);\n this.setPluginState = this.setPluginState.bind(this);\n this.render = this.render.bind(this);\n\n // Camera controls\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n this.takeSnapshot = this.takeSnapshot.bind(this);\n this.startRecording = this.startRecording.bind(this);\n this.stopRecording = this.stopRecording.bind(this);\n this.discardRecordedVideo = this.discardRecordedVideo.bind(this);\n this.submit = this.submit.bind(this);\n this.oneTwoThreeSmile = this.oneTwoThreeSmile.bind(this);\n this.focus = this.focus.bind(this);\n this.changeVideoSource = this.changeVideoSource.bind(this);\n this.webcamActive = false;\n if (this.opts.countdown) {\n this.opts.onBeforeSnapshot = this.oneTwoThreeSmile;\n }\n this.setPluginState({\n hasCamera: false,\n cameraReady: false,\n cameraError: null,\n recordingLengthSeconds: 0,\n videoSources: [],\n currentDeviceId: null\n });\n }\n setOptions(newOpts) {\n super.setOptions({\n ...newOpts,\n videoConstraints: {\n // May be undefined but ... handles that\n ...this.opts.videoConstraints,\n ...(newOpts == null ? void 0 : newOpts.videoConstraints)\n }\n });\n }\n hasCameraCheck() {\n if (!this.mediaDevices) {\n return Promise.resolve(false);\n }\n return this.mediaDevices.enumerateDevices().then(devices => {\n return devices.some(device => device.kind === 'videoinput');\n });\n }\n isAudioOnly() {\n return this.opts.modes.length === 1 && this.opts.modes[0] === 'audio-only';\n }\n getConstraints(deviceId) {\n if (deviceId === void 0) {\n deviceId = null;\n }\n const acceptsAudio = this.opts.modes.indexOf('video-audio') !== -1 || this.opts.modes.indexOf('audio-only') !== -1;\n const acceptsVideo = !this.isAudioOnly() && (this.opts.modes.indexOf('video-audio') !== -1 || this.opts.modes.indexOf('video-only') !== -1 || this.opts.modes.indexOf('picture') !== -1);\n const videoConstraints = {\n ...(this.opts.videoConstraints || {}),\n ...(deviceId != null && {\n deviceId\n })\n };\n return {\n audio: acceptsAudio,\n video: acceptsVideo ? videoConstraints : false\n };\n }\n\n // eslint-disable-next-line consistent-return\n start(options) {\n var _options;\n if (options === void 0) {\n options = null;\n }\n if (!this.supportsUserMedia) {\n return Promise.reject(new Error('Webcam access not supported'));\n }\n this.webcamActive = true;\n if (this.opts.mirror) {\n _classPrivateFieldLooseBase(this, _enableMirror)[_enableMirror] = true;\n }\n const constraints = this.getConstraints((_options = options) == null ? void 0 : _options.deviceId);\n\n // TODO: add a return and/or convert this to async/await\n this.hasCameraCheck().then(hasCamera => {\n this.setPluginState({\n hasCamera\n });\n\n // ask user for access to their camera\n return this.mediaDevices.getUserMedia(constraints).then(stream => {\n this.stream = stream;\n let currentDeviceId = null;\n const tracks = this.isAudioOnly() ? stream.getAudioTracks() : stream.getVideoTracks();\n if (!options || !options.deviceId) {\n currentDeviceId = tracks[0].getSettings().deviceId;\n } else {\n tracks.forEach(track => {\n if (track.getSettings().deviceId === options.deviceId) {\n currentDeviceId = track.getSettings().deviceId;\n }\n });\n }\n\n // Update the sources now, so we can access the names.\n this.updateVideoSources();\n this.setPluginState({\n currentDeviceId,\n cameraReady: true\n });\n }).catch(err => {\n this.setPluginState({\n cameraReady: false,\n cameraError: err\n });\n this.uppy.info(err.message, 'error');\n });\n });\n }\n getMediaRecorderOptions() {\n const options = {};\n\n // Try to use the `opts.preferredVideoMimeType` or one of the `allowedFileTypes` for the recording.\n // If the browser doesn't support it, we'll fall back to the browser default instead.\n // Safari doesn't have the `isTypeSupported` API.\n if (MediaRecorder.isTypeSupported) {\n const {\n restrictions\n } = this.uppy.opts;\n let preferredVideoMimeTypes = [];\n if (this.opts.preferredVideoMimeType) {\n preferredVideoMimeTypes = [this.opts.preferredVideoMimeType];\n } else if (restrictions.allowedFileTypes) {\n preferredVideoMimeTypes = restrictions.allowedFileTypes.map(toMimeType).filter(isVideoMimeType);\n }\n const filterSupportedTypes = candidateType => MediaRecorder.isTypeSupported(candidateType) && getFileTypeExtension(candidateType);\n const acceptableMimeTypes = preferredVideoMimeTypes.filter(filterSupportedTypes);\n if (acceptableMimeTypes.length > 0) {\n // eslint-disable-next-line prefer-destructuring\n options.mimeType = acceptableMimeTypes[0];\n }\n }\n return options;\n }\n startRecording() {\n // only used if supportsMediaRecorder() returned true\n // eslint-disable-next-line compat/compat\n this.recorder = new MediaRecorder(this.stream, this.getMediaRecorderOptions());\n this.recordingChunks = [];\n let stoppingBecauseOfMaxSize = false;\n this.recorder.addEventListener('dataavailable', event => {\n this.recordingChunks.push(event.data);\n const {\n restrictions\n } = this.uppy.opts;\n if (this.recordingChunks.length > 1 && restrictions.maxFileSize != null && !stoppingBecauseOfMaxSize) {\n const totalSize = this.recordingChunks.reduce((acc, chunk) => acc + chunk.size, 0);\n // Exclude the initial chunk from the average size calculation because it is likely to be a very small outlier\n const averageChunkSize = (totalSize - this.recordingChunks[0].size) / (this.recordingChunks.length - 1);\n const expectedEndChunkSize = averageChunkSize * 3;\n const maxSize = Math.max(0, restrictions.maxFileSize - expectedEndChunkSize);\n if (totalSize > maxSize) {\n stoppingBecauseOfMaxSize = true;\n this.uppy.info(this.i18n('recordingStoppedMaxSize'), 'warning', 4000);\n this.stopRecording();\n }\n }\n });\n\n // use a \"time slice\" of 500ms: ondataavailable will be called each 500ms\n // smaller time slices mean we can more accurately check the max file size restriction\n this.recorder.start(500);\n if (this.opts.showRecordingLength) {\n // Start the recordingLengthTimer if we are showing the recording length.\n this.recordingLengthTimer = setInterval(() => {\n const currentRecordingLength = this.getPluginState().recordingLengthSeconds;\n this.setPluginState({\n recordingLengthSeconds: currentRecordingLength + 1\n });\n }, 1000);\n }\n this.setPluginState({\n isRecording: true\n });\n }\n stopRecording() {\n const stopped = new Promise(resolve => {\n this.recorder.addEventListener('stop', () => {\n resolve();\n });\n this.recorder.stop();\n if (this.opts.showRecordingLength) {\n // Stop the recordingLengthTimer if we are showing the recording length.\n clearInterval(this.recordingLengthTimer);\n this.setPluginState({\n recordingLengthSeconds: 0\n });\n }\n });\n return stopped.then(() => {\n this.setPluginState({\n isRecording: false\n });\n return this.getVideo();\n }).then(file => {\n try {\n this.capturedMediaFile = file;\n // create object url for capture result preview\n this.setPluginState({\n // eslint-disable-next-line compat/compat\n recordedVideo: URL.createObjectURL(file.data)\n });\n _classPrivateFieldLooseBase(this, _enableMirror)[_enableMirror] = false;\n } catch (err) {\n // Logging the error, exept restrictions, which is handled in Core\n if (!err.isRestriction) {\n this.uppy.log(err);\n }\n }\n }).then(() => {\n this.recordingChunks = null;\n this.recorder = null;\n }, error => {\n this.recordingChunks = null;\n this.recorder = null;\n throw error;\n });\n }\n discardRecordedVideo() {\n this.setPluginState({\n recordedVideo: null\n });\n if (this.opts.mirror) {\n _classPrivateFieldLooseBase(this, _enableMirror)[_enableMirror] = true;\n }\n this.capturedMediaFile = null;\n }\n submit() {\n try {\n if (this.capturedMediaFile) {\n this.uppy.addFile(this.capturedMediaFile);\n }\n } catch (err) {\n // Logging the error, exept restrictions, which is handled in Core\n if (!err.isRestriction) {\n this.uppy.log(err, 'error');\n }\n }\n }\n async stop() {\n if (this.stream) {\n const audioTracks = this.stream.getAudioTracks();\n const videoTracks = this.stream.getVideoTracks();\n audioTracks.concat(videoTracks).forEach(track => track.stop());\n }\n if (this.recorder) {\n await new Promise(resolve => {\n this.recorder.addEventListener('stop', resolve, {\n once: true\n });\n this.recorder.stop();\n if (this.opts.showRecordingLength) {\n clearInterval(this.recordingLengthTimer);\n }\n });\n }\n this.recordingChunks = null;\n this.recorder = null;\n this.webcamActive = false;\n this.stream = null;\n this.setPluginState({\n recordedVideo: null,\n isRecording: false,\n recordingLengthSeconds: 0\n });\n }\n getVideoElement() {\n return this.el.querySelector('.uppy-Webcam-video');\n }\n oneTwoThreeSmile() {\n return new Promise((resolve, reject) => {\n let count = this.opts.countdown;\n\n // eslint-disable-next-line consistent-return\n const countDown = setInterval(() => {\n if (!this.webcamActive) {\n clearInterval(countDown);\n this.captureInProgress = false;\n return reject(new Error('Webcam is not active'));\n }\n if (count) {\n this.uppy.info(`${count}...`, 'warning', 800);\n count--;\n } else {\n clearInterval(countDown);\n this.uppy.info(this.i18n('smile'), 'success', 1500);\n setTimeout(() => resolve(), 1500);\n }\n }, 1000);\n });\n }\n takeSnapshot() {\n if (this.captureInProgress) return;\n this.captureInProgress = true;\n this.opts.onBeforeSnapshot().catch(err => {\n const message = typeof err === 'object' ? err.message : err;\n this.uppy.info(message, 'error', 5000);\n return Promise.reject(new Error(`onBeforeSnapshot: ${message}`));\n }).then(() => {\n return this.getImage();\n }).then(tagFile => {\n this.captureInProgress = false;\n try {\n this.uppy.addFile(tagFile);\n } catch (err) {\n // Logging the error, except restrictions, which is handled in Core\n if (!err.isRestriction) {\n this.uppy.log(err);\n }\n }\n }, error => {\n this.captureInProgress = false;\n throw error;\n });\n }\n getImage() {\n const video = this.getVideoElement();\n if (!video) {\n return Promise.reject(new Error('No video element found, likely due to the Webcam tab being closed.'));\n }\n const width = video.videoWidth;\n const height = video.videoHeight;\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(video, 0, 0);\n const {\n restrictions\n } = this.uppy.opts;\n let preferredImageMimeTypes = [];\n if (this.opts.preferredImageMimeType) {\n preferredImageMimeTypes = [this.opts.preferredImageMimeType];\n } else if (restrictions.allowedFileTypes) {\n preferredImageMimeTypes = restrictions.allowedFileTypes.map(toMimeType).filter(isImageMimeType);\n }\n const mimeType = preferredImageMimeTypes[0] || 'image/jpeg';\n const ext = getFileTypeExtension(mimeType) || 'jpg';\n const name = `cam-${Date.now()}.${ext}`;\n return canvasToBlob(canvas, mimeType).then(blob => {\n return {\n source: this.id,\n name,\n data: new Blob([blob], {\n type: mimeType\n }),\n type: mimeType\n };\n });\n }\n getVideo() {\n // Sometimes in iOS Safari, Blobs (especially the first Blob in the recordingChunks Array)\n // have empty 'type' attributes (e.g. '') so we need to find a Blob that has a defined 'type'\n // attribute in order to determine the correct MIME type.\n const mimeType = this.recordingChunks.find(blob => {\n var _blob$type;\n return ((_blob$type = blob.type) == null ? void 0 : _blob$type.length) > 0;\n }).type;\n const fileExtension = getFileTypeExtension(mimeType);\n if (!fileExtension) {\n return Promise.reject(new Error(`Could not retrieve recording: Unsupported media type \"${mimeType}\"`));\n }\n const name = `webcam-${Date.now()}.${fileExtension}`;\n const blob = new Blob(this.recordingChunks, {\n type: mimeType\n });\n const file = {\n source: this.id,\n name,\n data: new Blob([blob], {\n type: mimeType\n }),\n type: mimeType\n };\n return Promise.resolve(file);\n }\n focus() {\n if (!this.opts.countdown) return;\n setTimeout(() => {\n this.uppy.info(this.i18n('smile'), 'success', 1500);\n }, 1000);\n }\n changeVideoSource(deviceId) {\n this.stop();\n this.start({\n deviceId\n });\n }\n updateVideoSources() {\n this.mediaDevices.enumerateDevices().then(devices => {\n this.setPluginState({\n videoSources: devices.filter(device => device.kind === 'videoinput')\n });\n });\n }\n render() {\n if (!this.webcamActive) {\n this.start();\n }\n const webcamState = this.getPluginState();\n if (!webcamState.cameraReady || !webcamState.hasCamera) {\n return h(PermissionsScreen, {\n icon: CameraIcon,\n i18n: this.i18n,\n hasCamera: webcamState.hasCamera\n });\n }\n return h(CameraScreen\n // eslint-disable-next-line react/jsx-props-no-spreading\n , _extends({}, webcamState, {\n onChangeVideoSource: this.changeVideoSource,\n onSnapshot: this.takeSnapshot,\n onStartRecording: this.startRecording,\n onStopRecording: this.stopRecording,\n onDiscardRecordedVideo: this.discardRecordedVideo,\n onSubmit: this.submit,\n onFocus: this.focus,\n onStop: this.stop,\n i18n: this.i18n,\n modes: this.opts.modes,\n showRecordingLength: this.opts.showRecordingLength,\n showVideoSourceDropdown: this.opts.showVideoSourceDropdown,\n supportsRecording: supportsMediaRecorder(),\n recording: webcamState.isRecording,\n mirror: _classPrivateFieldLooseBase(this, _enableMirror)[_enableMirror],\n src: this.stream\n }));\n }\n install() {\n const {\n mobileNativeCamera,\n modes,\n videoConstraints\n } = this.opts;\n const {\n target\n } = this.opts;\n if (mobileNativeCamera && target) {\n var _this$getTargetPlugin;\n (_this$getTargetPlugin = this.getTargetPlugin(target)) == null || _this$getTargetPlugin.setOptions({\n showNativeVideoCameraButton: isModeAvailable(modes, 'video-only') || isModeAvailable(modes, 'video-audio'),\n showNativePhotoCameraButton: isModeAvailable(modes, 'picture'),\n nativeCameraFacingMode: videoConstraints == null ? void 0 : videoConstraints.facingMode\n });\n return;\n }\n this.setPluginState({\n cameraReady: false,\n recordingLengthSeconds: 0\n });\n if (target) {\n this.mount(target, this);\n }\n if (this.mediaDevices) {\n this.updateVideoSources();\n this.mediaDevices.ondevicechange = () => {\n this.updateVideoSources();\n if (this.stream) {\n let restartStream = true;\n const {\n videoSources,\n currentDeviceId\n } = this.getPluginState();\n videoSources.forEach(videoSource => {\n if (currentDeviceId === videoSource.deviceId) {\n restartStream = false;\n }\n });\n if (restartStream) {\n this.stop();\n this.start();\n }\n }\n };\n }\n }\n uninstall() {\n this.stop();\n this.unmount();\n }\n onUnmount() {\n this.stop();\n }\n}\nWebcam.VERSION = packageJson.version;", "/**\n * Save a <canvas> element's content to a Blob object.\n *\n * @param {HTMLCanvasElement} canvas\n * @returns {Promise}\n */\nexport default function canvasToBlob(canvas, type, quality) {\n return new Promise(resolve => {\n canvas.toBlob(resolve, type, quality);\n });\n}", "export default function supportsMediaRecorder() {\n /* eslint-disable compat/compat */\n return typeof MediaRecorder === 'function' && !!MediaRecorder.prototype && typeof MediaRecorder.prototype.start === 'function';\n /* eslint-enable compat/compat */\n}", "import { h } from 'preact';\nexport default function CameraIcon() {\n return h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n fill: \"#0097DC\",\n width: \"66\",\n height: \"55\",\n viewBox: \"0 0 66 55\"\n }, h(\"path\", {\n d: \"M57.3 8.433c4.59 0 8.1 3.51 8.1 8.1v29.7c0 4.59-3.51 8.1-8.1 8.1H8.7c-4.59 0-8.1-3.51-8.1-8.1v-29.7c0-4.59 3.51-8.1 8.1-8.1h9.45l4.59-7.02c.54-.54 1.35-1.08 2.16-1.08h16.2c.81 0 1.62.54 2.16 1.08l4.59 7.02h9.45zM33 14.64c-8.62 0-15.393 6.773-15.393 15.393 0 8.62 6.773 15.393 15.393 15.393 8.62 0 15.393-6.773 15.393-15.393 0-8.62-6.773-15.393-15.393-15.393zM33 40c-5.648 0-9.966-4.319-9.966-9.967 0-5.647 4.318-9.966 9.966-9.966s9.966 4.319 9.966 9.966C42.966 35.681 38.648 40 33 40z\",\n fillRule: \"evenodd\"\n }));\n}", "import { h } from 'preact';\nimport CameraIcon from \"./CameraIcon.js\";\nexport default function SnapshotButton(_ref) {\n let {\n onSnapshot,\n i18n\n } = _ref;\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--picture\",\n type: \"button\",\n title: i18n('takePicture'),\n \"aria-label\": i18n('takePicture'),\n onClick: onSnapshot,\n \"data-uppy-super-focusable\": true\n }, CameraIcon());\n}", "import { h } from 'preact';\nexport default function RecordButton(_ref) {\n let {\n recording,\n onStartRecording,\n onStopRecording,\n i18n\n } = _ref;\n if (recording) {\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Webcam-button\",\n type: \"button\",\n title: i18n('stopRecording'),\n \"aria-label\": i18n('stopRecording'),\n onClick: onStopRecording,\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"100\",\n height: \"100\",\n viewBox: \"0 0 100 100\"\n }, h(\"rect\", {\n x: \"15\",\n y: \"15\",\n width: \"70\",\n height: \"70\"\n })));\n }\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Webcam-button\",\n type: \"button\",\n title: i18n('startRecording'),\n \"aria-label\": i18n('startRecording'),\n onClick: onStartRecording,\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\",\n width: \"100\",\n height: \"100\",\n viewBox: \"0 0 100 100\"\n }, h(\"circle\", {\n cx: \"50\",\n cy: \"50\",\n r: \"40\"\n })));\n}", "/**\n * Takes an Integer value of seconds (e.g. 83) and converts it into a human-readable formatted string (e.g. '1:23').\n *\n */\nexport default function formatSeconds(seconds) {\n return `${Math.floor(seconds / 60)}:${String(seconds % 60).padStart(2, '0')}`;\n}", "import { h } from 'preact';\nimport formatSeconds from \"./formatSeconds.js\";\nexport default function RecordingLength(_ref) {\n let {\n recordingLengthSeconds,\n i18n\n } = _ref;\n const formattedRecordingLengthSeconds = formatSeconds(recordingLengthSeconds);\n return h(\"span\", {\n \"aria-label\": i18n('recordingLength', {\n recording_length: formattedRecordingLengthSeconds\n })\n }, formattedRecordingLengthSeconds);\n}", "import { h } from 'preact';\nexport default function VideoSourceSelect(_ref) {\n let {\n currentDeviceId,\n videoSources,\n onChangeVideoSource\n } = _ref;\n return h(\"div\", {\n className: \"uppy-Webcam-videoSource\"\n }, h(\"select\", {\n className: \"uppy-u-reset uppy-Webcam-videoSource-select\",\n onChange: event => {\n onChangeVideoSource(event.target.value);\n }\n }, videoSources.map(videoSource => h(\"option\", {\n key: videoSource.deviceId,\n value: videoSource.deviceId,\n selected: videoSource.deviceId === currentDeviceId\n }, videoSource.label))));\n}", "import { h } from 'preact';\nfunction SubmitButton(_ref) {\n let {\n onSubmit,\n i18n\n } = _ref;\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--submit\",\n type: \"button\",\n title: i18n('submitRecordedFile'),\n \"aria-label\": i18n('submitRecordedFile'),\n onClick: onSubmit,\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n width: \"12\",\n height: \"9\",\n viewBox: \"0 0 12 9\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\"\n }, h(\"path\", {\n fill: \"#fff\",\n fillRule: \"nonzero\",\n d: \"M10.66 0L12 1.31 4.136 9 0 4.956l1.34-1.31L4.136 6.38z\"\n })));\n}\nexport default SubmitButton;", "import { h } from 'preact';\nfunction DiscardButton(_ref) {\n let {\n onDiscard,\n i18n\n } = _ref;\n return h(\"button\", {\n className: \"uppy-u-reset uppy-c-btn uppy-Webcam-button uppy-Webcam-button--discard\",\n type: \"button\",\n title: i18n('discardRecordedFile'),\n \"aria-label\": i18n('discardRecordedFile'),\n onClick: onDiscard,\n \"data-uppy-super-focusable\": true\n }, h(\"svg\", {\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 13 13\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n className: \"uppy-c-icon\"\n }, h(\"g\", {\n fill: \"#FFF\",\n fillRule: \"evenodd\"\n }, h(\"path\", {\n d: \"M.496 11.367L11.103.76l1.414 1.414L1.911 12.781z\"\n }), h(\"path\", {\n d: \"M11.104 12.782L.497 2.175 1.911.76l10.607 10.606z\"\n }))));\n}\nexport default DiscardButton;", "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 jsx-a11y/media-has-caption */\n\nimport { h, Component } from 'preact';\nimport SnapshotButton from \"./SnapshotButton.js\";\nimport RecordButton from \"./RecordButton.js\";\nimport RecordingLength from \"./RecordingLength.js\";\nimport VideoSourceSelect from \"./VideoSourceSelect.js\";\nimport SubmitButton from \"./SubmitButton.js\";\nimport DiscardButton from \"./DiscardButton.js\";\nfunction isModeAvailable(modes, mode) {\n return modes.includes(mode);\n}\nclass CameraScreen extends Component {\n componentDidMount() {\n const {\n onFocus\n } = this.props;\n onFocus();\n }\n componentWillUnmount() {\n const {\n onStop\n } = this.props;\n onStop();\n }\n render() {\n const {\n src,\n recordedVideo,\n recording,\n modes,\n supportsRecording,\n videoSources,\n showVideoSourceDropdown,\n showRecordingLength,\n onSubmit,\n i18n,\n mirror,\n onSnapshot,\n onStartRecording,\n onStopRecording,\n onDiscardRecordedVideo,\n recordingLengthSeconds\n } = this.props;\n const hasRecordedVideo = !!recordedVideo;\n const shouldShowRecordButton = !hasRecordedVideo && supportsRecording && (isModeAvailable(modes, 'video-only') || isModeAvailable(modes, 'audio-only') || isModeAvailable(modes, 'video-audio'));\n const shouldShowSnapshotButton = !hasRecordedVideo && isModeAvailable(modes, 'picture');\n const shouldShowRecordingLength = supportsRecording && showRecordingLength && !hasRecordedVideo;\n const shouldShowVideoSourceDropdown = showVideoSourceDropdown && videoSources && videoSources.length > 1;\n const videoProps = {\n playsInline: true\n };\n if (recordedVideo) {\n videoProps.muted = false;\n videoProps.controls = true;\n videoProps.src = recordedVideo;\n\n // reset srcObject in dom. If not resetted, stream sticks in element\n if (this.videoElement) {\n this.videoElement.srcObject = null;\n }\n } else {\n videoProps.muted = true;\n videoProps.autoPlay = true;\n // @ts-expect-error srcObject does not exist on <video> props\n videoProps.srcObject = src;\n }\n return h(\"div\", {\n className: \"uppy uppy-Webcam-container\"\n }, h(\"div\", {\n className: \"uppy-Webcam-videoContainer\"\n }, h(\"video\", _extends({\n /* eslint-disable-next-line no-return-assign */\n ref: videoElement => this.videoElement = videoElement,\n className: `uppy-Webcam-video ${mirror ? 'uppy-Webcam-video--mirrored' : ''}`\n /* eslint-disable-next-line react/jsx-props-no-spreading */\n }, videoProps))), h(\"div\", {\n className: \"uppy-Webcam-footer\"\n }, h(\"div\", {\n className: \"uppy-Webcam-videoSourceContainer\"\n }, shouldShowVideoSourceDropdown ? VideoSourceSelect(this.props) : null), h(\"div\", {\n className: \"uppy-Webcam-buttonContainer\"\n }, shouldShowSnapshotButton && h(SnapshotButton, {\n onSnapshot: onSnapshot,\n i18n: i18n\n }), shouldShowRecordButton && h(RecordButton, {\n recording: recording,\n onStartRecording: onStartRecording,\n onStopRecording: onStopRecording,\n i18n: i18n\n }), hasRecordedVideo && h(SubmitButton, {\n onSubmit: onSubmit,\n i18n: i18n\n }), hasRecordedVideo && h(DiscardButton, {\n onDiscard: onDiscardRecordedVideo,\n i18n: i18n\n })), h(\"div\", {\n className: \"uppy-Webcam-recordingLength\"\n }, shouldShowRecordingLength && h(RecordingLength, {\n recordingLengthSeconds: recordingLengthSeconds,\n i18n: i18n\n }))));\n }\n}\nexport default CameraScreen;", "import { h } from 'preact';\nexport default function PermissionsScreen(_ref) {\n let {\n icon,\n i18n,\n hasCamera\n } = _ref;\n return h(\"div\", {\n className: \"uppy-Webcam-permissons\"\n }, h(\"div\", {\n className: \"uppy-Webcam-permissonsIcon\"\n }, icon()), h(\"div\", {\n className: \"uppy-Webcam-title\"\n }, hasCamera ? i18n('allowAccessTitle') : i18n('noCameraTitle')), h(\"p\", null, hasCamera ? i18n('allowAccessDescription') : i18n('noCameraDescription')));\n}", "export default {\n strings: {\n pluginNameCamera: 'Camera',\n noCameraTitle: 'Camera Not Available',\n noCameraDescription: 'In order to take pictures or record video, please connect a camera device',\n recordingStoppedMaxSize: 'Recording stopped because the file size is about to exceed the limit',\n submitRecordedFile: 'Submit recorded file',\n discardRecordedFile: 'Discard recorded file',\n // Shown before a picture is taken when the `countdown` option is set.\n smile: 'Smile!',\n // Used as the label for the button that takes a picture.\n // This is not visibly rendered but is picked up by screen readers.\n takePicture: 'Take a picture',\n // Used as the label for the button that starts a video recording.\n // This is not visibly rendered but is picked up by screen readers.\n startRecording: 'Begin video recording',\n // Used as the label for the button that stops a video recording.\n // This is not visibly rendered but is picked up by screen readers.\n stopRecording: 'Stop video recording',\n // Used as the label for the recording length counter. See the showRecordingLength option.\n // This is not visibly rendered but is picked up by screen readers.\n recordingLength: 'Recording length %{recording_length}',\n // Title on the \u201Callow access\u201D screen\n allowAccessTitle: 'Please allow access to your camera',\n // Description on the \u201Callow access\u201D screen\n allowAccessDescription: 'In order to take pictures or record video with your camera, please allow camera access for this site.'\n }\n};", "import { Controller } from \"@hotwired/stimulus\";\nimport Uppy from \"@uppy/core\";\nimport Dashboard from \"@uppy/dashboard\";\nimport Webcam from \"@uppy/webcam\";\nimport ActiveStorageUpload from \"@excid3/uppy-activestorage-upload\";\nimport ThumbnailGenerator from \"@uppy/thumbnail-generator\";\n\nexport default class extends Controller {\n static values = {\n title: String,\n browse: String,\n myDevice: String,\n camera: String,\n noCamera: String,\n noCameraDescription: String,\n importFrom: String,\n cancel: String,\n uploading: String,\n service: { type: String, default: \"ephemeral_gcs\" },\n multipleUploads: { type: Boolean, default: false },\n activeCamera: { type: Boolean, default: true },\n maxFiles: { type: Number, default: 1 },\n maxFileSize: { type: Number, default: 51200000 },\n allowedFileTypes: { type: Array, default: [\"image/*\", \"application/pdf\"] }\n };\n\n static targets = [\n \"form\",\n \"fileInput\",\n \"uploadWrapper\",\n \"uploadedButton\",\n \"fileName\",\n \"previewContainer\",\n \"previewImage\",\n \"trashDiv\"\n ];\n\n connect() {\n const directUploadUrl = document.querySelector('meta[name=\"direct-upload-url\"]').content;\n const uppy = this.#initializeUppy();\n\n this.#configureDashboard(uppy);\n this.#configureActiveStorage(uppy, directUploadUrl);\n this.#configureThumbnails(uppy);\n this.#configureWebcam(uppy);\n this.#setupEventListeners(uppy);\n }\n\n #initializeUppy() {\n return new Uppy({\n autoProceed: true,\n allowMultipleUploads: this.multipleUploadsValue,\n restrictions: {\n maxNumberOfFiles: this.maxFilesValue,\n maxFileSize: this.maxFileSizeValue,\n allowedFileTypes: this.allowedFileTypesValue\n }\n });\n }\n\n #configureDashboard(uppy) {\n uppy.use(Dashboard, {\n trigger: \"#file-upload\",\n proudlyDisplayPoweredByUppy: false,\n showSelectedFiles: this.multipleUploadsValue,\n closeAfterFinish: true,\n locale: {\n strings: {\n dropPasteImportFiles: this.titleValue,\n browseFiles: this.browseValue,\n myDevice: this.myDeviceValue,\n importFrom: this.importFromValue,\n cancel: this.cancelValue,\n uploadComplete: \"Upload complete.\",\n uploadingXFiles: {\n 0: this.uploadingValue,\n 1: this.uploadingValue\n }\n }\n }\n });\n }\n\n #configureActiveStorage(uppy, directUploadUrl) {\n uppy.use(ActiveStorageUpload, { directUploadUrl: `${directUploadUrl}?service=${this.serviceValue}` });\n }\n\n #configureThumbnails(uppy) {\n uppy.use(ThumbnailGenerator, {\n thumbnailWidth: 200,\n waitForThumbnailsBeforeUpload: false\n });\n }\n\n #configureWebcam(uppy) {\n if (!this.activeCameraValue) return;\n\n uppy.use(Webcam, {\n target: Dashboard,\n modes: [\"picture\"],\n title: this.cameraValue,\n preferredImageMimeType: \"image/png\",\n locale: {\n strings: {\n noCameraTitle: this.noCameraValue,\n noCameraDescription: this.noCameraDescriptionValue\n }\n }\n });\n }\n\n #setupEventListeners(uppy) {\n uppy.on(\"complete\", (result) => {\n const files = result.successful;\n if (files.length > 0) {\n this.#handleSuccessfulUpload(files, uppy);\n this.#setPreview(files);\n }\n });\n }\n\n #handleSuccessfulUpload(files, uppy) {\n if (this.multipleUploadsValue) {\n files.forEach((file) => {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = this.fileInputTarget.name;\n input.value = file.response.signed_id;\n this.fileInputTarget.parentNode.appendChild(input);\n });\n } else {\n this.fileInputTarget.value = files[0].response.signed_id;\n }\n\n if (!this.multipleUploadsValue) {\n this.uploadWrapperTarget.style.display = \"none\";\n }\n\n this.uploadedButtonTarget.style.display = \"flex\";\n\n if (this.hasFileNameTarget) {\n this.fileNameTarget.innerText = files.length > 1 ? `${files.length} files selected` : files[0].name;\n }\n\n if (this.hasTrashDivTarget) {\n this.trashDivTarget.addEventListener(\"click\", this.#handleCancelUpload(uppy));\n this.trashDivTarget.style.display = \"block\";\n }\n }\n\n #setPreview(files) {\n if (!this.hasPreviewContainerTarget) return;\n\n files.forEach((file) => {\n const img = document.createElement(\"img\");\n if (file.preview) {\n img.src = file.preview;\n } else {\n img.src = imagePath(\"./file-icon.png\");\n }\n\n // Copy all classes except 'hidden' from the template image\n const classesToAdd = Array.from(this.previewImageTarget.classList).filter((cls) => cls !== \"hidden\");\n img.classList.add(...classesToAdd);\n\n this.previewContainerTarget.appendChild(img);\n });\n\n // Hide the preview image template\n this.previewImageTarget.classList.add(\"hidden\");\n }\n\n #handleCancelUpload(uppy) {\n return () => {\n this.uploadWrapperTarget.style.display = \"block\";\n this.uploadedButtonTarget.style.display = \"none\";\n this.fileInputTarget.value = \"\";\n uppy.clear();\n };\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// ! TODO: Check with @lorrydriveloper if we can reuse this controller,\n// ! since I'm almost duplicating the arrow navigation logic existing in\n// ! app/javascript/controller/dashboard_controllers/combobox_controller.js\nexport default class extends Controller {\n static targets = [\"listbox\", \"option\", \"current\"];\n static values = { expanded: String, collapsed: String };\n\n connect() {\n this.selectedIndex = -1;\n document.addEventListener(\"keydown\", this.handleKeydown.bind(this));\n document.addEventListener(\"click\", this.removeFocus.bind(this));\n }\n\n disconnect() {\n document.removeEventListener(\"keydown\", this.handleKeydown.bind(this));\n document.removeEventListener(\"click\", this.removeFocus.bind(this));\n }\n\n handleKeydown(event) {\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n this.moveFocus(1);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n this.moveFocus(-1);\n break;\n case \"Enter\":\n event.preventDefault();\n this.selectOption(event);\n break;\n case \"Escape\":\n event.preventDefault();\n this.toggleBlur(event);\n break;\n default:\n break;\n }\n }\n\n moveFocus(direction) {\n const options = this.optionTargets;\n this.selectedIndex = (this.selectedIndex + direction + options.length) % options.length;\n\n options.forEach((option, index) => {\n if (index === this.selectedIndex) {\n option.classList.add(\"select-box__option_selected\");\n option.setAttribute(\"aria-selected\", \"true\");\n option.scrollIntoView({ block: \"nearest\" });\n } else {\n option.classList.remove(\"select-box__option_selected\");\n option.setAttribute(\"aria-selected\", \"false\");\n }\n });\n }\n\n selectOption(event) {\n if (this.selectedIndex >= 0) {\n const selectedOption = this.optionTargets[this.selectedIndex];\n selectedOption.click();\n this.toggleBlur(event);\n }\n }\n\n toggleBlur(event) {\n event.stopPropagation();\n const element = this.currentTarget || this.optionTargets[this.selectedIndex];\n const isActive = element.classList.contains(\"focus--active\");\n\n if (!isActive) {\n element.classList.add(\"focus--active\");\n element.setAttribute(\"aria-live\", \"polite\");\n element.setAttribute(\"aria-label\", this.expandedValue);\n } else {\n element.classList.remove(\"focus--active\");\n element.setAttribute(\"aria-live\", \"polite\");\n element.setAttribute(\"aria-label\", this.collapsedValue);\n element.blur();\n }\n }\n\n removeFocus(event) {\n if (!this.element.contains(event.target)) {\n this.currentTarget.classList.remove(\"focus--active\");\n this.currentTarget.setAttribute(\"aria-live\", \"polite\");\n this.currentTarget.setAttribute(\"aria-label\", this.collapsedValue);\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nconst TTL = 3600000; // 1 hour\n\nexport default class extends Controller {\n static values = { key: { type: String, default: \"none\" }, brand: { type: String, default: \"none\" }, src: String };\n\n connect() {\n setTimeout(() => {\n this.#handleElement();\n }, 200);\n }\n\n getLocalStorageValue() {\n try {\n const json = JSON.parse(localStorage.getItem(this.keyValue));\n const brandData = json[this.brandValue];\n const expired = Date.now() > (brandData?.updated_at + brandData?.ttl || 0);\n return expired ? \"\" : brandData.data;\n } catch (error) {\n console.log(\"[gocertify] Error:\", error);\n return \"\";\n }\n }\n\n getParamsValue() {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has(this.keyValue)) {\n const val = urlParams.get(this.keyValue);\n this.setStorageForBrand(val);\n return val;\n }\n }\n\n setStorageForBrand(value) {\n const previousParams = JSON.parse(localStorage.getItem(this.keyValue)) || {};\n const newEntry = { [this.brandValue]: { data: value, updated_at: Date.now(), ttl: TTL } };\n localStorage.setItem(this.keyValue, JSON.stringify({ ...previousParams, ...newEntry }));\n }\n\n #handleAnchor() {\n const value = this.getParamsValue() || this.getLocalStorageValue();\n if (value) {\n const url = new URL(this.element.href);\n const params = new URLSearchParams(url.search);\n params.append(this.keyValue, value);\n url.search = params.toString();\n this.element.href = url.toString();\n }\n }\n\n #handleForm() {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = this.keyValue;\n this.element.prepend(input);\n const value = this.getParamsValue() || this.getLocalStorageValue();\n if (value) {\n input.value = value;\n } else {\n this.element.removeChild(input);\n }\n }\n\n #handleTurboFrame() {\n const value = this.getParamsValue() || this.getLocalStorageValue();\n let url = new URL(this.srcValue, window.location.origin);\n if (value) {\n const params = new URLSearchParams(url.search);\n params.append(this.keyValue, value);\n url.search = params.toString();\n }\n this.element.setAttribute(\"src\", url.pathname + url.search);\n }\n\n #handleElement() {\n switch (this.element.tagName) {\n case \"A\":\n this.#handleAnchor();\n break;\n case \"FORM\":\n this.#handleForm();\n break;\n case \"TURBO-FRAME\":\n this.#handleTurboFrame();\n break;\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { copyToClipboard, isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static values = { redirectTo: String };\n static targets = [\"copied\", \"copyBtn\", \"couponCode\", \"redirectToFallback\"];\n\n connect() {\n if (this.redirectToValue) {\n if (window.open(this.redirectToValue, \"_blank\")) {\n } else {\n if (this.hasRedirectToFallbackTarget) {\n this.redirectToFallbackTarget.classList.remove(\"hidden\");\n const loader = document.getElementsByClassName(\"loader\")[0];\n loader.style = \"min-height: 5em;\";\n const loaderDecorators = document.getElementsByClassName(\"loader__decoration\");\n for (let i = 0; i < loaderDecorators.length; i++) {\n loaderDecorators[i].classList.add(\"hidden\");\n }\n }\n }\n }\n }\n\n copyAndGo(event) {\n event.preventDefault();\n if (!!event.target.dataset.placementToken && !!event.target.dataset.originUrl) {\n this.#originUrlInNewTab(event);\n } else {\n this.#defaultInNewTab();\n }\n }\n\n #originUrlInNewTab(event) {\n const originUrl = new URL(event.target.dataset.originUrl);\n const params = new URLSearchParams(originUrl.search);\n const placementToken = event.target.dataset.placementToken;\n const couponCode = event.target.dataset.couponCode;\n const revealCampaign = event.target.dataset.revealCampaign;\n params.append(\"gc_coupon_code\", couponCode);\n params.append(\"gc_placement\", placementToken);\n copyToClipboard(couponCode);\n originUrl.search = params.toString();\n const url = event.target.href;\n const originUrlString = originUrl.toString();\n if (isIframe()) {\n window.parent.postMessage(\n { command: \"placementFlow\", link: url, originUrl: originUrlString, revealCampaign: revealCampaign },\n \"*\"\n );\n } else {\n if (revealCampaign !== \"true\" && window.open(originUrlString, \"_blank\")) {\n window.location = url;\n } else {\n window.location = originUrlString;\n }\n }\n }\n\n #defaultInNewTab() {\n let href = this.copyBtnTarget.href;\n if (href && href.match(/::\\w+::/)) {\n href = href.replace(\"::url::\", encodeURIComponent(location)).replace(\"::unencoded_url::\", location);\n }\n copyToClipboard(this.couponCodeTarget.innerText);\n if (this.hasCopiedTarget) {\n this.copiedTarget.classList.remove(\"hidden\");\n }\n\n if (window.open(href, \"_blank\")) {\n if (this.copyBtnTarget.dataset.alternateText) {\n this.copyBtnTarget.innerText = this.copyBtnTarget.dataset.alternateText;\n }\n this.couponCodeTarget.classList.remove(\"disable-select\");\n }\n }\n}\n", "export function debounce(callback, wait) {\n let timeout;\n return (...args) => {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n callback.apply(this, args);\n }, wait);\n };\n}\n\nexport function isMobile() {\n let check = false;\n (function (a) {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor || window.opera);\n return check;\n}\n\nexport function isIframe() {\n return window.self != window.top;\n}\n\nexport function copyToClipboard(text) {\n navigator.clipboard.writeText(text).catch((error) => {\n console.warn(\"[gocertify] Failed to copy to clipboard using Clipboard API:\", error.message);\n const textarea = document.createElement(\"textarea\");\n textarea.textContent = text;\n textarea.setAttribute(\"readonly\", \"\");\n textarea.style.position = \"absolute\";\n textarea.style.left = \"-9999px\";\n document.body.appendChild(textarea);\n const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;\n textarea.select();\n try {\n document.execCommand(\"copy\");\n console.log(\"[gocertify] Successfully copied to clipboard using document.execCommand('copy')\");\n } catch (error) {\n console.error(\"[gocertify] Failed to copy to clipboard using document.execCommand('copy'):\", error.message);\n } finally {\n document.body.removeChild(textarea);\n if (selected) {\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(selected);\n }\n }\n });\n}\n\nexport function initializeIframeResize(target, onResize) {\n const observer = new ResizeObserver(() => onResize());\n observer.observe(target);\n\n window.addEventListener(\"message\", (event) => {\n if (event.data.command != \"getResizeValue\") return;\n\n const iframeId = event.data.iframeId;\n\n if (iframeId) {\n const height = Math.max(target.scrollHeight, target.offsetHeight);\n const message = { command: \"applyResize\", height: { iframeId, height } };\n window.parent.postMessage(message, \"*\");\n }\n });\n\n return observer;\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isMobile } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"personalEmailInput\", \"mobileNumberInput\", \"optinCheckbox\", \"submit\"];\n static values = {\n emailRequired: Boolean,\n emailDone: String,\n mobileNumberRequired: Boolean\n };\n\n connect() {\n this.emailRegex = /^([^@\\s]+)@((?:[-a-z0-9]+\\.)+[a-z]{2,})$/i;\n this.mobileRegex = /^\\+?[0-9\\s-]+$/;\n if (this.hasPersonalEmailInputTarget && !isMobile()) {\n this.personalEmailInputTarget.focus();\n }\n this.updateSubmitButton();\n this.checkForCustomFieldsRequire();\n }\n\n updateSubmitButton() {\n this.submitTarget.disabled = this.mainConditions;\n }\n\n checkForCustomFieldsRequire() {\n this.intervalId = setInterval(() => {\n const requiredFields = document.querySelectorAll(\"[data-data-collection-field-valid-value]\");\n const customFieldValid = Array.from(requiredFields).every(\n (field) => field.dataset.dataCollectionFieldValidValue === \"true\"\n );\n this.submitTarget.disabled = !(customFieldValid && !this.mainConditions);\n }, 100);\n }\n\n get mainConditions() {\n const conditions = [\n this.hasOptinCheckboxTarget && !this.optinCheckboxTarget.checked,\n this.emailRequiredValue && this.hasPersonalEmailInputTarget && this.personalEmailInputTarget.value === \"\",\n this.emailRequiredValue &&\n this.hasPersonalEmailInputTarget &&\n !this.emailRegex.test(this.personalEmailInputTarget.value.trim()),\n this.hasPersonalEmailInputTarget &&\n this.personalEmailInputTarget.value !== \"\" &&\n !this.emailRegex.test(this.personalEmailInputTarget.value.trim()),\n this.emailRequiredValue && this.hasshareMobileNumberCheckboxTarget,\n this.mobileNumberRequiredValue &&\n this.hasMobileNumberInputTarget &&\n (this.mobileNumberInputTarget.value === \"\" || !this.mobileRegex.test(this.mobileNumberInputTarget.value.trim()))\n ];\n return conditions.some((condition) => condition);\n }\n\n disconnect() {\n clearInterval(this.intervalId);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = {\n valid: Boolean,\n required: Boolean\n };\n\n connect() {\n this.validate();\n }\n\n validate() {\n switch (this.element.type) {\n case \"radio\":\n this.#validateRadioGroup();\n break;\n case \"checkbox\":\n this.#validateCheckboxGroup();\n break;\n default:\n this.#validateTextField();\n }\n }\n\n #validateRadioGroup() {\n const name = this.element.name;\n const isChecked = document.querySelector(`input[name=\"${name}\"]:checked`) !== null;\n this.validValue = isChecked;\n\n document.querySelectorAll(`input[name=\"${name}\"]`).forEach((radio) => {\n radio.dataset.dataCollectionFieldValidValue = isChecked;\n });\n }\n\n #validateCheckboxGroup() {\n const name = this.element.name;\n const checkboxes = document.querySelectorAll(`input[name=\"${name}\"]`);\n const isAnyChecked = Array.from(checkboxes).some((cb) => cb.checked);\n this.validValue = !this.requiredValue || isAnyChecked;\n\n checkboxes.forEach((checkbox) => {\n checkbox.dataset.dataCollectionFieldValidValue = this.validValue;\n });\n }\n\n #validateTextField() {\n this.validValue = !this.requiredValue || this.element.value.trim() !== \"\";\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n window.addEventListener(\"load\", () => {\n const path = window.location.pathname;\n this.sendNotFoundEvent();\n });\n }\n\n sendNotFoundEvent() {\n try {\n window.pirsch(\"404 Page Not Found\", {\n meta: {\n path: location.pathname,\n },\n });\n } catch (error) {\n console.log(\"Pirsch not found event not sent\", error);\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n toggle(event){\n if(event.currentTarget.classList.contains('accordion-item-closed')){\n event.currentTarget.classList.remove('accordion-item-closed')\n event.currentTarget.classList.add('accordion-item-open')\n } else {\n event.currentTarget.classList.remove('accordion-item-open')\n event.currentTarget.classList.add('accordion-item-closed')\n }\n }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n request(event) {\n event.preventDefault();\n const element = event.currentTarget;\n const method = element.dataset.method || \"GET\";\n\n fetch(element.dataset.url, {\n method: method,\n headers: {\n Accept: \"text/vnd.turbo-stream.html\"\n }\n })\n .then((response) => response.text())\n .then((html) => {\n Turbo.renderStreamMessage(html);\n });\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static targets = [ 'form', 'submitButton' ]\n\n submit(event){\n if (this.formTarget.checkValidity() === false) {\n event.preventDefault()\n event.stopPropagation()\n } else {\n this.submitButtonTarget.disabled = true\n this.submitButtonTarget.innerHTML = `<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='40px' height='40px' viewBox='0 0 40 40' enable-background='new 0 0 40 40' xml:space='preserve'>\n <path opacity='0.2' fill='#fff' d='M20.201,5.169c-8.254,0-14.946,6.692-14.946,14.946c0,8.255,6.692,14.946,14.946,14.946\n s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.749c-6.425,0-11.634-5.208-11.634-11.634\n c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z'/>\n <path fill='#fff' d='M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0\n C22.32,8.481,24.301,9.057,26.013,10.047z'>\n <animateTransform attributeType='xml'\n attributeName='transform'\n type='rotate'\n from='0 20 20'\n to='360 20 20'\n dur='0.8s'\n repeatCount='indefinite'/>\n </path>\n </svg>`\n return true\n }\n this.formTarget.classList.add('was-validated')\n }\n}", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static values = { endDate: String, hideInfoText: String };\n static targets = [\"description\", \"moreInfoLabel\", \"moreInfoIcon\", \"terms\", \"expirationLabel\"];\n\n connect() {\n this._moreInfoLabel = this.moreInfoLabelTarget.innerText;\n }\n\n toggleMoreInfo(event) {\n event.preventDefault();\n if (this.termsTarget.classList.contains(\"gc-max-h-0\")) {\n // Open the terms\n this.moreInfoLabelTarget.innerText = this.hideInfoTextValue;\n this.descriptionTarget.classList.remove(\"gc-md-line-clamp-2\");\n this.descriptionTarget.classList.add(\"gc-md-block\");\n this.termsTarget.style = `max-height: ${this.termsTarget.scrollHeight}px`;\n } else {\n // Close the terms\n this.moreInfoLabelTarget.innerText = this._moreInfoLabel;\n this.termsTarget.style = \"\";\n setTimeout(() => {\n this.descriptionTarget.classList.add(\"gc-md-line-clamp-2\");\n this.descriptionTarget.classList.remove(\"gc-md-block\");\n }, 200);\n }\n this.termsTarget.classList.toggle(\"gc-max-h-0\");\n this.moreInfoIconTarget.classList.toggle(\"rotate-180\");\n }\n\n go(event) {\n if (!event.params.withPopup) return true;\n\n event.preventDefault();\n event.stopPropagation();\n\n const reference = this.#getReference(event);\n const root = event.currentTarget.getRootNode();\n const eventName = this.#getEventName(event);\n\n const originUrlInput = root.getElementById(\"origin-url-input\").value;\n\n // If it's an internal campaign, we just dispatch the event to open it inside the native popup\n if (event.params.campaignType === \"verified\") {\n this.#dispatchEvent(eventName, reference);\n return true;\n }\n\n if (isIframe() && originUrlInput.length > 0) {\n const originUrl = new URL(originUrlInput);\n const currentPath = document.location.pathname;\n originUrl.searchParams.set(\"gc_loc\", encodeURIComponent(`${currentPath}?gc_popup=${reference}`));\n\n if (sessionStorage.getItem(\"gc_affiliate_enabled\") == \"true\") {\n // We already dropped a cookie, so we just open the popup\n // with the coupon code\n const msg1 = { command: \"redirect\", link: originUrl.href };\n window.parent.postMessage(msg1, \"*\");\n } else {\n // We set the gc_affiliate_enabled as true (for the next click)\n sessionStorage.setItem(\"gc_affiliate_enabled\", \"true\");\n // We need to do 2 things:\n // 1) open a new tab with the popup\n // 2) set the location to the current parent page with the /go link\n const msg1 = { command: \"open\", link: originUrl.href };\n const msg2 = { command: \"redirect\", link: event.currentTarget.href };\n\n window.parent.postMessage(msg1, \"*\");\n window.parent.postMessage(msg2, \"*\");\n }\n } else {\n // It's hosted/native or we don't have the origin url\n const currentUrl = new URL(document.location.href);\n currentUrl.searchParams.set(\"gc_popup\", reference);\n\n if (sessionStorage.getItem(\"gc_affiliate_enabled\") == \"true\") {\n // We already dropped a cookie, so we just open the popup\n // with the coupon code\n this.#dispatchEvent(eventName, reference);\n return true;\n } else {\n // We set the gc_affiliate_enabled as true (for the next click)\n sessionStorage.setItem(\"gc_affiliate_enabled\", \"true\");\n // We need to do 2 things:\n // 1) open a new tab with the popup\n // 2) set the location to the current parent page with the /go link\n if (window.open(currentUrl.href, \"_blank\")) {\n document.location = event.currentTarget.href;\n } else {\n document.location = currentUrl.href;\n }\n }\n }\n }\n\n #getReference(event) {\n return event.params.campaignType === \"external\" ? this.element.dataset.reference : event.currentTarget.href;\n }\n\n #getEventName(event) {\n return event.params.campaignType === \"external\" ? \"gc:offerhub:popup:open\" : \"gc:offerhub:native-popup:open\";\n }\n\n #dispatchEvent(eventName, reference) {\n const customEvent = new CustomEvent(eventName, { detail: { reference } });\n window.dispatchEvent(customEvent);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport lunr from \"lunr\";\n\nexport default class extends Controller {\n static targets = [\"input\", \"result\", \"filterNumber\", \"filterLink\", \"emptyState\", \"clearSearchButton\", \"searchBar\"];\n static values = { campaigns: Array };\n\n connect() {\n try {\n this.initializeIndex();\n } catch (error) {\n // hide search bar if the index can't be initialized\n this.searchBarTarget.classList.add(\"gc-hidden\");\n }\n }\n\n initializeIndex() {\n const data = this.campaignsValue;\n this.index = lunr(function () {\n this.ref(\"reference\");\n this.field(\"name\");\n this.field(\"title\");\n this.field(\"verification_types\");\n this.field(\"description\");\n\n data.forEach((doc) => this.add(doc));\n });\n }\n\n // Higher boost for the exact term and lower boost for wildcard matches (e.g. \"foo*\")\n // to avoid false positives in the test suite\n // https://lunrjs.com/guides/searching.html#boosts\n search(event) {\n event.preventDefault();\n\n if (this.inputTarget.value === \"\") {\n this.showAllResults();\n return;\n }\n\n if (this.hasClearSearchButtonTarget) {\n this.clearSearchButtonTarget.classList.remove(\"gc-hidden\");\n }\n\n const inputValue = this.inputTarget.value.replace(/[\\W_]+/g, \" \").trim();\n const results = this.index.search(`${inputValue}^100 ${inputValue}*^10`);\n const references = results.map((result) => result.ref);\n\n this.hideResults(references);\n this.manageEmptyState(references);\n }\n\n showAllResults() {\n this.resultTargets.forEach((element) => {\n element.classList.remove(\"gc-hidden\");\n });\n if (this.hasClearSearchButtonTarget) {\n this.clearSearchButtonTarget.classList.add(\"gc-hidden\");\n }\n this.manageEmptyState([0]);\n }\n\n // Hide all results except the ones that match the references\n hideResults(references) {\n this.resultTargets.forEach((element) => {\n if (references.includes(element.dataset.reference)) {\n element.classList.remove(\"gc-hidden\");\n } else {\n element.classList.add(\"gc-hidden\");\n }\n });\n }\n\n manageEmptyState(references) {\n if (references.length === 0) {\n this.emptyStateTarget.classList.remove(\"gc-hidden\");\n } else {\n this.emptyStateTarget.classList.add(\"gc-hidden\");\n }\n }\n\n filterByOfferType(event) {\n event.preventDefault();\n const offerType = event.params.offerType || \"all\";\n\n // Reset styles to all filter links\n this.filterLinkTargets.forEach((element) => {\n element.classList.remove(\"gc-index-nav-tabs-tab-active\");\n });\n\n // Set styles to the selected filter link\n event.currentTarget.classList.add(\"gc-index-nav-tabs-tab-active\");\n\n if (offerType === \"all\") {\n this.showAllResults();\n return;\n }\n\n this.resultTargets.forEach((element) => {\n if (element.dataset.offerType === offerType) {\n element.classList.remove(\"gc-hidden\");\n } else {\n element.classList.add(\"gc-hidden\");\n }\n });\n }\n\n clearSearch(event) {\n this.inputTarget.value = \"\";\n this.search(event);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n connect() {\n // Set this SessionStorage item so we don't refresh\n // the page when the user opens a pop up.\n sessionStorage.setItem('gc_affiliate_enabled', \"true\")\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { enter, leave } from \"el-transition\";\nimport { copyToClipboard } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"backdrop\", \"panel\", \"terms\", \"content\", \"coupon\"];\n static values = { url: String };\n\n static messageEventListener = null;\n\n connect() {\n const url = new URL(window.location.href);\n const popup = url.searchParams.get(\"gc_popup\");\n if (popup && popup.length > 0) {\n this.open(popup);\n }\n window.addEventListener(\"gc:offerhub:popup:open\", (event) => {\n this.open(event.detail.reference);\n });\n }\n\n open(reference) {\n if (reference.length == 0) return false;\n\n this.element.classList.remove(\"gc-hidden\");\n enter(this.backdropTarget);\n enter(this.panelTarget);\n\n let url = this.urlValue.replace(\"/reference/\", `/${reference}/`);\n fetch(url)\n .then((response) => response.text())\n .then((html) => {\n this.contentTarget.innerHTML = html;\n\n const iframe = this.contentTarget.querySelector(\"iframe\");\n if (iframe) {\n this.messageEventListener = (event) => {\n if (event.data.command == \"resize_tw\") {\n iframe.height = `${event.data.height_tw}px`;\n }\n };\n\n window.addEventListener(\"message\", this.messageEventListener);\n }\n })\n .catch((error) => console.error(error));\n document.body.addEventListener(\"keydown\", (event) => this.keyPressToClose(event));\n }\n\n close(event) {\n event.preventDefault();\n Promise.all([leave(this.backdropTarget), leave(this.panelTarget)]).then(() => {\n this.element.classList.add(\"gc-hidden\");\n this.contentTarget.innerHTML = \"\";\n document.body.removeEventListener(\"keydown\", (event) => this.keyPressToClose(event));\n window.removeEventListener(\"message\", this.messageEventListener);\n });\n }\n\n // Close the popup if the user clicks outside of it\n smartClose(event) {\n if (this.contentTarget.contains(event.target)) return false;\n this.close(event);\n }\n\n // Close the popup if the user presses the escape key\n keyPressToClose(e) {\n if (e.key === \"Escape\") {\n this.close(e);\n }\n }\n\n toggleTerms(event) {\n event.preventDefault();\n if (this.termsTarget.classList.contains(\"gc-max-h-24\")) {\n this.termsTarget.style = `max-height: ${this.termsTarget.scrollHeight}px`;\n event.currentTarget.innerHTML = event.currentTarget.dataset.alternativeLabel;\n } else {\n event.currentTarget.innerHTML = event.currentTarget.dataset.label;\n this.termsTarget.style = \"\";\n }\n this.termsTarget.classList.toggle(\"gc-max-h-24\");\n this.termsTarget.classList.toggle(\"gc-to-gray-300\");\n this.termsTarget.classList.toggle(\"gc-to-gray-500\");\n }\n\n clickCoupon(event) {\n copyToClipboard(this.couponTarget.innerText);\n return true;\n }\n}\n", "export async function enter(element, transitionName = null) {\n element.classList.remove('hidden')\n await transition('enter', element, transitionName)\n}\n\nexport async function leave(element, transitionName = null) {\n await transition('leave', element, transitionName)\n element.classList.add('hidden')\n}\n\nexport async function toggle(element, transitionName = null) {\n if (element.classList.contains('hidden')) {\n await enter(element, transitionName)\n } else {\n await leave(element, transitionName)\n }\n}\n\nasync function transition(direction, element, animation) {\n const dataset = element.dataset\n const animationClass = animation ? `${animation}-${direction}` : direction\n let transition = `transition${direction.charAt(0).toUpperCase() + direction.slice(1)}`\n const genesis = dataset[transition] ? dataset[transition].split(\" \") : [animationClass]\n const start = dataset[`${transition}Start`] ? dataset[`${transition}Start`].split(\" \") : [`${animationClass}-start`]\n const end = dataset[`${transition}End`] ? dataset[`${transition}End`].split(\" \") : [`${animationClass}-end`]\n\n addClasses(element, genesis)\n addClasses(element, start)\n await nextFrame()\n removeClasses(element, start)\n addClasses(element, end);\n await afterTransition(element)\n removeClasses(element, end)\n removeClasses(element, genesis)\n}\n\nfunction addClasses(element, classes) {\n element.classList.add(...classes)\n}\n\nfunction removeClasses(element, classes) {\n element.classList.remove(...classes)\n}\n\nfunction nextFrame() {\n return new Promise(resolve => {\n requestAnimationFrame(() => {\n requestAnimationFrame(resolve)\n });\n });\n}\n\nfunction afterTransition(element) {\n return new Promise(resolve => {\n // safari return string with comma separate values\n const computedDuration = getComputedStyle(element).transitionDuration.split(\",\")[0]\n const duration = Number(computedDuration.replace('s', '')) * 1000;\n setTimeout(() => {\n resolve()\n }, duration)\n });\n}", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe, initializeIframeResize } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"widgetAll\", \"closeButton\"];\n\n connect() {\n if (isIframe() && this.hasWidgetAllTarget) {\n this.observer = initializeIframeResize(this.widgetAllTarget, () => this.notifyHeight());\n }\n if (this.#showCloseButton()) {\n this.closeButtonTarget.style.display = \"block\";\n this.closeButtonTarget.href = decodeURIComponent(this.gcParams.get(\"origin-url\"));\n }\n }\n\n disconnect() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n notifyHeight() {\n const message = { command: \"resize\", height: this.getHeight() };\n window.parent.postMessage(message, \"*\");\n }\n\n getHeight() {\n return Math.max(this.widgetAllTarget.scrollHeight, this.widgetAllTarget.offsetHeight);\n }\n\n close(e) {\n e.preventDefault();\n\n if (isIframe()) {\n const message = { command: \"closePopup\", followUrl: e.params.followUrl };\n window.parent.postMessage(message, \"*\");\n } else if (e.currentTarget.href) {\n window.location.href = e.currentTarget.href;\n }\n }\n\n #showCloseButton() {\n try {\n let url = new URL(decodeURIComponent(this.gcParams.get(\"origin-url\")));\n return this.hasCloseButtonTarget && url.origin !== RAILS_HOST;\n } catch (e) {\n return false;\n }\n }\n\n get gcParams() {\n let gcParams = localStorage.getItem(\"gc_params\");\n let brandParams = JSON.parse(gcParams)[this.brand] || {};\n let params = brandParams.data || \"\";\n return new URLSearchParams(params);\n }\n\n get brand() {\n return this.element.dataset.sessionBrandValue;\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe, initializeIframeResize } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"allContent\"];\n static values = { removeShadow: Boolean };\n\n connect() {\n if (isIframe() && this.hasAllContentTarget) {\n if (this.removeShadowValue) document.body.classList.add(\"in-iframe\");\n this.observer = initializeIframeResize(this.allContentTarget, () => this.notifyHeight());\n }\n }\n\n disconnect() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n notifyHeight() {\n /* We will add 1 extra pixel for Chrome (otherwise it will add a scroll bar) */\n const height = this.getHeight() + 1;\n const message = { command: \"resize_tw\", height_tw: height };\n window.parent.postMessage(message, \"*\");\n }\n\n getHeight() {\n return Math.max(this.allContentTarget.scrollHeight, this.allContentTarget.offsetHeight);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n connect() {\n if (isIframe()) {\n // Listener to set the URL getting from the origin message\n window.addEventListener(\"message\", (ev) => {\n const referrer = document.referrer;\n const { command, location } = ev.data;\n if (command === \"setParentLocation\" && location.startsWith(referrer)) {\n document.querySelectorAll(\"input.origin-url-input\").forEach((element) => {\n element.value = location;\n });\n }\n });\n\n // Send message to the origin to get its URL\n const message = { command: \"location\" };\n window.parent.postMessage(message, \"*\");\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\n \"pinCodeInput\",\n \"resendInput\",\n \"countdown\",\n \"resendButton\",\n \"pinCodeSubmit\",\n \"wrongCode\",\n \"resentCode\"\n ];\n\n static interval = null;\n\n connect() {\n if (this.hasPinCodeInputTarget) {\n this.startCountDown();\n this.pinCodeInputTarget.focus();\n } else {\n clearInterval(this.interval);\n if (this.hasResendButtonTarget) {\n this.resendButtonTarget.classList.remove(\"hidden\");\n }\n }\n }\n\n disconnect() {\n clearInterval(this.interval);\n }\n\n autoSubmit(event) {\n if (event.currentTarget.value.length === 4) {\n document.querySelectorAll(\".validation-block\").forEach((element) => (element.style.display = \"none\"));\n\n clearInterval(this.interval);\n this.pinCodeSubmitTarget.click();\n }\n }\n\n hideCountDown() {\n this.countdownTarget.classList.add(\"hidden\");\n this.resendButtonTarget.classList.remove(\"hidden\");\n }\n\n startCountDown() {\n this.interval = setInterval(() => {\n const current = parseInt(this.countdownTarget.dataset.countdown);\n const message = this.countdownTarget.dataset.message;\n this.countdownTarget.dataset.countdown = current - 1;\n\n if (current == 1) {\n clearInterval(this.interval);\n this.hideCountDown();\n } else {\n this.countdownTarget.innerText = message.replace(/\\d+/, current - 1);\n }\n }, 1000);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = {\n url: String,\n initialState: String,\n finalState: String,\n continueUrl: String,\n resourceType: String,\n resourceId: String,\n signinUrl: String,\n completeMessage: String\n };\n\n static targets = [\"loader\", \"srReader\", \"loaderResult\"];\n\n connect() {\n if (this.urlValue) {\n this.refreshTimeout = setInterval(() => {\n fetch(this.urlValue, { headers: { Accept: \"application/json\" } })\n .then((response) => response.json())\n .catch((error) => console.error(\"Error:\", error))\n .then((data) => {\n if (data.state === this.finalStateValue) {\n clearTimeout(this.refreshTimeout);\n this.#notifyScreenReader();\n this.loaderResultTarget.classList.toggle(\"loader__result--is-complete\");\n setTimeout(() => {\n if (this.resourceTypeValue == \"users\") {\n Turbo.navigator.submitForm(this.#buildVirtualForm(this.signinUrlValue));\n } else {\n Turbo.visit(data.url);\n }\n }, 400);\n } else if (data.state !== this.initialStateValue && this.resourceTypeValue !== \"users\") {\n clearTimeout(this.refreshTimeout);\n this.#notifyScreenReader();\n Turbo.visit(data.url);\n }\n });\n }, 3000);\n }\n }\n\n disconnect() {\n clearTimeout(this.refreshTimeout);\n }\n\n #notifyScreenReader() {\n this.loaderTarget.setAttribute(\"aria-hidden\", \"false\");\n this.srReaderTarget.innerHTML = this.completeMessageValue;\n }\n\n #buildVirtualForm(url) {\n const form = document.createElement(\"form\");\n form.method = \"POST\";\n form.action = url.split(\"?\")[0];\n\n const csrfMetaTag = document.querySelector(\"[name='csrf-token']\");\n form.appendChild(this.#createHiddenInput(\"authenticity_token\", csrfMetaTag.content));\n form.appendChild(this.#createHiddenInput(\"id\", this.resourceIdValue));\n\n const params = new URLSearchParams(window.location.search);\n for (const [key, value] of params.entries()) {\n form.appendChild(this.#createHiddenInput(key, value));\n }\n\n return form;\n }\n\n #createHiddenInput(name, value) {\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = name;\n input.value = value;\n return input;\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n\n connect(){\n console.log(\"Privacy Controller connected\")\n }\n}", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"loading\", \"fallback\"];\n static values = { url: String, brand: { type: String, default: \"none\" } };\n\n connect() {\n if (this.hasUrlValue) {\n if (this.hasFallbackTarget) {\n this.fallbackTarget.href = this.urlWithGcParams();\n }\n if (isIframe()) {\n window.parent.postMessage({ command: \"redirect\", link: this.urlWithGcParams() }, \"*\");\n } else {\n document.location = this.urlWithGcParams();\n }\n }\n }\n\n urlWithGcParams() {\n let localStorageParams = localStorage.getItem(\"gc_params\");\n\n if (localStorageParams) {\n localStorageParams = JSON.parse(localStorageParams) || {};\n let gcParams = localStorageParams[this.brandValue]?.data || \"\";\n const url = new URL(this.urlValue);\n if (gcParams) {\n url.searchParams.append(\"gc_params\", gcParams);\n }\n return url.toString();\n } else {\n return this.urlValue;\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nconst TTL = 3600000; // 1 hour\nexport default class extends Controller {\n static values = { brand: String };\n\n /* Local Storage Structure\n * {\n * \"brand1\": {\n * \"data\": \"gcp=123&gcref=456&subid=789&clickref=101112&iframe=true&popup=true\",\n * \"updated_at\": 1631610000000,\n * \"ttl\": 3600000\n * }\n * }\n */\n\n connect() {\n let params = new URLSearchParams(window.location.search);\n this.cleanLocalStorage();\n this.#checkTld();\n if (this.hasBrandValue && this.hasGcParameters(params)) {\n this.setStorageForBrand(this.getAllowedParams(params));\n }\n if (isIframe()) {\n this.checkForMutations();\n }\n this.setClassNames();\n }\n\n checkForMutations() {\n const observer = new MutationObserver((mutationsList, observer) => {\n const firstChildListMutation = mutationsList.find((mutation) => mutation.type === \"childList\");\n if (firstChildListMutation) {\n window.parent.postMessage({ command: \"iframeSrc\" }, \"*\");\n window.addEventListener(\"message\", (event) => {\n if (event.data.command === \"src\") {\n const url = new URL(event.data.src);\n const params = new URLSearchParams(url.search);\n params.append(\"origin-url\", window.parent.location.href);\n this.setStorageForBrand(this.getAllowedParams(params));\n }\n });\n }\n });\n const mainContentElement = document.querySelector(\".main-content\");\n\n observer.observe(mainContentElement, { childList: true, subtree: true });\n }\n\n hasGcParameters(params) {\n return this.getParameterKeys().some((param) => params.has(param));\n }\n\n getParameterKeys() {\n return [\"gcp\", \"gcref\", \"subid\", \"clickref\", \"iframe\", \"popup\", \"placement\", \"origin-url\"];\n }\n\n setStorageForBrand(value) {\n const previousParams = JSON.parse(localStorage.getItem(\"gc_params\")) || {};\n const newEntry = { [this.brandValue]: { data: value, updated_at: Date.now(), ttl: TTL } };\n localStorage.setItem(\"gc_params\", JSON.stringify({ ...previousParams, ...newEntry }));\n }\n\n cleanLocalStorage() {\n const previousParams = localStorage.getItem(\"gc_params\") || \"{}\";\n try {\n const json = JSON.parse(previousParams);\n for (const key in json) {\n const brand = json[key];\n const expired = Date.now() > brand.updated_at + brand.ttl;\n if (expired) {\n delete json[key];\n }\n }\n localStorage.setItem(\"gc_params\", JSON.stringify(json));\n } catch (error) {\n localStorage.removeItem(\"gc_params\");\n }\n }\n\n getAllowedParams(params) {\n let allowedParams = new URLSearchParams({ brand: this.brandValue });\n\n this.getParameterKeys().forEach((key) => {\n if (params.has(key)) {\n allowedParams.set(key, params.get(key));\n }\n });\n return allowedParams.toString();\n }\n\n setClassNames() {\n const body = document.getElementsByTagName(\"body\")[0];\n const gcParams = this.gcParamsFor(this.brandValue);\n if (isIframe()) {\n body.classList.add(\"in-iframe\");\n body.classList.remove(\"in-hosted\");\n if (gcParams.get(\"popup\") == \"true\") {\n body.classList.add(\"popup\");\n }\n } else {\n body.classList.add(\"in-hosted\");\n body.classList.remove(\"in-iframe\");\n }\n }\n\n gcParamsFor(brand) {\n const gcParams = JSON.parse(localStorage.getItem(\"gc_params\") || \"{}\");\n return new URLSearchParams(gcParams[brand]?.data);\n }\n\n #checkTld() {\n if (!window.location.hostname.endsWith(TLD)) {\n window.location = window.location.href.replace(window.location.origin, RAILS_HOST);\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\nexport default class extends Controller {\n static values = {\n url: String,\n title: String,\n text: String\n }\n\n nativeShare(e) {\n if(navigator.share){\n navigator.share({\n title: this.titleValue,\n text: this.textValue,\n url: this.urlValue\n }).then(() =>\n console.log('[gocertify] Thanks for sharing!')\n ).catch((err) =>\n console.log(`[gocertify] Couldn't share because of ${err.message}`)\n )\n }\n }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"country\", \"mobileNumber\", \"email\"];\n\n connect() {\n const params = new URLSearchParams(window.location.search);\n\n if (this.hasCountryTarget) {\n if (params.has(\"country\")) {\n this.countryTarget.value = params.get(\"country\");\n } else {\n this.setCountry();\n }\n }\n if (params.has(\"mobile_number\") && this.hasMobileNumberTarget) {\n this.mobileNumberTarget.value = params.get(\"mobile_number\");\n }\n if (params.has(\"email\") && this.hasEmailTarget) {\n this.emailTarget.value = params.get(\"email\");\n }\n }\n\n setCountry() {\n fetch(\"/api/v1/country\")\n .then((response) => response.text())\n .then((data) => {\n if (data.length > 0) {\n this.countryTarget.value = data;\n }\n })\n .catch((error) => console.error(error));\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"tabs\", \"tabPanel\"];\n\n connect() {\n if (this.hasTabsTarget) {\n this.currentTab = this.tabsTarget.children[0].dataset.tab;\n }\n }\n\n setCurrentTab(e) {\n e.preventDefault();\n this.currentTab = e.currentTarget.dataset.tab;\n Array.from(this.tabsTarget.children).forEach((item) => {\n item.classList.remove(\"active\");\n });\n e.currentTarget.classList.add(\"active\");\n\n if (this.hasTabPanelTarget) {\n Array.from(this.tabPanelTargets).forEach((item) => {\n if (item.dataset.tabPanel == this.currentTab) {\n item.classList.remove(\"hidden\");\n } else {\n item.classList.add(\"hidden\");\n }\n });\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static targets = [\"box\", \"trigger\"];\n\n connect() {\n this.originalText = \"\";\n this.triggerTargets.forEach((trigger) => this.addKeyDownListener(trigger));\n }\n\n disconnect() {\n this.triggerTargets.forEach((trigger) => this.removeKeyDownListener(trigger));\n }\n\n toggle(e) {\n e.preventDefault();\n const element = e.currentTarget;\n if (this.boxTarget.style.display == \"block\") {\n this.close(element);\n } else {\n this.open(element);\n }\n }\n\n open(element) {\n this.boxTarget.style.display = \"block\";\n this.originalText = element.innerHTML;\n element.setAttribute(\"aria-expanded\", \"true\");\n element.innerHTML = element.dataset.closeWith || \"Close \u2715\";\n }\n\n close(element) {\n element.setAttribute(\"aria-expanded\", \"false\");\n element.innerHTML = this.originalText;\n this.boxTarget.style.display = \"none\";\n }\n\n addKeyDownListener(element) {\n element.addEventListener(\"keydown\", (event) => this.handleKeyDown(event, element));\n }\n\n removeKeyDownListener(element) {\n element.removeEventListener(\"keydown\", (event) => this.handleKeyDown(event, element));\n }\n\n handleKeyDown(event, element) {\n if (event.key === \"Escape\" && this.boxTarget.style.display === \"block\") {\n this.close(element);\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n static values = { siteKey: String };\n static targets = [\"token\"];\n\n connect() {\n document.getElementById(\"signin-button\").disabled = true;\n\n if (window.hasOwnProperty(\"turnstile\")) {\n turnstile.render(this.element, {\n sitekey: this.siteKeyValue,\n theme: \"light\",\n callback: function (token) {\n document.getElementById(\"signin-button\").disabled = false;\n }\n });\n } else {\n console.log(\"no turnstile\");\n }\n }\n\n disconnect() {\n this.element.replaceChildren();\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n home(event) {\n event.preventDefault();\n\n if (isIframe()) {\n window.parent.postMessage({ command: \"open\", link: event.currentTarget.href }, \"*\");\n } else {\n window.open(event.currentTarget.href, \"_blank\");\n }\n return false;\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { copyToClipboard, isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"contentToToggle\", \"contentToCopy\", \"copyLinkLabel\"];\n\n toggleContent(event) {\n event.preventDefault();\n\n const body = document.querySelector(\"body\");\n body.style.overflow = \"hidden\";\n\n if (this.contentToToggleTarget.classList.contains(\"max-h-24\")) {\n this.contentToToggleTarget.style = `max-height: ${this.contentToToggleTarget.scrollHeight}px`;\n event.currentTarget.innerHTML = event.currentTarget.dataset.alternativeLabel;\n } else {\n event.currentTarget.innerHTML = event.currentTarget.dataset.label;\n this.contentToToggleTarget.style = \"\";\n }\n this.contentToToggleTarget.classList.toggle(\"max-h-24\");\n this.contentToToggleTarget.classList.toggle(\"to-gray-300\");\n this.contentToToggleTarget.classList.toggle(\"to-gray-500\");\n\n setTimeout(() => {\n body.style.overflow = \"auto\";\n }, 500);\n }\n\n clickCoupon(event) {\n const target = event.currentTarget;\n if (target.dataset.placementToken) {\n this.originUrlInNewTab(event);\n return true;\n }\n const offerType = target.dataset.offerType || \"code\";\n if (offerType !== \"code\") return true;\n\n copyToClipboard(this.contentToCopyTarget.innerText);\n return true;\n }\n\n copyLink(event) {\n event.preventDefault();\n if (event.currentTarget.dataset.value) {\n copyToClipboard(event.currentTarget.dataset.value);\n } else {\n copyToClipboard(event.currentTarget.href);\n }\n this.copyLinkLabelTarget.innerText = \"Copied!\";\n }\n\n originUrlInNewTab(event) {\n event.preventDefault();\n const target = event.currentTarget;\n const originUrl = new URL(decodeURIComponent(target.dataset.originUrl));\n const params = new URLSearchParams(originUrl.search);\n const placementToken = target.dataset.placementToken;\n const couponCode = target.dataset.code;\n params.append(\"gc_coupon_code\", couponCode);\n params.append(\"gc_placement\", placementToken);\n copyToClipboard(couponCode);\n originUrl.search = params.toString();\n const url = target.href;\n const originUrlString = originUrl.toString();\n if (isIframe()) {\n window.parent.postMessage({ command: \"placementFlow\", link: url, originUrl: originUrlString }, \"*\");\n } else {\n if (window.open(originUrlString, \"_blank\")) {\n window.location = url;\n } else {\n window.location = originUrlString;\n }\n }\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nimport Uppy from \"@uppy/core\";\nimport Dashboard from \"@uppy/dashboard\";\nimport Webcam from \"@uppy/webcam\";\nimport ActiveStorageUpload from \"@excid3/uppy-activestorage-upload\";\n\nexport default class extends Controller {\n static values = {\n uppyTitle: String,\n uppyDescription: String,\n uppyBrowse: String,\n uppyMyDevice: String,\n uppyCamera: String,\n uppyNoCamera: String,\n uppyNoCameraDescription: String,\n uppyImportFrom: String,\n uppyCancel: String,\n uppyUploading: String\n };\n\n connect() {\n document.getElementsByClassName(\"files-zone\")[0].innerHTML = \"\";\n const directUploadUrl = document.querySelector('meta[name=\"direct-upload-url\"]').content;\n let uppy = new Uppy({\n autoProceed: true,\n allowMultipleUploads: false,\n restrictions: {\n maxNumberOfFiles: 1,\n maxFileSize: 51200000,\n allowedFileTypes: [\"image/heic\", \"image/*\", \"application/pdf\"]\n }\n })\n .use(Dashboard, {\n target: \".files-zone\",\n inline: true,\n proudlyDisplayPoweredByUppy: false,\n showSelectedFiles: false,\n showProgressDetails: true,\n height: 300,\n locale: {\n strings: {\n dropPasteImportFiles: this.uppyTitleValue,\n browseFiles: this.uppyBrowseValue,\n myDevice: this.uppyMyDeviceValue,\n importFrom: this.uppyImportFromValue,\n cancel: this.uppyCancelValue,\n uploadComplete: \"Upload complete. Starting verification...\",\n uploadingXFiles: {\n 0: this.uppyUploadingValue,\n 1: this.uppyUploadingValue\n }\n }\n }\n })\n .use(Webcam, {\n target: Dashboard,\n modes: [\"picture\"],\n title: this.uppyCameraValue,\n preferredImageMimeType: \"image/png\",\n locale: {\n strings: {\n noCameraTitle: this.uppyNoCameraValue,\n noCameraDescription: this.uppyNoCameraDescriptionValue\n }\n }\n })\n .use(ActiveStorageUpload, {\n directUploadUrl\n })\n .on(\"complete\", (result) => {\n const file = result.successful[0];\n const fileInput = document.getElementById(\"coupon_request_image_hidden\");\n const fileSourceInput = document.getElementById(\"coupon_request_image_source\");\n\n if (file) {\n fileInput.value = file.response.signed_id;\n fileSourceInput.value = file.source.match(/webcam/i) ? \"webcam\" : \"upload\";\n document.getElementById(\"go\").click();\n } else {\n console.error(\"No file found error\");\n }\n });\n\n var title = document.getElementsByClassName(\"uppy-Dashboard-AddFiles-title\")[0];\n title.insertAdjacentHTML(\"beforeend\", `<div>${this.uppyDescriptionValue}</div>`);\n }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { isIframe } from \"../helpers/commons\";\n\nexport default class extends Controller {\n static targets = [\"affiliateLink\", \"urlToSwitch\"];\n\n connect() {\n if (this.hasAffiliateLinkTarget && this.hasUrlToSwitchTarget) {\n const affiliateLink = this.affiliateLinkTarget.href;\n const urlToSwitch = new URL(this.urlToSwitchTarget.href);\n this.switchToWindow(affiliateLink, urlToSwitch);\n }\n }\n\n revealCouponCode(event) {\n event.preventDefault();\n const affiliateLink = event.currentTarget.dataset.affiliateLink;\n const urlToSwitch = new URL(event.currentTarget.href);\n\n this.switchToWindow(affiliateLink, urlToSwitch);\n }\n\n switchToWindow(affiliateLink, urlToSwitch) {\n if (isIframe()) {\n window.parent.postMessage(\n {\n command: \"switchToWindow\",\n affiliateLink: affiliateLink,\n switchToWindowPath: `${urlToSwitch.pathname}${urlToSwitch.search}`,\n verifiedPath: `${urlToSwitch.pathname}${urlToSwitch.search}`\n },\n \"*\"\n );\n } else {\n if (window.open(urlToSwitch.href, \"_blank\")) {\n window.location = affiliateLink;\n } else {\n return true;\n }\n }\n return false;\n }\n}\n", "\n import * as module0 from './combobox_controller.js';import * as module1 from './cookieless_controller.js';import * as module2 from './coupon_requests_controller.js';import * as module3 from './data_collection_controller.js';import * as module4 from './data_collection_field_controller.js';import * as module5 from './errors_controller.js';import * as module6 from './faqs_controller.js';import * as module7 from './fetch_controller.js';import * as module8 from './forms_controller.js';import * as module9 from './hub_card_controller.js';import * as module10 from './hub_controller.js';import * as module11 from './hub_hosted_controller.js';import * as module12 from './hub_popup_controller.js';import * as module13 from './layout_controller.js';import * as module14 from './layout_tw_controller.js';import * as module15 from './location_controller.js';import * as module16 from './pin_codes_controller.js';import * as module17 from './polling_controller.js';import * as module18 from './privacy_controller.js';import * as module19 from './redirect_controller.js';import * as module20 from './session_controller.js';import * as module21 from './share_controller.js';import * as module22 from './signin_controller.js';import * as module23 from './tabs_controller.js';import * as module24 from './tooltip_controller.js';import * as module25 from './turnstile_controller.js';import * as module26 from './users_controller.js';import * as module27 from './utils_controller.js';import * as module28 from './verify_controller.js';import * as module29 from './window_switcher_controller.js'\n const modules = [{name: 'combobox', module: module0, filename: 'combobox_controller.js'},{name: 'cookieless', module: module1, filename: 'cookieless_controller.js'},{name: 'coupon-requests', module: module2, filename: 'coupon_requests_controller.js'},{name: 'data-collection', module: module3, filename: 'data_collection_controller.js'},{name: 'data-collection-field', module: module4, filename: 'data_collection_field_controller.js'},{name: 'errors', module: module5, filename: 'errors_controller.js'},{name: 'faqs', module: module6, filename: 'faqs_controller.js'},{name: 'fetch', module: module7, filename: 'fetch_controller.js'},{name: 'forms', module: module8, filename: 'forms_controller.js'},{name: 'hub-card', module: module9, filename: 'hub_card_controller.js'},{name: 'hub', module: module10, filename: 'hub_controller.js'},{name: 'hub-hosted', module: module11, filename: 'hub_hosted_controller.js'},{name: 'hub-popup', module: module12, filename: 'hub_popup_controller.js'},{name: 'layout', module: module13, filename: 'layout_controller.js'},{name: 'layout-tw', module: module14, filename: 'layout_tw_controller.js'},{name: 'location', module: module15, filename: 'location_controller.js'},{name: 'pin-codes', module: module16, filename: 'pin_codes_controller.js'},{name: 'polling', module: module17, filename: 'polling_controller.js'},{name: 'privacy', module: module18, filename: 'privacy_controller.js'},{name: 'redirect', module: module19, filename: 'redirect_controller.js'},{name: 'session', module: module20, filename: 'session_controller.js'},{name: 'share', module: module21, filename: 'share_controller.js'},{name: 'signin', module: module22, filename: 'signin_controller.js'},{name: 'tabs', module: module23, filename: 'tabs_controller.js'},{name: 'tooltip', module: module24, filename: 'tooltip_controller.js'},{name: 'turnstile', module: module25, filename: 'turnstile_controller.js'},{name: 'users', module: module26, filename: 'users_controller.js'},{name: 'utils', module: module27, filename: 'utils_controller.js'},{name: 'verify', module: module28, filename: 'verify_controller.js'},{name: 'window-switcher', module: module29, filename: 'window_switcher_controller.js'}]\n export default modules;\n ", "import { Application } from \"@hotwired/stimulus\";\nimport { Autocomplete } from \"stimulus-autocomplete\";\nimport Flatpickr from \"stimulus-flatpickr\";\nimport ClickToggleController from \"../shared_controllers/click_toggle_controller\";\nimport FileUploadController from \"../shared_controllers/file_upload_controller\";\nconst application = Application.start();\n\nimport controllers from \"./*_controller.js\";\nwindow.generalStimulus = application;\ncontrollers.forEach((controller) => {\n application.register(controller.name, controller.module.default);\n});\n\n// Register External Controllers\napplication.register(\"autocomplete\", Autocomplete);\napplication.register(\"flatpickr\", Flatpickr);\n\n// Register Shared Controllers\napplication.register(\"click-toggle\", ClickToggleController);\napplication.register(\"file-upload\", FileUploadController);\n", "import \"@hotwired/turbo-rails\";\nimport \"./controllers\";\n\nrequire(\"@rails/activestorage\").start();\n"], "mappings": "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", "names": ["adapters_default", "init_adapters", "__esmMin", "logger_default", "init_logger", "__esmMin", "init_adapters", "messages", "adapters_default", "now", "secondsSince", "_ConnectionMonitor", "ConnectionMonitor", "connection_monitor_default", "init_connection_monitor", "__esmMin", "init_logger", "__name", "time", "connection", "logger_default", "staleThreshold", "reconnectionBackoffRate", "backoff", "jitter", "internal_default", "init_internal", "__esmMin", "message_types", "protocols", "supportedProtocols", "indexOf", "_Connection", "Connection", "connection_default", "init_connection", "__esmMin", "init_adapters", "init_connection_monitor", "init_internal", "init_logger", "internal_default", "consumer", "connection_monitor_default", "data", "logger_default", "adapters_default", "allowReconnect", "error", "states", "state", "eventName", "handler", "__name", "event", "identifier", "message", "reason", "reconnect", "type", "extend", "_Subscription", "Subscription", "init_subscription", "__esmMin", "__name", "object", "properties", "key", "value", "consumer", "params", "mixin", "action", "data", "_SubscriptionGuarantor", "SubscriptionGuarantor", "subscription_guarantor_default", "init_subscription_guarantor", "__esmMin", "init_logger", "subscriptions", "subscription", "logger_default", "s", "__name", "_Subscriptions", "Subscriptions", "init_subscriptions", "__esmMin", "init_subscription", "init_subscription_guarantor", "init_logger", "consumer", "subscription_guarantor_default", "channelName", "mixin", "channel", "params", "subscription", "Subscription", "identifier", "s", "callbackName", "args", "subscriptions", "logger_default", "command", "__name", "createWebSocketURL", "url", "a", "_Consumer", "Consumer", "init_consumer", "__esmMin", "init_connection", "init_subscriptions", "Subscriptions", "connection_default", "data", "__name", "src_exports", "__export", "connection_default", "connection_monitor_default", "Consumer", "internal_default", "Subscription", "subscription_guarantor_default", "Subscriptions", "adapters_default", "createConsumer", "createWebSocketURL", "getConfig", "logger_default", "url", "name", "element", "init_src", "__esmMin", "init_connection", "init_connection_monitor", "init_consumer", "init_internal", "init_subscription", "init_subscriptions", "init_subscription_guarantor", "init_adapters", "init_logger", "__name", "_classPrivateFieldLooseBase", "e", "t", "_classPrivateFieldLooseKey", "id", "insertReplacement", "source", "rx", "replacement", "newParts", "chunk", "raw", "i", "list", "interpolate", "phrase", "options", "dollarRegex", "dollarBillsYall", "interpolated", "arg", "_apply2", "locale", "prevLocale", "defaultOnMissingKey", "_onMissingKey", "_apply", "_Translator", "Translator", "init_Translator", "__esmMin", "__name", "key", "locales", "_temp", "onMissingKey", "string", "plural", "require_namespace_emitter", "__commonJSMin", "exports", "module", "__name", "emitter", "_fns", "event", "arg1", "arg2", "arg3", "arg4", "arg5", "arg6", "toEmit", "getListeners", "emitAll", "fn", "one", "keep", "fns", "i", "l", "e", "out", "idx", "args", "keys", "key", "require_isObject", "__commonJSMin", "exports", "module", "isObject", "value", "type", "__name", "require_freeGlobal", "__commonJSMin", "exports", "module", "freeGlobal", "require_root", "__commonJSMin", "exports", "module", "freeGlobal", "freeSelf", "root", "require_now", "__commonJSMin", "exports", "module", "root", "now", "__name", "require_trimmedEndIndex", "__commonJSMin", "exports", "module", "reWhitespace", "trimmedEndIndex", "string", "index", "__name", "require_baseTrim", "__commonJSMin", "exports", "module", "trimmedEndIndex", "reTrimStart", "baseTrim", "string", "__name", "require_Symbol", "__commonJSMin", "exports", "module", "root", "Symbol", "require_getRawTag", "__commonJSMin", "exports", "module", "Symbol", "objectProto", "hasOwnProperty", "nativeObjectToString", "symToStringTag", "getRawTag", "value", "isOwn", "tag", "unmasked", "result", "__name", "require_objectToString", "__commonJSMin", "exports", "module", "objectProto", "nativeObjectToString", "objectToString", "value", "__name", "require_baseGetTag", "__commonJSMin", "exports", "module", "Symbol", "getRawTag", "objectToString", "nullTag", "undefinedTag", "symToStringTag", "baseGetTag", "value", "__name", "require_isObjectLike", "__commonJSMin", "exports", "module", "isObjectLike", "value", "__name", "require_isSymbol", "__commonJSMin", "exports", "module", "baseGetTag", "isObjectLike", "symbolTag", "isSymbol", "value", "__name", "require_toNumber", "__commonJSMin", "exports", "module", "baseTrim", "isObject", "isSymbol", "NAN", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "toNumber", "value", "other", "isBinary", "__name", "require_debounce", "__commonJSMin", "exports", "module", "isObject", "now", "toNumber", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "invokeFunc", "time", "args", "thisArg", "__name", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "require_throttle", "__commonJSMin", "exports", "module", "debounce", "isObject", "FUNC_ERROR_TEXT", "throttle", "func", "wait", "options", "leading", "trailing", "__name", "module", "__name", "num", "neg", "units", "exponent", "unit", "require_wildcard", "__commonJSMin", "exports", "module", "WildcardMatcher", "text", "separator", "__name", "input", "matches", "parts", "ii", "partsCount", "testParts", "key", "test", "matcher", "require_mime_match", "__commonJSMin", "exports", "module", "wildcard", "reMimePartSplit", "target", "pattern", "test", "result", "__name", "_BasePlugin", "BasePlugin", "init_BasePlugin", "__esmMin", "init_Translator", "uppy", "opts", "plugins", "update", "newOpts", "translator", "Translator", "plugin", "state", "__name", "require_classnames", "__commonJSMin", "exports", "module", "hasOwn", "nativeCodeString", "classNames", "classes", "i", "arg", "argType", "inner", "key", "__name", "require_eventemitter3", "__commonJSMin", "exports", "module", "has", "prefix", "Events", "__name", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "i", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "length", "j", "require_is_mobile", "__commonJSMin", "exports", "module", "isMobile", "mobileRE", "notMobileRE", "tabletRE", "opts", "ua", "result", "__name", "number", "n", "__name", "exports", "bool", "b", "bytes", "lengths", "hash", "exists", "instance", "checkFinished", "output", "out", "min", "assert", "U32_MASK64", "_32n", "fromBig", "n", "le", "__name", "exports", "split", "lst", "Ah", "Al", "i", "h", "l", "toBig", "shrSH", "s", "shrSL", "rotrSH", "rotrSL", "rotrBH", "rotrBL", "rotr32H", "rotr32L", "rotlSH", "rotlSL", "rotlBH", "rotlBL", "add", "Bh", "Bl", "add3L", "Cl", "add3H", "low", "Ch", "add4L", "Dl", "add4H", "Dh", "add5L", "El", "add5H", "Eh", "u64", "exports", "crypto_1", "u8", "__name", "arr", "exports", "u32", "createView", "rotr", "word", "shift", "hexes", "v", "i", "bytesToHex", "uint8a", "hex", "hexToBytes", "array", "j", "hexByte", "byte", "nextTick", "asyncLoop", "iters", "tick", "cb", "ts", "diff", "utf8ToBytes", "str", "toBytes", "data", "concatBytes", "arrays", "a", "length", "result", "pad", "_Hash", "Hash", "isPlainObject", "obj", "checkOpts", "defaults", "opts", "wrapConstructor", "hashConstructor", "hashC", "message", "tmp", "wrapConstructorWithOpts", "hashCons", "msg", "randomBytes", "bytesLength", "_assert_js_1", "_u64_js_1", "utils_js_1", "SHA3_PI", "SHA3_ROTL", "_SHA3_IOTA", "_0n", "_1n", "_2n", "_7n", "_256n", "_0x71n", "round", "R", "x", "y", "t", "j", "SHA3_IOTA_H", "SHA3_IOTA_L", "rotlH", "__name", "h", "l", "s", "rotlL", "keccakP", "rounds", "B", "idx1", "idx0", "B0", "B1", "Th", "Tl", "curH", "curL", "shift", "PI", "exports", "_Keccak", "blockLen", "suffix", "outputLen", "enableXOF", "data", "state", "len", "pos", "take", "i", "out", "bufferOut", "bytes", "to", "Keccak", "gen", "genShake", "opts", "require_src", "__commonJSMin", "exports", "module", "sha3", "defaultLength", "bigLength", "createEntropy", "__name", "length", "random", "entropy", "bufToBigInt", "buf", "bits", "value", "i", "bi", "hash", "input", "alphabet", "x", "randomLetter", "createFingerprint", "globalObj", "globals", "sourceString", "createCounter", "count", "initialCountMax", "init", "counter", "fingerprint", "firstLetter", "time", "salt", "hashInput", "createId", "isCuid", "id", "minLength", "maxLength", "regex", "require_cuid2", "__commonJSMin", "exports", "module", "createId", "init", "getConstants", "isCuid", "internalRateLimitedQueue", "init_RateLimitedQueue", "__esmMin", "require_activestorage", "__commonJSMin", "exports", "module", "global", "factory", "sparkMd5", "undefined$1", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "__name", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "fileSlice", "_FileChecksum", "file", "callback", "event", "binaryDigest", "base64digest", "start", "FileChecksum", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "_BlobRecord", "checksum", "url", "customHeaders", "headerKey", "csrfToken", "responseType", "response", "direct_upload", "key", "BlobRecord", "_BlobUpload", "blob", "headers", "status", "BlobUpload", "id", "_DirectUpload", "delegate", "error", "notify", "upload", "DirectUpload", "object", "methodName", "messages", "_DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "DirectUploadController", "inputSelector", "_DirectUploadsController", "form", "controllers", "startNextController", "controller", "DirectUploadsController", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "button", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "autostart", "require_lib", "__commonJSMin", "exports", "module", "init_BasePlugin", "import_cuid2", "init_RateLimitedQueue", "DirectUpload", "_a", "BasePlugin", "uppy", "opts", "defaultOptions", "fn", "fileIDs", "files", "fileID", "file", "current", "total", "resolve", "reject", "timer", "error", "directHandlers", "ev", "id", "request", "event", "data", "meta", "upload", "blob", "response", "removedFile", "promises", "i", "action", "timeout", "timeoutHandler", "self", "isDone", "onTimedOut", "__name", "aliveTimer", "progress", "done", "require_lunr", "__commonJSMin", "exports", "module", "lunr", "__name", "config", "builder", "global", "message", "obj", "clone", "keys", "i", "key", "val", "docRef", "fieldName", "stringValue", "s", "n", "fieldRef", "elements", "other", "object", "a", "b", "intersection", "element", "posting", "documentCount", "documentsWithTerm", "x", "str", "metadata", "fn", "t", "len", "tokens", "sliceEnd", "sliceStart", "char", "sliceLength", "tokenMetadata", "label", "isRegistered", "serialised", "pipeline", "fnName", "fns", "existingFn", "newFn", "pos", "stackLength", "memo", "j", "result", "k", "token", "index", "start", "end", "pivotPoint", "pivotIndex", "insertIdx", "position", "sumOfSquares", "elementsLength", "otherVector", "dotProduct", "aLen", "bLen", "aVal", "bVal", "output", "step2list", "step3list", "c", "v", "C", "V", "mgr0", "meq1", "mgr1", "s_v", "re_mgr0", "re_mgr1", "re_meq1", "re_s_v", "re_1a", "re2_1a", "re_1b", "re2_1b", "re_1b_2", "re2_1b_2", "re3_1b_2", "re4_1b_2", "re_1c", "re_2", "re_3", "re_4", "re2_4", "re_5", "re_5_1", "re3_5", "porterStemmer", "w", "stem", "suffix", "firstch", "re", "re2", "re3", "re4", "fp", "stopWords", "words", "stopWord", "arr", "clause", "editDistance", "root", "stack", "frame", "noEditNode", "insertionNode", "substitutionNode", "charA", "charB", "transposeNode", "node", "final", "next", "edges", "edge", "labels", "qEdges", "qLen", "nEdges", "nLen", "q", "qEdge", "nEdge", "qNode", "word", "commonPrefix", "nextNode", "downTo", "childKey", "attrs", "queryString", "query", "parser", "matchingFields", "queryVectors", "termFieldCache", "requiredMatches", "prohibitedMatches", "terms", "clauseMatches", "m", "term", "termTokenSet", "expandedTerms", "field", "expandedTerm", "termIndex", "fieldPosting", "matchingDocumentRefs", "termField", "matchingDocumentsSet", "l", "matchingDocumentRef", "matchingFieldRef", "fieldMatch", "allRequiredMatches", "allProhibitedMatches", "matchingFieldRefs", "results", "matches", "fieldVector", "score", "docMatch", "match", "invertedIndex", "fieldVectors", "ref", "serializedIndex", "serializedVectors", "serializedInvertedIndex", "tokenSetBuilder", "tuple", "attributes", "number", "doc", "fields", "extractor", "fieldTerms", "metadataKey", "fieldRefs", "numberOfFields", "accumulator", "documentsWithField", "fieldRefsLength", "termIdfCache", "fieldLength", "termFrequencies", "termsLength", "fieldBoost", "docBoost", "tf", "idf", "scoreWithPrecision", "args", "clonedMetadata", "metadataKeys", "otherMatchData", "allFields", "options", "state", "subSlices", "type", "charCode", "lexer", "lexeme", "completedClause", "errorMessage", "nextLexeme", "possibleFields", "f", "boost", "factory", "require_activestorage", "__commonJSMin", "exports", "module", "global", "factory", "sparkMd5", "undefined$1", "hex_chr", "md5cycle", "x", "k", "a", "b", "c", "d", "__name", "md5blk", "s", "md5blks", "i", "md5blk_array", "md51", "n", "state", "length", "tail", "tmp", "lo", "hi", "md51_array", "rhex", "j", "hex", "clamp", "val", "from", "to", "begin", "end", "num", "target", "targetArray", "sourceArray", "toUtf8", "str", "utf8Str2ArrayBuffer", "returnUInt8Array", "buff", "arr", "arrayBuffer2Utf8Str", "concatenateArrayBuffers", "first", "second", "result", "hexToBinaryString", "bytes", "SparkMD5", "contents", "raw", "ret", "content", "hash", "fileSlice", "_FileChecksum", "file", "callback", "event", "binaryDigest", "base64digest", "start", "FileChecksum", "getMetaValue", "name", "element", "findElement", "findElements", "root", "selector", "elements", "toArray", "dispatchEvent", "type", "eventInit", "disabled", "bubbles", "cancelable", "detail", "value", "_BlobRecord", "checksum", "url", "customHeaders", "headerKey", "csrfToken", "responseType", "response", "direct_upload", "key", "BlobRecord", "_BlobUpload", "blob", "headers", "status", "BlobUpload", "id", "_DirectUpload", "delegate", "error", "notify", "upload", "DirectUpload", "object", "methodName", "messages", "_DirectUploadController", "input", "hiddenInput", "attributes", "progress", "xhr", "DirectUploadController", "inputSelector", "_DirectUploadsController", "form", "controllers", "startNextController", "controller", "DirectUploadsController", "processingAttribute", "submitButtonsByForm", "started", "didClick", "didSubmitForm", "didSubmitRemoteElement", "button", "handleFormSubmissionEvent", "inputs", "disable", "enable", "submitForm", "autostart", "turbo_es2017_esm_exports", "__export", "FetchEnctype", "FetchMethod", "FetchRequest", "FetchResponse", "FrameElement", "FrameLoadingStyle", "FrameRenderer", "PageRenderer", "PageSnapshot", "StreamActions", "StreamElement", "StreamSourceElement", "cache", "clearCache", "connectStreamSource", "disconnectStreamSource", "fetchWithTurboHeaders", "fetchEnctypeFromString", "fetchMethodFromString", "isSafe", "navigator$1", "registerAdapter", "renderStreamMessage", "session", "setConfirmMethod", "setFormMode", "setProgressBarDelay", "start", "visit", "prototype", "submitter", "validateSubmitter", "form", "raise", "__name", "errorConstructor", "message", "name", "submittersByForm", "findSubmitterFromClickTarget", "target", "element", "candidate", "clickCaptured", "event", "prototypeOfSubmitEvent", "FrameLoadingStyle", "_FrameElement", "value", "frameLoadingStyleFromString", "__publicField", "FrameElement", "style", "expandURL", "locatable", "getAnchor", "url", "anchorMatch", "getAction$1", "action", "getExtension", "getLastPathComponent", "isHTML", "isPrefixedBy", "baseURL", "prefix", "getPrefix", "locationIsVisitable", "location", "rootLocation", "getRequestURL", "anchor", "toCacheKey", "urlsAreEqual", "left", "right", "getPathComponents", "addTrailingSlash", "_FetchResponse", "response", "FetchResponse", "activateScriptElement", "createdScriptElement", "cspNonce", "getMetaContent", "copyElementAttributes", "destinationElement", "sourceElement", "createDocumentFragment", "html", "template", "dispatch", "eventName", "cancelable", "detail", "nextRepaint", "nextEventLoopTick", "nextAnimationFrame", "resolve", "nextMicrotask", "parseHTMLDocument", "unindent", "strings", "values", "lines", "interpolate", "match", "indent", "line", "result", "string", "i", "uuid", "_", "getAttribute", "attributeName", "elements", "hasAttribute", "markAsBusy", "clearBusyState", "waitForLoad", "timeoutInMilliseconds", "onComplete", "getHistoryMethodForAction", "isAction", "getVisitAction", "getMetaElement", "setMetaContent", "content", "findClosestRecursively", "selector", "elementIsFocusable", "queryAutofocusableElement", "elementOrDocumentFragment", "around", "callback", "reader", "before", "after", "doesNotTargetIFrame", "findLinkFromClickTarget", "getLocationForLink", "link", "debounce", "fn", "delay", "timeoutId", "args", "_LimitedSet", "maxSize", "oldestValue", "LimitedSet", "recentRequests", "nativeFetch", "fetchWithTurboHeaders", "options", "modifiedHeaders", "requestUID", "fetchMethodFromString", "method", "FetchMethod", "fetchEnctypeFromString", "encoding", "FetchEnctype", "_resolveRequestPromise", "_FetchRequest_instances", "allowRequestToBeIntercepted_fn", "willDelegateErrorHandling_fn", "_FetchRequest", "delegate", "requestBody", "enctype", "__privateAdd", "_value", "body", "buildResourceAndBody", "fetchBody", "fetchMethod", "fetchOptions", "__privateMethod", "error", "fetchResponse", "isSafe", "mimeType", "requestInterception", "__privateSet", "__privateGet", "FetchRequest", "resource", "searchParams", "entriesExcludingFiles", "mergeIntoURLSearchParams", "entries", "_AppearanceObserver", "AppearanceObserver", "_StreamMessage", "fragment", "importStreamElements", "StreamMessage", "streamElement", "inertScriptElement", "PREFETCH_DELAY", "_prefetchTimeout", "_prefetched", "_PrefetchCache", "request", "ttl", "PrefetchCache", "cacheTtl", "prefetchCache", "FormSubmissionState", "_FormSubmission", "_element", "_submitter", "formElement", "mustRedirect", "getMethod", "getAction", "getFormAction", "buildFormData", "getEnctype", "initialized", "requesting", "confirmationMessage", "stopping", "stopped", "token", "getCookieValue", "_request", "responseSucceededWithoutRedirect", "input", "FormSubmission", "formData", "cookieName", "cookie", "formElementAction", "formAction", "_Snapshot", "queryPermanentElementsAll", "id", "getPermanentElementById", "snapshot", "permanentElementMap", "currentPermanentElement", "newPermanentElement", "Snapshot", "node", "_FormSubmitObserver", "eventTarget", "submissionDoesNotDismissDialog", "submissionDoesNotTargetIFrame", "FormSubmitObserver", "_resolveRenderPromise", "_resolveInterceptionPromise", "_View", "x", "y", "renderer", "isPreview", "shouldRender", "willRender", "shouldInvalidate", "renderInterception", "reason", "direction", "View", "_FrameView", "FrameView", "_LinkInterceptor", "_event", "LinkInterceptor", "_LinkClickObserver", "LinkClickObserver", "_FormLinkClickObserver", "originalEvent", "type", "turboFrame", "turboAction", "turboConfirm", "FormLinkClickObserver", "_Bardo", "bardo", "permanentElement", "placeholder", "createPlaceholderForPermanentElement", "clone", "Bardo", "_activeElement", "_Renderer", "currentSnapshot", "newSnapshot", "renderElement", "reject", "Renderer", "_FrameRenderer", "currentElement", "newElement", "destinationRange", "frameElement", "sourceRange", "block", "readScrollLogicalPosition", "behavior", "readScrollBehavior", "activatedScriptElement", "FrameRenderer", "defaultValue", "_ProgressBar", "ProgressBar", "_HeadSnapshot", "elementIsNoscript", "elementWithoutNonce", "outerHTML", "details", "elementType", "elementIsTracked", "matchedType", "tracked", "elementIsMetaElementWithName", "HeadSnapshot", "elementIsScript", "elementIsStylesheet", "tagName", "_PageSnapshot", "documentElement", "head", "headSnapshot", "clonedElement", "selectElements", "clonedSelectElements", "index", "source", "option", "clonedPasswordInput", "root", "PageSnapshot", "_viewTransitionStarted", "_lastOperation", "_ViewTransitioner", "useViewTransition", "render", "ViewTransitioner", "defaultOptions", "TimingMetric", "VisitState", "SystemStatusCode", "Direction", "_Visit", "restorationIdentifier", "historyChanged", "referrer", "snapshotHTML", "visitCachedSnapshot", "updateHistory", "shouldCacheSnapshot", "acceptsStreamResponse", "actionForHistory", "statusCode", "isSuccessful", "responseHTML", "_response", "redirected", "_error", "scrollPosition", "metric", "Visit", "_BrowserAdapter", "session", "visit", "_visit", "_formSubmission", "BrowserAdapter", "_CacheObserver", "CacheObserver", "_FrameRedirector_instances", "shouldSubmit_fn", "shouldRedirect_fn", "findFrameElement_fn", "_FrameRedirector", "_location", "frame", "meta", "FrameRedirector", "_History", "state", "additionalData", "restorationData", "turbo", "restorationIndex", "History", "_prefetchedLink", "_enable", "_tryToPrefetchRequest", "_cancelRequestIfObsolete", "_cancelPrefetchRequest", "_tryToUsePrefetchedRequest", "_LinkPrefetchObserver_instances", "cacheTtl_get", "isPrefetchable_fn", "_LinkPrefetchObserver", "fetchRequest", "cached", "turboFrameTarget", "unfetchableLink", "linkToTheSamePage", "linkOptsOut", "nonSafeLink", "eventPrevented", "LinkPrefetchObserver", "turboPrefetchParent", "turboMethod", "isUJS", "_Navigator_instances", "getActionForFormSubmission_fn", "getDefaultAction_fn", "_Navigator", "formSubmission", "visitOptions", "currentAnchor", "isRestorationToTop", "oldURL", "newURL", "Navigator", "PageStage", "_PageObserver", "readyState", "PageObserver", "_ScrollObserver", "position", "ScrollObserver", "_StreamMessageRenderer", "getPermanentElementMapForFragment", "withAutofocusFromFragment", "withPreservedFocus", "StreamMessageRenderer", "permanentElementsInDocument", "permanentElementInDocument", "elementInStream", "generatedID", "turboStreams", "elementWithAutofocus", "firstAutofocusableElementInStreams", "willAutofocusId", "elementToAutofocus", "activeElementBeforeRender", "activeElementAfterRender", "restoreFocusTo", "elementToFocus", "nodeListOfStreamElements", "_started", "_StreamObserver", "fetchResponseFromEvent", "fetchResponseIsStream", "StreamObserver", "_ErrorRenderer", "replaceableElement", "parentNode", "ErrorRenderer", "Idiomorph", "EMPTY_SET", "defaults", "noOp", "elt", "morph", "oldNode", "newContent", "config", "parseContent", "normalizedContent", "normalizeContent", "ctx", "createMorphContext", "morphNormalizedContent", "normalizedNewContent", "oldHead", "newHead", "promises", "handleHeadElement", "morphChildren", "bestMatch", "findBestNodeMatch", "previousSibling", "nextSibling", "morphedNode", "morphOldNodeTo", "insertSiblings", "ignoreValueOfActiveElement", "possibleActiveElement", "isSoftMatch", "syncNodeFrom", "newParent", "oldParent", "nextNewChild", "insertionPoint", "newChild", "removeIdsFromConsideration", "isIdSetMatch", "idSetMatch", "findIdSetMatch", "removeNodesBetween", "softMatch", "findSoftMatch", "tempNode", "removeNode", "ignoreAttribute", "attr", "to", "updateType", "from", "fromAttributes", "toAttributes", "fromAttribute", "toAttribute", "syncInputValue", "syncBooleanAttribute", "ignoreUpdate", "fromValue", "toValue", "newHeadTag", "currentHead", "added", "removed", "preserved", "nodesToAppend", "headMergeStyle", "srcToNewHeadNodes", "newHeadChild", "currentHeadElt", "inNewContent", "isReAppended", "isPreserved", "newNode", "newElt", "promise", "_resolve", "removedElement", "mergeDefaults", "finalConfig", "createIdMap", "node1", "node2", "getIdIntersectionCount", "startInclusive", "endExclusive", "newChildPotentialIdCount", "potentialMatch", "otherMatchCount", "potentialSoftMatch", "siblingSoftMatchCount", "parser", "contentWithSvgsRemoved", "htmlElement", "dummyParent", "stack", "bestElement", "score", "newScore", "scoreElement", "isIdInConsideration", "idIsWithinNode", "targetNode", "idSet", "sourceSet", "matchCount", "populateIdMapForNode", "idMap", "nodeParent", "idElements", "current", "oldContent", "morphElements", "callbacks", "DefaultIdiomorphCallbacks", "_beforeNodeMorphed", "_DefaultIdiomorphCallbacks", "beforeNodeMorphed", "mutationType", "_MorphingFrameRenderer", "MorphingFrameRenderer", "_PageRenderer_instances", "setLanguage_fn", "_PageRenderer", "mergedHeadElements", "newStylesheetElements", "loadingElements", "newHeadElements", "elementList", "lang", "PageRenderer", "_MorphingPageRenderer", "canRefreshFrame", "refreshFrame", "MorphingPageRenderer", "_SnapshotCache", "size", "key", "SnapshotCache", "_PageView", "rendererClass", "cachedSnapshot", "PageView", "_preloadAll", "_Preloader", "snapshotCache", "Preloader", "_Cache_instances", "setCacheControl_fn", "_Cache", "Cache", "_pageRefreshDebouncePeriod", "_Session", "adapter", "requestId", "mode", "isUnsafe", "isStream", "frameTarget", "extendURLWithDeprecatedProperties", "defaultPrevented", "_snapshot", "_isPreview", "renderMethod", "ev", "newBody", "timing", "submitterIsNavigatable", "container", "withinFrame", "Session", "deprecatedLocationPropertyDescriptors", "cache", "navigator$1", "start", "registerAdapter", "connectStreamSource", "disconnectStreamSource", "renderStreamMessage", "clearCache", "setProgressBarDelay", "setConfirmMethod", "confirmMethod", "setFormMode", "Turbo", "_TurboFrameMissingError", "TurboFrameMissingError", "_currentFetchRequest", "_resolveVisitPromise", "_connected", "_hasBeenLoaded", "_ignoredAttributes", "_FrameController_instances", "loadSourceURL_fn", "loadFrameResponse_fn", "visit_fn", "navigateFrame_fn", "handleUnvisitableFrameResponse_fn", "willHandleFrameMissingFromResponse_fn", "handleFrameMissingFromResponse_fn", "throwFrameMissingError_fn", "visitResponse_fn", "formActionIsVisitable_fn", "shouldInterceptNavigation_fn", "isIgnoringChangesTo_fn", "ignoringChangesToAttribute_fn", "withCurrentNavigationElement_fn", "_FrameController", "_fetchResponse", "src", "document", "newFrame", "_renderMethod", "_newElement", "pageSnapshot", "activateElement", "sourceURL", "newFrameElement", "wrapped", "getFrameElementById", "FrameController", "currentURL", "StreamActions", "e", "targetElement", "_StreamElement_instances", "raise_fn", "_StreamElement", "c", "existingChildren", "newChildrenIds", "actionFunction", "StreamElement", "_StreamSourceElement", "StreamSourceElement", "consumer", "getConsumer", "setConsumer", "createConsumer", "__name", "newConsumer", "subscribeTo", "channel", "mixin", "subscriptions", "walk", "obj", "acc", "key", "camel", "m", "x", "__name", "_TurboCableStreamSourceElement", "connectStreamSource", "subscribeTo", "disconnectStreamSource", "data", "event", "channel", "signed_stream_name", "walk", "__name", "TurboCableStreamSourceElement", "encodeMethodIntoRequestBody", "event", "form", "fetchOptions", "submitter", "body", "isBodyInit", "method", "determineFetchMethod", "__name", "formMethod", "determineFormMethod", "overrideMethod", "turbo_es2017_esm_exports", "encodeMethodIntoRequestBody", "_EventListener", "eventTarget", "eventName", "eventOptions", "binding", "event", "extendedEvent", "extendEvent", "left", "right", "leftIndex", "rightIndex", "__name", "EventListener", "stopImmediatePropagation", "_Dispatcher", "application", "eventListener", "listeners", "map", "clearEventListeners", "error", "message", "detail", "eventListenerMap", "cacheKey", "parts", "key", "Dispatcher", "defaultActionDescriptorFilters", "value", "element", "descriptorPattern", "parseActionDescriptorString", "descriptorString", "matches", "keyFilter", "parseEventTarget", "parseEventOptions", "eventTargetName", "options", "token", "stringifyEventTarget", "camelize", "_", "char", "namespaceCamelize", "capitalize", "dasherize", "tokenize", "isSomething", "object", "hasProperty", "property", "allModifiers", "_Action", "index", "descriptor", "schema", "getDefaultEventNameForElement", "eventFilter", "filters", "standardFilter", "params", "pattern", "name", "match", "typecast", "meta", "ctrl", "alt", "shift", "modifier", "Action", "defaultEventNames", "e", "tagName", "_Binding", "context", "action", "actionEvent", "method", "actionDescriptorFilters", "controller", "passes", "filter", "target", "currentTarget", "identifier", "Binding", "_ElementObserver", "delegate", "mutations", "callback", "mutation", "attributeName", "nodes", "node", "tree", "processor", "ElementObserver", "_AttributeObserver", "AttributeObserver", "add", "fetch", "del", "prune", "values", "_Multimap", "set", "size", "_key", "_values", "Multimap", "_SelectorObserver", "element", "selector", "delegate", "details", "ElementObserver", "Multimap", "callback", "matches", "tree", "match", "selectors", "_attributeName", "matchedBefore", "__name", "SelectorObserver", "_StringMapObserver", "mutations", "attributeName", "mutation", "oldValue", "key", "value", "attribute", "StringMapObserver", "_TokenListObserver", "AttributeObserver", "unmatchedTokens", "matchedTokens", "tokens", "token", "previousTokens", "currentTokens", "firstDifferingIndex", "zip", "previousToken", "currentToken", "tokensAreEqual", "tokenString", "parseTokenString", "TokenListObserver", "content", "index", "left", "right", "length", "_", "_ValueListObserver", "parseResult", "valuesByToken", "error", "ValueListObserver", "_BindingObserver", "context", "action", "binding", "Binding", "Action", "BindingObserver", "_ValueObserver", "receiver", "descriptor", "name", "defaultValue", "writer", "rawValue", "rawOldValue", "changedMethodName", "changedMethod", "valueDescriptorMap", "descriptors", "hasMethodName", "capitalize", "ValueObserver", "_TargetObserver", "_a", "TargetObserver", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "values", "getOwnStaticArrayValues", "readInheritableStaticObjectPairs", "pairs", "getOwnStaticObjectPairs", "definition", "_OutletObserver", "outletName", "observer", "_selector", "outlet", "hasOutlet", "hasOutletController", "_element", "selectorObserver", "attributeObserver", "dependencies", "module", "identifiers", "OutletObserver", "_Context", "scope", "functionName", "detail", "identifier", "controller", "message", "namespaceCamelize", "methodName", "args", "Context", "bless", "shadow", "getBlessedProperties", "properties", "shadowConstructor", "extend", "shadowProperties", "getShadowProperties", "blessedProperties", "blessing", "prototype", "getOwnKeys", "getShadowedDescriptor", "shadowingDescriptor", "object", "extendWithReflect", "extended", "testReflectExtension", "b", "blessDefinition", "_Module", "application", "Module", "_ClassMap", "tokenize", "ClassMap", "_DataMap", "dasherize", "DataMap", "_Guide", "logger", "warnedKeys", "Guide", "attributeValueContainsToken", "_TargetSet", "targetName", "targetNames", "target", "targets", "targetDescriptor", "revisedAttributeName", "TargetSet", "_OutletSet", "controllerElement", "outletNames", "outlets", "controllerAttribute", "OutletSet", "_Scope", "schema", "Scope", "_ScopeObserver", "scopesByIdentifier", "referenceCount", "ScopeObserver", "_Router", "contexts", "afterLoad", "Router", "defaultSchema", "objectFromEntries", "c", "n", "array", "memo", "k", "v", "_Application", "Dispatcher", "defaultActionDescriptorFilters", "domReady", "controllerConstructor", "filter", "head", "rest", "Application", "resolve", "ClassPropertiesBlessing", "classDefinition", "propertiesForClassDefinition", "classes", "OutletPropertiesBlessing", "outletDefinition", "propertiesForOutletDefinition", "getOutletController", "getControllerAndEnsureConnectedScope", "outletController", "camelizedName", "outletElement", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "propertiesForValueDefinitionPair", "read", "write", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "parseValueTypeDefault", "parseValueTypeObject", "payload", "typeObject", "hasType", "isSomething", "hasDefault", "fullObject", "onlyType", "onlyDefault", "typeFromObject", "typeFromDefaultValue", "propertyPath", "parseValueTypeDefinition", "typeFromConstant", "type", "defaultValueForDefinition", "defaultValuesByType", "hasProperty", "constantFromType", "camelize", "readers", "writers", "writeString", "writeJSON", "_Controller", "_identifier", "_application", "eventName", "prefix", "bubbles", "cancelable", "event", "Controller", "optionSelector", "activeSelector", "_Autocomplete", "Controller", "debounce", "next", "options", "selected", "index", "sibling", "def", "target", "previouslySelected", "__name", "event", "handler", "item", "textValue", "value", "query", "prefix", "el", "url", "html", "error", "params", "response", "__publicField", "Autocomplete", "fn", "delay", "timeoutId", "args", "HOOKS", "defaults", "__name", "err", "givenDate", "date", "week1", "english", "__name", "nth", "s", "default_default", "pad", "__name", "number", "length", "int", "bool", "debounce", "fn", "wait", "_this", "args", "arrayify", "obj", "toggleClass", "elem", "className", "bool", "__name", "createElement", "tag", "content", "e", "clearNode", "node", "findParent", "condition", "createNumberInput", "inputClassName", "opts", "wrapper", "numInput", "arrowUp", "arrowDown", "key", "getEventTarget", "event", "path", "doNothing", "__name", "monthToStr", "monthNumber", "shorthand", "locale", "revFormat", "dateObj", "monthName", "hour", "day", "amPM", "int", "shortMonth", "seconds", "_", "unixSeconds", "weekNum", "weekNumber", "date", "year", "ISODate", "minutes", "month", "unixMillSeconds", "tokenRegex", "formats", "options", "pad", "createDateFormatter", "__name", "_a", "_b", "config", "defaults", "_c", "l10n", "english", "_d", "isMobile", "dateObj", "frmt", "overrideLocale", "locale", "c", "i", "arr", "formats", "createDateParser", "date", "givenFormat", "timeless", "customLocale", "parsedDate", "dateOrig", "format", "datestr", "matched", "ops", "matchIndex", "regexStr", "token", "isBackSlash", "escaped", "tokenRegex", "match", "revFormat", "fn", "val", "compareDates", "date1", "date2", "isBetween", "__name", "ts", "ts1", "ts2", "calculateSecondsSinceMidnight", "hours", "minutes", "seconds", "parseSeconds", "secondsSinceMidnight", "duration", "getDefaultHours", "config", "minHour", "minMinutes", "minSeconds", "maxHr", "maxMinutes", "target", "args", "_i", "_loop_1", "__name", "source", "key", "_a", "args_1", "__assign", "t", "s", "i", "n", "p", "__spreadArrays", "il", "k", "a", "j", "jl", "DEBOUNCED_CHANGE_MS", "FlatpickrInstance", "element", "instanceConfig", "self", "defaults", "flatpickr", "default_default", "createDateParser", "bind", "setHoursFromDate", "positionCalendar", "changeMonth", "changeYear", "clear", "close", "onMouseOver", "createElement", "createDay", "destroy", "isEnabled", "jumpToDate", "updateValue", "open", "redraw", "set", "setDate", "toggle", "setupHelperFunctions", "__name", "month", "yr", "init", "parseConfig", "setupLocale", "setupInputs", "setupDates", "build", "bindEvents", "setCalendarWidth", "isSafari", "triggerEvent", "getClosestActiveElement", "_a", "bindToInstance", "fn", "config", "daysWidth", "updateTime", "e", "defaultDate", "compareDates", "getDefaultHours", "timeWrapper", "prevValue", "setHoursFromInputs", "ampm2military", "hour", "amPM", "int", "military2ampm", "hours", "minutes", "seconds", "limitMinHours", "limitMaxHours", "minBound", "calculateSecondsSinceMidnight", "maxBound", "currentTime", "result", "parseSeconds", "maxTime", "minTime", "setHours", "dateObj", "date", "pad", "onYearInput", "event", "eventTarget", "getEventTarget", "year", "handler", "options", "ev", "el", "triggerChange", "evt", "setupMobile", "debouncedResize", "debounce", "onResize", "onKeyDown", "documentClick", "onMonthNavClick", "selectDate", "selText", "timeIncrement", "onBlur", "jumpDate", "jumpTo", "oldYear", "oldMonth", "buildMonthSwitch", "incrementNumInput", "delta", "inputElem", "target", "input", "createEvent", "fragment", "buildMonthNav", "buildWeeks", "weekWrapper", "weekNumbers", "buildWeekdays", "buildDays", "buildTime", "toggleClass", "customAppend", "wrapper", "className", "_dayNumber", "dateIsEnabled", "dayElement", "isDateSelected", "isDateInRange", "focusOnDayElem", "targetNode", "getFirstAvailableDay", "startMonth", "endMonth", "m", "startIndex", "endIndex", "c", "getNextAvailableDay", "current", "givenMonth", "loopDelta", "numMonthDays", "focusOnDay", "offset", "activeElement", "dayFocused", "isInView", "startElem", "buildMonthDays", "firstOfMonth", "prevMonthDays", "daysInMonth", "days", "isMultiMonth", "prevMonthDayClass", "nextMonthDayClass", "dayNumber", "dayIndex", "dayNum", "dayContainer", "clearNode", "frag", "d", "shouldBuildMonth", "monthToStr", "buildMonth", "container", "monthNavFragment", "monthElement", "selectedMonth", "yearInput", "createNumberInput", "yearElement", "currentMonth", "buildMonths", "bool", "updateNavigationCurrentMonth", "separator", "hourInput", "minuteInput", "secondInput", "updateWeekdays", "firstDayOfWeek", "weekdays", "value", "isOffset", "triggerChangeEvent", "toInitial", "isCalendarElem", "elem", "eventTarget_1", "isCalendarElement", "isInput", "lostFocus", "isIgnored", "newYear", "newYearNum", "isNewYear", "timeless", "dateToCheck", "array", "parsed", "valueChanged", "getDateStr", "allowInput", "allowKeydown", "allowInlineKeydown", "isTimeObj", "focusAndClose", "delta_1", "elems", "x", "cellClass", "hoverDate", "initialDate", "rangeStartDate", "rangeEndDate", "containsDisabled", "minRange", "maxRange", "duration", "hoverableCells", "dayElem", "timestamp", "outOfRange", "isBetween", "positionElement", "wasOpen", "minMaxDateSetter", "type", "inverseDateObj", "boolOpts", "userConfig", "formats", "dates", "parseDateRules", "timeMode", "defaultDateFormat", "defaultAltFormat", "minMaxTimeSetter", "val", "HOOKS", "hook", "arrayify", "pluginConf", "key", "getInputElem", "tokenRegex", "createDateFormatter", "customPositionElement", "calendarHeight", "acc", "child", "calendarWidth", "configPos", "configPosVertical", "configPosHorizontal", "inputBounds", "distanceFromBottom", "showOnTop", "top", "left", "isCenter", "isRight", "right", "rightMost", "centerMost", "doc", "getDocumentStyleSheet", "bodyWidth", "centerLeft", "centerBefore", "centerAfter", "centerIndex", "centerStyle", "editableSheet", "sheet", "createStyleSheet", "style", "isSelectable", "day", "findParent", "selectedDate", "shouldChangeMonth", "selectedIndex", "b", "single", "range", "CALLBACKS", "updatePositionElement", "option", "setSelectedDate", "inputDate", "format", "arr", "rule", "preloadedDate", "inputType", "data", "hooks", "name", "specificFormat", "dObj", "isPrevMonth", "isNextMonth", "isKeyDown", "min", "max", "step", "curValue", "newValue", "isHourElem", "isMinuteElem", "_flatpickr", "nodeList", "nodes", "instances", "node", "selector", "l10n", "esm_default", "camelize", "value", "replace", "_", "char", "toUpperCase", "capitalize", "charAt", "slice", "dasherize", "toLowerCase", "readInheritableStaticArrayValues", "constructor", "propertyName", "ancestors", "getAncestorsForConstructor", "Array", "from", "reduce", "values", "getOwnStaticArrayValues", "forEach", "name", "add", "Set", "readInheritableStaticObjectPairs", "pairs", "push", "getOwnStaticObjectPairs", "Object", "getPrototypeOf", "reverse", "definition", "isArray", "keys", "map", "key", "extend", "extendWithReflect", "extended", "Reflect", "construct", "arguments", "new", "prototype", "create", "setPrototypeOf", "testReflectExtension", "b", "__name", "a", "call", "_a", "ClassPropertiesBlessing", "properties", "classDefinition", "assign", "propertiesForClassDefinition", "get", "classes", "has", "attribute", "getAttributeName", "Error", "getAll", "TargetPropertiesBlessing", "targetDefinition", "propertiesForTargetDefinition", "target", "targets", "find", "identifier", "findAll", "ValuePropertiesBlessing", "valueDefinitionPairs", "propertyDescriptorMap", "valueDescriptorMap", "result", "valueDefinitionPair", "valueDescriptor", "parseValueDefinitionPair", "attributeName", "data", "getAttributeNameForKey", "propertiesForValueDefinitionPair", "reader", "read", "writer", "write", "defaultValue", "set", "undefined", "delete", "hasCustomDefaultValue", "token", "typeDefinition", "valueDescriptorForTokenAndTypeDefinition", "parseValueTypeConstant", "constant", "Boolean", "Number", "String", "parseValueTypeDefault", "toString", "parseValueTypeObject", "typeObject", "typeFromObject", "type", "defaultValueType", "default", "parseValueTypeDefinition", "typeFromDefaultValue", "typeFromConstant", "defaultValueForDefinition", "defaultValuesByType", "readers", "writers", "array", "boolean", "number", "object", "string", "JSON", "parse", "TypeError", "writeString", "writeJSON", "stringify", "Controller", "context", "shouldLoad", "application", "scope", "element", "initialize", "connect", "disconnect", "dispatch", "eventName", "detail", "prefix", "bubbles", "cancelable", "event", "CustomEvent", "dispatchEvent", "_Controller", "blessings", "kebabCase", "booleanOptions", "stringOptions", "numberOptions", "arrayOptions", "arrayOrStringOptions", "dateOptions", "dateFormats", "options", "date", "arrayOrString", "events", "elements", "mapping", "strftimeRegex", "RegExp", "join", "convertDateFormat", "format", "match", "StimulusFlatpickr", "config", "_initializeEvents", "_initializeOptions", "_initializeDateFormats", "fp", "flatpickr", "flatpickrElement", "_objectSpread2", "_initializeElements", "inputTarget", "destroy", "hook", "bind", "optionType", "option", "optionKebab", "_handleDaysOfWeek", "disableDaysOfWeek", "_validateDaysOfWeek", "disable", "_disable", "enableDaysOfWeek", "enable", "_enable", "days", "day", "parseInt", "console", "error", "includes", "getDay", "dateFormat", "val", "hasInstanceTarget", "instanceTarget", "_click_toggle_controller_default", "Controller", "__name", "e", "element", "event", "target", "__publicField", "click_toggle_controller_default", "init_Translator", "import_namespace_emitter", "urlAlphabet", "nanoid", "__name", "size", "id", "i", "urlAlphabet", "import_throttle", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "packageJson", "_callbacks", "_publish", "_DefaultStore", "_publish2", "patch", "prevState", "nextState", "listener", "DefaultStore", "_len", "args", "_key", "lib_default", "getFileNameAndExtension", "fullFileName", "lastDot", "__name", "mimeTypes_default", "getFileType", "file", "_getFileNameAndExtens", "fileExtension", "getFileNameAndExtension", "mimeTypes_default", "__name", "encodeCharacter", "character", "__name", "encodeFilename", "name", "suffix", "generateFileID", "file", "instanceId", "id", "hasFileStableId", "getSafeFileId", "fileType", "getFileType", "supportsUploadProgress", "userAgent", "m", "version", "major", "minor", "__name", "getFileName", "fileType", "fileDescriptor", "__name", "pad", "number", "__name", "getTimeStamp", "date", "hours", "minutes", "seconds", "justErrorsLogger", "__name", "_len", "args", "_key", "getTimeStamp", "debugLogger", "_len2", "_key2", "_len3", "_key3", "_len4", "_key4", "import_prettier_bytes", "import_mime_match", "defaultOptions", "_RestrictionError", "message", "opts", "_opts$isUserFacing", "__name", "RestrictionError", "_Restricter", "getOpts", "getI18n", "_opts$restrictions", "existingFiles", "addingFiles", "maxTotalFileSize", "maxNumberOfFiles", "f", "totalFilesSize", "total", "_f$size", "prettierBytes", "file", "maxFileSize", "minFileSize", "allowedFileTypes", "type", "match", "allowedFileTypesString", "_file$name", "addingFile", "files", "minNumberOfFiles", "_file$name2", "error", "requiredMetaFields", "missingFields", "field", "Restricter", "locale_default", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "packageJson", "defaultUploadState", "_plugins", "_restricter", "_storeUnsubscribe", "_emitter", "_preProcessors", "_uploaders", "_postProcessors", "_informAndEmit", "_checkRequiredMetaFieldsOnFile", "_checkRequiredMetaFields", "_assertNewUploadAllowed", "_transformFile", "_startIfAutoProceed", "_checkAndUpdateFileState", "_addListeners", "_updateOnlineStatus", "_requestClientById", "_createUpload", "_getUpload", "_removeUpload", "_runUpload", "_Uppy", "_opts", "_runUpload2", "_removeUpload2", "_getUpload2", "_createUpload2", "_addListeners2", "_checkAndUpdateFileState2", "_startIfAutoProceed2", "_transformFile2", "_assertNewUploadAllowed2", "_checkRequiredMetaFields2", "_checkRequiredMetaFieldsOnFile2", "_informAndEmit2", "ee", "throttle", "file", "data", "fileInState", "canHavePercentage", "locale_default", "defaultOptions", "files", "lib_default", "justErrorsLogger", "merged", "debugLogger", "supportsUploadProgress", "Restricter", "prevState", "nextState", "patch", "event", "_len", "args", "_key", "callback", "state", "plugin", "filesWithNewState", "existingFilesState", "_ref", "fileID", "newFileState", "onMissingKey", "key", "translator", "Translator", "newOpts", "defaultProgress", "updatedFiles", "capabilities", "currentUploads", "fn", "updatedMeta", "newMeta", "ids", "filesObject", "totalProgress", "error", "inProgressFiles", "newFiles", "startedFiles", "uploadStartedFiles", "pausedFiles", "completeFiles", "erroredFiles", "inProgressNotPausedFiles", "processingFiles", "progress", "err", "existingFiles", "nextFilesState", "validFilesToAdd", "errors", "restrictionErrors", "firstValidFileToAdd", "fileDescriptors", "nonRestrictionErrors", "message", "subError", "fileIDs", "updatedUploads", "removedFiles", "fileIsNotRemoved", "uploadFileID", "uploadID", "newFileIDs", "stateUpdate", "removedFileIDs", "isPaused", "updatedFile", "filesToRetry", "_provider", "inProgress", "sizedFiles", "unsizedFiles", "progressMax", "currentProgress", "acc", "totalSize", "_file$progress$bytesT", "averageSize", "uploadedSize", "_window$navigator$onL", "Plugin", "msg", "_len2", "_key2", "pluginId", "existsPluginAlready", "plugins", "foundPlugin", "type", "method", "instance", "list", "index", "item", "updatedState", "info", "duration", "isComplexMessage", "logger", "client", "requestClient", "currentUpload", "_classPrivateFieldLoo", "onBeforeUploadResult", "RestrictionError", "currentlyUploadingFiles", "curr", "waitingFileIDs", "Uppy", "userFacingErrors", "maxNumToShow", "firstErrors", "additionalErrors", "_ref2", "details", "missingFields", "success", "allowNewUpload", "fileDescriptorOrFile", "fileType", "getFileType", "fileName", "getFileName", "fileExtension", "getFileNameAndExtension", "getSafeFileId", "meta", "size", "filesToAdd", "fileToAdd", "_existingFiles$newFil", "newFile", "isGhost", "onBeforeFileAddedResult", "_newFile$name", "errorHandler", "response", "errorMsg", "_file$name", "newError", "uploadStalledWarningRecentlyEmitted", "onUploadStarted", "filesFiltered", "exists", "filesState", "uploadResp", "opts", "forceAllowNewUpload", "nanoid", "getCurrentUpload", "steps", "step", "successful", "failed", "result", "Uppy_default", "slice", "options", "vnodeId", "isValidElement", "rerenderQueue", "prevDebounce", "defer", "depthSort", "i", "EMPTY_OBJ", "EMPTY_ARR", "IS_NON_DIMENSIONAL", "isArray", "Array", "assign", "obj", "props", "removeNode", "node", "parentNode", "removeChild", "createElement", "type", "children", "key", "ref", "normalizedProps", "arguments", "length", "call", "defaultProps", "createVNode", "original", "vnode", "__k", "__", "__b", "__e", "__d", "__c", "__h", "constructor", "__v", "createRef", "current", "Fragment", "Component", "context", "this", "getDomSibling", "childIndex", "indexOf", "sibling", "updateParentDomPointers", "child", "base", "enqueueRender", "c", "push", "process", "__r", "debounceRendering", "renderQueueLength", "component", "commitQueue", "oldVNode", "oldDom", "parentDom", "sort", "shift", "__P", "diff", "__n", "ownerSVGElement", "commitRoot", "diffChildren", "renderResult", "newParentVNode", "oldParentVNode", "globalContext", "isSvg", "excessDomChildren", "isHydrating", "j", "childVNode", "newDom", "firstChildDom", "refs", "oldChildren", "oldChildrenLength", "reorderChildren", "placeChild", "getLastDom", "nextSibling", "unmount", "applyRef", "tmp", "toChildArray", "out", "some", "nextDom", "sibDom", "outer", "appendChild", "insertBefore", "lastDom", "diffProps", "dom", "newProps", "oldProps", "hydrate", "setProperty", "setStyle", "style", "value", "test", "name", "oldValue", "useCapture", "o", "cssText", "replace", "toLowerCase", "l", "addEventListener", "eventProxyCapture", "eventProxy", "removeEventListener", "e", "removeAttribute", "setAttribute", "event", "newVNode", "isNew", "oldState", "snapshot", "clearProcessingException", "provider", "componentContext", "renderHook", "count", "newType", "contextType", "__E", "prototype", "render", "doRender", "sub", "state", "_sb", "__s", "getDerivedStateFromProps", "componentWillMount", "componentDidMount", "componentWillReceiveProps", "shouldComponentUpdate", "forEach", "componentWillUpdate", "componentDidUpdate", "getChildContext", "getSnapshotBeforeUpdate", "diffElementNodes", "diffed", "root", "cb", "oldHtml", "newHtml", "nodeType", "localName", "document", "createTextNode", "createElementNS", "is", "data", "childNodes", "dangerouslySetInnerHTML", "attributes", "__html", "innerHTML", "checked", "parentVNode", "skipRemove", "r", "componentWillUnmount", "replaceNode", "firstChild", "cloneElement", "vnode", "props", "children", "key", "ref", "i", "defaultProps", "normalizedProps", "assign", "type", "arguments", "length", "slice", "call", "createVNode", "slice", "EMPTY_ARR", "options", "__e", "__name", "error", "vnode", "oldVNode", "errorInfo", "component", "ctor", "handled", "__", "__c", "constructor", "getDerivedStateFromError", "setState", "__d", "componentDidCatch", "__E", "e", "vnodeId", "isValidElement", "Component", "prototype", "update", "callback", "s", "this", "__s", "state", "assign", "props", "__v", "_sb", "push", "enqueueRender", "forceUpdate", "render", "Fragment", "rerenderQueue", "defer", "Promise", "then", "bind", "resolve", "setTimeout", "depthSort", "a", "b", "__b", "process", "__r", "i", "isDOMElement", "obj", "__name", "findDOMElement", "element", "context", "isDOMElement", "__name", "findDOMElement_default", "getTextDirection", "element", "_element", "__name", "getTextDirection_default", "init_BasePlugin", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "debounce", "fn", "calling", "latestArgs", "_len", "args", "_key", "_updateUI", "_UIPlugin", "BasePlugin", "target", "targetPlugin", "Target", "p", "plugin", "callerPluginName", "targetElement", "findDOMElement_default", "uppyRootElement", "state", "D", "getTextDirection_default", "message", "_classPrivateFieldLoo", "_classPrivateFieldLoo2", "_this$el", "UIPlugin", "UIPlugin_default", "emaFilter", "newValue", "previousSmoothedValue", "halfLife", "dt", "__name", "StatusBarStates_default", "import_classnames", "calculateProcessingProgress", "files", "values", "mode", "message", "progress", "preprocess", "postprocess", "value", "total", "progressValue", "__name", "import_classnames", "import_prettier_bytes", "secondsToTime", "rawSeconds", "hours", "minutes", "seconds", "__name", "prettyETA", "seconds", "time", "secondsToTime", "hoursStr", "minutesStr", "secondsStr", "__name", "DOT", "renderDot", "__name", "UploadBtn", "props", "newFiles", "isUploadStarted", "recoveredState", "i18n", "uploadState", "isSomeGhost", "startUpload", "uploadBtnClassNames", "classNames", "StatusBarStates_default", "uploadBtnText", "y", "RetryBtn", "uppy", "CancelBtn", "PauseResumeButton", "isAllPaused", "isAllComplete", "resumableUploads", "title", "togglePauseResume", "DoneBtn", "doneButtonHandler", "LoadingSpinner", "ProgressBarProcessing", "progress", "value", "mode", "message", "ProgressDetails", "numUploads", "complete", "totalUploadedSize", "totalSize", "totalETA", "ifShowFilesUploadedOfTotal", "prettierBytes", "prettyETA", "FileUploadCount", "UploadNewlyAddedFiles", "ProgressBarUploading", "supportsUploadProgress", "totalProgress", "showProgressDetails", "showUploadNewlyAddedFiles", "renderProgressDetails", "ProgressBarComplete", "ProgressBarError", "error", "displayErrorAlert", "errorMessage", "STATE_ERROR", "STATE_WAITING", "STATE_PREPROCESSING", "STATE_UPLOADING", "STATE_POSTPROCESSING", "STATE_COMPLETE", "StatusBarStates_default", "StatusBarUI", "_ref", "newFiles", "allowNewUpload", "isUploadInProgress", "isAllPaused", "resumableUploads", "error", "hideUploadButton", "hidePauseResumeButton", "hideCancelButton", "hideRetryButton", "recoveredState", "uploadState", "totalProgress", "files", "supportsUploadProgress", "hideAfterFinish", "isSomeGhost", "doneButtonHandler", "isUploadStarted", "i18n", "startUpload", "uppy", "isAllComplete", "showProgressDetails", "numUploads", "complete", "totalSize", "totalETA", "totalUploadedSize", "getProgressValue", "progress", "calculateProcessingProgress", "__name", "getIsIndeterminate", "mode", "progressValue", "width", "showUploadBtn", "showCancelBtn", "showPauseResumeBtn", "showRetryBtn", "showDoneBtn", "progressClassNames", "classNames", "statusBarClassNames", "progressBarStateEl", "y", "ProgressBarProcessing", "ProgressBarComplete", "ProgressBarError", "ProgressBarUploading", "UploadBtn", "RetryBtn", "PauseResumeButton", "CancelBtn", "DoneBtn", "locale_default", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "packageJson", "speedFilterHalfLife", "ETAFilterHalfLife", "getUploadingState", "error", "isAllComplete", "recoveredState", "files", "StatusBarStates_default", "state", "fileIDs", "i", "progress", "defaultOptions", "_lastUpdateTime", "_previousUploadedBytes", "_previousSpeed", "_previousETA", "_computeSmoothETA", "_onUploadStart", "_StatusBar", "UIPlugin_default", "uppy", "opts", "_computeSmoothETA2", "pv", "_ref", "locale_default", "capabilities", "allowNewUpload", "totalProgress", "newFiles", "startedFiles", "completeFiles", "isUploadStarted", "isAllPaused", "isUploadInProgress", "isSomeGhost", "newFilesOrRecovered", "resumableUploads", "supportsUploadProgress", "totalSize", "totalUploadedSize", "file", "totalETA", "StatusBarUI", "element", "getTextDirection_default", "target", "StatusBar", "totalBytes", "_classPrivateFieldLoo", "_classPrivateFieldLoo2", "dt", "_classPrivateFieldLoo3", "uploadedBytesSinceLastTick", "_classPrivateFieldLoo4", "currentSpeed", "filteredSpeed", "emaFilter", "instantETA", "updatedPreviousETA", "filteredETA", "TRANSITION_MS", "_FadeIn", "b", "_", "callback", "children", "y", "__name", "FadeIn", "assign", "obj", "props", "__name", "getKey", "vnode", "fallback", "_vnode$key", "linkRef", "component", "name", "cache", "c", "getChildMapping", "children", "out", "i", "key", "mergeChildMappings", "prev", "next", "getValueForKey", "nextKeysPending", "pendingKeys", "prevKey", "childMapping", "nextKey", "pendingNextKey", "identity", "_TransitionGroup", "b", "context", "S", "initialChildMapping", "nextProps", "nextChildMapping", "prevChildMapping", "prevState", "hasPrev", "hasNext", "keysToEnter", "keysToLeave", "idx", "currentChildMapping", "_ref", "_ref2", "childFactory", "transitionLeave", "transitionName", "transitionAppear", "transitionEnter", "transitionLeaveTimeout", "transitionEnterTimeout", "transitionAppearTimeout", "childrenToRender", "_ref3", "child", "ref", "F", "y", "TransitionGroup", "TransitionGroup_default", "packageJson", "_Informer", "UIPlugin_default", "uppy", "opts", "state", "y", "TransitionGroup_default", "info", "FadeIn", "__name", "target", "Informer", "DATA_URL_PATTERN", "dataURItoBlob", "dataURI", "opts", "toFile", "_ref", "_opts$mimeType", "dataURIData", "mimeType", "data", "binary", "bytes", "i", "__name", "dataURItoBlob_default", "isObjectURL", "url", "__name", "isPreviewSupported", "fileType", "__name", "e", "t", "s", "__name", "i", "n", "r", "a", "h", "f", "l", "o", "u", "d", "_c", "c", "p", "_g", "g", "m", "y", "b", "w", "k", "v", "O", "S", "A", "_U", "U", "x", "C", "B", "V", "I", "L", "T", "z", "P", "F", "j", "E", "M", "__", "_", "_D", "X", "D", "N", "$", "_R", "W", "K", "R", "_H", "H", "Y", "G", "_J", "J", "q", "Q", "Z", "_ee", "ee", "te", "_se", "se", "_ie", "ne", "ie", "re", "ae", "he", "le", "ae", "de", "ae", "ce", "e", "t", "H", "s", "__name", "pe", "ge", "me", "ye", "_be", "c", "we", "a", "r", "i", "be", "_we", "n", "ke", "_Oe", "Oe", "b", "A", "locale_default", "packageJson", "canvasToBlob", "canvas", "type", "quality", "err", "resolve", "blob", "dataURItoBlob_default", "__name", "rotateImage", "image", "translate", "w", "h", "context", "protect", "ratio", "maxSquare", "maxSize", "maxW", "maxH", "defaultOptions", "_ThumbnailGenerator", "UIPlugin_default", "uppy", "opts", "file", "isPreviewSupported", "index", "isObjectURL", "fileIDs", "fileID", "emitPreprocessCompleteForAll", "locale_default", "targetWidth", "targetHeight", "originalUrl", "onload", "reject", "event", "orientationPromise", "ye", "_ref", "orientation", "dimensions", "rotatedImage", "resizedImage", "img", "width", "height", "deg", "aspect", "steps", "sW", "sH", "x", "preview", "current", "ThumbnailGenerator", "findAllDOMElements", "element", "elements", "isDOMElement", "__name", "findAllDOMElements_default", "toArray_default", "getFilesAndDirectoriesFromDirectory", "directoryReader", "oldEntries", "logDropError", "_ref", "onSuccess", "entries", "newEntries", "error", "__name", "getAsFileSystemHandleFromEntry", "entry", "logDropError", "resolve", "reject", "directoryReader", "getFilesAndDirectoriesFromDirectory", "__name", "dirEntries", "file", "createPromiseToAddFileOrParseDirectory", "relativePath", "lastResortFile", "getNextRelativePath", "handle", "e", "getFilesFromDataTransfer", "dataTransfer", "fileSystemHandles", "item", "_fileSystemHandle", "fileSystemHandle", "getAsEntry", "err", "fallbackApi", "dataTransfer", "files", "toArray_default", "__name", "getDroppedFiles", "dataTransfer", "options", "_options$logDropError", "logDropError", "accumulator", "file", "getFilesFromDataTransfer", "fallbackApi", "__name", "import_classnames", "remoteFileObjToLocal", "file", "getFileNameAndExtension", "__name", "currentIndex", "currentComponent", "previousComponent", "prevRaf", "currentHook", "afterPaintEffects", "EMPTY", "oldBeforeDiff", "options", "__b", "oldBeforeRender", "__r", "oldAfterDiff", "diffed", "oldCommit", "__c", "oldBeforeUnmount", "unmount", "getHookState", "index", "type", "__h", "hooks", "__H", "__", "length", "push", "__V", "useState", "initialState", "useReducer", "invokeOrReturn", "reducer", "init", "hookState", "_reducer", "action", "currentValue", "__N", "nextValue", "setState", "_hasScuFromHooks", "updateHookState", "__name", "p", "s", "c", "stateHooks", "filter", "x", "every", "prevScu", "call", "this", "shouldUpdate", "forEach", "hookItem", "props", "shouldComponentUpdate", "prevCWU", "componentWillUpdate", "__e", "tmp", "useEffect", "callback", "args", "state", "__s", "argsChanged", "_pendingArgs", "useRef", "initialValue", "currentHook", "useMemo", "current", "useMemo", "factory", "args", "state", "getHookState", "currentIndex", "argsChanged", "_pendingArgs", "__h", "__V", "__", "useCallback", "callback", "currentHook", "flushAfterPaintEffects", "component", "afterPaintEffects", "shift", "__P", "__H", "forEach", "invokeCleanup", "__h", "invokeEffect", "e", "options", "__e", "__v", "__b", "vnode", "currentComponent", "oldBeforeDiff", "__r", "oldBeforeRender", "currentIndex", "hooks", "__c", "previousComponent", "__", "hookItem", "__N", "EMPTY", "_pendingArgs", "diffed", "oldAfterDiff", "c", "length", "push", "prevRaf", "requestAnimationFrame", "afterNextFrame", "__V", "commitQueue", "some", "filter", "cb", "oldCommit", "unmount", "oldBeforeUnmount", "hasErrored", "s", "HAS_RAF", "callback", "raf", "done", "__name", "clearTimeout", "timeout", "cancelAnimationFrame", "setTimeout", "hook", "comp", "cleanup", "argsChanged", "oldArgs", "newArgs", "arg", "index", "invokeOrReturn", "f", "GoogleIcon", "y", "__name", "DefaultForm", "_ref", "pluginName", "i18n", "onAuth", "isGoogleDrive", "onSubmit", "T", "e", "defaultRenderForm", "_ref2", "AuthView", "_ref3", "loading", "pluginIcon", "handleAuth", "renderForm", "import_classnames", "User", "_ref", "i18n", "logout", "username", "y", "k", "__name", "Breadcrumbs", "props", "openFolder", "title", "breadcrumbsIcon", "breadcrumbs", "i18n", "y", "folder", "index", "_folder$data$name", "k", "__name", "Header", "props", "y", "classNames", "Breadcrumbs", "User", "__name", "_extends", "n", "__name", "STYLE_INNER", "STYLE_CONTENT", "_VirtualList", "b", "props", "height", "_ref", "data", "rowHeight", "renderRow", "overscanCount", "offset", "start", "visibleRowCount", "end", "selection", "styleInner", "styleContent", "y", "VirtualList", "VirtualList_default", "import_classnames", "FileIcon", "y", "__name", "FolderIcon", "VideoIcon", "ItemIcon", "_ref", "itemIconString", "alt", "GridItem", "_ref", "_file$data$name", "_file$data$name2", "file", "toggleCheckbox", "className", "isDisabled", "restrictionError", "showTitles", "children", "i18n", "y", "ItemIcon", "__name", "GridItem_default", "ListItem", "_ref", "_file$data$name", "_file$data$name2", "_file$data$name3", "file", "openFolder", "className", "isDisabled", "restrictionError", "toggleCheckbox", "showTitles", "i18n", "y", "__name", "ItemIcon", "Item", "props", "viewType", "toggleCheckbox", "showTitles", "i18n", "openFolder", "file", "restrictionError", "isDisabled", "ourProps", "classNames", "y", "GridItem_default", "ListItem", "__name", "Browser", "props", "displayedPartialTree", "viewType", "toggleCheckbox", "handleScroll", "showTitles", "i18n", "isLoading", "openFolder", "noResultsLabel", "virtualList", "isShiftKeyPressed", "setIsShiftKeyPressed", "h", "p", "handleKeyUp", "__name", "e", "handleKeyDown", "y", "renderItem", "item", "Item", "event", "_document$getSelectio", "VirtualList_default", "Browser_default", "afterOpenFolder", "__name", "oldPartialTree", "discoveredItems", "clickedFolder", "currentPagePath", "validateSingleFile", "discoveredFolders", "i", "discoveredFiles", "isParentFolderChecked", "folders", "folder", "files", "file", "restrictionError", "updatedClickedFolder", "afterOpenFolder_default", "afterScrollFolder", "__name", "oldPartialTree", "currentFolderId", "items", "nextPagePath", "validateSingleFile", "currentFolder", "i", "newFolders", "newFiles", "scrolledFolder", "partialTreeWithUpdatedScrolledFolder", "folder", "isParentFolderChecked", "folders", "files", "file", "restrictionError", "afterScrollFolder_default", "shallowClone", "__name", "partialTree", "item", "shallowClone_default", "percolateDown", "__name", "tree", "id", "shouldMarkAsChecked", "item", "percolateUp", "folder", "validChildren", "areAllChildrenChecked", "areAllChildrenUnchecked", "afterToggleCheckbox", "oldTree", "clickedRange", "shallowClone_default", "newlyCheckedItems", "clickedItem", "afterToggleCheckbox_default", "import_index", "_TimeoutError", "message", "__name", "TimeoutError", "_AbortError", "AbortError", "getDOMException", "errorMessage", "getAbortedReason", "signal", "reason", "pTimeout", "promise", "options", "milliseconds", "fallback", "customTimers", "timer", "cancelablePromise", "resolve", "reject", "timeoutError", "error", "lowerBound", "array", "value", "comparator", "first", "count", "step", "it", "__name", "_queue", "_PriorityQueue", "__privateAdd", "run", "options", "element", "__privateGet", "index", "lowerBound", "a", "b", "__name", "PriorityQueue", "_carryoverConcurrencyCount", "_isIntervalIgnored", "_intervalCount", "_intervalCap", "_interval", "_intervalEnd", "_intervalId", "_timeoutId", "_queue", "_queueClass", "_pending", "_concurrency", "_isPaused", "_throwOnTimeout", "_PQueue_instances", "doesIntervalAllowAnother_get", "doesConcurrentAllowAnother_get", "next_fn", "onResumeInterval_fn", "isIntervalPaused_get", "tryToStartAnother_fn", "initializeIntervalIfNeeded_fn", "onInterval_fn", "processQueue_fn", "throwOnAbort_fn", "onEvent_fn", "_PQueue", "EventEmitter", "options", "__privateAdd", "__publicField", "PriorityQueue", "__privateSet", "__privateGet", "newConcurrency", "__privateMethod", "function_", "resolve", "reject", "__privateWrapper", "operation", "pTimeout", "result", "error", "TimeoutError", "functions", "limit", "__name", "now", "delay", "canInitializeInterval", "job", "signal", "_resolve", "event", "filter", "listener", "PQueue", "recursivelyFetch", "__name", "queue", "poorTree", "poorFolder", "apiList", "validateSingleFile", "items", "currentPath", "response", "newFolders", "i", "newFiles", "folders", "folder", "files", "file", "restrictionError", "afterFill", "partialTree", "reportProgress", "PQueue", "shallowClone_default", "item", "nOfFilesChecked", "afterFill_default", "PartialTreeUtils_default", "afterOpenFolder_default", "afterScrollFolder_default", "afterToggleCheckbox_default", "afterFill_default", "shouldHandleScroll", "__name", "event", "scrollHeight", "scrollTop", "offsetHeight", "shouldHandleScroll_default", "handleError", "__name", "uppy", "error", "handleError_default", "getClickedRange", "__name", "clickedId", "displayedPartialTree", "isShiftKeyPressed", "lastCheckbox", "lastCheckboxIndex", "item", "newCheckboxIndex", "getClickedRange_default", "SearchInput", "_ref", "searchString", "setSearchString", "submitSearchString", "wrapperClassName", "inputClassName", "inputLabel", "clearSearchLabel", "showButton", "buttonLabel", "buttonCSSClassName", "onInput", "__name", "e", "submit", "T", "ev", "form", "h", "formEl", "nanoid", "p", "y", "SearchInput_default", "import_classnames", "getNumberOfSelectedFiles", "__name", "partialTree", "item", "i", "getNumberOfSelectedFiles_default", "FooterActions", "_ref", "cancelSelection", "donePicking", "i18n", "partialTree", "validateAggregateRestrictions", "aggregateRestrictionError", "F", "nOfSelectedFiles", "getNumberOfSelectedFiles_default", "y", "classNames", "__name", "getTagFile", "__name", "file", "plugin", "provider", "_file$author", "_file$author2", "getTagFile_default", "addFiles", "__name", "companionFiles", "plugin", "provider", "tagFiles", "f", "getTagFile_default", "filesToAdd", "filesAlreadyAdded", "tagFile", "getSafeFileId", "addFiles_default", "getPath", "__name", "partialTree", "id", "cache", "sId", "file", "f", "meAndParentPath", "getCheckedFilesWithPaths", "item", "absFolders", "firstCheckedFolderIndex", "i", "relFolders", "absDirPath", "relDirPath", "getCheckedFilesWithPaths_default", "getBreadcrumbs", "__name", "partialTree", "currentFolderId", "folder", "f", "breadcrumbs", "currentParentId", "getBreadcrumbs_default", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "packageJson", "defaultPickerIcon", "y", "getDefaultState", "rootFolderId", "_abortController", "_withAbort", "_ProviderView", "plugin", "opts", "_withAbort2", "file", "companionFile", "remoteFileObjToLocal", "partialTree", "currentFolderId", "searchString", "inThisFolder", "item", "_item$data$name", "uppyFiles", "defaultOptions", "loading", "newPartialTree", "folderId", "clickedFolder", "folder", "signal", "currentPagePath", "currentItems", "username", "nextPagePath", "items", "PartialTreeUtils_default", "handleError_default", "res", "message", "authFormData", "event", "currentFolder", "i", "shouldHandleScroll_default", "enrichedTree", "path", "n", "companionFiles", "getCheckedFilesWithPaths_default", "addFiles_default", "ourItem", "isShiftKeyPressed", "clickedRange", "getClickedRange_default", "state", "viewOptions", "didFirstRender", "i18n", "authenticated", "pluginIcon", "AuthView", "breadcrumbs", "getBreadcrumbs_default", "classNames", "Header", "SearchInput_default", "s", "Browser_default", "FooterActions", "ProviderView", "op", "_classPrivateFieldLoo", "abortController", "cancelRequest", "import_classnames", "packageJson", "defaultState", "_SearchProviderView", "plugin", "opts", "file", "companionFile", "remoteFileObjToLocal", "partialTree", "item", "searchString", "uppyFiles", "defaultOptions", "loading", "newPartialTree", "response", "error", "handleError_default", "event", "root", "i", "shouldHandleScroll_default", "newRoot", "oldItems", "companionFiles", "getCheckedFilesWithPaths_default", "addFiles_default", "ourItem", "isShiftKeyPressed", "clickedRange", "getClickedRange_default", "PartialTreeUtils_default", "state", "viewOptions", "isInputMode", "i18n", "y", "SearchInput_default", "classNames", "Browser_default", "__name", "FooterActions", "SearchProviderView", "safeIsNaN", "__name", "value", "isEqual", "first", "second", "areInputsEqual", "newInputs", "lastInputs", "i", "memoizeOne", "resultFn", "cache", "memoized", "newArgs", "_i", "lastResult", "FOCUSABLE_ELEMENTS_default", "getActiveOverlayEl", "dashboardEl", "activeOverlayType", "overlayEl", "__name", "focusOnFirstNode", "event", "nodes", "node", "__name", "focusOnLastNode", "isFocusInOverlay", "activeOverlayEl", "trapFocus", "activeOverlayType", "dashboardEl", "getActiveOverlayEl", "focusableNodes", "toArray_default", "FOCUSABLE_ELEMENTS_default", "focusedItemIndex", "forInline", "event", "activeOverlayType", "dashboardEl", "trapFocus", "__name", "import_debounce", "createSuperFocus", "lastFocusWasOnSuperFocusableEl", "debounce", "__name", "dashboardEl", "activeOverlayType", "overlayEl", "getActiveOverlayEl", "isFocusInOverlay", "superFocusableEl", "firstEl", "FOCUSABLE_ELEMENTS_default", "import_classnames", "isDragDropSupported", "div", "__name", "import_classnames", "shallowEqualObjects", "objA", "objB", "aKeys", "Object", "keys", "bKeys", "len", "length", "i", "key", "prototype", "hasOwnProperty", "call", "iconImage", "y", "__name", "iconAudio", "iconVideo", "iconPDF", "iconArchive", "iconFile", "iconText", "getIconByMime", "fileType", "defaultChoice", "fileTypeGeneral", "fileTypeSpecific", "FilePreview", "props", "file", "y", "color", "icon", "getIconByMime", "__name", "metaFieldIdToName", "__name", "metaFieldId", "metaFields", "f", "MetaErrorMessage", "props", "file", "toggleFileCard", "i18n", "missingRequiredMetaFields", "metaFieldsString", "missingMetaField", "y", "FilePreviewAndLink", "props", "file", "i18n", "toggleFileCard", "metaFields", "showLinkToFileUploadResult", "previewBackgroundColor", "getIconByMime", "y", "FilePreview", "MetaErrorMessage", "__name", "onPauseResumeCancelRetry", "props", "__name", "progressIndicatorTitle", "ProgressIndicatorButton", "y", "ProgressCircleContainer", "_ref", "children", "ProgressCircle", "_ref2", "progress", "circleLength", "FileProgress", "import_prettier_bytes", "separator", "truncateString", "string", "maxLength", "charsToShow", "frontChars", "backChars", "__name", "renderFileName", "__name", "props", "author", "name", "getMaxNameLength", "y", "truncateString", "renderAuthor", "_props$file$remote", "providerName", "dot", "renderFileSize", "prettierBytes", "ReSelectButton", "ErrorButton", "_ref", "file", "onClick", "FileInfo", "i18n", "toggleFileCard", "metaFields", "toggleAddFilesPanel", "isSingleFile", "containerHeight", "containerWidth", "MetaErrorMessage", "copyToClipboard", "textToCopy", "fallbackString", "resolve", "textArea", "magicCopyFailed", "__name", "EditButton", "_ref", "file", "uploadInProgressOrComplete", "metaFields", "canEditFile", "i18n", "onClick", "y", "__name", "RemoveButton", "_ref2", "CopyLinkButton", "_ref3", "uppy", "copyLinkToClipboard", "event", "copyToClipboard", "Buttons", "props", "showLinkToFileUploadResult", "showRemoveButton", "toggleFileCard", "openFileEditor", "_FileItem", "b", "file", "nextProps", "shallowEqualObjects", "isProcessing", "isUploaded", "uploadInProgressOrComplete", "uploadInProgress", "error", "isGhost", "showRemoveButton", "dashboardItemClass", "classNames", "y", "FilePreviewAndLink", "FileProgress", "FileInfo", "Buttons", "__name", "FileItem", "chunks", "list", "size", "chunked", "currentChunk", "item", "__name", "FileList", "_ref", "id", "i18n", "uppy", "files", "resumableUploads", "hideRetryButton", "hidePauseResumeButton", "hideCancelButton", "showLinkToFileUploadResult", "showRemoveButtonAfterComplete", "metaFields", "isSingleFile", "toggleFileCard", "handleRequestThumbnail", "handleCancelThumbnail", "recoveredState", "individualCancellation", "itemsPerRow", "openFileEditor", "canEditFile", "toggleAddFilesPanel", "containerWidth", "containerHeight", "rowHeight", "rows", "F", "sortByGhostComesFirst", "file1", "file2", "fileIds", "renderRow", "row", "y", "fileID", "FileItem", "VirtualList_default", "_AddFiles", "b", "event", "isFolder", "refCallback", "_this$props$allowedFi", "y", "type", "nativeCameraFacingMode", "accept", "text", "onClickFn", "numberOfAcquirers", "browseFiles", "browseFolders", "lowerFMSelectionType", "camelFMSelectionType", "acquirer", "_this$props$activePic", "__name", "acquirers", "acquirersWithoutLastTwo", "lastTwoAcquirers", "k", "disableLocalFiles", "showNativePhotoCameraButton", "showNativeVideoCameraButton", "list", "myDeviceKey", "listWithoutLastTwo", "lastTwo", "renderList", "l", "_ref", "key", "elements", "i18nArray", "uppyBranding", "linkText", "ref", "AddFiles", "AddFiles_default", "import_classnames", "AddFilesPanel", "__name", "props", "y", "classNames", "AddFiles_default", "AddFilesPanel_default", "import_classnames", "ignoreEvent", "ev", "tagName", "__name", "ignoreEvent_default", "PickerPanelContent", "_ref", "activePickerPanel", "className", "hideAllPanels", "i18n", "state", "uppy", "y", "classNames", "ignoreEvent_default", "__name", "PickerPanelContent_default", "import_classnames", "EditorPanel", "props", "file", "handleCancel", "__name", "y", "classNames", "target", "EditorPanel_default", "uploadStates", "getUploadingState", "isAllErrored", "isAllComplete", "isAllPaused", "files", "state", "fileIDs", "i", "progress", "__name", "UploadStatus", "_ref", "i18n", "inProgressNotPausedFiles", "newFiles", "processingFiles", "PanelTopBar", "props", "hideCancelButton", "maxNumberOfFiles", "toggleAddFilesPanel", "uppy", "allowNewUpload", "y", "PickerPanelTopBar_default", "import_classnames", "RenderMetaFields", "props", "computedMetaFields", "requiredMetaFields", "updateMeta", "form", "formState", "fieldCSSClasses", "field", "id", "required", "y", "__name", "newVal", "ev", "FileCard", "props", "_getMetaFields", "files", "fileCardFor", "toggleFileCard", "saveFileCard", "metaFields", "requiredMetaFields", "openFileEditor", "i18n", "i18nArray", "className", "canEditFile", "getMetaFields", "__name", "file", "computedMetaFields", "showEditButton", "storedMetaData", "field", "_file$meta$field$id", "formState", "setFormState", "h", "handleSave", "T", "ev", "updateMeta", "newVal", "name", "handleCancel", "form", "formEl", "nanoid", "p", "y", "classNames", "ignoreEvent_default", "getIconByMime", "FilePreview", "event", "RenderMetaFields", "import_classnames", "transitionName", "duration", "Slide", "_ref", "children", "cachedChildren", "setCachedChildren", "h", "className", "setClassName", "enterTimeoutRef", "_", "leaveTimeoutRef", "animationFrameRef", "handleEnterTransition", "__name", "handleLeaveTransition", "p", "child", "S", "F", "classNames", "Slide_default", "_extends", "n", "__name", "WIDTH_XL", "WIDTH_LG", "WIDTH_MD", "HEIGHT_MD", "Dashboard", "props", "isNoFiles", "isSingleFile", "isSizeMD", "isSizeHeightMD", "dashboardClassName", "classNames", "itemsPerRow", "showFileList", "numberOfFilesForRecovery", "numberOfGhosts", "fileID", "renderRestoredText", "y", "isDragDropSupported", "PickerPanelTopBar_default", "FileList", "AddFiles_default", "Slide_default", "AddFilesPanel_default", "FileCard", "PickerPanelContent_default", "EditorPanel_default", "target", "locale_default", "_classPrivateFieldLooseBase", "e", "t", "__name", "id", "_classPrivateFieldLooseKey", "packageJson", "memoize", "memoizeOne", "TAB_KEY", "ESC_KEY", "createPromise", "o", "resolve", "reject", "defaultOptions", "defaultPickerIcon", "_disabledNodes", "_generateLargeThumbnailIfSingleFile", "_openFileEditorWhenFilesAdded", "_attachRenderFunctionToTarget", "_isTargetSupported", "_getAcquirers", "_getProgressIndicators", "_getEditors", "_addSpecifiedPluginsFromOptions", "_autoDiscoverPlugins", "_addSupportedPluginIfNoTarget", "_getStatusBarOpts", "_getThumbnailGeneratorOpts", "_getInformerOpts", "_getStatusBarId", "_getThumbnailGeneratorId", "_getInformerId", "_Dashboard", "UIPlugin_default", "uppy", "_opts", "_opts$autoOpen", "_this$opts4", "_this$opts4$onRequest", "autoOpen", "_getInformerId2", "_getThumbnailGeneratorId2", "_getStatusBarId2", "_getInformerOpts2", "_getThumbnailGeneratorOpts2", "_getStatusBarOpts2", "nanoid", "createSuperFocus", "plugin", "newTargets", "target", "callerPluginId", "callerPluginName", "callerPluginType", "_state$activePickerPa", "state", "update", "targets", "activePickerPanel", "file", "editors", "editor", "metaFields", "promise", "handler", "opts", "_opts$manualClose", "manualClose", "isHidden", "isClosing", "_history$state", "isDarkModeOn", "capabilities", "event", "isDarkModeOnNow", "show", "fileID", "files", "descriptors", "err", "entries", "uppyDashboardInnerEl", "width", "height", "pluginState", "isModalAndClosed", "disable", "_classPrivateFieldLoo", "NODES_TO_DISABLE", "nodesToDisable", "toArray_default", "node", "_history$state2", "_event$state", "trapFocus", "_this$opts$onDragOver", "_this$opts", "canSomePluginHandleRootDrop", "somePluginCanHandleRootDrop", "doesEventHaveFiles", "types", "type", "hasFiles", "_this$opts$onDragLeav", "_this$opts2", "_this$opts$onDrop", "_this$opts3", "executedDropErrorOnce", "logDropError", "error", "getDroppedFiles", "forInline", "_ref", "failed", "LARGE_THUMBNAIL", "thumbnailGenerator", "fileForThumbnail", "firstFile", "isMetaEditorEnabled", "isImageEditorEnabled", "showModalTrigger", "findAllDOMElements_default", "trigger", "isFocusInUppy", "isFocusNowhere", "isInformerHidden", "isModal", "meta", "allowNewUpload", "newFiles", "uploadStartedFiles", "completeFiles", "erroredFiles", "inProgressFiles", "inProgressNotPausedFiles", "processingFiles", "isUploadStarted", "isAllComplete", "isAllPaused", "acquirers", "progressindicators", "theme", "Dashboard", "pluginID", "_plugin$opts", "typesAllowed", "installedPlugin", "inline", "closeAfterFinish", "allowMultipleUploads", "allowMultipleUploadBatches", "StatusBar", "Informer", "ThumbnailGenerator", "isDarkModeOnFromTheStart", "_this$darkModeMediaQu", "informer", "statusBar", "thumbnail", "_this$darkModeMediaQu2", "locale_default", "_this$uppy$getPlugin", "_this$uppy$getPlugin2", "hideUploadButton", "hideRetryButton", "hidePauseResumeButton", "hideCancelButton", "showProgressDetails", "hideProgressAfterFinish", "l", "doneButtonHandler", "thumbnailWidth", "thumbnailHeight", "thumbnailType", "waitForThumbnailsBeforeUpload", "mimeToExtensions", "getFileTypeExtension", "mimeType", "__name", "import_is_mobile", "canvasToBlob", "canvas", "type", "quality", "resolve", "__name", "supportsMediaRecorder", "__name", "CameraIcon", "y", "__name", "SnapshotButton", "_ref", "onSnapshot", "i18n", "y", "CameraIcon", "__name", "RecordButton", "_ref", "recording", "onStartRecording", "onStopRecording", "i18n", "y", "__name", "formatSeconds", "seconds", "__name", "RecordingLength", "_ref", "recordingLengthSeconds", "i18n", "formattedRecordingLengthSeconds", "formatSeconds", "y", "__name", "VideoSourceSelect", "_ref", "currentDeviceId", "videoSources", "onChangeVideoSource", "y", "__name", "event", "videoSource", "SubmitButton", "_ref", "onSubmit", "i18n", "y", "__name", "SubmitButton_default", "DiscardButton", "_ref", "onDiscard", "i18n", "y", "__name", "DiscardButton_default", "_extends", "n", "__name", "isModeAvailable", "modes", "mode", "_CameraScreen", "b", "onFocus", "onStop", "src", "recordedVideo", "recording", "supportsRecording", "videoSources", "showVideoSourceDropdown", "showRecordingLength", "onSubmit", "i18n", "mirror", "onSnapshot", "onStartRecording", "onStopRecording", "onDiscardRecordedVideo", "recordingLengthSeconds", "hasRecordedVideo", "shouldShowRecordButton", "shouldShowSnapshotButton", "shouldShowRecordingLength", "shouldShowVideoSourceDropdown", "videoProps", "y", "videoElement", "VideoSourceSelect", "SnapshotButton", "RecordButton", "SubmitButton_default", "DiscardButton_default", "RecordingLength", "CameraScreen", "CameraScreen_default", "PermissionsScreen", "_ref", "icon", "i18n", "hasCamera", "y", "__name", "locale_default", "_extends", "n", "__name", "_classPrivateFieldLooseBase", "e", "t", "id", "_classPrivateFieldLooseKey", "packageJson", "toMimeType", "fileType", "mimeTypes_default", "isVideoMimeType", "mimeType", "isImageMimeType", "getMediaDevices", "isModeAvailable", "modes", "mode", "defaultOptions", "isMobile", "_enableMirror", "_Webcam", "UIPlugin_default", "uppy", "opts", "y", "locale_default", "newOpts", "devices", "device", "deviceId", "acceptsAudio", "acceptsVideo", "videoConstraints", "options", "_options", "constraints", "hasCamera", "stream", "currentDeviceId", "tracks", "track", "err", "restrictions", "preferredVideoMimeTypes", "filterSupportedTypes", "candidateType", "getFileTypeExtension", "acceptableMimeTypes", "stoppingBecauseOfMaxSize", "event", "totalSize", "acc", "chunk", "expectedEndChunkSize", "maxSize", "currentRecordingLength", "resolve", "file", "error", "audioTracks", "videoTracks", "reject", "count", "countDown", "message", "tagFile", "video", "width", "height", "canvas", "preferredImageMimeTypes", "ext", "name", "canvasToBlob", "blob", "_blob$type", "fileExtension", "webcamState", "PermissionsScreen", "CameraIcon", "CameraScreen_default", "supportsMediaRecorder", "mobileNativeCamera", "target", "_this$getTargetPlugin", "restartStream", "videoSources", "videoSource", "Webcam", "import_uppy_activestorage_upload", "_default_instances", "initializeUppy_fn", "configureDashboard_fn", "configureActiveStorage_fn", "configureThumbnails_fn", "configureWebcam_fn", "setupEventListeners_fn", "handleSuccessfulUpload_fn", "setPreview_fn", "handleCancelUpload_fn", "_file_upload_controller_default", "Controller", "__privateAdd", "directUploadUrl", "uppy", "__privateMethod", "__name", "Uppy_default", "Dashboard", "ActiveStorageUpload", "ThumbnailGenerator", "Webcam", "result", "files", "file", "input", "img", "classesToAdd", "cls", "__publicField", "file_upload_controller_default", "combobox_controller_exports", "__export", "combobox_controller_default", "_combobox_controller_default", "Controller", "event", "direction", "options", "option", "index", "element", "__name", "__publicField", "combobox_controller_default", "cookieless_controller_exports", "__export", "cookieless_controller_default", "TTL", "_default_instances", "handleAnchor_fn", "handleForm_fn", "handleTurboFrame_fn", "handleElement_fn", "_cookieless_controller_default", "Controller", "__privateAdd", "__privateMethod", "brandData", "error", "urlParams", "val", "value", "previousParams", "newEntry", "__name", "url", "params", "input", "__publicField", "cookieless_controller_default", "coupon_requests_controller_exports", "__export", "coupon_requests_controller_default", "isMobile", "check", "a", "__name", "isIframe", "copyToClipboard", "text", "error", "textarea", "selected", "initializeIframeResize", "target", "onResize", "observer", "event", "iframeId", "height", "message", "_default_instances", "originUrlInNewTab_fn", "defaultInNewTab_fn", "_coupon_requests_controller_default", "Controller", "__privateAdd", "loader", "loaderDecorators", "i", "event", "__privateMethod", "__name", "originUrl", "params", "placementToken", "couponCode", "revealCampaign", "copyToClipboard", "url", "originUrlString", "isIframe", "href", "__publicField", "coupon_requests_controller_default", "data_collection_controller_exports", "__export", "data_collection_controller_default", "_data_collection_controller_default", "Controller", "isMobile", "requiredFields", "customFieldValid", "field", "condition", "__name", "__publicField", "data_collection_controller_default", "data_collection_field_controller_exports", "__export", "data_collection_field_controller_default", "_default_instances", "validateRadioGroup_fn", "validateCheckboxGroup_fn", "validateTextField_fn", "_data_collection_field_controller_default", "Controller", "__privateAdd", "__privateMethod", "__name", "name", "isChecked", "radio", "checkboxes", "isAnyChecked", "cb", "checkbox", "__publicField", "data_collection_field_controller_default", "errors_controller_exports", "__export", "errors_controller_default", "_errors_controller_default", "Controller", "path", "error", "__name", "errors_controller_default", "faqs_controller_exports", "__export", "faqs_controller_default", "_faqs_controller_default", "Controller", "event", "__name", "faqs_controller_default", "fetch_controller_exports", "__export", "fetch_controller_default", "_fetch_controller_default", "Controller", "event", "element", "method", "response", "html", "__name", "fetch_controller_default", "forms_controller_exports", "__export", "forms_controller_default", "_forms_controller_default", "Controller", "event", "__name", "__publicField", "forms_controller_default", "hub_card_controller_exports", "__export", "hub_card_controller_default", "_default_instances", "getReference_fn", "getEventName_fn", "dispatchEvent_fn", "_hub_card_controller_default", "Controller", "__privateAdd", "event", "reference", "__privateMethod", "root", "eventName", "originUrlInput", "isIframe", "originUrl", "currentPath", "msg1", "msg2", "currentUrl", "__name", "customEvent", "__publicField", "hub_card_controller_default", "hub_controller_exports", "__export", "hub_controller_default", "import_lunr", "_hub_controller_default", "Controller", "data", "lunr", "doc", "event", "inputValue", "references", "result", "element", "offerType", "__name", "__publicField", "hub_controller_default", "hub_hosted_controller_exports", "__export", "hub_hosted_controller_default", "_hub_hosted_controller_default", "Controller", "__name", "hub_hosted_controller_default", "hub_popup_controller_exports", "__export", "hub_popup_controller_default", "enter", "element", "transitionName", "transition", "__name", "leave", "transition", "direction", "element", "animation", "dataset", "animationClass", "genesis", "start", "end", "addClasses", "nextFrame", "removeClasses", "afterTransition", "__name", "classes", "resolve", "computedDuration", "duration", "_hub_popup_controller_default", "Controller", "popup", "event", "reference", "enter", "url", "response", "html", "iframe", "error", "leave", "e", "copyToClipboard", "__name", "__publicField", "hub_popup_controller_default", "layout_controller_exports", "__export", "layout_controller_default", "_default_instances", "showCloseButton_fn", "_layout_controller_default", "Controller", "__privateAdd", "isIframe", "initializeIframeResize", "__privateMethod", "message", "gcParams", "params", "__name", "url", "__publicField", "layout_controller_default", "layout_tw_controller_exports", "__export", "layout_tw_controller_default", "_layout_tw_controller_default", "Controller", "isIframe", "initializeIframeResize", "message", "__name", "__publicField", "layout_tw_controller_default", "location_controller_exports", "__export", "location_controller_default", "_location_controller_default", "Controller", "isIframe", "ev", "referrer", "command", "location", "element", "message", "__name", "location_controller_default", "pin_codes_controller_exports", "__export", "pin_codes_controller_default", "_pin_codes_controller_default", "Controller", "event", "element", "current", "message", "__name", "__publicField", "pin_codes_controller_default", "polling_controller_exports", "__export", "polling_controller_default", "_default_instances", "notifyScreenReader_fn", "buildVirtualForm_fn", "createHiddenInput_fn", "_polling_controller_default", "Controller", "__privateAdd", "response", "error", "data", "__privateMethod", "__name", "url", "form", "csrfMetaTag", "params", "key", "value", "name", "input", "__publicField", "polling_controller_default", "privacy_controller_exports", "__export", "privacy_controller_default", "_privacy_controller_default", "Controller", "__name", "privacy_controller_default", "redirect_controller_exports", "__export", "redirect_controller_default", "_redirect_controller_default", "Controller", "isIframe", "localStorageParams", "gcParams", "url", "__name", "__publicField", "redirect_controller_default", "session_controller_exports", "__export", "session_controller_default", "TTL", "_default_instances", "checkTld_fn", "_session_controller_default", "Controller", "__privateAdd", "params", "__privateMethod", "isIframe", "observer", "mutationsList", "mutation", "event", "url", "mainContentElement", "param", "value", "previousParams", "newEntry", "json", "key", "brand", "allowedParams", "body", "gcParams", "__name", "__publicField", "session_controller_default", "share_controller_exports", "__export", "share_controller_default", "_share_controller_default", "Controller", "e", "err", "__name", "__publicField", "share_controller_default", "signin_controller_exports", "__export", "signin_controller_default", "_signin_controller_default", "Controller", "params", "response", "data", "error", "__name", "__publicField", "signin_controller_default", "tabs_controller_exports", "__export", "tabs_controller_default", "_tabs_controller_default", "Controller", "e", "item", "__name", "__publicField", "tabs_controller_default", "tooltip_controller_exports", "__export", "tooltip_controller_default", "_tooltip_controller_default", "Controller", "trigger", "e", "element", "event", "__name", "__publicField", "tooltip_controller_default", "turnstile_controller_exports", "__export", "turnstile_controller_default", "_turnstile_controller_default", "Controller", "__name", "token", "__publicField", "turnstile_controller_default", "users_controller_exports", "__export", "users_controller_default", "_users_controller_default", "Controller", "event", "isIframe", "__name", "users_controller_default", "utils_controller_exports", "__export", "utils_controller_default", "_utils_controller_default", "Controller", "event", "body", "target", "copyToClipboard", "originUrl", "params", "placementToken", "couponCode", "url", "originUrlString", "isIframe", "__name", "__publicField", "utils_controller_default", "verify_controller_exports", "__export", "verify_controller_default", "import_uppy_activestorage_upload", "_verify_controller_default", "Controller", "directUploadUrl", "uppy", "Uppy_default", "Dashboard", "Webcam", "ActiveStorageUpload", "result", "file", "fileInput", "fileSourceInput", "title", "__name", "__publicField", "verify_controller_default", "window_switcher_controller_exports", "__export", "window_switcher_controller_default", "_window_switcher_controller_default", "Controller", "affiliateLink", "urlToSwitch", "event", "isIframe", "__name", "__publicField", "window_switcher_controller_default", "modules", "combobox_controller_exports", "cookieless_controller_exports", "coupon_requests_controller_exports", "data_collection_controller_exports", "data_collection_field_controller_exports", "errors_controller_exports", "faqs_controller_exports", "fetch_controller_exports", "forms_controller_exports", "hub_card_controller_exports", "hub_controller_exports", "hub_hosted_controller_exports", "hub_popup_controller_exports", "layout_controller_exports", "layout_tw_controller_exports", "location_controller_exports", "pin_codes_controller_exports", "polling_controller_exports", "privacy_controller_exports", "redirect_controller_exports", "session_controller_exports", "share_controller_exports", "signin_controller_exports", "tabs_controller_exports", "tooltip_controller_exports", "turnstile_controller_exports", "users_controller_exports", "utils_controller_exports", "verify_controller_exports", "window_switcher_controller_exports", "controller_default", "application", "Application", "controller_default", "controller", "Autocomplete", "index_m_default", "click_toggle_controller_default", "file_upload_controller_default"] }