app/assets/build/coco/book.js in coveragebook_components-0.5.2 vs app/assets/build/coco/book.js in coveragebook_components-0.5.3

- old
+ new

@@ -32,13 +32,10 @@ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; - var __esm = (fn3, res) => function __init() { - return fn3 && (res = (0, fn3[__getOwnPropNames(fn3)[0]])(fn3 = 0)), res; - }; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name in all) @@ -59,579 +56,10 @@ // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); - // ../../../node_modules/@rails/actioncable/src/adapters.js - var adapters_default; - var init_adapters = __esm({ - "../../../node_modules/@rails/actioncable/src/adapters.js"() { - adapters_default = { - logger: self.console, - WebSocket: self.WebSocket - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/logger.js - var logger_default; - var init_logger = __esm({ - "../../../node_modules/@rails/actioncable/src/logger.js"() { - init_adapters(); - logger_default = { - log(...messages) { - if (this.enabled) { - messages.push(Date.now()); - adapters_default.logger.log("[ActionCable]", ...messages); - } - } - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/connection_monitor.js - var now, secondsSince, ConnectionMonitor, connection_monitor_default; - var init_connection_monitor = __esm({ - "../../../node_modules/@rails/actioncable/src/connection_monitor.js"() { - init_logger(); - now = () => (/* @__PURE__ */ new Date()).getTime(); - secondsSince = (time) => (now() - time) / 1e3; - ConnectionMonitor = class { - constructor(connection) { - this.visibilityDidChange = this.visibilityDidChange.bind(this); - this.connection = connection; - this.reconnectAttempts = 0; - } - start() { - if (!this.isRunning()) { - this.startedAt = now(); - delete this.stoppedAt; - this.startPolling(); - addEventListener("visibilitychange", this.visibilityDidChange); - logger_default.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`); - } - } - stop() { - if (this.isRunning()) { - this.stoppedAt = now(); - this.stopPolling(); - removeEventListener("visibilitychange", this.visibilityDidChange); - logger_default.log("ConnectionMonitor stopped"); - } - } - isRunning() { - return this.startedAt && !this.stoppedAt; - } - recordPing() { - this.pingedAt = now(); - } - recordConnect() { - this.reconnectAttempts = 0; - this.recordPing(); - delete this.disconnectedAt; - logger_default.log("ConnectionMonitor recorded connect"); - } - recordDisconnect() { - this.disconnectedAt = now(); - logger_default.log("ConnectionMonitor recorded disconnect"); - } - // Private - startPolling() { - this.stopPolling(); - this.poll(); - } - stopPolling() { - clearTimeout(this.pollTimeout); - } - poll() { - this.pollTimeout = setTimeout( - () => { - this.reconnectIfStale(); - this.poll(); - }, - this.getPollInterval() - ); - } - getPollInterval() { - const { staleThreshold, reconnectionBackoffRate } = this.constructor; - const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10)); - const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate; - const jitter = jitterMax * Math.random(); - return staleThreshold * 1e3 * backoff * (1 + jitter); - } - reconnectIfStale() { - if (this.connectionIsStale()) { - logger_default.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`); - this.reconnectAttempts++; - if (this.disconnectedRecently()) { - logger_default.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`); - } else { - logger_default.log("ConnectionMonitor reopening"); - this.connection.reopen(); - } - } - } - get refreshedAt() { - return this.pingedAt ? this.pingedAt : this.startedAt; - } - connectionIsStale() { - return secondsSince(this.refreshedAt) > this.constructor.staleThreshold; - } - disconnectedRecently() { - return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold; - } - visibilityDidChange() { - if (document.visibilityState === "visible") { - setTimeout( - () => { - if (this.connectionIsStale() || !this.connection.isOpen()) { - logger_default.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`); - this.connection.reopen(); - } - }, - 200 - ); - } - } - }; - ConnectionMonitor.staleThreshold = 6; - ConnectionMonitor.reconnectionBackoffRate = 0.15; - connection_monitor_default = ConnectionMonitor; - } - }); - - // ../../../node_modules/@rails/actioncable/src/internal.js - var internal_default; - var init_internal = __esm({ - "../../../node_modules/@rails/actioncable/src/internal.js"() { - internal_default = { - "message_types": { - "welcome": "welcome", - "disconnect": "disconnect", - "ping": "ping", - "confirmation": "confirm_subscription", - "rejection": "reject_subscription" - }, - "disconnect_reasons": { - "unauthorized": "unauthorized", - "invalid_request": "invalid_request", - "server_restart": "server_restart" - }, - "default_mount_path": "/cable", - "protocols": [ - "actioncable-v1-json", - "actioncable-unsupported" - ] - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/connection.js - var message_types, protocols, supportedProtocols, indexOf, Connection, connection_default; - var init_connection = __esm({ - "../../../node_modules/@rails/actioncable/src/connection.js"() { - init_adapters(); - init_connection_monitor(); - init_internal(); - init_logger(); - ({ message_types, protocols } = internal_default); - supportedProtocols = protocols.slice(0, protocols.length - 1); - indexOf = [].indexOf; - Connection = class { - constructor(consumer2) { - this.open = this.open.bind(this); - this.consumer = consumer2; - this.subscriptions = this.consumer.subscriptions; - this.monitor = new connection_monitor_default(this); - this.disconnected = true; - } - send(data2) { - if (this.isOpen()) { - this.webSocket.send(JSON.stringify(data2)); - return true; - } else { - return false; - } - } - open() { - if (this.isActive()) { - logger_default.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`); - return false; - } else { - logger_default.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`); - if (this.webSocket) { - this.uninstallEventHandlers(); - } - this.webSocket = new adapters_default.WebSocket(this.consumer.url, protocols); - this.installEventHandlers(); - this.monitor.start(); - return true; - } - } - close({ allowReconnect } = { allowReconnect: true }) { - if (!allowReconnect) { - this.monitor.stop(); - } - if (this.isOpen()) { - return this.webSocket.close(); - } - } - reopen() { - logger_default.log(`Reopening WebSocket, current state is ${this.getState()}`); - if (this.isActive()) { - try { - return this.close(); - } catch (error2) { - logger_default.log("Failed to reopen WebSocket", error2); - } finally { - logger_default.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`); - setTimeout(this.open, this.constructor.reopenDelay); - } - } else { - return this.open(); - } - } - getProtocol() { - if (this.webSocket) { - return this.webSocket.protocol; - } - } - isOpen() { - return this.isState("open"); - } - isActive() { - return this.isState("open", "connecting"); - } - // Private - isProtocolSupported() { - return indexOf.call(supportedProtocols, this.getProtocol()) >= 0; - } - isState(...states) { - return indexOf.call(states, this.getState()) >= 0; - } - getState() { - if (this.webSocket) { - for (let state in adapters_default.WebSocket) { - if (adapters_default.WebSocket[state] === this.webSocket.readyState) { - return state.toLowerCase(); - } - } - } - return null; - } - installEventHandlers() { - for (let eventName in this.events) { - const handler3 = this.events[eventName].bind(this); - this.webSocket[`on${eventName}`] = handler3; - } - } - uninstallEventHandlers() { - for (let eventName in this.events) { - this.webSocket[`on${eventName}`] = function() { - }; - } - } - }; - Connection.reopenDelay = 500; - Connection.prototype.events = { - message(event) { - if (!this.isProtocolSupported()) { - return; - } - const { identifier, message, reason, reconnect, type } = JSON.parse(event.data); - switch (type) { - case message_types.welcome: - this.monitor.recordConnect(); - return this.subscriptions.reload(); - case message_types.disconnect: - logger_default.log(`Disconnecting. Reason: ${reason}`); - return this.close({ allowReconnect: reconnect }); - case message_types.ping: - return this.monitor.recordPing(); - case message_types.confirmation: - this.subscriptions.confirmSubscription(identifier); - return this.subscriptions.notify(identifier, "connected"); - case message_types.rejection: - return this.subscriptions.reject(identifier); - default: - return this.subscriptions.notify(identifier, "received", message); - } - }, - open() { - logger_default.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`); - this.disconnected = false; - if (!this.isProtocolSupported()) { - logger_default.log("Protocol is unsupported. Stopping monitor and disconnecting."); - return this.close({ allowReconnect: false }); - } - }, - close(event) { - logger_default.log("WebSocket onclose event"); - if (this.disconnected) { - return; - } - this.disconnected = true; - this.monitor.recordDisconnect(); - return this.subscriptions.notifyAll("disconnected", { willAttemptReconnect: this.monitor.isRunning() }); - }, - error() { - logger_default.log("WebSocket onerror event"); - } - }; - connection_default = Connection; - } - }); - - // ../../../node_modules/@rails/actioncable/src/subscription.js - var extend, Subscription; - var init_subscription = __esm({ - "../../../node_modules/@rails/actioncable/src/subscription.js"() { - extend = function(object, properties) { - if (properties != null) { - for (let key in properties) { - const value = properties[key]; - object[key] = value; - } - } - return object; - }; - Subscription = class { - constructor(consumer2, params = {}, mixin) { - this.consumer = consumer2; - this.identifier = JSON.stringify(params); - extend(this, mixin); - } - // Perform a channel action with the optional data passed as an attribute - perform(action, data2 = {}) { - data2.action = action; - return this.send(data2); - } - send(data2) { - return this.consumer.send({ command: "message", identifier: this.identifier, data: JSON.stringify(data2) }); - } - unsubscribe() { - return this.consumer.subscriptions.remove(this); - } - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/subscription_guarantor.js - var SubscriptionGuarantor, subscription_guarantor_default; - var init_subscription_guarantor = __esm({ - "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js"() { - init_logger(); - SubscriptionGuarantor = class { - constructor(subscriptions) { - this.subscriptions = subscriptions; - this.pendingSubscriptions = []; - } - guarantee(subscription) { - if (this.pendingSubscriptions.indexOf(subscription) == -1) { - logger_default.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`); - this.pendingSubscriptions.push(subscription); - } else { - logger_default.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`); - } - this.startGuaranteeing(); - } - forget(subscription) { - logger_default.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`); - this.pendingSubscriptions = this.pendingSubscriptions.filter((s2) => s2 !== subscription); - } - startGuaranteeing() { - this.stopGuaranteeing(); - this.retrySubscribing(); - } - stopGuaranteeing() { - clearTimeout(this.retryTimeout); - } - retrySubscribing() { - this.retryTimeout = setTimeout( - () => { - if (this.subscriptions && typeof this.subscriptions.subscribe === "function") { - this.pendingSubscriptions.map((subscription) => { - logger_default.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`); - this.subscriptions.subscribe(subscription); - }); - } - }, - 500 - ); - } - }; - subscription_guarantor_default = SubscriptionGuarantor; - } - }); - - // ../../../node_modules/@rails/actioncable/src/subscriptions.js - var Subscriptions; - var init_subscriptions = __esm({ - "../../../node_modules/@rails/actioncable/src/subscriptions.js"() { - init_subscription(); - init_subscription_guarantor(); - init_logger(); - Subscriptions = class { - constructor(consumer2) { - this.consumer = consumer2; - this.guarantor = new subscription_guarantor_default(this); - this.subscriptions = []; - } - create(channelName, mixin) { - const channel = channelName; - const params = typeof channel === "object" ? channel : { channel }; - const subscription = new Subscription(this.consumer, params, mixin); - return this.add(subscription); - } - // Private - add(subscription) { - this.subscriptions.push(subscription); - this.consumer.ensureActiveConnection(); - this.notify(subscription, "initialized"); - this.subscribe(subscription); - return subscription; - } - remove(subscription) { - this.forget(subscription); - if (!this.findAll(subscription.identifier).length) { - this.sendCommand(subscription, "unsubscribe"); - } - return subscription; - } - reject(identifier) { - return this.findAll(identifier).map((subscription) => { - this.forget(subscription); - this.notify(subscription, "rejected"); - return subscription; - }); - } - forget(subscription) { - this.guarantor.forget(subscription); - this.subscriptions = this.subscriptions.filter((s2) => s2 !== subscription); - return subscription; - } - findAll(identifier) { - return this.subscriptions.filter((s2) => s2.identifier === identifier); - } - reload() { - return this.subscriptions.map((subscription) => this.subscribe(subscription)); - } - notifyAll(callbackName, ...args) { - return this.subscriptions.map((subscription) => this.notify(subscription, callbackName, ...args)); - } - notify(subscription, callbackName, ...args) { - let subscriptions; - if (typeof subscription === "string") { - subscriptions = this.findAll(subscription); - } else { - subscriptions = [subscription]; - } - return subscriptions.map((subscription2) => typeof subscription2[callbackName] === "function" ? subscription2[callbackName](...args) : void 0); - } - subscribe(subscription) { - if (this.sendCommand(subscription, "subscribe")) { - this.guarantor.guarantee(subscription); - } - } - confirmSubscription(identifier) { - logger_default.log(`Subscription confirmed ${identifier}`); - this.findAll(identifier).map((subscription) => this.guarantor.forget(subscription)); - } - sendCommand(subscription, command) { - const { identifier } = subscription; - return this.consumer.send({ command, identifier }); - } - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/consumer.js - function createWebSocketURL(url) { - if (typeof url === "function") { - url = url(); - } - if (url && !/^wss?:/i.test(url)) { - const a2 = document.createElement("a"); - a2.href = url; - a2.href = a2.href; - a2.protocol = a2.protocol.replace("http", "ws"); - return a2.href; - } else { - return url; - } - } - var Consumer; - var init_consumer = __esm({ - "../../../node_modules/@rails/actioncable/src/consumer.js"() { - init_connection(); - init_subscriptions(); - Consumer = class { - constructor(url) { - this._url = url; - this.subscriptions = new Subscriptions(this); - this.connection = new connection_default(this); - } - get url() { - return createWebSocketURL(this._url); - } - send(data2) { - return this.connection.send(data2); - } - connect() { - return this.connection.open(); - } - disconnect() { - return this.connection.close({ allowReconnect: false }); - } - ensureActiveConnection() { - if (!this.connection.isActive()) { - return this.connection.open(); - } - } - }; - } - }); - - // ../../../node_modules/@rails/actioncable/src/index.js - var src_exports = {}; - __export(src_exports, { - Connection: () => connection_default, - ConnectionMonitor: () => connection_monitor_default, - Consumer: () => Consumer, - INTERNAL: () => internal_default, - Subscription: () => Subscription, - SubscriptionGuarantor: () => subscription_guarantor_default, - Subscriptions: () => Subscriptions, - adapters: () => adapters_default, - createConsumer: () => createConsumer, - createWebSocketURL: () => createWebSocketURL, - getConfig: () => getConfig, - logger: () => logger_default - }); - function createConsumer(url = getConfig("url") || internal_default.default_mount_path) { - return new Consumer(url); - } - function getConfig(name) { - const element = document.head.querySelector(`meta[name='action-cable-${name}']`); - if (element) { - return element.getAttribute("content"); - } - } - var init_src = __esm({ - "../../../node_modules/@rails/actioncable/src/index.js"() { - init_connection(); - init_connection_monitor(); - init_consumer(); - init_internal(); - init_subscription(); - init_subscriptions(); - init_subscription_guarantor(); - init_adapters(); - init_logger(); - } - }); - // ../../../node_modules/lodash/lodash.js var require_lodash = __commonJS({ "../../../node_modules/lodash/lodash.js"(exports, module) { (function() { var undefined2; @@ -1191,12 +619,12 @@ function baseValues(object, props) { return arrayMap(props, function(key) { return object[key]; }); } - function cacheHas(cache2, key) { - return cache2.has(key); + function cacheHas(cache, key) { + return cache.has(key); } function charsStartIndex(strSymbols, chrSymbols) { var index = -1, length = strSymbols.length; while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) { } @@ -1319,11 +747,11 @@ function unicodeWords(string) { return string.match(reUnicodeWord) || []; } var runInContext = function runInContext2(context) { context = context == null ? root : _2.defaults(root.Object(), context, _2.pick(root, contextProps)); - var Array2 = context.Array, Date2 = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; + var Array2 = context.Array, Date = context.Date, Error2 = context.Error, Function2 = context.Function, Math2 = context.Math, Object2 = context.Object, RegExp2 = context.RegExp, String2 = context.String, TypeError2 = context.TypeError; var arrayProto = Array2.prototype, funcProto = Function2.prototype, objectProto = Object2.prototype; var coreJsData = context["__core-js_shared__"]; var funcToString = funcProto.toString; var hasOwnProperty3 = objectProto.hasOwnProperty; var idCounter2 = 0; @@ -1344,12 +772,12 @@ func({}, "", {}); return func; } catch (e2) { } }(); - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date2 && Date2.now !== root.Date.now && Date2.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date2.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; + var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, ctxNow = Date && Date.now !== root.Date.now && Date.now, ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; + var nativeCeil = Math2.ceil, nativeFloor = Math2.floor, nativeGetSymbols = Object2.getOwnPropertySymbols, nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : undefined2, nativeIsFinite = context.isFinite, nativeJoin = arrayProto.join, nativeKeys = overArg(Object2.keys, Object2), nativeMax = Math2.max, nativeMin = Math2.min, nativeNow = Date.now, nativeParseInt = context.parseInt, nativeRandom = Math2.random, nativeReverse = arrayProto.reverse; var DataView = getNative(context, "DataView"), Map2 = getNative(context, "Map"), Promise2 = getNative(context, "Promise"), Set2 = getNative(context, "Set"), WeakMap2 = getNative(context, "WeakMap"), nativeCreate = getNative(Object2, "create"); var metaMap = WeakMap2 && new WeakMap2(); var realNames = {}; var dataViewCtorString = toSource(DataView), mapCtorString = toSource(Map2), promiseCtorString = toSource(Promise2), setCtorString = toSource(Set2), weakMapCtorString = toSource(WeakMap2); var symbolProto = Symbol2 ? Symbol2.prototype : undefined2, symbolValueOf = symbolProto ? symbolProto.valueOf : undefined2, symbolToString = symbolProto ? symbolProto.toString : undefined2; @@ -1467,11 +895,11 @@ result2.__dir__ *= -1; } return result2; } function lazyValue() { - var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start4 = view.start, end2 = view.end, length = end2 - start4, index = isRight ? end2 : start4 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); + var array = this.__wrapped__.value(), dir = this.__dir__, isArr = isArray2(array), isRight = dir < 0, arrLength = isArr ? array.length : 0, view = getView(0, arrLength, this.__views__), start3 = view.start, end2 = view.end, length = end2 - start3, index = isRight ? end2 : start3 - 1, iteratees = this.__iteratees__, iterLength = iteratees.length, resIndex = 0, takeCount = nativeMin(length, this.__takeCount__); if (!isArr || !isRight && arrLength == length && takeCount == length) { return baseWrapperValue(array, this.__actions__); } var result2 = []; outer: @@ -1902,23 +1330,23 @@ var computed = current, result2 = value; } } return result2; } - function baseFill(array, value, start4, end2) { + function baseFill(array, value, start3, end2) { var length = array.length; - start4 = toInteger(start4); - if (start4 < 0) { - start4 = -start4 > length ? 0 : length + start4; + start3 = toInteger(start3); + if (start3 < 0) { + start3 = -start3 > length ? 0 : length + start3; } end2 = end2 === undefined2 || end2 > length ? length : toInteger(end2); if (end2 < 0) { end2 += length; } - end2 = start4 > end2 ? 0 : toLength(end2); - while (start4 < end2) { - array[start4++] = value; + end2 = start3 > end2 ? 0 : toLength(end2); + while (start3 < end2) { + array[start3++] = value; } return array; } function baseFilter(collection, predicate) { var result2 = []; @@ -1985,12 +1413,12 @@ return object != null && hasOwnProperty3.call(object, key); } function baseHasIn(object, key) { return object != null && key in Object2(object); } - function baseInRange(number, start4, end2) { - return number >= nativeMin(start4, end2) && number < nativeMax(start4, end2); + function baseInRange(number, start3, end2) { + return number >= nativeMin(start3, end2) && number < nativeMax(start3, end2); } function baseIntersection(arrays, iteratee2, comparator) { var includes2 = comparator ? arrayIncludesWith : arrayIncludes, length = arrays[0].length, othLength = arrays.length, othIndex = othLength, caches = Array2(othLength), maxLength = Infinity, result2 = []; while (othIndex--) { var array = arrays[othIndex]; @@ -2007,12 +1435,12 @@ var value = array[index], computed = iteratee2 ? iteratee2(value) : value; value = comparator || value !== 0 ? value : 0; if (!(seen ? cacheHas(seen, computed) : includes2(result2, computed, comparator))) { othIndex = othLength; while (--othIndex) { - var cache2 = caches[othIndex]; - if (!(cache2 ? cacheHas(cache2, computed) : includes2(arrays[othIndex], computed, comparator))) { + var cache = caches[othIndex]; + if (!(cache ? cacheHas(cache, computed) : includes2(arrays[othIndex], computed, comparator))) { continue outer; } } if (seen) { seen.push(computed); @@ -2308,20 +1736,20 @@ return function(object) { return baseGet(object, path); }; } function basePullAll(array, values2, iteratee2, comparator) { - var indexOf3 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; + var indexOf2 = comparator ? baseIndexOfWith : baseIndexOf, index = -1, length = values2.length, seen = array; if (array === values2) { values2 = copyArray(values2); } if (iteratee2) { seen = arrayMap(array, baseUnary(iteratee2)); } while (++index < length) { var fromIndex = 0, value = values2[index], computed = iteratee2 ? iteratee2(value) : value; - while ((fromIndex = indexOf3(seen, computed, fromIndex, comparator)) > -1) { + while ((fromIndex = indexOf2(seen, computed, fromIndex, comparator)) > -1) { if (seen !== array) { splice.call(seen, fromIndex, 1); } splice.call(array, fromIndex, 1); } @@ -2344,15 +1772,15 @@ return array; } function baseRandom(lower, upper) { return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); } - function baseRange(start4, end2, step, fromRight) { - var index = -1, length = nativeMax(nativeCeil((end2 - start4) / (step || 1)), 0), result2 = Array2(length); + function baseRange(start3, end2, step, fromRight) { + var index = -1, length = nativeMax(nativeCeil((end2 - start3) / (step || 1)), 0), result2 = Array2(length); while (length--) { - result2[fromRight ? length : ++index] = start4; - start4 += step; + result2[fromRight ? length : ++index] = start3; + start3 += step; } return result2; } function baseRepeat(string, n2) { var result2 = ""; @@ -2368,12 +1796,12 @@ string += string; } } while (n2); return result2; } - function baseRest(func, start4) { - return setToString(overRest(func, start4, identity), func + ""); + function baseRest(func, start3) { + return setToString(overRest(func, start3, identity), func + ""); } function baseSample(collection) { return arraySample(values(collection)); } function baseSampleSize(collection, n2) { @@ -2416,24 +1844,24 @@ }); }; function baseShuffle(collection) { return shuffleSelf(values(collection)); } - function baseSlice(array, start4, end2) { + function baseSlice(array, start3, end2) { var index = -1, length = array.length; - if (start4 < 0) { - start4 = -start4 > length ? 0 : length + start4; + if (start3 < 0) { + start3 = -start3 > length ? 0 : length + start3; } end2 = end2 > length ? length : end2; if (end2 < 0) { end2 += length; } - length = start4 > end2 ? 0 : end2 - start4 >>> 0; - start4 >>>= 0; + length = start3 > end2 ? 0 : end2 - start3 >>> 0; + start3 >>>= 0; var result2 = Array2(length); while (++index < length) { - result2[index] = array[index + start4]; + result2[index] = array[index + start3]; } return result2; } function baseSome(collection, predicate) { var result2; @@ -2619,14 +2047,14 @@ return value; } return isKey(value, object) ? [value] : stringToPath(toString(value)); } var castRest = baseRest; - function castSlice(array, start4, end2) { + function castSlice(array, start3, end2) { var length = array.length; end2 = end2 === undefined2 ? length : end2; - return !start4 && end2 >= length ? array : baseSlice(array, start4, end2); + return !start3 && end2 >= length ? array : baseSlice(array, start3, end2); } var clearTimeout2 = ctxClearTimeout || function(id) { return root.clearTimeout(id); }; function cloneBuffer(buffer, isDeep) { @@ -3040,23 +2468,23 @@ return apply(fn3, isBind ? thisArg : this, args); } return wrapper; } function createRange(fromRight) { - return function(start4, end2, step) { - if (step && typeof step != "number" && isIterateeCall(start4, end2, step)) { + return function(start3, end2, step) { + if (step && typeof step != "number" && isIterateeCall(start3, end2, step)) { end2 = step = undefined2; } - start4 = toFinite(start4); + start3 = toFinite(start3); if (end2 === undefined2) { - end2 = start4; - start4 = 0; + end2 = start3; + start3 = 0; } else { end2 = toFinite(end2); } - step = step === undefined2 ? start4 < end2 ? 1 : -1 : toFinite(step); - return baseRange(start4, end2, step, fromRight); + step = step === undefined2 ? start3 < end2 ? 1 : -1 : toFinite(step); + return baseRange(start3, end2, step, fromRight); }; } function createRelationalOperation(operator) { return function(value, other) { if (!(typeof value == "string" && typeof other == "string")) { @@ -3423,30 +2851,30 @@ } } return result2; }; } - function getView(start4, end2, transforms) { + function getView(start3, end2, transforms) { var index = -1, length = transforms.length; while (++index < length) { var data2 = transforms[index], size3 = data2.size; switch (data2.type) { case "drop": - start4 += size3; + start3 += size3; break; case "dropRight": end2 -= size3; break; case "take": - end2 = nativeMin(end2, start4 + size3); + end2 = nativeMin(end2, start3 + size3); break; case "takeRight": - start4 = nativeMax(start4, end2 - size3); + start3 = nativeMax(start3, end2 - size3); break; } } - return { "start": start4, "end": end2 }; + return { "start": start3, "end": end2 }; } function getWrapDetails(source) { var match = source.match(reWrapDetails); return match ? match[1].split(reSplitDetails) : []; } @@ -3582,16 +3010,16 @@ return object[key] === srcValue && (srcValue !== undefined2 || key in Object2(object)); }; } function memoizeCapped(func) { var result2 = memoize(func, function(key) { - if (cache2.size === MAX_MEMOIZE_SIZE) { - cache2.clear(); + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); } return key; }); - var cache2 = result2.cache; + var cache = result2.cache; return result2; } function mergeData(data2, source) { var bitmask = data2[1], srcBitmask = source[1], newBitmask = bitmask | srcBitmask, isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); var isCombo = srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_CURRY_FLAG || srcBitmask == WRAP_ARY_FLAG && bitmask == WRAP_REARG_FLAG && data2[7].length <= source[8] || srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG) && source[7].length <= source[8] && bitmask == WRAP_CURRY_FLAG; @@ -3638,23 +3066,23 @@ return result2; } function objectToString2(value) { return nativeObjectToString.call(value); } - function overRest(func, start4, transform2) { - start4 = nativeMax(start4 === undefined2 ? func.length - 1 : start4, 0); + function overRest(func, start3, transform2) { + start3 = nativeMax(start3 === undefined2 ? func.length - 1 : start3, 0); return function() { - var args = arguments, index = -1, length = nativeMax(args.length - start4, 0), array = Array2(length); + var args = arguments, index = -1, length = nativeMax(args.length - start3, 0), array = Array2(length); while (++index < length) { - array[index] = args[start4 + index]; + array[index] = args[start3 + index]; } index = -1; - var otherArgs = Array2(start4 + 1); - while (++index < start4) { + var otherArgs = Array2(start3 + 1); + while (++index < start3) { otherArgs[index] = args[index]; } - otherArgs[start4] = transform2(array); + otherArgs[start3] = transform2(array); return apply(func, this, otherArgs); }; } function parent(object, path) { return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); @@ -3835,20 +3263,20 @@ return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true, true) : []; } function dropWhile(array, predicate) { return array && array.length ? baseWhile(array, getIteratee(predicate, 3), true) : []; } - function fill(array, value, start4, end2) { + function fill(array, value, start3, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } - if (start4 && typeof start4 != "number" && isIterateeCall(array, value, start4)) { - start4 = 0; + if (start3 && typeof start3 != "number" && isIterateeCall(array, value, start3)) { + start3 = 0; end2 = length; } - return baseFill(array, value, start4, end2); + return baseFill(array, value, start3, end2); } function findIndex3(array, predicate, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; @@ -3896,11 +3324,11 @@ return result2; } function head(array) { return array && array.length ? array[0] : undefined2; } - function indexOf2(array, value, fromIndex) { + function indexOf(array, value, fromIndex) { var length = array == null ? 0 : array.length; if (!length) { return -1; } var index = fromIndex == null ? 0 : toInteger(fromIndex); @@ -3991,23 +3419,23 @@ return result2; } function reverse(array) { return array == null ? array : nativeReverse.call(array); } - function slice(array, start4, end2) { + function slice(array, start3, end2) { var length = array == null ? 0 : array.length; if (!length) { return []; } - if (end2 && typeof end2 != "number" && isIterateeCall(array, start4, end2)) { - start4 = 0; + if (end2 && typeof end2 != "number" && isIterateeCall(array, start3, end2)) { + start3 = 0; end2 = length; } else { - start4 = start4 == null ? 0 : toInteger(start4); + start3 = start3 == null ? 0 : toInteger(start3); end2 = end2 === undefined2 ? length : toInteger(end2); } - return baseSlice(array, start4, end2); + return baseSlice(array, start3, end2); } function sortedIndex(array, value) { return baseSortedIndex(array, value); } function sortedIndexBy(array, value, iteratee2) { @@ -4164,17 +3592,17 @@ } function thru(value, interceptor2) { return interceptor2(value); } var wrapperAt = flatRest(function(paths) { - var length = paths.length, start4 = length ? paths[0] : 0, value = this.__wrapped__, interceptor2 = function(object) { + var length = paths.length, start3 = length ? paths[0] : 0, value = this.__wrapped__, interceptor2 = function(object) { return baseAt(object, paths); }; - if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start4)) { + if (length > 1 || this.__actions__.length || !(value instanceof LazyWrapper) || !isIndex(start3)) { return this.thru(interceptor2); } - value = value.slice(start4, +start4 + (length ? 1 : 0)); + value = value.slice(start3, +start3 + (length ? 1 : 0)); value.__actions__.push({ "func": thru, "args": [interceptor2], "thisArg": undefined2 }); @@ -4383,11 +3811,11 @@ } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { iteratees = [iteratees[0]]; } return baseOrderBy(collection, baseFlatten(iteratees, 1), []); }); - var now2 = ctxNow || function() { + var now = ctxNow || function() { return root.Date.now(); }; function after(n2, func) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); @@ -4479,11 +3907,11 @@ function shouldInvoke(time) { var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime; return lastCallTime === undefined2 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait; } function timerExpired() { - var time = now2(); + var time = now(); if (shouldInvoke(time)) { return trailingEdge(time); } timerId = setTimeout2(timerExpired, remainingWait(time)); } @@ -4501,14 +3929,14 @@ } lastInvokeTime = 0; lastArgs = lastCallTime = lastThis = timerId = undefined2; } function flush() { - return timerId === undefined2 ? result2 : trailingEdge(now2()); + return timerId === undefined2 ? result2 : trailingEdge(now()); } function debounced() { - var time = now2(), isInvoking = shouldInvoke(time); + var time = now(), isInvoking = shouldInvoke(time); lastArgs = arguments; lastThis = this; lastCallTime = time; if (isInvoking) { if (timerId === undefined2) { @@ -4541,16 +3969,16 @@ function memoize(func, resolver) { if (typeof func != "function" || resolver != null && typeof resolver != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } var memoized = function() { - var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache2 = memoized.cache; - if (cache2.has(key)) { - return cache2.get(key); + var args = arguments, key = resolver ? resolver.apply(this, args) : args[0], cache = memoized.cache; + if (cache.has(key)) { + return cache.get(key); } var result2 = func.apply(this, args); - memoized.cache = cache2.set(key, result2) || cache2; + memoized.cache = cache.set(key, result2) || cache; return result2; }; memoized.cache = new (memoize.Cache || MapCache)(); return memoized; } @@ -4597,24 +4025,24 @@ return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined2, partials, holders); }); var rearg = flatRest(function(func, indexes) { return createWrap(func, WRAP_REARG_FLAG, undefined2, undefined2, undefined2, indexes); }); - function rest(func, start4) { + function rest(func, start3) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } - start4 = start4 === undefined2 ? start4 : toInteger(start4); - return baseRest(func, start4); + start3 = start3 === undefined2 ? start3 : toInteger(start3); + return baseRest(func, start3); } - function spread(func, start4) { + function spread(func, start3) { if (typeof func != "function") { throw new TypeError2(FUNC_ERROR_TEXT); } - start4 = start4 == null ? 0 : nativeMax(toInteger(start4), 0); + start3 = start3 == null ? 0 : nativeMax(toInteger(start3), 0); return baseRest(function(args) { - var array = args[start4], otherArgs = castSlice(args, 0, start4); + var array = args[start3], otherArgs = castSlice(args, 0, start3); if (array) { arrayPush(otherArgs, array); } return apply(func, this, otherArgs); }); @@ -5114,20 +4542,20 @@ lower = toNumber(lower); lower = lower === lower ? lower : 0; } return baseClamp(toNumber(number), lower, upper); } - function inRange(number, start4, end2) { - start4 = toFinite(start4); + function inRange(number, start3, end2) { + start3 = toFinite(start3); if (end2 === undefined2) { - end2 = start4; - start4 = 0; + end2 = start3; + start3 = 0; } else { end2 = toFinite(end2); } number = toNumber(number); - return baseInRange(number, start4, end2); + return baseInRange(number, start3, end2); } function random(lower, upper, floating) { if (floating && typeof floating != "boolean" && isIterateeCall(lower, upper, floating)) { upper = floating = undefined2; } @@ -5275,13 +4703,13 @@ options = undefined2; } string = toString(string); options = assignInWith({}, options, settings, customDefaultsAssignIn); var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), importsKeys = keys(imports), importsValues = baseValues(imports, importsKeys); - var isEscaping, isEvaluating, index = 0, interpolate2 = options.interpolate || reNoMatch, source = "__p += '"; + var isEscaping, isEvaluating, index = 0, interpolate = options.interpolate || reNoMatch, source = "__p += '"; var reDelimiters = RegExp2( - (options.escape || reNoMatch).source + "|" + interpolate2.source + "|" + (interpolate2 === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", + (options.escape || reNoMatch).source + "|" + interpolate.source + "|" + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + "|" + (options.evaluate || reNoMatch).source + "|$", "g" ); var sourceURL = "//# sourceURL=" + (hasOwnProperty3.call(options, "sourceURL") ? (options.sourceURL + "").replace(/\s/g, " ") : "lodash.templateSources[" + ++templateCounter + "]") + "\n"; string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset2) { interpolateValue || (interpolateValue = esTemplateValue); @@ -5330,12 +4758,12 @@ return baseTrim(string); } if (!string || !(chars = baseToString(chars))) { return string; } - var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start4 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1; - return castSlice(strSymbols, start4, end2).join(""); + var strSymbols = stringToArray(string), chrSymbols = stringToArray(chars), start3 = charsStartIndex(strSymbols, chrSymbols), end2 = charsEndIndex(strSymbols, chrSymbols) + 1; + return castSlice(strSymbols, start3, end2).join(""); } function trimEnd(string, chars, guard) { string = toString(string); if (string && (guard || chars === undefined2)) { return string.slice(0, trimmedEndIndex(string) + 1); @@ -5352,12 +4780,12 @@ return string.replace(reTrimStart, ""); } if (!string || !(chars = baseToString(chars))) { return string; } - var strSymbols = stringToArray(string), start4 = charsStartIndex(strSymbols, stringToArray(chars)); - return castSlice(strSymbols, start4).join(""); + var strSymbols = stringToArray(string), start3 = charsStartIndex(strSymbols, stringToArray(chars)); + return castSlice(strSymbols, start3).join(""); } function truncate(string, options) { var length = DEFAULT_TRUNC_LENGTH, omission = DEFAULT_TRUNC_OMISSION; if (isObject3(options)) { var separator = "separator" in options ? options.separator : separator; @@ -5811,11 +5239,11 @@ lodash.has = has2; lodash.hasIn = hasIn; lodash.head = head; lodash.identity = identity; lodash.includes = includes; - lodash.indexOf = indexOf2; + lodash.indexOf = indexOf; lodash.inRange = inRange; lodash.invoke = invoke; lodash.isArguments = isArguments; lodash.isArray = isArray2; lodash.isArrayBuffer = isArrayBuffer; @@ -5874,11 +5302,11 @@ lodash.stubTrue = stubTrue; lodash.multiply = multiply; lodash.nth = nth; lodash.noConflict = noConflict; lodash.noop = noop; - lodash.now = now2; + lodash.now = now; lodash.pad = pad; lodash.padEnd = padEnd; lodash.padStart = padStart; lodash.parseInt = parseInt2; lodash.random = random; @@ -5998,24 +5426,24 @@ }); }); LazyWrapper.prototype.reject = function(predicate) { return this.filter(negate(getIteratee(predicate))); }; - LazyWrapper.prototype.slice = function(start4, end2) { - start4 = toInteger(start4); + LazyWrapper.prototype.slice = function(start3, end2) { + start3 = toInteger(start3); var result2 = this; - if (result2.__filtered__ && (start4 > 0 || end2 < 0)) { + if (result2.__filtered__ && (start3 > 0 || end2 < 0)) { return new LazyWrapper(result2); } - if (start4 < 0) { - result2 = result2.takeRight(-start4); - } else if (start4) { - result2 = result2.drop(start4); + if (start3 < 0) { + result2 = result2.takeRight(-start3); + } else if (start3) { + result2 = result2.drop(start3); } if (end2 !== undefined2) { end2 = toInteger(end2); - result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start4); + result2 = end2 < 0 ? result2.dropRight(-end2) : result2.take(end2 - start3); } return result2; }; LazyWrapper.prototype.takeRightWhile = function(predicate) { return this.reverse().takeWhile(predicate).reverse(); @@ -7607,4071 +7035,10 @@ return f2; } u2.prepend(s2, o2), A2(u2), S2(); }(); - // ../../../node_modules/alpine-turbo-drive-adapter/dist/alpine-turbo-drive-adapter.esm.js - function isValidVersion(required, current) { - var requiredArray = required.split("."); - var currentArray = current.split("."); - for (var i2 = 0; i2 < requiredArray.length; i2++) { - if (currentArray[i2] && currentArray[i2] > requiredArray[i2]) { - return true; - } - } - return currentArray[requiredArray.length - 1] === requiredArray[requiredArray.length - 1]; - } - function dispatch(el, name) { - var detail = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {}; - el.dispatchEvent(new CustomEvent(name, { - detail, - bubbles: true, - composed: true, - cancelable: true - })); - } - var Bridge = class { - init() { - if (!window.Alpine.version || !isValidVersion("3.0.0", window.Alpine.version)) { - throw new Error("Invalid Alpine version. Please use Alpine 3.0.0 or above"); - } - window.Alpine.mutateDom(() => { - document.body.querySelectorAll("[x-cloak]").forEach((el) => { - var _el$getAttribute; - el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute = el.getAttribute("x-cloak")) !== null && _el$getAttribute !== void 0 ? _el$getAttribute : ""); - }); - }); - this.configureEventHandlers(); - } - configureEventHandlers() { - var renderCallback = (event) => { - if (document.documentElement.hasAttribute("data-turbo-preview")) { - return; - } - dispatch(document, "alpine:init"); - dispatch(document, "alpine:initializing"); - window.Alpine.flushAndStopDeferringMutations(); - dispatch(document, "alpine:initialised"); - window.Alpine.mutateDom(() => { - document.querySelectorAll("[data-alpine-ignored]").forEach((el) => { - el.removeAttribute("x-ignore"); - el.removeAttribute("data-alpine-ignored"); - }); - }); - }; - var beforeRenderCallback = (event) => { - window.Alpine.mutateDom(() => { - if (document.documentElement.hasAttribute("data-turbo-preview")) { - return; - } - event.detail.newBody.querySelectorAll("[data-alpine-generated-me],[x-cloak]").forEach((el) => { - if (el.hasAttribute("x-cloak")) { - var _el$getAttribute2; - el.setAttribute("data-alpine-was-cloaked", (_el$getAttribute2 = el.getAttribute("x-cloak")) !== null && _el$getAttribute2 !== void 0 ? _el$getAttribute2 : ""); - } - if (el.hasAttribute("data-alpine-generated-me")) { - el.removeAttribute("data-alpine-generated-me"); - el.remove(); - } - }); - }); - window.Alpine.deferMutations(); - }; - var beforeCacheCallback = (event) => { - window.Alpine.mutateDom(() => { - document.body.querySelectorAll("[x-for],[x-if],[data-alpine-was-cloaked]").forEach((el) => { - if (el.hasAttribute("data-alpine-was-cloaked")) { - var _el$getAttribute3; - el.setAttribute("x-cloak", (_el$getAttribute3 = el.getAttribute("data-alpine-was-cloaked")) !== null && _el$getAttribute3 !== void 0 ? _el$getAttribute3 : ""); - el.removeAttribute("data-alpine-was-cloaked"); - } - if (el.hasAttribute("x-for") && el._x_lookup) { - Object.values(el._x_lookup).forEach((el2) => el2.setAttribute("data-alpine-generated-me", true)); - } - if (el.hasAttribute("x-if") && el._x_currentIfEl) { - el._x_currentIfEl.setAttribute("data-alpine-generated-me", true); - } - }); - }); - document.querySelectorAll("[data-turbo-permanent]").forEach((el) => { - window.Alpine.mutateDom(() => { - if (!el.hasAttribute("x-ignore")) { - el.setAttribute("x-ignore", true); - el.setAttribute("data-alpine-ignored", true); - } - el.querySelectorAll("[data-alpine-generated-me]").forEach((sub) => { - sub.removeAttribute("data-alpine-generated-me"); - }); - }); - }); - }; - document.addEventListener("turbo:render", renderCallback); - document.addEventListener("turbo:before-render", beforeRenderCallback); - document.addEventListener("turbo:before-cache", beforeCacheCallback); - } - }; - if (window.Alpine) { - console.error("Alpine-turbo-drive-adapter must be included before AlpineJs"); - } - if (!Object.getOwnPropertyDescriptor(NodeList.prototype, "forEach")) { - Object.defineProperty(NodeList.prototype, "forEach", Object.getOwnPropertyDescriptor(Array.prototype, "forEach")); - } - document.addEventListener("alpine:init", () => { - var bridge = new Bridge(); - bridge.init(); - }, { - once: true - }); - - // ../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js - (function() { - if (window.Reflect === void 0 || window.customElements === void 0 || window.customElements.polyfillWrapFlushCallback) { - return; - } - const BuiltInHTMLElement = HTMLElement; - const wrapperForTheName = { - HTMLElement: function HTMLElement2() { - return Reflect.construct(BuiltInHTMLElement, [], this.constructor); - } - }; - window.HTMLElement = wrapperForTheName["HTMLElement"]; - HTMLElement.prototype = BuiltInHTMLElement.prototype; - HTMLElement.prototype.constructor = HTMLElement; - Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement); - })(); - (function(prototype) { - if (typeof prototype.requestSubmit == "function") - return; - prototype.requestSubmit = function(submitter) { - if (submitter) { - validateSubmitter(submitter, this); - submitter.click(); - } else { - submitter = document.createElement("input"); - submitter.type = "submit"; - submitter.hidden = true; - this.appendChild(submitter); - submitter.click(); - this.removeChild(submitter); - } - }; - function validateSubmitter(submitter, form) { - submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'"); - submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button"); - submitter.form == form || raise(DOMException, "The specified element is not owned by this form element", "NotFoundError"); - } - function raise(errorConstructor, message, name) { - throw new errorConstructor("Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".", name); - } - })(HTMLFormElement.prototype); - var submittersByForm = /* @__PURE__ */ new WeakMap(); - function findSubmitterFromClickTarget(target) { - const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; - const candidate = element ? element.closest("input, button") : null; - return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == "submit" ? candidate : null; - } - function clickCaptured(event) { - const submitter = findSubmitterFromClickTarget(event.target); - if (submitter && submitter.form) { - submittersByForm.set(submitter.form, submitter); - } - } - (function() { - if ("submitter" in Event.prototype) - return; - let prototype = window.Event.prototype; - if ("SubmitEvent" in window && /Apple Computer/.test(navigator.vendor)) { - prototype = window.SubmitEvent.prototype; - } else if ("SubmitEvent" in window) { - return; - } - addEventListener("click", clickCaptured, true); - Object.defineProperty(prototype, "submitter", { - get() { - if (this.type == "submit" && this.target instanceof HTMLFormElement) { - return submittersByForm.get(this.target); - } - } - }); - })(); - var FrameLoadingStyle; - (function(FrameLoadingStyle2) { - FrameLoadingStyle2["eager"] = "eager"; - FrameLoadingStyle2["lazy"] = "lazy"; - })(FrameLoadingStyle || (FrameLoadingStyle = {})); - var FrameElement = class extends HTMLElement { - static get observedAttributes() { - return ["disabled", "complete", "loading", "src"]; - } - constructor() { - super(); - this.loaded = Promise.resolve(); - this.delegate = new FrameElement.delegateConstructor(this); - } - connectedCallback() { - this.delegate.connect(); - } - disconnectedCallback() { - this.delegate.disconnect(); - } - reload() { - return this.delegate.sourceURLReloaded(); - } - attributeChangedCallback(name) { - if (name == "loading") { - this.delegate.loadingStyleChanged(); - } else if (name == "complete") { - this.delegate.completeChanged(); - } else if (name == "src") { - this.delegate.sourceURLChanged(); - } else { - this.delegate.disabledChanged(); - } - } - get src() { - return this.getAttribute("src"); - } - set src(value) { - if (value) { - this.setAttribute("src", value); - } else { - this.removeAttribute("src"); - } - } - get loading() { - return frameLoadingStyleFromString(this.getAttribute("loading") || ""); - } - set loading(value) { - if (value) { - this.setAttribute("loading", value); - } else { - this.removeAttribute("loading"); - } - } - get disabled() { - return this.hasAttribute("disabled"); - } - set disabled(value) { - if (value) { - this.setAttribute("disabled", ""); - } else { - this.removeAttribute("disabled"); - } - } - get autoscroll() { - return this.hasAttribute("autoscroll"); - } - set autoscroll(value) { - if (value) { - this.setAttribute("autoscroll", ""); - } else { - this.removeAttribute("autoscroll"); - } - } - get complete() { - return !this.delegate.isLoading; - } - get isActive() { - return this.ownerDocument === document && !this.isPreview; - } - get isPreview() { - var _a, _b; - return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute("data-turbo-preview"); - } - }; - function frameLoadingStyleFromString(style) { - switch (style.toLowerCase()) { - case "lazy": - return FrameLoadingStyle.lazy; - default: - return FrameLoadingStyle.eager; - } - } - function expandURL(locatable) { - return new URL(locatable.toString(), document.baseURI); - } - function getAnchor(url) { - let anchorMatch; - if (url.hash) { - return url.hash.slice(1); - } else if (anchorMatch = url.href.match(/#(.*)$/)) { - return anchorMatch[1]; - } - } - function getAction(form, submitter) { - const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formaction")) || form.getAttribute("action") || form.action; - return expandURL(action); - } - function getExtension(url) { - return (getLastPathComponent(url).match(/\.[^.]*$/) || [])[0] || ""; - } - function isHTML(url) { - return !!getExtension(url).match(/^(?:|\.(?:htm|html|xhtml|php))$/); - } - function isPrefixedBy(baseURL, url) { - const prefix2 = getPrefix(url); - return baseURL.href === expandURL(prefix2).href || baseURL.href.startsWith(prefix2); - } - function locationIsVisitable(location2, rootLocation) { - return isPrefixedBy(location2, rootLocation) && isHTML(location2); - } - function getRequestURL(url) { - const anchor = getAnchor(url); - return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href; - } - function toCacheKey(url) { - return getRequestURL(url); - } - function urlsAreEqual(left2, right2) { - return expandURL(left2).href == expandURL(right2).href; - } - function getPathComponents(url) { - return url.pathname.split("/").slice(1); - } - function getLastPathComponent(url) { - return getPathComponents(url).slice(-1)[0]; - } - function getPrefix(url) { - return addTrailingSlash(url.origin + url.pathname); - } - function addTrailingSlash(value) { - return value.endsWith("/") ? value : value + "/"; - } - var FetchResponse = class { - constructor(response) { - this.response = response; - } - get succeeded() { - return this.response.ok; - } - get failed() { - return !this.succeeded; - } - get clientError() { - return this.statusCode >= 400 && this.statusCode <= 499; - } - get serverError() { - return this.statusCode >= 500 && this.statusCode <= 599; - } - get redirected() { - return this.response.redirected; - } - get location() { - return expandURL(this.response.url); - } - get isHTML() { - return this.contentType && this.contentType.match(/^(?:text\/([^\s;,]+\b)?html|application\/xhtml\+xml)\b/); - } - get statusCode() { - return this.response.status; - } - get contentType() { - return this.header("Content-Type"); - } - get responseText() { - return this.response.clone().text(); - } - get responseHTML() { - if (this.isHTML) { - return this.response.clone().text(); - } else { - return Promise.resolve(void 0); - } - } - header(name) { - return this.response.headers.get(name); - } - }; - function activateScriptElement(element) { - if (element.getAttribute("data-turbo-eval") == "false") { - return element; - } else { - const createdScriptElement = document.createElement("script"); - const cspNonce = getMetaContent("csp-nonce"); - if (cspNonce) { - createdScriptElement.nonce = cspNonce; - } - createdScriptElement.textContent = element.textContent; - createdScriptElement.async = false; - copyElementAttributes(createdScriptElement, element); - return createdScriptElement; - } - } - function copyElementAttributes(destinationElement, sourceElement) { - for (const { name, value } of sourceElement.attributes) { - destinationElement.setAttribute(name, value); - } - } - function createDocumentFragment(html) { - const template = document.createElement("template"); - template.innerHTML = html; - return template.content; - } - function dispatch2(eventName, { target, cancelable, detail } = {}) { - const event = new CustomEvent(eventName, { - cancelable, - bubbles: true, - composed: true, - detail - }); - if (target && target.isConnected) { - target.dispatchEvent(event); - } else { - document.documentElement.dispatchEvent(event); - } - return event; - } - function nextAnimationFrame() { - return new Promise((resolve) => requestAnimationFrame(() => resolve())); - } - function nextEventLoopTick() { - return new Promise((resolve) => setTimeout(() => resolve(), 0)); - } - function nextMicrotask() { - return Promise.resolve(); - } - function parseHTMLDocument(html = "") { - return new DOMParser().parseFromString(html, "text/html"); - } - function unindent(strings, ...values) { - const lines = interpolate(strings, values).replace(/^\n/, "").split("\n"); - const match = lines[0].match(/^\s+/); - const indent = match ? match[0].length : 0; - return lines.map((line) => line.slice(indent)).join("\n"); - } - function interpolate(strings, values) { - return strings.reduce((result, string, i2) => { - const value = values[i2] == void 0 ? "" : values[i2]; - return result + string + value; - }, ""); - } - function uuid() { - return Array.from({ length: 36 }).map((_2, i2) => { - if (i2 == 8 || i2 == 13 || i2 == 18 || i2 == 23) { - return "-"; - } else if (i2 == 14) { - return "4"; - } else if (i2 == 19) { - return (Math.floor(Math.random() * 4) + 8).toString(16); - } else { - return Math.floor(Math.random() * 15).toString(16); - } - }).join(""); - } - function getAttribute(attributeName, ...elements) { - for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) { - if (typeof value == "string") - return value; - } - return null; - } - function hasAttribute(attributeName, ...elements) { - return elements.some((element) => element && element.hasAttribute(attributeName)); - } - function markAsBusy(...elements) { - for (const element of elements) { - if (element.localName == "turbo-frame") { - element.setAttribute("busy", ""); - } - element.setAttribute("aria-busy", "true"); - } - } - function clearBusyState(...elements) { - for (const element of elements) { - if (element.localName == "turbo-frame") { - element.removeAttribute("busy"); - } - element.removeAttribute("aria-busy"); - } - } - function waitForLoad(element, timeoutInMilliseconds = 2e3) { - return new Promise((resolve) => { - const onComplete = () => { - element.removeEventListener("error", onComplete); - element.removeEventListener("load", onComplete); - resolve(); - }; - element.addEventListener("load", onComplete, { once: true }); - element.addEventListener("error", onComplete, { once: true }); - setTimeout(resolve, timeoutInMilliseconds); - }); - } - function getHistoryMethodForAction(action) { - switch (action) { - case "replace": - return history.replaceState; - case "advance": - case "restore": - return history.pushState; - } - } - function isAction(action) { - return action == "advance" || action == "replace" || action == "restore"; - } - function getVisitAction(...elements) { - const action = getAttribute("data-turbo-action", ...elements); - return isAction(action) ? action : null; - } - function getMetaElement(name) { - return document.querySelector(`meta[name="${name}"]`); - } - function getMetaContent(name) { - const element = getMetaElement(name); - return element && element.content; - } - function setMetaContent(name, content2) { - let element = getMetaElement(name); - if (!element) { - element = document.createElement("meta"); - element.setAttribute("name", name); - document.head.appendChild(element); - } - element.setAttribute("content", content2); - return element; - } - function findClosestRecursively(element, selector) { - var _a; - if (element instanceof Element) { - return element.closest(selector) || findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector); - } - } - var FetchMethod; - (function(FetchMethod2) { - FetchMethod2[FetchMethod2["get"] = 0] = "get"; - FetchMethod2[FetchMethod2["post"] = 1] = "post"; - FetchMethod2[FetchMethod2["put"] = 2] = "put"; - FetchMethod2[FetchMethod2["patch"] = 3] = "patch"; - FetchMethod2[FetchMethod2["delete"] = 4] = "delete"; - })(FetchMethod || (FetchMethod = {})); - function fetchMethodFromString(method) { - switch (method.toLowerCase()) { - case "get": - return FetchMethod.get; - case "post": - return FetchMethod.post; - case "put": - return FetchMethod.put; - case "patch": - return FetchMethod.patch; - case "delete": - return FetchMethod.delete; - } - } - var FetchRequest = class { - constructor(delegate, method, location2, body = new URLSearchParams(), target = null) { - this.abortController = new AbortController(); - this.resolveRequestPromise = (_value) => { - }; - this.delegate = delegate; - this.method = method; - this.headers = this.defaultHeaders; - this.body = body; - this.url = location2; - this.target = target; - } - get location() { - return this.url; - } - get params() { - return this.url.searchParams; - } - get entries() { - return this.body ? Array.from(this.body.entries()) : []; - } - cancel() { - this.abortController.abort(); - } - async perform() { - const { fetchOptions } = this; - this.delegate.prepareRequest(this); - await this.allowRequestToBeIntercepted(fetchOptions); - try { - this.delegate.requestStarted(this); - const response = await fetch(this.url.href, fetchOptions); - return await this.receive(response); - } catch (error2) { - if (error2.name !== "AbortError") { - if (this.willDelegateErrorHandling(error2)) { - this.delegate.requestErrored(this, error2); - } - throw error2; - } - } finally { - this.delegate.requestFinished(this); - } - } - async receive(response) { - const fetchResponse = new FetchResponse(response); - const event = dispatch2("turbo:before-fetch-response", { - cancelable: true, - detail: { fetchResponse }, - target: this.target - }); - if (event.defaultPrevented) { - this.delegate.requestPreventedHandlingResponse(this, fetchResponse); - } else if (fetchResponse.succeeded) { - this.delegate.requestSucceededWithResponse(this, fetchResponse); - } else { - this.delegate.requestFailedWithResponse(this, fetchResponse); - } - return fetchResponse; - } - get fetchOptions() { - var _a; - return { - method: FetchMethod[this.method].toUpperCase(), - credentials: "same-origin", - headers: this.headers, - redirect: "follow", - body: this.isSafe ? null : this.body, - signal: this.abortSignal, - referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href - }; - } - get defaultHeaders() { - return { - Accept: "text/html, application/xhtml+xml" - }; - } - get isSafe() { - return this.method === FetchMethod.get; - } - get abortSignal() { - return this.abortController.signal; - } - acceptResponseType(mimeType) { - this.headers["Accept"] = [mimeType, this.headers["Accept"]].join(", "); - } - async allowRequestToBeIntercepted(fetchOptions) { - const requestInterception = new Promise((resolve) => this.resolveRequestPromise = resolve); - const event = dispatch2("turbo:before-fetch-request", { - cancelable: true, - detail: { - fetchOptions, - url: this.url, - resume: this.resolveRequestPromise - }, - target: this.target - }); - if (event.defaultPrevented) - await requestInterception; - } - willDelegateErrorHandling(error2) { - const event = dispatch2("turbo:fetch-request-error", { - target: this.target, - cancelable: true, - detail: { request: this, error: error2 } - }); - return !event.defaultPrevented; - } - }; - var AppearanceObserver = class { - constructor(delegate, element) { - this.started = false; - this.intersect = (entries) => { - const lastEntry = entries.slice(-1)[0]; - if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) { - this.delegate.elementAppearedInViewport(this.element); - } - }; - this.delegate = delegate; - this.element = element; - this.intersectionObserver = new IntersectionObserver(this.intersect); - } - start() { - if (!this.started) { - this.started = true; - this.intersectionObserver.observe(this.element); - } - } - stop() { - if (this.started) { - this.started = false; - this.intersectionObserver.unobserve(this.element); - } - } - }; - var StreamMessage = class { - static wrap(message) { - if (typeof message == "string") { - return new this(createDocumentFragment(message)); - } else { - return message; - } - } - constructor(fragment) { - this.fragment = importStreamElements(fragment); - } - }; - StreamMessage.contentType = "text/vnd.turbo-stream.html"; - function importStreamElements(fragment) { - for (const element of fragment.querySelectorAll("turbo-stream")) { - const streamElement = document.importNode(element, true); - for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll("script")) { - inertScriptElement.replaceWith(activateScriptElement(inertScriptElement)); - } - element.replaceWith(streamElement); - } - return fragment; - } - var FormSubmissionState; - (function(FormSubmissionState2) { - FormSubmissionState2[FormSubmissionState2["initialized"] = 0] = "initialized"; - FormSubmissionState2[FormSubmissionState2["requesting"] = 1] = "requesting"; - FormSubmissionState2[FormSubmissionState2["waiting"] = 2] = "waiting"; - FormSubmissionState2[FormSubmissionState2["receiving"] = 3] = "receiving"; - FormSubmissionState2[FormSubmissionState2["stopping"] = 4] = "stopping"; - FormSubmissionState2[FormSubmissionState2["stopped"] = 5] = "stopped"; - })(FormSubmissionState || (FormSubmissionState = {})); - var FormEnctype; - (function(FormEnctype2) { - FormEnctype2["urlEncoded"] = "application/x-www-form-urlencoded"; - FormEnctype2["multipart"] = "multipart/form-data"; - FormEnctype2["plain"] = "text/plain"; - })(FormEnctype || (FormEnctype = {})); - function formEnctypeFromString(encoding) { - switch (encoding.toLowerCase()) { - case FormEnctype.multipart: - return FormEnctype.multipart; - case FormEnctype.plain: - return FormEnctype.plain; - default: - return FormEnctype.urlEncoded; - } - } - var FormSubmission = class { - static confirmMethod(message, _element, _submitter) { - return Promise.resolve(confirm(message)); - } - constructor(delegate, formElement, submitter, mustRedirect = false) { - this.state = FormSubmissionState.initialized; - this.delegate = delegate; - this.formElement = formElement; - this.submitter = submitter; - this.formData = buildFormData(formElement, submitter); - this.location = expandURL(this.action); - if (this.method == FetchMethod.get) { - mergeFormDataEntries(this.location, [...this.body.entries()]); - } - this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement); - this.mustRedirect = mustRedirect; - } - get method() { - var _a; - const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formmethod")) || this.formElement.getAttribute("method") || ""; - return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get; - } - get action() { - var _a; - const formElementAction = typeof this.formElement.action === "string" ? this.formElement.action : null; - if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute("formaction")) { - return this.submitter.getAttribute("formaction") || ""; - } else { - return this.formElement.getAttribute("action") || formElementAction || ""; - } - } - get body() { - if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) { - return new URLSearchParams(this.stringFormData); - } else { - return this.formData; - } - } - get enctype() { - var _a; - return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("formenctype")) || this.formElement.enctype); - } - get isSafe() { - return this.fetchRequest.isSafe; - } - get stringFormData() { - return [...this.formData].reduce((entries, [name, value]) => { - return entries.concat(typeof value == "string" ? [[name, value]] : []); - }, []); - } - async start() { - const { initialized, requesting } = FormSubmissionState; - const confirmationMessage = getAttribute("data-turbo-confirm", this.submitter, this.formElement); - if (typeof confirmationMessage === "string") { - const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter); - if (!answer) { - return; - } - } - if (this.state == initialized) { - this.state = requesting; - return this.fetchRequest.perform(); - } - } - stop() { - const { stopping, stopped } = FormSubmissionState; - if (this.state != stopping && this.state != stopped) { - this.state = stopping; - this.fetchRequest.cancel(); - return true; - } - } - prepareRequest(request) { - if (!request.isSafe) { - const token = getCookieValue(getMetaContent("csrf-param")) || getMetaContent("csrf-token"); - if (token) { - request.headers["X-CSRF-Token"] = token; - } - } - if (this.requestAcceptsTurboStreamResponse(request)) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted(_request) { - var _a; - this.state = FormSubmissionState.waiting; - (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute("disabled", ""); - this.setSubmitsWith(); - dispatch2("turbo:submit-start", { - target: this.formElement, - detail: { formSubmission: this } - }); - this.delegate.formSubmissionStarted(this); - } - requestPreventedHandlingResponse(request, response) { - this.result = { success: response.succeeded, fetchResponse: response }; - } - requestSucceededWithResponse(request, response) { - if (response.clientError || response.serverError) { - this.delegate.formSubmissionFailedWithResponse(this, response); - } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) { - const error2 = new Error("Form responses must redirect to another location"); - this.delegate.formSubmissionErrored(this, error2); - } else { - this.state = FormSubmissionState.receiving; - this.result = { success: true, fetchResponse: response }; - this.delegate.formSubmissionSucceededWithResponse(this, response); - } - } - requestFailedWithResponse(request, response) { - this.result = { success: false, fetchResponse: response }; - this.delegate.formSubmissionFailedWithResponse(this, response); - } - requestErrored(request, error2) { - this.result = { success: false, error: error2 }; - this.delegate.formSubmissionErrored(this, error2); - } - requestFinished(_request) { - var _a; - this.state = FormSubmissionState.stopped; - (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute("disabled"); - this.resetSubmitterText(); - dispatch2("turbo:submit-end", { - target: this.formElement, - detail: Object.assign({ formSubmission: this }, this.result) - }); - this.delegate.formSubmissionFinished(this); - } - setSubmitsWith() { - if (!this.submitter || !this.submitsWith) - return; - if (this.submitter.matches("button")) { - this.originalSubmitText = this.submitter.innerHTML; - this.submitter.innerHTML = this.submitsWith; - } else if (this.submitter.matches("input")) { - const input = this.submitter; - this.originalSubmitText = input.value; - input.value = this.submitsWith; - } - } - resetSubmitterText() { - if (!this.submitter || !this.originalSubmitText) - return; - if (this.submitter.matches("button")) { - this.submitter.innerHTML = this.originalSubmitText; - } else if (this.submitter.matches("input")) { - const input = this.submitter; - input.value = this.originalSubmitText; - } - } - requestMustRedirect(request) { - return !request.isSafe && this.mustRedirect; - } - requestAcceptsTurboStreamResponse(request) { - return !request.isSafe || hasAttribute("data-turbo-stream", this.submitter, this.formElement); - } - get submitsWith() { - var _a; - return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute("data-turbo-submits-with"); - } - }; - function buildFormData(formElement, submitter) { - const formData = new FormData(formElement); - const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("name"); - const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("value"); - if (name) { - formData.append(name, value || ""); - } - return formData; - } - function getCookieValue(cookieName) { - if (cookieName != null) { - const cookies = document.cookie ? document.cookie.split("; ") : []; - const cookie = cookies.find((cookie2) => cookie2.startsWith(cookieName)); - if (cookie) { - const value = cookie.split("=").slice(1).join("="); - return value ? decodeURIComponent(value) : void 0; - } - } - } - function responseSucceededWithoutRedirect(response) { - return response.statusCode == 200 && !response.redirected; - } - function mergeFormDataEntries(url, entries) { - const searchParams = new URLSearchParams(); - for (const [name, value] of entries) { - if (value instanceof File) - continue; - searchParams.append(name, value); - } - url.search = searchParams.toString(); - return url; - } - var Snapshot = class { - constructor(element) { - this.element = element; - } - get activeElement() { - return this.element.ownerDocument.activeElement; - } - get children() { - return [...this.element.children]; - } - hasAnchor(anchor) { - return this.getElementForAnchor(anchor) != null; - } - getElementForAnchor(anchor) { - return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null; - } - get isConnected() { - return this.element.isConnected; - } - get firstAutofocusableElement() { - const inertDisabledOrHidden = "[inert], :disabled, [hidden], details:not([open]), dialog:not([open])"; - for (const element of this.element.querySelectorAll("[autofocus]")) { - if (element.closest(inertDisabledOrHidden) == null) - return element; - else - continue; - } - return null; - } - get permanentElements() { - return queryPermanentElementsAll(this.element); - } - getPermanentElementById(id) { - return getPermanentElementById(this.element, id); - } - getPermanentElementMapForSnapshot(snapshot) { - const permanentElementMap = {}; - for (const currentPermanentElement of this.permanentElements) { - const { id } = currentPermanentElement; - const newPermanentElement = snapshot.getPermanentElementById(id); - if (newPermanentElement) { - permanentElementMap[id] = [currentPermanentElement, newPermanentElement]; - } - } - return permanentElementMap; - } - }; - function getPermanentElementById(node, id) { - return node.querySelector(`#${id}[data-turbo-permanent]`); - } - function queryPermanentElementsAll(node) { - return node.querySelectorAll("[id][data-turbo-permanent]"); - } - var FormSubmitObserver = class { - constructor(delegate, eventTarget) { - this.started = false; - this.submitCaptured = () => { - this.eventTarget.removeEventListener("submit", this.submitBubbled, false); - this.eventTarget.addEventListener("submit", this.submitBubbled, false); - }; - this.submitBubbled = (event) => { - if (!event.defaultPrevented) { - const form = event.target instanceof HTMLFormElement ? event.target : void 0; - const submitter = event.submitter || void 0; - if (form && submissionDoesNotDismissDialog(form, submitter) && submissionDoesNotTargetIFrame(form, submitter) && this.delegate.willSubmitForm(form, submitter)) { - event.preventDefault(); - event.stopImmediatePropagation(); - this.delegate.formSubmitted(form, submitter); - } - } - }; - this.delegate = delegate; - this.eventTarget = eventTarget; - } - start() { - if (!this.started) { - this.eventTarget.addEventListener("submit", this.submitCaptured, true); - this.started = true; - } - } - stop() { - if (this.started) { - this.eventTarget.removeEventListener("submit", this.submitCaptured, true); - this.started = false; - } - } - }; - function submissionDoesNotDismissDialog(form, submitter) { - const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formmethod")) || form.getAttribute("method"); - return method != "dialog"; - } - function submissionDoesNotTargetIFrame(form, submitter) { - if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute("formtarget")) || form.hasAttribute("target")) { - const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("formtarget")) || form.target; - for (const element of document.getElementsByName(target)) { - if (element instanceof HTMLIFrameElement) - return false; - } - return true; - } else { - return true; - } - } - var View = class { - constructor(delegate, element) { - this.resolveRenderPromise = (_value) => { - }; - this.resolveInterceptionPromise = (_value) => { - }; - this.delegate = delegate; - this.element = element; - } - scrollToAnchor(anchor) { - const element = this.snapshot.getElementForAnchor(anchor); - if (element) { - this.scrollToElement(element); - this.focusElement(element); - } else { - this.scrollToPosition({ x: 0, y: 0 }); - } - } - scrollToAnchorFromLocation(location2) { - this.scrollToAnchor(getAnchor(location2)); - } - scrollToElement(element) { - element.scrollIntoView(); - } - focusElement(element) { - if (element instanceof HTMLElement) { - if (element.hasAttribute("tabindex")) { - element.focus(); - } else { - element.setAttribute("tabindex", "-1"); - element.focus(); - element.removeAttribute("tabindex"); - } - } - } - scrollToPosition({ x: x2, y: y2 }) { - this.scrollRoot.scrollTo(x2, y2); - } - scrollToTop() { - this.scrollToPosition({ x: 0, y: 0 }); - } - get scrollRoot() { - return window; - } - async render(renderer) { - const { isPreview, shouldRender, newSnapshot: snapshot } = renderer; - if (shouldRender) { - try { - this.renderPromise = new Promise((resolve) => this.resolveRenderPromise = resolve); - this.renderer = renderer; - await this.prepareToRenderSnapshot(renderer); - const renderInterception = new Promise((resolve) => this.resolveInterceptionPromise = resolve); - const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement }; - const immediateRender = this.delegate.allowsImmediateRender(snapshot, options); - if (!immediateRender) - await renderInterception; - await this.renderSnapshot(renderer); - this.delegate.viewRenderedSnapshot(snapshot, isPreview); - this.delegate.preloadOnLoadLinksForView(this.element); - this.finishRenderingSnapshot(renderer); - } finally { - delete this.renderer; - this.resolveRenderPromise(void 0); - delete this.renderPromise; - } - } else { - this.invalidate(renderer.reloadReason); - } - } - invalidate(reason) { - this.delegate.viewInvalidated(reason); - } - async prepareToRenderSnapshot(renderer) { - this.markAsPreview(renderer.isPreview); - await renderer.prepareToRender(); - } - markAsPreview(isPreview) { - if (isPreview) { - this.element.setAttribute("data-turbo-preview", ""); - } else { - this.element.removeAttribute("data-turbo-preview"); - } - } - async renderSnapshot(renderer) { - await renderer.render(); - } - finishRenderingSnapshot(renderer) { - renderer.finishRendering(); - } - }; - var FrameView = class extends View { - missing() { - this.element.innerHTML = `<strong class="turbo-frame-error">Content missing</strong>`; - } - get snapshot() { - return new Snapshot(this.element); - } - }; - var LinkInterceptor = class { - constructor(delegate, element) { - this.clickBubbled = (event) => { - if (this.respondsToEventTarget(event.target)) { - this.clickEvent = event; - } else { - delete this.clickEvent; - } - }; - this.linkClicked = (event) => { - if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) { - if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) { - this.clickEvent.preventDefault(); - event.preventDefault(); - this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent); - } - } - delete this.clickEvent; - }; - this.willVisit = (_event) => { - delete this.clickEvent; - }; - this.delegate = delegate; - this.element = element; - } - start() { - this.element.addEventListener("click", this.clickBubbled); - document.addEventListener("turbo:click", this.linkClicked); - document.addEventListener("turbo:before-visit", this.willVisit); - } - stop() { - this.element.removeEventListener("click", this.clickBubbled); - document.removeEventListener("turbo:click", this.linkClicked); - document.removeEventListener("turbo:before-visit", this.willVisit); - } - respondsToEventTarget(target) { - const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null; - return element && element.closest("turbo-frame, html") == this.element; - } - }; - var LinkClickObserver = class { - constructor(delegate, eventTarget) { - this.started = false; - this.clickCaptured = () => { - this.eventTarget.removeEventListener("click", this.clickBubbled, false); - this.eventTarget.addEventListener("click", this.clickBubbled, false); - }; - this.clickBubbled = (event) => { - if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) { - const target = event.composedPath && event.composedPath()[0] || event.target; - const link = this.findLinkFromClickTarget(target); - if (link && doesNotTargetIFrame(link)) { - const location2 = this.getLocationForLink(link); - if (this.delegate.willFollowLinkToLocation(link, location2, event)) { - event.preventDefault(); - this.delegate.followedLinkToLocation(link, location2); - } - } - } - }; - this.delegate = delegate; - this.eventTarget = eventTarget; - } - start() { - if (!this.started) { - this.eventTarget.addEventListener("click", this.clickCaptured, true); - this.started = true; - } - } - stop() { - if (this.started) { - this.eventTarget.removeEventListener("click", this.clickCaptured, true); - this.started = false; - } - } - clickEventIsSignificant(event) { - return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey); - } - findLinkFromClickTarget(target) { - return findClosestRecursively(target, "a[href]:not([target^=_]):not([download])"); - } - getLocationForLink(link) { - return expandURL(link.getAttribute("href") || ""); - } - }; - function doesNotTargetIFrame(anchor) { - if (anchor.hasAttribute("target")) { - for (const element of document.getElementsByName(anchor.target)) { - if (element instanceof HTMLIFrameElement) - return false; - } - return true; - } else { - return true; - } - } - var FormLinkClickObserver = class { - constructor(delegate, element) { - this.delegate = delegate; - this.linkInterceptor = new LinkClickObserver(this, element); - } - start() { - this.linkInterceptor.start(); - } - stop() { - this.linkInterceptor.stop(); - } - willFollowLinkToLocation(link, location2, originalEvent) { - return this.delegate.willSubmitFormLinkToLocation(link, location2, originalEvent) && link.hasAttribute("data-turbo-method"); - } - followedLinkToLocation(link, location2) { - const form = document.createElement("form"); - const type = "hidden"; - for (const [name, value] of location2.searchParams) { - form.append(Object.assign(document.createElement("input"), { type, name, value })); - } - const action = Object.assign(location2, { search: "" }); - form.setAttribute("data-turbo", "true"); - form.setAttribute("action", action.href); - form.setAttribute("hidden", ""); - const method = link.getAttribute("data-turbo-method"); - if (method) - form.setAttribute("method", method); - const turboFrame = link.getAttribute("data-turbo-frame"); - if (turboFrame) - form.setAttribute("data-turbo-frame", turboFrame); - const turboAction = getVisitAction(link); - if (turboAction) - form.setAttribute("data-turbo-action", turboAction); - const turboConfirm = link.getAttribute("data-turbo-confirm"); - if (turboConfirm) - form.setAttribute("data-turbo-confirm", turboConfirm); - const turboStream = link.hasAttribute("data-turbo-stream"); - if (turboStream) - form.setAttribute("data-turbo-stream", ""); - this.delegate.submittedFormLinkToLocation(link, location2, form); - document.body.appendChild(form); - form.addEventListener("turbo:submit-end", () => form.remove(), { once: true }); - requestAnimationFrame(() => form.requestSubmit()); - } - }; - var Bardo = class { - static async preservingPermanentElements(delegate, permanentElementMap, callback) { - const bardo = new this(delegate, permanentElementMap); - bardo.enter(); - await callback(); - bardo.leave(); - } - constructor(delegate, permanentElementMap) { - this.delegate = delegate; - this.permanentElementMap = permanentElementMap; - } - enter() { - for (const id in this.permanentElementMap) { - const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id]; - this.delegate.enteringBardo(currentPermanentElement, newPermanentElement); - this.replaceNewPermanentElementWithPlaceholder(newPermanentElement); - } - } - leave() { - for (const id in this.permanentElementMap) { - const [currentPermanentElement] = this.permanentElementMap[id]; - this.replaceCurrentPermanentElementWithClone(currentPermanentElement); - this.replacePlaceholderWithPermanentElement(currentPermanentElement); - this.delegate.leavingBardo(currentPermanentElement); - } - } - replaceNewPermanentElementWithPlaceholder(permanentElement) { - const placeholder = createPlaceholderForPermanentElement(permanentElement); - permanentElement.replaceWith(placeholder); - } - replaceCurrentPermanentElementWithClone(permanentElement) { - const clone2 = permanentElement.cloneNode(true); - permanentElement.replaceWith(clone2); - } - replacePlaceholderWithPermanentElement(permanentElement) { - const placeholder = this.getPlaceholderById(permanentElement.id); - placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement); - } - getPlaceholderById(id) { - return this.placeholders.find((element) => element.content == id); - } - get placeholders() { - return [...document.querySelectorAll("meta[name=turbo-permanent-placeholder][content]")]; - } - }; - function createPlaceholderForPermanentElement(permanentElement) { - const element = document.createElement("meta"); - element.setAttribute("name", "turbo-permanent-placeholder"); - element.setAttribute("content", permanentElement.id); - return element; - } - var Renderer = class { - constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { - this.activeElement = null; - this.currentSnapshot = currentSnapshot; - this.newSnapshot = newSnapshot; - this.isPreview = isPreview; - this.willRender = willRender; - this.renderElement = renderElement; - this.promise = new Promise((resolve, reject) => this.resolvingFunctions = { resolve, reject }); - } - get shouldRender() { - return true; - } - get reloadReason() { - return; - } - prepareToRender() { - return; - } - finishRendering() { - if (this.resolvingFunctions) { - this.resolvingFunctions.resolve(); - delete this.resolvingFunctions; - } - } - async preservingPermanentElements(callback) { - await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback); - } - focusFirstAutofocusableElement() { - const element = this.connectedSnapshot.firstAutofocusableElement; - if (elementIsFocusable(element)) { - element.focus(); - } - } - enteringBardo(currentPermanentElement) { - if (this.activeElement) - return; - if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) { - this.activeElement = this.currentSnapshot.activeElement; - } - } - leavingBardo(currentPermanentElement) { - if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) { - this.activeElement.focus(); - this.activeElement = null; - } - } - get connectedSnapshot() { - return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot; - } - get currentElement() { - return this.currentSnapshot.element; - } - get newElement() { - return this.newSnapshot.element; - } - get permanentElementMap() { - return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot); - } - }; - function elementIsFocusable(element) { - return element && typeof element.focus == "function"; - } - var FrameRenderer = class extends Renderer { - static renderElement(currentElement, newElement) { - var _a; - const destinationRange = document.createRange(); - destinationRange.selectNodeContents(currentElement); - destinationRange.deleteContents(); - const frameElement = newElement; - const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange(); - if (sourceRange) { - sourceRange.selectNodeContents(frameElement); - currentElement.appendChild(sourceRange.extractContents()); - } - } - constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) { - super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender); - this.delegate = delegate; - } - get shouldRender() { - return true; - } - async render() { - await nextAnimationFrame(); - this.preservingPermanentElements(() => { - this.loadFrameElement(); - }); - this.scrollFrameIntoView(); - await nextAnimationFrame(); - this.focusFirstAutofocusableElement(); - await nextAnimationFrame(); - this.activateScriptElements(); - } - loadFrameElement() { - this.delegate.willRenderFrame(this.currentElement, this.newElement); - this.renderElement(this.currentElement, this.newElement); - } - scrollFrameIntoView() { - if (this.currentElement.autoscroll || this.newElement.autoscroll) { - const element = this.currentElement.firstElementChild; - const block = readScrollLogicalPosition(this.currentElement.getAttribute("data-autoscroll-block"), "end"); - const behavior = readScrollBehavior(this.currentElement.getAttribute("data-autoscroll-behavior"), "auto"); - if (element) { - element.scrollIntoView({ block, behavior }); - return true; - } - } - return false; - } - activateScriptElements() { - for (const inertScriptElement of this.newScriptElements) { - const activatedScriptElement = activateScriptElement(inertScriptElement); - inertScriptElement.replaceWith(activatedScriptElement); - } - } - get newScriptElements() { - return this.currentElement.querySelectorAll("script"); - } - }; - function readScrollLogicalPosition(value, defaultValue) { - if (value == "end" || value == "start" || value == "center" || value == "nearest") { - return value; - } else { - return defaultValue; - } - } - function readScrollBehavior(value, defaultValue) { - if (value == "auto" || value == "smooth") { - return value; - } else { - return defaultValue; - } - } - var ProgressBar = class { - static get defaultCSS() { - return unindent` - .turbo-progress-bar { - position: fixed; - display: block; - top: 0; - left: 0; - height: 3px; - background: #0076ff; - z-index: 2147483647; - transition: - width ${ProgressBar.animationDuration}ms ease-out, - opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in; - transform: translate3d(0, 0, 0); - } - `; - } - constructor() { - this.hiding = false; - this.value = 0; - this.visible = false; - this.trickle = () => { - this.setValue(this.value + Math.random() / 100); - }; - this.stylesheetElement = this.createStylesheetElement(); - this.progressElement = this.createProgressElement(); - this.installStylesheetElement(); - this.setValue(0); - } - show() { - if (!this.visible) { - this.visible = true; - this.installProgressElement(); - this.startTrickling(); - } - } - hide() { - if (this.visible && !this.hiding) { - this.hiding = true; - this.fadeProgressElement(() => { - this.uninstallProgressElement(); - this.stopTrickling(); - this.visible = false; - this.hiding = false; - }); - } - } - setValue(value) { - this.value = value; - this.refresh(); - } - installStylesheetElement() { - document.head.insertBefore(this.stylesheetElement, document.head.firstChild); - } - installProgressElement() { - this.progressElement.style.width = "0"; - this.progressElement.style.opacity = "1"; - document.documentElement.insertBefore(this.progressElement, document.body); - this.refresh(); - } - fadeProgressElement(callback) { - this.progressElement.style.opacity = "0"; - setTimeout(callback, ProgressBar.animationDuration * 1.5); - } - uninstallProgressElement() { - if (this.progressElement.parentNode) { - document.documentElement.removeChild(this.progressElement); - } - } - startTrickling() { - if (!this.trickleInterval) { - this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration); - } - } - stopTrickling() { - window.clearInterval(this.trickleInterval); - delete this.trickleInterval; - } - refresh() { - requestAnimationFrame(() => { - this.progressElement.style.width = `${10 + this.value * 90}%`; - }); - } - createStylesheetElement() { - const element = document.createElement("style"); - element.type = "text/css"; - element.textContent = ProgressBar.defaultCSS; - if (this.cspNonce) { - element.nonce = this.cspNonce; - } - return element; - } - createProgressElement() { - const element = document.createElement("div"); - element.className = "turbo-progress-bar"; - return element; - } - get cspNonce() { - return getMetaContent("csp-nonce"); - } - }; - ProgressBar.animationDuration = 300; - var HeadSnapshot = class extends Snapshot { - constructor() { - super(...arguments); - this.detailsByOuterHTML = this.children.filter((element) => !elementIsNoscript(element)).map((element) => elementWithoutNonce(element)).reduce((result, element) => { - const { outerHTML } = element; - const details = outerHTML in result ? result[outerHTML] : { - type: elementType(element), - tracked: elementIsTracked(element), - elements: [] - }; - return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) }); - }, {}); - } - get trackedElementSignature() { - return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked).join(""); - } - getScriptElementsNotInSnapshot(snapshot) { - return this.getElementsMatchingTypeNotInSnapshot("script", snapshot); - } - getStylesheetElementsNotInSnapshot(snapshot) { - return this.getElementsMatchingTypeNotInSnapshot("stylesheet", snapshot); - } - getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) { - return Object.keys(this.detailsByOuterHTML).filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML)).map((outerHTML) => this.detailsByOuterHTML[outerHTML]).filter(({ type }) => type == matchedType).map(({ elements: [element] }) => element); - } - get provisionalElements() { - return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { - const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML]; - if (type == null && !tracked) { - return [...result, ...elements]; - } else if (elements.length > 1) { - return [...result, ...elements.slice(1)]; - } else { - return result; - } - }, []); - } - getMetaValue(name) { - const element = this.findMetaElementByName(name); - return element ? element.getAttribute("content") : null; - } - findMetaElementByName(name) { - return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => { - const { elements: [element] } = this.detailsByOuterHTML[outerHTML]; - return elementIsMetaElementWithName(element, name) ? element : result; - }, void 0); - } - }; - function elementType(element) { - if (elementIsScript(element)) { - return "script"; - } else if (elementIsStylesheet(element)) { - return "stylesheet"; - } - } - function elementIsTracked(element) { - return element.getAttribute("data-turbo-track") == "reload"; - } - function elementIsScript(element) { - const tagName = element.localName; - return tagName == "script"; - } - function elementIsNoscript(element) { - const tagName = element.localName; - return tagName == "noscript"; - } - function elementIsStylesheet(element) { - const tagName = element.localName; - return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet"; - } - function elementIsMetaElementWithName(element, name) { - const tagName = element.localName; - return tagName == "meta" && element.getAttribute("name") == name; - } - function elementWithoutNonce(element) { - if (element.hasAttribute("nonce")) { - element.setAttribute("nonce", ""); - } - return element; - } - var PageSnapshot = class extends Snapshot { - static fromHTMLString(html = "") { - return this.fromDocument(parseHTMLDocument(html)); - } - static fromElement(element) { - return this.fromDocument(element.ownerDocument); - } - static fromDocument({ head, body }) { - return new this(body, new HeadSnapshot(head)); - } - constructor(element, headSnapshot) { - super(element); - this.headSnapshot = headSnapshot; - } - clone() { - const clonedElement = this.element.cloneNode(true); - const selectElements = this.element.querySelectorAll("select"); - const clonedSelectElements = clonedElement.querySelectorAll("select"); - for (const [index, source] of selectElements.entries()) { - const clone2 = clonedSelectElements[index]; - for (const option of clone2.selectedOptions) - option.selected = false; - for (const option of source.selectedOptions) - clone2.options[option.index].selected = true; - } - for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type="password"]')) { - clonedPasswordInput.value = ""; - } - return new PageSnapshot(clonedElement, this.headSnapshot); - } - get headElement() { - return this.headSnapshot.element; - } - get rootLocation() { - var _a; - const root = (_a = this.getSetting("root")) !== null && _a !== void 0 ? _a : "/"; - return expandURL(root); - } - get cacheControlValue() { - return this.getSetting("cache-control"); - } - get isPreviewable() { - return this.cacheControlValue != "no-preview"; - } - get isCacheable() { - return this.cacheControlValue != "no-cache"; - } - get isVisitable() { - return this.getSetting("visit-control") != "reload"; - } - getSetting(name) { - return this.headSnapshot.getMetaValue(`turbo-${name}`); - } - }; - var TimingMetric; - (function(TimingMetric2) { - TimingMetric2["visitStart"] = "visitStart"; - TimingMetric2["requestStart"] = "requestStart"; - TimingMetric2["requestEnd"] = "requestEnd"; - TimingMetric2["visitEnd"] = "visitEnd"; - })(TimingMetric || (TimingMetric = {})); - var VisitState; - (function(VisitState2) { - VisitState2["initialized"] = "initialized"; - VisitState2["started"] = "started"; - VisitState2["canceled"] = "canceled"; - VisitState2["failed"] = "failed"; - VisitState2["completed"] = "completed"; - })(VisitState || (VisitState = {})); - var defaultOptions = { - action: "advance", - historyChanged: false, - visitCachedSnapshot: () => { - }, - willRender: true, - updateHistory: true, - shouldCacheSnapshot: true, - acceptsStreamResponse: false - }; - var SystemStatusCode; - (function(SystemStatusCode2) { - SystemStatusCode2[SystemStatusCode2["networkFailure"] = 0] = "networkFailure"; - SystemStatusCode2[SystemStatusCode2["timeoutFailure"] = -1] = "timeoutFailure"; - SystemStatusCode2[SystemStatusCode2["contentTypeMismatch"] = -2] = "contentTypeMismatch"; - })(SystemStatusCode || (SystemStatusCode = {})); - var Visit = class { - constructor(delegate, location2, restorationIdentifier, options = {}) { - this.identifier = uuid(); - this.timingMetrics = {}; - this.followedRedirect = false; - this.historyChanged = false; - this.scrolled = false; - this.shouldCacheSnapshot = true; - this.acceptsStreamResponse = false; - this.snapshotCached = false; - this.state = VisitState.initialized; - this.delegate = delegate; - this.location = location2; - this.restorationIdentifier = restorationIdentifier || uuid(); - const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse } = Object.assign(Object.assign({}, defaultOptions), options); - this.action = action; - this.historyChanged = historyChanged; - this.referrer = referrer; - this.snapshot = snapshot; - this.snapshotHTML = snapshotHTML; - this.response = response; - this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action); - this.visitCachedSnapshot = visitCachedSnapshot; - this.willRender = willRender; - this.updateHistory = updateHistory; - this.scrolled = !willRender; - this.shouldCacheSnapshot = shouldCacheSnapshot; - this.acceptsStreamResponse = acceptsStreamResponse; - } - get adapter() { - return this.delegate.adapter; - } - get view() { - return this.delegate.view; - } - get history() { - return this.delegate.history; - } - get restorationData() { - return this.history.getRestorationDataForIdentifier(this.restorationIdentifier); - } - get silent() { - return this.isSamePage; - } - start() { - if (this.state == VisitState.initialized) { - this.recordTimingMetric(TimingMetric.visitStart); - this.state = VisitState.started; - this.adapter.visitStarted(this); - this.delegate.visitStarted(this); - } - } - cancel() { - if (this.state == VisitState.started) { - if (this.request) { - this.request.cancel(); - } - this.cancelRender(); - this.state = VisitState.canceled; - } - } - complete() { - if (this.state == VisitState.started) { - this.recordTimingMetric(TimingMetric.visitEnd); - this.state = VisitState.completed; - this.followRedirect(); - if (!this.followedRedirect) { - this.adapter.visitCompleted(this); - this.delegate.visitCompleted(this); - } - } - } - fail() { - if (this.state == VisitState.started) { - this.state = VisitState.failed; - this.adapter.visitFailed(this); - } - } - changeHistory() { - var _a; - if (!this.historyChanged && this.updateHistory) { - const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? "replace" : this.action; - const method = getHistoryMethodForAction(actionForHistory); - this.history.update(method, this.location, this.restorationIdentifier); - this.historyChanged = true; - } - } - issueRequest() { - if (this.hasPreloadedResponse()) { - this.simulateRequest(); - } else if (this.shouldIssueRequest() && !this.request) { - this.request = new FetchRequest(this, FetchMethod.get, this.location); - this.request.perform(); - } - } - simulateRequest() { - if (this.response) { - this.startRequest(); - this.recordResponse(); - this.finishRequest(); - } - } - startRequest() { - this.recordTimingMetric(TimingMetric.requestStart); - this.adapter.visitRequestStarted(this); - } - recordResponse(response = this.response) { - this.response = response; - if (response) { - const { statusCode } = response; - if (isSuccessful(statusCode)) { - this.adapter.visitRequestCompleted(this); - } else { - this.adapter.visitRequestFailedWithStatusCode(this, statusCode); - } - } - } - finishRequest() { - this.recordTimingMetric(TimingMetric.requestEnd); - this.adapter.visitRequestFinished(this); - } - loadResponse() { - if (this.response) { - const { statusCode, responseHTML } = this.response; - this.render(async () => { - if (this.shouldCacheSnapshot) - this.cacheSnapshot(); - if (this.view.renderPromise) - await this.view.renderPromise; - if (isSuccessful(statusCode) && responseHTML != null) { - await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this); - this.performScroll(); - this.adapter.visitRendered(this); - this.complete(); - } else { - await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this); - this.adapter.visitRendered(this); - this.fail(); - } - }); - } - } - getCachedSnapshot() { - const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot(); - if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) { - if (this.action == "restore" || snapshot.isPreviewable) { - return snapshot; - } - } - } - getPreloadedSnapshot() { - if (this.snapshotHTML) { - return PageSnapshot.fromHTMLString(this.snapshotHTML); - } - } - hasCachedSnapshot() { - return this.getCachedSnapshot() != null; - } - loadCachedSnapshot() { - const snapshot = this.getCachedSnapshot(); - if (snapshot) { - const isPreview = this.shouldIssueRequest(); - this.render(async () => { - this.cacheSnapshot(); - if (this.isSamePage) { - this.adapter.visitRendered(this); - } else { - if (this.view.renderPromise) - await this.view.renderPromise; - await this.view.renderPage(snapshot, isPreview, this.willRender, this); - this.performScroll(); - this.adapter.visitRendered(this); - if (!isPreview) { - this.complete(); - } - } - }); - } - } - followRedirect() { - var _a; - if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) { - this.adapter.visitProposedToLocation(this.redirectedToLocation, { - action: "replace", - response: this.response, - shouldCacheSnapshot: false, - willRender: false - }); - this.followedRedirect = true; - } - } - goToSamePageAnchor() { - if (this.isSamePage) { - this.render(async () => { - this.cacheSnapshot(); - this.performScroll(); - this.changeHistory(); - this.adapter.visitRendered(this); - }); - } - } - prepareRequest(request) { - if (this.acceptsStreamResponse) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted() { - this.startRequest(); - } - requestPreventedHandlingResponse(_request, _response) { - } - async requestSucceededWithResponse(request, response) { - const responseHTML = await response.responseHTML; - const { redirected, statusCode } = response; - if (responseHTML == void 0) { - this.recordResponse({ - statusCode: SystemStatusCode.contentTypeMismatch, - redirected - }); - } else { - this.redirectedToLocation = response.redirected ? response.location : void 0; - this.recordResponse({ statusCode, responseHTML, redirected }); - } - } - async requestFailedWithResponse(request, response) { - const responseHTML = await response.responseHTML; - const { redirected, statusCode } = response; - if (responseHTML == void 0) { - this.recordResponse({ - statusCode: SystemStatusCode.contentTypeMismatch, - redirected - }); - } else { - this.recordResponse({ statusCode, responseHTML, redirected }); - } - } - requestErrored(_request, _error) { - this.recordResponse({ - statusCode: SystemStatusCode.networkFailure, - redirected: false - }); - } - requestFinished() { - this.finishRequest(); - } - performScroll() { - if (!this.scrolled && !this.view.forceReloaded) { - if (this.action == "restore") { - this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop(); - } else { - this.scrollToAnchor() || this.view.scrollToTop(); - } - if (this.isSamePage) { - this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location); - } - this.scrolled = true; - } - } - scrollToRestoredPosition() { - const { scrollPosition } = this.restorationData; - if (scrollPosition) { - this.view.scrollToPosition(scrollPosition); - return true; - } - } - scrollToAnchor() { - const anchor = getAnchor(this.location); - if (anchor != null) { - this.view.scrollToAnchor(anchor); - return true; - } - } - recordTimingMetric(metric) { - this.timingMetrics[metric] = (/* @__PURE__ */ new Date()).getTime(); - } - getTimingMetrics() { - return Object.assign({}, this.timingMetrics); - } - getHistoryMethodForAction(action) { - switch (action) { - case "replace": - return history.replaceState; - case "advance": - case "restore": - return history.pushState; - } - } - hasPreloadedResponse() { - return typeof this.response == "object"; - } - shouldIssueRequest() { - if (this.isSamePage) { - return false; - } else if (this.action == "restore") { - return !this.hasCachedSnapshot(); - } else { - return this.willRender; - } - } - cacheSnapshot() { - if (!this.snapshotCached) { - this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot)); - this.snapshotCached = true; - } - } - async render(callback) { - this.cancelRender(); - await new Promise((resolve) => { - this.frame = requestAnimationFrame(() => resolve()); - }); - await callback(); - delete this.frame; - } - cancelRender() { - if (this.frame) { - cancelAnimationFrame(this.frame); - delete this.frame; - } - } - }; - function isSuccessful(statusCode) { - return statusCode >= 200 && statusCode < 300; - } - var BrowserAdapter = class { - constructor(session2) { - this.progressBar = new ProgressBar(); - this.showProgressBar = () => { - this.progressBar.show(); - }; - this.session = session2; - } - visitProposedToLocation(location2, options) { - this.navigator.startVisit(location2, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options); - } - visitStarted(visit2) { - this.location = visit2.location; - visit2.loadCachedSnapshot(); - visit2.issueRequest(); - visit2.goToSamePageAnchor(); - } - visitRequestStarted(visit2) { - this.progressBar.setValue(0); - if (visit2.hasCachedSnapshot() || visit2.action != "restore") { - this.showVisitProgressBarAfterDelay(); - } else { - this.showProgressBar(); - } - } - visitRequestCompleted(visit2) { - visit2.loadResponse(); - } - visitRequestFailedWithStatusCode(visit2, statusCode) { - switch (statusCode) { - case SystemStatusCode.networkFailure: - case SystemStatusCode.timeoutFailure: - case SystemStatusCode.contentTypeMismatch: - return this.reload({ - reason: "request_failed", - context: { - statusCode - } - }); - default: - return visit2.loadResponse(); - } - } - visitRequestFinished(_visit) { - this.progressBar.setValue(1); - this.hideVisitProgressBar(); - } - visitCompleted(_visit) { - } - pageInvalidated(reason) { - this.reload(reason); - } - visitFailed(_visit) { - } - visitRendered(_visit) { - } - formSubmissionStarted(_formSubmission) { - this.progressBar.setValue(0); - this.showFormProgressBarAfterDelay(); - } - formSubmissionFinished(_formSubmission) { - this.progressBar.setValue(1); - this.hideFormProgressBar(); - } - showVisitProgressBarAfterDelay() { - this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); - } - hideVisitProgressBar() { - this.progressBar.hide(); - if (this.visitProgressBarTimeout != null) { - window.clearTimeout(this.visitProgressBarTimeout); - delete this.visitProgressBarTimeout; - } - } - showFormProgressBarAfterDelay() { - if (this.formProgressBarTimeout == null) { - this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay); - } - } - hideFormProgressBar() { - this.progressBar.hide(); - if (this.formProgressBarTimeout != null) { - window.clearTimeout(this.formProgressBarTimeout); - delete this.formProgressBarTimeout; - } - } - reload(reason) { - var _a; - dispatch2("turbo:reload", { detail: reason }); - window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href; - } - get navigator() { - return this.session.navigator; - } - }; - var CacheObserver = class { - constructor() { - this.selector = "[data-turbo-temporary]"; - this.deprecatedSelector = "[data-turbo-cache=false]"; - this.started = false; - this.removeTemporaryElements = (_event) => { - for (const element of this.temporaryElements) { - element.remove(); - } - }; - } - start() { - if (!this.started) { - this.started = true; - addEventListener("turbo:before-cache", this.removeTemporaryElements, false); - } - } - stop() { - if (this.started) { - this.started = false; - removeEventListener("turbo:before-cache", this.removeTemporaryElements, false); - } - } - get temporaryElements() { - return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation]; - } - get temporaryElementsWithDeprecation() { - const elements = document.querySelectorAll(this.deprecatedSelector); - if (elements.length) { - console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`); - } - return [...elements]; - } - }; - var FrameRedirector = class { - constructor(session2, element) { - this.session = session2; - this.element = element; - this.linkInterceptor = new LinkInterceptor(this, element); - this.formSubmitObserver = new FormSubmitObserver(this, element); - } - start() { - this.linkInterceptor.start(); - this.formSubmitObserver.start(); - } - stop() { - this.linkInterceptor.stop(); - this.formSubmitObserver.stop(); - } - shouldInterceptLinkClick(element, _location, _event) { - return this.shouldRedirect(element); - } - linkClickIntercepted(element, url, event) { - const frame = this.findFrameElement(element); - if (frame) { - frame.delegate.linkClickIntercepted(element, url, event); - } - } - willSubmitForm(element, submitter) { - return element.closest("turbo-frame") == null && this.shouldSubmit(element, submitter) && this.shouldRedirect(element, submitter); - } - formSubmitted(element, submitter) { - const frame = this.findFrameElement(element, submitter); - if (frame) { - frame.delegate.formSubmitted(element, submitter); - } - } - shouldSubmit(form, submitter) { - var _a; - const action = getAction(form, submitter); - const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); - const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"); - return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation); - } - shouldRedirect(element, submitter) { - const isNavigatable = element instanceof HTMLFormElement ? this.session.submissionIsNavigatable(element, submitter) : this.session.elementIsNavigatable(element); - if (isNavigatable) { - const frame = this.findFrameElement(element, submitter); - return frame ? frame != element.closest("turbo-frame") : false; - } else { - return false; - } - } - findFrameElement(element, submitter) { - const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute("data-turbo-frame")) || element.getAttribute("data-turbo-frame"); - if (id && id != "_top") { - const frame = this.element.querySelector(`#${id}:not([disabled])`); - if (frame instanceof FrameElement) { - return frame; - } - } - } - }; - var History = class { - constructor(delegate) { - this.restorationIdentifier = uuid(); - this.restorationData = {}; - this.started = false; - this.pageLoaded = false; - this.onPopState = (event) => { - if (this.shouldHandlePopState()) { - const { turbo } = event.state || {}; - if (turbo) { - this.location = new URL(window.location.href); - const { restorationIdentifier } = turbo; - this.restorationIdentifier = restorationIdentifier; - this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier); - } - } - }; - this.onPageLoad = async (_event) => { - await nextMicrotask(); - this.pageLoaded = true; - }; - this.delegate = delegate; - } - start() { - if (!this.started) { - addEventListener("popstate", this.onPopState, false); - addEventListener("load", this.onPageLoad, false); - this.started = true; - this.replace(new URL(window.location.href)); - } - } - stop() { - if (this.started) { - removeEventListener("popstate", this.onPopState, false); - removeEventListener("load", this.onPageLoad, false); - this.started = false; - } - } - push(location2, restorationIdentifier) { - this.update(history.pushState, location2, restorationIdentifier); - } - replace(location2, restorationIdentifier) { - this.update(history.replaceState, location2, restorationIdentifier); - } - update(method, location2, restorationIdentifier = uuid()) { - const state = { turbo: { restorationIdentifier } }; - method.call(history, state, "", location2.href); - this.location = location2; - this.restorationIdentifier = restorationIdentifier; - } - getRestorationDataForIdentifier(restorationIdentifier) { - return this.restorationData[restorationIdentifier] || {}; - } - updateRestorationData(additionalData) { - const { restorationIdentifier } = this; - const restorationData = this.restorationData[restorationIdentifier]; - this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData); - } - assumeControlOfScrollRestoration() { - var _a; - if (!this.previousScrollRestoration) { - this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : "auto"; - history.scrollRestoration = "manual"; - } - } - relinquishControlOfScrollRestoration() { - if (this.previousScrollRestoration) { - history.scrollRestoration = this.previousScrollRestoration; - delete this.previousScrollRestoration; - } - } - shouldHandlePopState() { - return this.pageIsLoaded(); - } - pageIsLoaded() { - return this.pageLoaded || document.readyState == "complete"; - } - }; - var Navigator = class { - constructor(delegate) { - this.delegate = delegate; - } - proposeVisit(location2, options = {}) { - if (this.delegate.allowsVisitingLocationWithAction(location2, options.action)) { - if (locationIsVisitable(location2, this.view.snapshot.rootLocation)) { - this.delegate.visitProposedToLocation(location2, options); - } else { - window.location.href = location2.toString(); - } - } - } - startVisit(locatable, restorationIdentifier, options = {}) { - this.stop(); - this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options)); - this.currentVisit.start(); - } - submitForm(form, submitter) { - this.stop(); - this.formSubmission = new FormSubmission(this, form, submitter, true); - this.formSubmission.start(); - } - stop() { - if (this.formSubmission) { - this.formSubmission.stop(); - delete this.formSubmission; - } - if (this.currentVisit) { - this.currentVisit.cancel(); - delete this.currentVisit; - } - } - get adapter() { - return this.delegate.adapter; - } - get view() { - return this.delegate.view; - } - get history() { - return this.delegate.history; - } - formSubmissionStarted(formSubmission) { - if (typeof this.adapter.formSubmissionStarted === "function") { - this.adapter.formSubmissionStarted(formSubmission); - } - } - async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) { - if (formSubmission == this.formSubmission) { - const responseHTML = await fetchResponse.responseHTML; - if (responseHTML) { - const shouldCacheSnapshot = formSubmission.isSafe; - if (!shouldCacheSnapshot) { - this.view.clearSnapshotCache(); - } - const { statusCode, redirected } = fetchResponse; - const action = this.getActionForFormSubmission(formSubmission); - const visitOptions = { - action, - shouldCacheSnapshot, - response: { statusCode, responseHTML, redirected } - }; - this.proposeVisit(fetchResponse.location, visitOptions); - } - } - } - async formSubmissionFailedWithResponse(formSubmission, fetchResponse) { - const responseHTML = await fetchResponse.responseHTML; - if (responseHTML) { - const snapshot = PageSnapshot.fromHTMLString(responseHTML); - if (fetchResponse.serverError) { - await this.view.renderError(snapshot, this.currentVisit); - } else { - await this.view.renderPage(snapshot, false, true, this.currentVisit); - } - this.view.scrollToTop(); - this.view.clearSnapshotCache(); - } - } - formSubmissionErrored(formSubmission, error2) { - console.error(error2); - } - formSubmissionFinished(formSubmission) { - if (typeof this.adapter.formSubmissionFinished === "function") { - this.adapter.formSubmissionFinished(formSubmission); - } - } - visitStarted(visit2) { - this.delegate.visitStarted(visit2); - } - visitCompleted(visit2) { - this.delegate.visitCompleted(visit2); - } - locationWithActionIsSamePage(location2, action) { - const anchor = getAnchor(location2); - const currentAnchor = getAnchor(this.view.lastRenderedLocation); - const isRestorationToTop = action === "restore" && typeof anchor === "undefined"; - return action !== "replace" && getRequestURL(location2) === getRequestURL(this.view.lastRenderedLocation) && (isRestorationToTop || anchor != null && anchor !== currentAnchor); - } - visitScrolledToSamePageLocation(oldURL, newURL) { - this.delegate.visitScrolledToSamePageLocation(oldURL, newURL); - } - get location() { - return this.history.location; - } - get restorationIdentifier() { - return this.history.restorationIdentifier; - } - getActionForFormSubmission({ submitter, formElement }) { - return getVisitAction(submitter, formElement) || "advance"; - } - }; - var PageStage; - (function(PageStage2) { - PageStage2[PageStage2["initial"] = 0] = "initial"; - PageStage2[PageStage2["loading"] = 1] = "loading"; - PageStage2[PageStage2["interactive"] = 2] = "interactive"; - PageStage2[PageStage2["complete"] = 3] = "complete"; - })(PageStage || (PageStage = {})); - var PageObserver = class { - constructor(delegate) { - this.stage = PageStage.initial; - this.started = false; - this.interpretReadyState = () => { - const { readyState } = this; - if (readyState == "interactive") { - this.pageIsInteractive(); - } else if (readyState == "complete") { - this.pageIsComplete(); - } - }; - this.pageWillUnload = () => { - this.delegate.pageWillUnload(); - }; - this.delegate = delegate; - } - start() { - if (!this.started) { - if (this.stage == PageStage.initial) { - this.stage = PageStage.loading; - } - document.addEventListener("readystatechange", this.interpretReadyState, false); - addEventListener("pagehide", this.pageWillUnload, false); - this.started = true; - } - } - stop() { - if (this.started) { - document.removeEventListener("readystatechange", this.interpretReadyState, false); - removeEventListener("pagehide", this.pageWillUnload, false); - this.started = false; - } - } - pageIsInteractive() { - if (this.stage == PageStage.loading) { - this.stage = PageStage.interactive; - this.delegate.pageBecameInteractive(); - } - } - pageIsComplete() { - this.pageIsInteractive(); - if (this.stage == PageStage.interactive) { - this.stage = PageStage.complete; - this.delegate.pageLoaded(); - } - } - get readyState() { - return document.readyState; - } - }; - var ScrollObserver = class { - constructor(delegate) { - this.started = false; - this.onScroll = () => { - this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset }); - }; - this.delegate = delegate; - } - start() { - if (!this.started) { - addEventListener("scroll", this.onScroll, false); - this.onScroll(); - this.started = true; - } - } - stop() { - if (this.started) { - removeEventListener("scroll", this.onScroll, false); - this.started = false; - } - } - updatePosition(position) { - this.delegate.scrollPositionChanged(position); - } - }; - var StreamMessageRenderer = class { - render({ fragment }) { - Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment)); - } - enteringBardo(currentPermanentElement, newPermanentElement) { - newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true)); - } - leavingBardo() { - } - }; - function getPermanentElementMapForFragment(fragment) { - const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement); - const permanentElementMap = {}; - for (const permanentElementInDocument of permanentElementsInDocument) { - const { id } = permanentElementInDocument; - for (const streamElement of fragment.querySelectorAll("turbo-stream")) { - const elementInStream = getPermanentElementById(streamElement.templateElement.content, id); - if (elementInStream) { - permanentElementMap[id] = [permanentElementInDocument, elementInStream]; - } - } - } - return permanentElementMap; - } - var StreamObserver = class { - constructor(delegate) { - this.sources = /* @__PURE__ */ new Set(); - this.started = false; - this.inspectFetchResponse = (event) => { - const response = fetchResponseFromEvent(event); - if (response && fetchResponseIsStream(response)) { - event.preventDefault(); - this.receiveMessageResponse(response); - } - }; - this.receiveMessageEvent = (event) => { - if (this.started && typeof event.data == "string") { - this.receiveMessageHTML(event.data); - } - }; - this.delegate = delegate; - } - start() { - if (!this.started) { - this.started = true; - addEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); - } - } - stop() { - if (this.started) { - this.started = false; - removeEventListener("turbo:before-fetch-response", this.inspectFetchResponse, false); - } - } - connectStreamSource(source) { - if (!this.streamSourceIsConnected(source)) { - this.sources.add(source); - source.addEventListener("message", this.receiveMessageEvent, false); - } - } - disconnectStreamSource(source) { - if (this.streamSourceIsConnected(source)) { - this.sources.delete(source); - source.removeEventListener("message", this.receiveMessageEvent, false); - } - } - streamSourceIsConnected(source) { - return this.sources.has(source); - } - async receiveMessageResponse(response) { - const html = await response.responseHTML; - if (html) { - this.receiveMessageHTML(html); - } - } - receiveMessageHTML(html) { - this.delegate.receivedMessageFromStream(StreamMessage.wrap(html)); - } - }; - function fetchResponseFromEvent(event) { - var _a; - const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse; - if (fetchResponse instanceof FetchResponse) { - return fetchResponse; - } - } - function fetchResponseIsStream(response) { - var _a; - const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : ""; - return contentType.startsWith(StreamMessage.contentType); - } - var ErrorRenderer = class extends Renderer { - static renderElement(currentElement, newElement) { - const { documentElement, body } = document; - documentElement.replaceChild(newElement, body); - } - async render() { - this.replaceHeadAndBody(); - this.activateScriptElements(); - } - replaceHeadAndBody() { - const { documentElement, head } = document; - documentElement.replaceChild(this.newHead, head); - this.renderElement(this.currentElement, this.newElement); - } - activateScriptElements() { - for (const replaceableElement of this.scriptElements) { - const parentNode = replaceableElement.parentNode; - if (parentNode) { - const element = activateScriptElement(replaceableElement); - parentNode.replaceChild(element, replaceableElement); - } - } - } - get newHead() { - return this.newSnapshot.headSnapshot.element; - } - get scriptElements() { - return document.documentElement.querySelectorAll("script"); - } - }; - var PageRenderer = class extends Renderer { - static renderElement(currentElement, newElement) { - if (document.body && newElement instanceof HTMLBodyElement) { - document.body.replaceWith(newElement); - } else { - document.documentElement.appendChild(newElement); - } - } - get shouldRender() { - return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical; - } - get reloadReason() { - if (!this.newSnapshot.isVisitable) { - return { - reason: "turbo_visit_control_is_reload" - }; - } - if (!this.trackedElementsAreIdentical) { - return { - reason: "tracked_element_mismatch" - }; - } - } - async prepareToRender() { - await this.mergeHead(); - } - async render() { - if (this.willRender) { - await this.replaceBody(); - } - } - finishRendering() { - super.finishRendering(); - if (!this.isPreview) { - this.focusFirstAutofocusableElement(); - } - } - get currentHeadSnapshot() { - return this.currentSnapshot.headSnapshot; - } - get newHeadSnapshot() { - return this.newSnapshot.headSnapshot; - } - get newElement() { - return this.newSnapshot.element; - } - async mergeHead() { - const mergedHeadElements = this.mergeProvisionalElements(); - const newStylesheetElements = this.copyNewHeadStylesheetElements(); - this.copyNewHeadScriptElements(); - await mergedHeadElements; - await newStylesheetElements; - } - async replaceBody() { - await this.preservingPermanentElements(async () => { - this.activateNewBody(); - await this.assignNewBody(); - }); - } - get trackedElementsAreIdentical() { - return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature; - } - async copyNewHeadStylesheetElements() { - const loadingElements = []; - for (const element of this.newHeadStylesheetElements) { - loadingElements.push(waitForLoad(element)); - document.head.appendChild(element); - } - await Promise.all(loadingElements); - } - copyNewHeadScriptElements() { - for (const element of this.newHeadScriptElements) { - document.head.appendChild(activateScriptElement(element)); - } - } - async mergeProvisionalElements() { - const newHeadElements = [...this.newHeadProvisionalElements]; - for (const element of this.currentHeadProvisionalElements) { - if (!this.isCurrentElementInElementList(element, newHeadElements)) { - document.head.removeChild(element); - } - } - for (const element of newHeadElements) { - document.head.appendChild(element); - } - } - isCurrentElementInElementList(element, elementList) { - for (const [index, newElement] of elementList.entries()) { - if (element.tagName == "TITLE") { - if (newElement.tagName != "TITLE") { - continue; - } - if (element.innerHTML == newElement.innerHTML) { - elementList.splice(index, 1); - return true; - } - } - if (newElement.isEqualNode(element)) { - elementList.splice(index, 1); - return true; - } - } - return false; - } - removeCurrentHeadProvisionalElements() { - for (const element of this.currentHeadProvisionalElements) { - document.head.removeChild(element); - } - } - copyNewHeadProvisionalElements() { - for (const element of this.newHeadProvisionalElements) { - document.head.appendChild(element); - } - } - activateNewBody() { - document.adoptNode(this.newElement); - this.activateNewBodyScriptElements(); - } - activateNewBodyScriptElements() { - for (const inertScriptElement of this.newBodyScriptElements) { - const activatedScriptElement = activateScriptElement(inertScriptElement); - inertScriptElement.replaceWith(activatedScriptElement); - } - } - async assignNewBody() { - await this.renderElement(this.currentElement, this.newElement); - } - get newHeadStylesheetElements() { - return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot); - } - get newHeadScriptElements() { - return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot); - } - get currentHeadProvisionalElements() { - return this.currentHeadSnapshot.provisionalElements; - } - get newHeadProvisionalElements() { - return this.newHeadSnapshot.provisionalElements; - } - get newBodyScriptElements() { - return this.newElement.querySelectorAll("script"); - } - }; - var SnapshotCache = class { - constructor(size2) { - this.keys = []; - this.snapshots = {}; - this.size = size2; - } - has(location2) { - return toCacheKey(location2) in this.snapshots; - } - get(location2) { - if (this.has(location2)) { - const snapshot = this.read(location2); - this.touch(location2); - return snapshot; - } - } - put(location2, snapshot) { - this.write(location2, snapshot); - this.touch(location2); - return snapshot; - } - clear() { - this.snapshots = {}; - } - read(location2) { - return this.snapshots[toCacheKey(location2)]; - } - write(location2, snapshot) { - this.snapshots[toCacheKey(location2)] = snapshot; - } - touch(location2) { - const key = toCacheKey(location2); - const index = this.keys.indexOf(key); - if (index > -1) - this.keys.splice(index, 1); - this.keys.unshift(key); - this.trim(); - } - trim() { - for (const key of this.keys.splice(this.size)) { - delete this.snapshots[key]; - } - } - }; - var PageView = class extends View { - constructor() { - super(...arguments); - this.snapshotCache = new SnapshotCache(10); - this.lastRenderedLocation = new URL(location.href); - this.forceReloaded = false; - } - renderPage(snapshot, isPreview = false, willRender = true, visit2) { - const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender); - if (!renderer.shouldRender) { - this.forceReloaded = true; - } else { - visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); - } - return this.render(renderer); - } - renderError(snapshot, visit2) { - visit2 === null || visit2 === void 0 ? void 0 : visit2.changeHistory(); - const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false); - return this.render(renderer); - } - clearSnapshotCache() { - this.snapshotCache.clear(); - } - async cacheSnapshot(snapshot = this.snapshot) { - if (snapshot.isCacheable) { - this.delegate.viewWillCacheSnapshot(); - const { lastRenderedLocation: location2 } = this; - await nextEventLoopTick(); - const cachedSnapshot = snapshot.clone(); - this.snapshotCache.put(location2, cachedSnapshot); - return cachedSnapshot; - } - } - getCachedSnapshotForLocation(location2) { - return this.snapshotCache.get(location2); - } - get snapshot() { - return PageSnapshot.fromElement(this.element); - } - }; - var Preloader = class { - constructor(delegate) { - this.selector = "a[data-turbo-preload]"; - this.delegate = delegate; - } - get snapshotCache() { - return this.delegate.navigator.view.snapshotCache; - } - start() { - if (document.readyState === "loading") { - return document.addEventListener("DOMContentLoaded", () => { - this.preloadOnLoadLinksForView(document.body); - }); - } else { - this.preloadOnLoadLinksForView(document.body); - } - } - preloadOnLoadLinksForView(element) { - for (const link of element.querySelectorAll(this.selector)) { - this.preloadURL(link); - } - } - async preloadURL(link) { - const location2 = new URL(link.href); - if (this.snapshotCache.has(location2)) { - return; - } - try { - const response = await fetch(location2.toString(), { headers: { "VND.PREFETCH": "true", Accept: "text/html" } }); - const responseText = await response.text(); - const snapshot = PageSnapshot.fromHTMLString(responseText); - this.snapshotCache.put(location2, snapshot); - } catch (_2) { - } - } - }; - var Session = class { - constructor() { - this.navigator = new Navigator(this); - this.history = new History(this); - this.preloader = new Preloader(this); - this.view = new PageView(this, document.documentElement); - this.adapter = new BrowserAdapter(this); - this.pageObserver = new PageObserver(this); - this.cacheObserver = new CacheObserver(); - this.linkClickObserver = new LinkClickObserver(this, window); - this.formSubmitObserver = new FormSubmitObserver(this, document); - this.scrollObserver = new ScrollObserver(this); - this.streamObserver = new StreamObserver(this); - this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement); - this.frameRedirector = new FrameRedirector(this, document.documentElement); - this.streamMessageRenderer = new StreamMessageRenderer(); - this.drive = true; - this.enabled = true; - this.progressBarDelay = 500; - this.started = false; - this.formMode = "on"; - } - start() { - if (!this.started) { - this.pageObserver.start(); - this.cacheObserver.start(); - this.formLinkClickObserver.start(); - this.linkClickObserver.start(); - this.formSubmitObserver.start(); - this.scrollObserver.start(); - this.streamObserver.start(); - this.frameRedirector.start(); - this.history.start(); - this.preloader.start(); - this.started = true; - this.enabled = true; - } - } - disable() { - this.enabled = false; - } - stop() { - if (this.started) { - this.pageObserver.stop(); - this.cacheObserver.stop(); - this.formLinkClickObserver.stop(); - this.linkClickObserver.stop(); - this.formSubmitObserver.stop(); - this.scrollObserver.stop(); - this.streamObserver.stop(); - this.frameRedirector.stop(); - this.history.stop(); - this.started = false; - } - } - registerAdapter(adapter) { - this.adapter = adapter; - } - visit(location2, options = {}) { - const frameElement = options.frame ? document.getElementById(options.frame) : null; - if (frameElement instanceof FrameElement) { - frameElement.src = location2.toString(); - frameElement.loaded; - } else { - this.navigator.proposeVisit(expandURL(location2), options); - } - } - connectStreamSource(source) { - this.streamObserver.connectStreamSource(source); - } - disconnectStreamSource(source) { - this.streamObserver.disconnectStreamSource(source); - } - renderStreamMessage(message) { - this.streamMessageRenderer.render(StreamMessage.wrap(message)); - } - clearCache() { - this.view.clearSnapshotCache(); - } - setProgressBarDelay(delay3) { - this.progressBarDelay = delay3; - } - setFormMode(mode) { - this.formMode = mode; - } - get location() { - return this.history.location; - } - get restorationIdentifier() { - return this.history.restorationIdentifier; - } - historyPoppedToLocationWithRestorationIdentifier(location2, restorationIdentifier) { - if (this.enabled) { - this.navigator.startVisit(location2, restorationIdentifier, { - action: "restore", - historyChanged: true - }); - } else { - this.adapter.pageInvalidated({ - reason: "turbo_disabled" - }); - } - } - scrollPositionChanged(position) { - this.history.updateRestorationData({ scrollPosition: position }); - } - willSubmitFormLinkToLocation(link, location2) { - return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation); - } - submittedFormLinkToLocation() { - } - willFollowLinkToLocation(link, location2, event) { - return this.elementIsNavigatable(link) && locationIsVisitable(location2, this.snapshot.rootLocation) && this.applicationAllowsFollowingLinkToLocation(link, location2, event); - } - followedLinkToLocation(link, location2) { - const action = this.getActionForLink(link); - const acceptsStreamResponse = link.hasAttribute("data-turbo-stream"); - this.visit(location2.href, { action, acceptsStreamResponse }); - } - allowsVisitingLocationWithAction(location2, action) { - return this.locationWithActionIsSamePage(location2, action) || this.applicationAllowsVisitingLocation(location2); - } - visitProposedToLocation(location2, options) { - extendURLWithDeprecatedProperties(location2); - this.adapter.visitProposedToLocation(location2, options); - } - visitStarted(visit2) { - if (!visit2.acceptsStreamResponse) { - markAsBusy(document.documentElement); - } - extendURLWithDeprecatedProperties(visit2.location); - if (!visit2.silent) { - this.notifyApplicationAfterVisitingLocation(visit2.location, visit2.action); - } - } - visitCompleted(visit2) { - clearBusyState(document.documentElement); - this.notifyApplicationAfterPageLoad(visit2.getTimingMetrics()); - } - locationWithActionIsSamePage(location2, action) { - return this.navigator.locationWithActionIsSamePage(location2, action); - } - visitScrolledToSamePageLocation(oldURL, newURL) { - this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL); - } - willSubmitForm(form, submitter) { - const action = getAction(form, submitter); - return this.submissionIsNavigatable(form, submitter) && locationIsVisitable(expandURL(action), this.snapshot.rootLocation); - } - formSubmitted(form, submitter) { - this.navigator.submitForm(form, submitter); - } - pageBecameInteractive() { - this.view.lastRenderedLocation = this.location; - this.notifyApplicationAfterPageLoad(); - } - pageLoaded() { - this.history.assumeControlOfScrollRestoration(); - } - pageWillUnload() { - this.history.relinquishControlOfScrollRestoration(); - } - receivedMessageFromStream(message) { - this.renderStreamMessage(message); - } - viewWillCacheSnapshot() { - var _a; - if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) { - this.notifyApplicationBeforeCachingSnapshot(); - } - } - allowsImmediateRender({ element }, options) { - const event = this.notifyApplicationBeforeRender(element, options); - const { defaultPrevented, detail: { render: render2 } } = event; - if (this.view.renderer && render2) { - this.view.renderer.renderElement = render2; - } - return !defaultPrevented; - } - viewRenderedSnapshot(_snapshot, _isPreview) { - this.view.lastRenderedLocation = this.history.location; - this.notifyApplicationAfterRender(); - } - preloadOnLoadLinksForView(element) { - this.preloader.preloadOnLoadLinksForView(element); - } - viewInvalidated(reason) { - this.adapter.pageInvalidated(reason); - } - frameLoaded(frame) { - this.notifyApplicationAfterFrameLoad(frame); - } - frameRendered(fetchResponse, frame) { - this.notifyApplicationAfterFrameRender(fetchResponse, frame); - } - applicationAllowsFollowingLinkToLocation(link, location2, ev) { - const event = this.notifyApplicationAfterClickingLinkToLocation(link, location2, ev); - return !event.defaultPrevented; - } - applicationAllowsVisitingLocation(location2) { - const event = this.notifyApplicationBeforeVisitingLocation(location2); - return !event.defaultPrevented; - } - notifyApplicationAfterClickingLinkToLocation(link, location2, event) { - return dispatch2("turbo:click", { - target: link, - detail: { url: location2.href, originalEvent: event }, - cancelable: true - }); - } - notifyApplicationBeforeVisitingLocation(location2) { - return dispatch2("turbo:before-visit", { - detail: { url: location2.href }, - cancelable: true - }); - } - notifyApplicationAfterVisitingLocation(location2, action) { - return dispatch2("turbo:visit", { detail: { url: location2.href, action } }); - } - notifyApplicationBeforeCachingSnapshot() { - return dispatch2("turbo:before-cache"); - } - notifyApplicationBeforeRender(newBody, options) { - return dispatch2("turbo:before-render", { - detail: Object.assign({ newBody }, options), - cancelable: true - }); - } - notifyApplicationAfterRender() { - return dispatch2("turbo:render"); - } - notifyApplicationAfterPageLoad(timing = {}) { - return dispatch2("turbo:load", { - detail: { url: this.location.href, timing } - }); - } - notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) { - dispatchEvent(new HashChangeEvent("hashchange", { - oldURL: oldURL.toString(), - newURL: newURL.toString() - })); - } - notifyApplicationAfterFrameLoad(frame) { - return dispatch2("turbo:frame-load", { target: frame }); - } - notifyApplicationAfterFrameRender(fetchResponse, frame) { - return dispatch2("turbo:frame-render", { - detail: { fetchResponse }, - target: frame, - cancelable: true - }); - } - submissionIsNavigatable(form, submitter) { - if (this.formMode == "off") { - return false; - } else { - const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true; - if (this.formMode == "optin") { - return submitterIsNavigatable && form.closest('[data-turbo="true"]') != null; - } else { - return submitterIsNavigatable && this.elementIsNavigatable(form); - } - } - } - elementIsNavigatable(element) { - const container = findClosestRecursively(element, "[data-turbo]"); - const withinFrame = findClosestRecursively(element, "turbo-frame"); - if (this.drive || withinFrame) { - if (container) { - return container.getAttribute("data-turbo") != "false"; - } else { - return true; - } - } else { - if (container) { - return container.getAttribute("data-turbo") == "true"; - } else { - return false; - } - } - } - getActionForLink(link) { - return getVisitAction(link) || "advance"; - } - get snapshot() { - return this.view.snapshot; - } - }; - function extendURLWithDeprecatedProperties(url) { - Object.defineProperties(url, deprecatedLocationPropertyDescriptors); - } - var deprecatedLocationPropertyDescriptors = { - absoluteURL: { - get() { - return this.toString(); - } - } - }; - var Cache = class { - constructor(session2) { - this.session = session2; - } - clear() { - this.session.clearCache(); - } - resetCacheControl() { - this.setCacheControl(""); - } - exemptPageFromCache() { - this.setCacheControl("no-cache"); - } - exemptPageFromPreview() { - this.setCacheControl("no-preview"); - } - setCacheControl(value) { - setMetaContent("turbo-cache-control", value); - } - }; - var StreamActions = { - after() { - this.targetElements.forEach((e2) => { - var _a; - return (_a = e2.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e2.nextSibling); - }); - }, - append() { - this.removeDuplicateTargetChildren(); - this.targetElements.forEach((e2) => e2.append(this.templateContent)); - }, - before() { - this.targetElements.forEach((e2) => { - var _a; - return (_a = e2.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e2); - }); - }, - prepend() { - this.removeDuplicateTargetChildren(); - this.targetElements.forEach((e2) => e2.prepend(this.templateContent)); - }, - remove() { - this.targetElements.forEach((e2) => e2.remove()); - }, - replace() { - this.targetElements.forEach((e2) => e2.replaceWith(this.templateContent)); - }, - update() { - this.targetElements.forEach((targetElement) => { - targetElement.innerHTML = ""; - targetElement.append(this.templateContent); - }); - } - }; - var session = new Session(); - var cache = new Cache(session); - var { navigator: navigator$1 } = session; - function start() { - session.start(); - } - function registerAdapter(adapter) { - session.registerAdapter(adapter); - } - function visit(location2, options) { - session.visit(location2, options); - } - function connectStreamSource(source) { - session.connectStreamSource(source); - } - function disconnectStreamSource(source) { - session.disconnectStreamSource(source); - } - function renderStreamMessage(message) { - session.renderStreamMessage(message); - } - function clearCache() { - console.warn("Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`"); - session.clearCache(); - } - function setProgressBarDelay(delay3) { - session.setProgressBarDelay(delay3); - } - function setConfirmMethod(confirmMethod) { - FormSubmission.confirmMethod = confirmMethod; - } - function setFormMode(mode) { - session.setFormMode(mode); - } - var Turbo = /* @__PURE__ */ Object.freeze({ - __proto__: null, - navigator: navigator$1, - session, - cache, - PageRenderer, - PageSnapshot, - FrameRenderer, - start, - registerAdapter, - visit, - connectStreamSource, - disconnectStreamSource, - renderStreamMessage, - clearCache, - setProgressBarDelay, - setConfirmMethod, - setFormMode, - StreamActions - }); - var TurboFrameMissingError = class extends Error { - }; - var FrameController = class { - constructor(element) { - this.fetchResponseLoaded = (_fetchResponse) => { - }; - this.currentFetchRequest = null; - this.resolveVisitPromise = () => { - }; - this.connected = false; - this.hasBeenLoaded = false; - this.ignoredAttributes = /* @__PURE__ */ new Set(); - this.action = null; - this.visitCachedSnapshot = ({ element: element2 }) => { - const frame = element2.querySelector("#" + this.element.id); - if (frame && this.previousFrameElement) { - frame.replaceChildren(...this.previousFrameElement.children); - } - delete this.previousFrameElement; - }; - this.element = element; - this.view = new FrameView(this, this.element); - this.appearanceObserver = new AppearanceObserver(this, this.element); - this.formLinkClickObserver = new FormLinkClickObserver(this, this.element); - this.linkInterceptor = new LinkInterceptor(this, this.element); - this.restorationIdentifier = uuid(); - this.formSubmitObserver = new FormSubmitObserver(this, this.element); - } - connect() { - if (!this.connected) { - this.connected = true; - if (this.loadingStyle == FrameLoadingStyle.lazy) { - this.appearanceObserver.start(); - } else { - this.loadSourceURL(); - } - this.formLinkClickObserver.start(); - this.linkInterceptor.start(); - this.formSubmitObserver.start(); - } - } - disconnect() { - if (this.connected) { - this.connected = false; - this.appearanceObserver.stop(); - this.formLinkClickObserver.stop(); - this.linkInterceptor.stop(); - this.formSubmitObserver.stop(); - } - } - disabledChanged() { - if (this.loadingStyle == FrameLoadingStyle.eager) { - this.loadSourceURL(); - } - } - sourceURLChanged() { - if (this.isIgnoringChangesTo("src")) - return; - if (this.element.isConnected) { - this.complete = false; - } - if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) { - this.loadSourceURL(); - } - } - sourceURLReloaded() { - const { src } = this.element; - this.ignoringChangesToAttribute("complete", () => { - this.element.removeAttribute("complete"); - }); - this.element.src = null; - this.element.src = src; - return this.element.loaded; - } - completeChanged() { - if (this.isIgnoringChangesTo("complete")) - return; - this.loadSourceURL(); - } - loadingStyleChanged() { - if (this.loadingStyle == FrameLoadingStyle.lazy) { - this.appearanceObserver.start(); - } else { - this.appearanceObserver.stop(); - this.loadSourceURL(); - } - } - async loadSourceURL() { - if (this.enabled && this.isActive && !this.complete && this.sourceURL) { - this.element.loaded = this.visit(expandURL(this.sourceURL)); - this.appearanceObserver.stop(); - await this.element.loaded; - this.hasBeenLoaded = true; - } - } - async loadResponse(fetchResponse) { - if (fetchResponse.redirected || fetchResponse.succeeded && fetchResponse.isHTML) { - this.sourceURL = fetchResponse.response.url; - } - try { - const html = await fetchResponse.responseHTML; - if (html) { - const document2 = parseHTMLDocument(html); - const pageSnapshot = PageSnapshot.fromDocument(document2); - if (pageSnapshot.isVisitable) { - await this.loadFrameResponse(fetchResponse, document2); - } else { - await this.handleUnvisitableFrameResponse(fetchResponse); - } - } - } finally { - this.fetchResponseLoaded = () => { - }; - } - } - elementAppearedInViewport(element) { - this.proposeVisitIfNavigatedWithAction(element, element); - this.loadSourceURL(); - } - willSubmitFormLinkToLocation(link) { - return this.shouldInterceptNavigation(link); - } - submittedFormLinkToLocation(link, _location, form) { - const frame = this.findFrameElement(link); - if (frame) - form.setAttribute("data-turbo-frame", frame.id); - } - shouldInterceptLinkClick(element, _location, _event) { - return this.shouldInterceptNavigation(element); - } - linkClickIntercepted(element, location2) { - this.navigateFrame(element, location2); - } - willSubmitForm(element, submitter) { - return element.closest("turbo-frame") == this.element && this.shouldInterceptNavigation(element, submitter); - } - formSubmitted(element, submitter) { - if (this.formSubmission) { - this.formSubmission.stop(); - } - this.formSubmission = new FormSubmission(this, element, submitter); - const { fetchRequest } = this.formSubmission; - this.prepareRequest(fetchRequest); - this.formSubmission.start(); - } - prepareRequest(request) { - var _a; - request.headers["Turbo-Frame"] = this.id; - if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute("data-turbo-stream")) { - request.acceptResponseType(StreamMessage.contentType); - } - } - requestStarted(_request) { - markAsBusy(this.element); - } - requestPreventedHandlingResponse(_request, _response) { - this.resolveVisitPromise(); - } - async requestSucceededWithResponse(request, response) { - await this.loadResponse(response); - this.resolveVisitPromise(); - } - async requestFailedWithResponse(request, response) { - await this.loadResponse(response); - this.resolveVisitPromise(); - } - requestErrored(request, error2) { - console.error(error2); - this.resolveVisitPromise(); - } - requestFinished(_request) { - clearBusyState(this.element); - } - formSubmissionStarted({ formElement }) { - markAsBusy(formElement, this.findFrameElement(formElement)); - } - formSubmissionSucceededWithResponse(formSubmission, response) { - const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter); - frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter); - frame.delegate.loadResponse(response); - if (!formSubmission.isSafe) { - session.clearCache(); - } - } - formSubmissionFailedWithResponse(formSubmission, fetchResponse) { - this.element.delegate.loadResponse(fetchResponse); - session.clearCache(); - } - formSubmissionErrored(formSubmission, error2) { - console.error(error2); - } - formSubmissionFinished({ formElement }) { - clearBusyState(formElement, this.findFrameElement(formElement)); - } - allowsImmediateRender({ element: newFrame }, options) { - const event = dispatch2("turbo:before-frame-render", { - target: this.element, - detail: Object.assign({ newFrame }, options), - cancelable: true - }); - const { defaultPrevented, detail: { render: render2 } } = event; - if (this.view.renderer && render2) { - this.view.renderer.renderElement = render2; - } - return !defaultPrevented; - } - viewRenderedSnapshot(_snapshot, _isPreview) { - } - preloadOnLoadLinksForView(element) { - session.preloadOnLoadLinksForView(element); - } - viewInvalidated() { - } - willRenderFrame(currentElement, _newElement) { - this.previousFrameElement = currentElement.cloneNode(true); - } - async loadFrameResponse(fetchResponse, document2) { - const newFrameElement = await this.extractForeignFrameElement(document2.body); - if (newFrameElement) { - const snapshot = new Snapshot(newFrameElement); - const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false); - if (this.view.renderPromise) - await this.view.renderPromise; - this.changeHistory(); - await this.view.render(renderer); - this.complete = true; - session.frameRendered(fetchResponse, this.element); - session.frameLoaded(this.element); - this.fetchResponseLoaded(fetchResponse); - } else if (this.willHandleFrameMissingFromResponse(fetchResponse)) { - this.handleFrameMissingFromResponse(fetchResponse); - } - } - async visit(url) { - var _a; - const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element); - (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel(); - this.currentFetchRequest = request; - return new Promise((resolve) => { - this.resolveVisitPromise = () => { - this.resolveVisitPromise = () => { - }; - this.currentFetchRequest = null; - resolve(); - }; - request.perform(); - }); - } - navigateFrame(element, url, submitter) { - const frame = this.findFrameElement(element, submitter); - frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter); - this.withCurrentNavigationElement(element, () => { - frame.src = url; - }); - } - proposeVisitIfNavigatedWithAction(frame, element, submitter) { - this.action = getVisitAction(submitter, element, frame); - if (this.action) { - const pageSnapshot = PageSnapshot.fromElement(frame).clone(); - const { visitCachedSnapshot } = frame.delegate; - frame.delegate.fetchResponseLoaded = (fetchResponse) => { - if (frame.src) { - const { statusCode, redirected } = fetchResponse; - const responseHTML = frame.ownerDocument.documentElement.outerHTML; - const response = { statusCode, redirected, responseHTML }; - const options = { - response, - visitCachedSnapshot, - willRender: false, - updateHistory: false, - restorationIdentifier: this.restorationIdentifier, - snapshot: pageSnapshot - }; - if (this.action) - options.action = this.action; - session.visit(frame.src, options); - } - }; - } - } - changeHistory() { - if (this.action) { - const method = getHistoryMethodForAction(this.action); - session.history.update(method, expandURL(this.element.src || ""), this.restorationIdentifier); - } - } - async handleUnvisitableFrameResponse(fetchResponse) { - console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id="${this.element.id}"> is performing a full page visit due to turbo-visit-control.`); - await this.visitResponse(fetchResponse.response); - } - willHandleFrameMissingFromResponse(fetchResponse) { - this.element.setAttribute("complete", ""); - const response = fetchResponse.response; - const visit2 = async (url, options = {}) => { - if (url instanceof Response) { - this.visitResponse(url); - } else { - session.visit(url, options); - } - }; - const event = dispatch2("turbo:frame-missing", { - target: this.element, - detail: { response, visit: visit2 }, - cancelable: true - }); - return !event.defaultPrevented; - } - handleFrameMissingFromResponse(fetchResponse) { - this.view.missing(); - this.throwFrameMissingError(fetchResponse); - } - throwFrameMissingError(fetchResponse) { - 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.`; - throw new TurboFrameMissingError(message); - } - async visitResponse(response) { - const wrapped = new FetchResponse(response); - const responseHTML = await wrapped.responseHTML; - const { location: location2, redirected, statusCode } = wrapped; - return session.visit(location2, { response: { redirected, statusCode, responseHTML } }); - } - findFrameElement(element, submitter) { - var _a; - const id = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); - return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element; - } - async extractForeignFrameElement(container) { - let element; - const id = CSS.escape(this.id); - try { - element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL); - if (element) { - return element; - } - element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL); - if (element) { - await element.loaded; - return await this.extractForeignFrameElement(element); - } - } catch (error2) { - console.error(error2); - return new FrameElement(); - } - return null; - } - formActionIsVisitable(form, submitter) { - const action = getAction(form, submitter); - return locationIsVisitable(expandURL(action), this.rootLocation); - } - shouldInterceptNavigation(element, submitter) { - const id = getAttribute("data-turbo-frame", submitter, element) || this.element.getAttribute("target"); - if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) { - return false; - } - if (!this.enabled || id == "_top") { - return false; - } - if (id) { - const frameElement = getFrameElementById(id); - if (frameElement) { - return !frameElement.disabled; - } - } - if (!session.elementIsNavigatable(element)) { - return false; - } - if (submitter && !session.elementIsNavigatable(submitter)) { - return false; - } - return true; - } - get id() { - return this.element.id; - } - get enabled() { - return !this.element.disabled; - } - get sourceURL() { - if (this.element.src) { - return this.element.src; - } - } - set sourceURL(sourceURL) { - this.ignoringChangesToAttribute("src", () => { - this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null; - }); - } - get loadingStyle() { - return this.element.loading; - } - get isLoading() { - return this.formSubmission !== void 0 || this.resolveVisitPromise() !== void 0; - } - get complete() { - return this.element.hasAttribute("complete"); - } - set complete(value) { - this.ignoringChangesToAttribute("complete", () => { - if (value) { - this.element.setAttribute("complete", ""); - } else { - this.element.removeAttribute("complete"); - } - }); - } - get isActive() { - return this.element.isActive && this.connected; - } - get rootLocation() { - var _a; - const meta = this.element.ownerDocument.querySelector(`meta[name="turbo-root"]`); - const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : "/"; - return expandURL(root); - } - isIgnoringChangesTo(attributeName) { - return this.ignoredAttributes.has(attributeName); - } - ignoringChangesToAttribute(attributeName, callback) { - this.ignoredAttributes.add(attributeName); - callback(); - this.ignoredAttributes.delete(attributeName); - } - withCurrentNavigationElement(element, callback) { - this.currentNavigationElement = element; - callback(); - delete this.currentNavigationElement; - } - }; - function getFrameElementById(id) { - if (id != null) { - const element = document.getElementById(id); - if (element instanceof FrameElement) { - return element; - } - } - } - function activateElement(element, currentURL) { - if (element) { - const src = element.getAttribute("src"); - if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) { - throw new Error(`Matching <turbo-frame id="${element.id}"> element has a source URL which references itself`); - } - if (element.ownerDocument !== document) { - element = document.importNode(element, true); - } - if (element instanceof FrameElement) { - element.connectedCallback(); - element.disconnectedCallback(); - return element; - } - } - } - var StreamElement = class extends HTMLElement { - static async renderElement(newElement) { - await newElement.performAction(); - } - async connectedCallback() { - try { - await this.render(); - } catch (error2) { - console.error(error2); - } finally { - this.disconnect(); - } - } - async render() { - var _a; - return (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = (async () => { - const event = this.beforeRenderEvent; - if (this.dispatchEvent(event)) { - await nextAnimationFrame(); - await event.detail.render(this); - } - })(); - } - disconnect() { - try { - this.remove(); - } catch (_a) { - } - } - removeDuplicateTargetChildren() { - this.duplicateChildren.forEach((c2) => c2.remove()); - } - get duplicateChildren() { - var _a; - const existingChildren = this.targetElements.flatMap((e2) => [...e2.children]).filter((c2) => !!c2.id); - const newChildrenIds = [...((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || []].filter((c2) => !!c2.id).map((c2) => c2.id); - return existingChildren.filter((c2) => newChildrenIds.includes(c2.id)); - } - get performAction() { - if (this.action) { - const actionFunction = StreamActions[this.action]; - if (actionFunction) { - return actionFunction; - } - this.raise("unknown action"); - } - this.raise("action attribute is missing"); - } - get targetElements() { - if (this.target) { - return this.targetElementsById; - } else if (this.targets) { - return this.targetElementsByQuery; - } else { - this.raise("target or targets attribute is missing"); - } - } - get templateContent() { - return this.templateElement.content.cloneNode(true); - } - get templateElement() { - if (this.firstElementChild === null) { - const template = this.ownerDocument.createElement("template"); - this.appendChild(template); - return template; - } else if (this.firstElementChild instanceof HTMLTemplateElement) { - return this.firstElementChild; - } - this.raise("first child element must be a <template> element"); - } - get action() { - return this.getAttribute("action"); - } - get target() { - return this.getAttribute("target"); - } - get targets() { - return this.getAttribute("targets"); - } - raise(message) { - throw new Error(`${this.description}: ${message}`); - } - get description() { - var _a, _b; - return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : "<turbo-stream>"; - } - get beforeRenderEvent() { - return new CustomEvent("turbo:before-stream-render", { - bubbles: true, - cancelable: true, - detail: { newStream: this, render: StreamElement.renderElement } - }); - } - get targetElementsById() { - var _a; - const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target); - if (element !== null) { - return [element]; - } else { - return []; - } - } - get targetElementsByQuery() { - var _a; - const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets); - if (elements.length !== 0) { - return Array.prototype.slice.call(elements); - } else { - return []; - } - } - }; - var StreamSourceElement = class extends HTMLElement { - constructor() { - super(...arguments); - this.streamSource = null; - } - connectedCallback() { - this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src); - connectStreamSource(this.streamSource); - } - disconnectedCallback() { - if (this.streamSource) { - disconnectStreamSource(this.streamSource); - } - } - get src() { - return this.getAttribute("src") || ""; - } - }; - FrameElement.delegateConstructor = FrameController; - if (customElements.get("turbo-frame") === void 0) { - customElements.define("turbo-frame", FrameElement); - } - if (customElements.get("turbo-stream") === void 0) { - customElements.define("turbo-stream", StreamElement); - } - if (customElements.get("turbo-stream-source") === void 0) { - customElements.define("turbo-stream-source", StreamSourceElement); - } - (() => { - let element = document.currentScript; - if (!element) - return; - if (element.hasAttribute("data-turbo-suppress-warning")) - return; - element = element.parentElement; - while (element) { - if (element == document.body) { - return console.warn(unindent` - You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do! - - Load your application’s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change. - - For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements - - —— - Suppress this warning by adding a "data-turbo-suppress-warning" attribute to: %s - `, element.outerHTML); - } - element = element.parentElement; - } - })(); - window.Turbo = Turbo; - start(); - - // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js - var consumer; - async function getConsumer() { - return consumer || setConsumer(createConsumer2().then(setConsumer)); - } - function setConsumer(newConsumer) { - return consumer = newConsumer; - } - async function createConsumer2() { - const { createConsumer: createConsumer3 } = await Promise.resolve().then(() => (init_src(), src_exports)); - return createConsumer3(); - } - async function subscribeTo(channel, mixin) { - const { subscriptions } = await getConsumer(); - return subscriptions.create(channel, mixin); - } - - // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js - function walk(obj) { - if (!obj || typeof obj !== "object") - return obj; - if (obj instanceof Date || obj instanceof RegExp) - return obj; - if (Array.isArray(obj)) - return obj.map(walk); - return Object.keys(obj).reduce(function(acc, key) { - var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function(m2, x2) { - return "_" + x2.toLowerCase(); - }); - acc[camel] = walk(obj[key]); - return acc; - }, {}); - } - - // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js - var TurboCableStreamSourceElement = class extends HTMLElement { - async connectedCallback() { - connectStreamSource(this); - this.subscription = await subscribeTo(this.channel, { - received: this.dispatchMessageEvent.bind(this), - connected: this.subscriptionConnected.bind(this), - disconnected: this.subscriptionDisconnected.bind(this) - }); - } - disconnectedCallback() { - disconnectStreamSource(this); - if (this.subscription) - this.subscription.unsubscribe(); - } - dispatchMessageEvent(data2) { - const event = new MessageEvent("message", { data: data2 }); - return this.dispatchEvent(event); - } - subscriptionConnected() { - this.setAttribute("connected", ""); - } - subscriptionDisconnected() { - this.removeAttribute("connected"); - } - get channel() { - const channel = this.getAttribute("channel"); - const signed_stream_name = this.getAttribute("signed-stream-name"); - return __spreadValues({ channel, signed_stream_name }, walk(__spreadValues({}, this.dataset))); - } - }; - if (customElements.get("turbo-cable-stream-source") === void 0) { - customElements.define("turbo-cable-stream-source", TurboCableStreamSourceElement); - } - - // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js - function encodeMethodIntoRequestBody(event) { - if (event.target instanceof HTMLFormElement) { - const { target: form, detail: { fetchOptions } } = event; - form.addEventListener("turbo:submit-start", ({ detail: { formSubmission: { submitter } } }) => { - const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams(); - const method = determineFetchMethod(submitter, body, form); - if (!/get/i.test(method)) { - if (/post/i.test(method)) { - body.delete("_method"); - } else { - body.set("_method", method); - } - fetchOptions.method = "post"; - } - }, { once: true }); - } - } - function determineFetchMethod(submitter, body, form) { - const formMethod = determineFormMethod(submitter); - const overrideMethod = body.get("_method"); - const method = form.getAttribute("method") || "get"; - if (typeof formMethod == "string") { - return formMethod; - } else if (typeof overrideMethod == "string") { - return overrideMethod; - } else { - return method; - } - } - function determineFormMethod(submitter) { - if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) { - if (submitter.hasAttribute("formmethod")) { - return submitter.formMethod; - } else { - return null; - } - } else { - return null; - } - } - function isBodyInit(body) { - return body instanceof FormData || body instanceof URLSearchParams; - } - - // ../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js - addEventListener("turbo:before-fetch-request", encodeMethodIntoRequestBody); - - // base/polyfills/request-submit.js - (function(prototype) { - if (typeof prototype.requestSubmit == "function") - return; - prototype.requestSubmit = function(submitter) { - if (submitter) { - validateSubmitter(submitter, this); - submitter.click(); - } else { - submitter = document.createElement("input"); - submitter.type = "submit"; - submitter.hidden = true; - this.appendChild(submitter); - submitter.click(); - this.removeChild(submitter); - } - }; - function validateSubmitter(submitter, form) { - submitter instanceof HTMLElement || raise(TypeError, "parameter 1 is not of type 'HTMLElement'"); - submitter.type == "submit" || raise(TypeError, "The specified element is not a submit button"); - submitter.form == form || raise( - DOMException, - "The specified element is not owned by this form element", - "NotFoundError" - ); - } - function raise(errorConstructor, message, name) { - throw new errorConstructor( - "Failed to execute 'requestSubmit' on 'HTMLFormElement': " + message + ".", - name - ); - } - })(HTMLFormElement.prototype); - // ../../../node_modules/alpinejs/dist/module.esm.js var flushPending = false; var flushing = false; var queue = []; var lastFlushedIndex = -1; @@ -12084,14 +7451,14 @@ throw error2; }, 0); } var shouldAutoEvaluateFunctions = true; function dontAutoEvaluateFunctions(callback) { - let cache2 = shouldAutoEvaluateFunctions; + let cache = shouldAutoEvaluateFunctions; shouldAutoEvaluateFunctions = false; callback(); - shouldAutoEvaluateFunctions = cache2; + shouldAutoEvaluateFunctions = cache; } function evaluate(el, expression, extras = {}) { let result; evaluateLater(el, expression)((value) => result = value, extras); return result; @@ -12328,56 +7695,56 @@ function byPriority(a2, b2) { let typeA = directiveOrder.indexOf(a2.type) === -1 ? DEFAULT : a2.type; let typeB = directiveOrder.indexOf(b2.type) === -1 ? DEFAULT : b2.type; return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB); } - function dispatch3(el, name, detail = {}) { + function dispatch(el, name, detail = {}) { el.dispatchEvent(new CustomEvent(name, { detail, bubbles: true, composed: true, cancelable: true })); } - function walk2(el, callback) { + function walk(el, callback) { if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { - Array.from(el.children).forEach((el2) => walk2(el2, callback)); + Array.from(el.children).forEach((el2) => walk(el2, callback)); return; } let skip = false; callback(el, () => skip = true); if (skip) return; let node = el.firstElementChild; while (node) { - walk2(node, callback, false); + walk(node, callback, false); node = node.nextElementSibling; } } function warn(message, ...args) { console.warn(`Alpine Warning: ${message}`, ...args); } var started = false; - function start2() { + function start() { if (started) warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); started = true; if (!document.body) warn("Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?"); - dispatch3(document, "alpine:init"); - dispatch3(document, "alpine:initializing"); + dispatch(document, "alpine:init"); + dispatch(document, "alpine:initializing"); startObservingMutations(); - onElAdded((el) => initTree(el, walk2)); + onElAdded((el) => initTree(el, walk)); onElRemoved((el) => destroyTree(el)); onAttributesAdded((el, attrs) => { directives(el, attrs).forEach((handle) => handle()); }); let outNestedComponents = (el) => !closestRoot(el.parentElement, true); Array.from(document.querySelectorAll(allSelectors())).filter(outNestedComponents).forEach((el) => { initTree(el); }); - dispatch3(document, "alpine:initialized"); + dispatch(document, "alpine:initialized"); } var rootSelectorCallbacks = []; var initSelectorCallbacks = []; function rootSelectors() { return rootSelectorCallbacks.map((fn3) => fn3()); @@ -12414,11 +7781,11 @@ } var initInterceptors2 = []; function interceptInit(callback) { initInterceptors2.push(callback); } - function initTree(el, walker = walk2, intercept = () => { + function initTree(el, walker = walk, intercept = () => { }) { deferHandlingDirectives(() => { walker(el, (el2, skip) => { intercept(el2, skip); initInterceptors2.forEach((i2) => i2(el2, skip)); @@ -12426,11 +7793,11 @@ el2._x_ignore && skip(); }); }); } function destroyTree(root) { - walk2(root, (el) => cleanupAttributes(el)); + walk(root, (el) => cleanupAttributes(el)); } var tickStack = []; var isHolding = false; function nextTick(callback = () => { }) { @@ -12522,14 +7889,14 @@ return () => { setStyles(el, previousStyles); }; } function setStylesFromString(el, value) { - let cache2 = el.getAttribute("style", value); + let cache = el.getAttribute("style", value); el.setAttribute("style", value); return () => { - el.setAttribute("style", cache2 || ""); + el.setAttribute("style", cache || ""); }; } function kebabCase(subject) { return subject.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); } @@ -12838,29 +8205,29 @@ isCloning = false; } function cloneTree(el) { let hasRunThroughFirstEl = false; let shallowWalker = (el2, callback) => { - walk2(el2, (el3, skip) => { + walk(el2, (el3, skip) => { if (hasRunThroughFirstEl && isRoot(el3)) return skip(); hasRunThroughFirstEl = true; callback(el3, skip); }); }; initTree(el, shallowWalker); } function dontRegisterReactiveSideEffects(callback) { - let cache2 = effect; + let cache = effect; overrideEffect((callback2, el) => { - let storedEffect = cache2(callback2); + let storedEffect = cache(callback2); release(storedEffect); return () => { }; }); callback(); - overrideEffect(cache2); + overrideEffect(cache); } function bind(el, name, value, modifiers = []) { if (!el._x_bindings) el._x_bindings = reactive({}); el._x_bindings[name] = value; @@ -13157,15 +8524,15 @@ prefixed: prefix, prefix: setPrefix, plugin, magic, store, - start: start2, + start, clone, bound: getBinding, $data: scope, - walk: walk2, + walk, data, bind: bind2 }; var alpine_default = Alpine2; function makeMap(str, expectsLowerCase) { @@ -13178,11 +8545,11 @@ } var specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; var isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`); var EMPTY_OBJ = true ? Object.freeze({}) : {}; var EMPTY_ARR = true ? Object.freeze([]) : []; - var extend2 = Object.assign; + var extend = Object.assign; var hasOwnProperty = Object.prototype.hasOwnProperty; var hasOwn = (val, key) => hasOwnProperty.call(val, key); var isArray = Array.isArray; var isMap = (val) => toTypeString(val) === "[object Map]"; var isString = (val) => typeof val === "string"; @@ -13193,14 +8560,14 @@ var toRawType = (value) => { return toTypeString(value).slice(8, -1); }; var isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; var cacheStringFunction = (fn3) => { - const cache2 = /* @__PURE__ */ Object.create(null); + const cache = /* @__PURE__ */ Object.create(null); return (str) => { - const hit = cache2[str]; - return hit || (cache2[str] = fn3(str)); + const hit = cache[str]; + return hit || (cache[str] = fn3(str)); }; }; var camelizeRE = /-(\w)/g; var camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_2, c2) => c2 ? c2.toUpperCase() : ""); @@ -13516,15 +8883,15 @@ console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); } return true; } }; - var shallowReactiveHandlers = extend2({}, mutableHandlers, { + var shallowReactiveHandlers = extend({}, mutableHandlers, { get: shallowGet, set: shallowSet }); - var shallowReadonlyHandlers = extend2({}, readonlyHandlers, { + var shallowReadonlyHandlers = extend({}, readonlyHandlers, { get: shallowReadonlyGet }); var toReactive = (value) => isObject(value) ? reactive2(value) : value; var toReadonly = (value) => isObject(value) ? readonly(value) : value; var toShallow = (value) => value; @@ -13821,11 +9188,11 @@ } function isRef(r2) { return Boolean(r2 && r2.__v_isRef === true); } magic("nextTick", () => nextTick); - magic("dispatch", (el) => dispatch3.bind(dispatch3, el)); + magic("dispatch", (el) => dispatch.bind(dispatch, el)); magic("watch", (el, { evaluateLater: evaluateLater2, effect: effect32 }) => (key, callback) => { let evaluate2 = evaluateLater2(key); let firstTime = true; let oldValue; let effectReference = effect32(() => evaluate2((value) => { @@ -14580,11 +9947,11 @@ el.after(clone2); initTree(clone2); }); el._x_currentIfEl = clone2; el._x_undoIf = () => { - walk2(clone2, (node) => { + walk(clone2, (node) => { if (!!node._x_effects) { node._x_effects.forEach(dequeueJob); } }); clone2.remove(); @@ -16056,13 +11423,13 @@ })); } function setInert(el) { let undos = []; crawlSiblingsUp(el, (sibling) => { - let cache2 = sibling.hasAttribute("aria-hidden"); + let cache = sibling.hasAttribute("aria-hidden"); sibling.setAttribute("aria-hidden", "true"); - undos.push(() => cache2 || sibling.removeAttribute("aria-hidden")); + undos.push(() => cache || sibling.removeAttribute("aria-hidden")); }); return () => { while (undos.length) undos.pop()(); }; @@ -16229,21 +11596,21 @@ var bottom = "bottom"; var right = "right"; var left = "left"; var auto = "auto"; var basePlacements = [top, bottom, right, left]; - var start3 = "start"; + var start2 = "start"; var end = "end"; var clippingParents = "clippingParents"; var viewport = "viewport"; var popper = "popper"; var reference = "reference"; var variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) { - return acc.concat([placement + "-" + start3, placement + "-" + end]); + return acc.concat([placement + "-" + start2, placement + "-" + end]); }, []); var placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) { - return acc.concat([placement, placement + "-" + start3, placement + "-" + end]); + return acc.concat([placement, placement + "-" + start2, placement + "-" + end]); }, []); var beforeRead = "beforeRead"; var read = "read"; var afterRead = "afterRead"; var beforeMain = "beforeMain"; @@ -17010,11 +12377,11 @@ } var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; if (mainAxis != null) { var len = mainAxis === "y" ? "height" : "width"; switch (variation) { - case start3: + case start2: offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2); break; case end: offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2); break; @@ -17126,11 +12493,11 @@ var makeFallbackChecks = true; var firstFittingPlacement = placements2[0]; for (var i2 = 0; i2 < placements2.length; i2++) { var placement = placements2[i2]; var _basePlacement = getBasePlacement(placement); - var isStartVariation = getVariation(placement) === start3; + var isStartVariation = getVariation(placement) === start2; var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; var len = isVertical ? "width" : "height"; var overflow = detectOverflow(state, { placement, boundary, @@ -17357,12 +12724,12 @@ var len = mainAxis === "y" ? "height" : "width"; var offset2 = popperOffsets2[mainAxis]; var min2 = offset2 + overflow[mainSide]; var max2 = offset2 - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === start3 ? referenceRect[len] : popperRect[len]; - var maxLen = variation === start3 ? -popperRect[len] : -referenceRect[len]; + var minLen = variation === start2 ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start2 ? -popperRect[len] : -referenceRect[len]; var arrowElement = state.elements.arrow; var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { width: 0, height: 0 }; @@ -17552,19 +12919,19 @@ } function popperGenerator(generatorOptions) { if (generatorOptions === void 0) { generatorOptions = {}; } - var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions2 = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; return function createPopper2(reference2, popper2, options) { if (options === void 0) { - options = defaultOptions2; + options = defaultOptions; } var state = { placement: "bottom", orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions2), + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), modifiersData: {}, elements: { reference: reference2, popper: popper2 }, @@ -17576,11 +12943,11 @@ var instance = { state, setOptions: function setOptions(setOptionsAction) { var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction; cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions2, state.options, options2); + state.options = Object.assign({}, defaultOptions, state.options, options2); state.scrollParents = { reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [], popper: listScrollParents(popper2) }; var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers))); @@ -17860,16 +13227,16 @@ if (window.performance) { document.addEventListener("mousemove", onDocumentMouseMove); } } function onDocumentMouseMove() { - var now2 = performance.now(); - if (now2 - lastMouseMoveTime < 20) { + var now = performance.now(); + if (now - lastMouseMoveTime < 20) { currentInput.isTouch = false; document.removeEventListener("mousemove", onDocumentMouseMove); } - lastMouseMoveTime = now2; + lastMouseMoveTime = now; } function onWindowBlur() { var activeElement = document.activeElement; if (isReferenceElement(activeElement)) { var instance = activeElement._tippy; @@ -19426,15 +14793,10 @@ module_default.plugin(dimensions_default); module_default.plugin(notification_default); window.Alpine = module_default; var alpine_default2 = module_default; - // base/setup.js - document.addEventListener("DOMContentLoaded", () => { - alpine_default2.start(); - }); - // ../../components/coco/base/button/button.js var button_exports = {}; __export(button_exports, { default: () => button_default }); @@ -19846,9 +15208,12 @@ var modules2 = []; var __default2 = modules2; // book/components.js var components_default2 = registerComponents(__default2); + + // book.js + alpine_default2.start(); })(); /*! Bundled license information: lodash/lodash.js: (**