{"version":3,"file":"lancer-alternative-sheets.mjs","sources":["../src/scripts/loader.ts","../src/enums/LancerAlternative.ts","../node_modules/@msgpack/msgpack/dist.esm/utils/utf8.mjs","../node_modules/@msgpack/msgpack/dist.esm/ExtData.mjs","../node_modules/@msgpack/msgpack/dist.esm/DecodeError.mjs","../node_modules/@msgpack/msgpack/dist.esm/utils/int.mjs","../node_modules/@msgpack/msgpack/dist.esm/timestamp.mjs","../node_modules/@msgpack/msgpack/dist.esm/ExtensionCodec.mjs","../node_modules/@msgpack/msgpack/dist.esm/utils/typedArrays.mjs","../node_modules/@msgpack/msgpack/dist.esm/Encoder.mjs","../node_modules/@msgpack/msgpack/dist.esm/utils/prettyByte.mjs","../node_modules/@msgpack/msgpack/dist.esm/CachedKeyDecoder.mjs","../node_modules/@msgpack/msgpack/dist.esm/Decoder.mjs","../src/classes/settings/PilotSheetLocalSettings.ts","../src/enums/SystemButton.ts","../src/classes/settings/PilotSheetSettings.ts","../src/classes/SocketManager.ts","../src/scripts/pilot/settings.ts","../src/classes/settings/MechSheetLocalSettings.ts","../src/classes/settings/MechSheetSettings.ts","../src/scripts/mech/settings.ts","../src/classes/settings/NPCSheetSettings.ts","../src/scripts/npc/settings.ts","../src/classes/settings/DeployableSheetSettings.ts","../src/scripts/deployable/settings.ts","../src/scripts/settings.ts","../src/classes/Logger.ts","../src/scripts/lancer/helpers/common.ts","../node_modules/esm-env/false.js","../node_modules/svelte/src/internal/shared/utils.js","../node_modules/svelte/src/internal/client/constants.js","../node_modules/svelte/src/internal/client/reactivity/equality.js","../node_modules/svelte/src/internal/client/errors.js","../node_modules/svelte/src/internal/flags/index.js","../node_modules/svelte/src/constants.js","../node_modules/svelte/src/internal/shared/errors.js","../node_modules/svelte/src/internal/client/context.js","../node_modules/svelte/src/internal/client/reactivity/sources.js","../node_modules/svelte/src/internal/client/dom/hydration.js","../node_modules/svelte/src/internal/client/proxy.js","../node_modules/svelte/src/internal/client/dom/operations.js","../node_modules/svelte/src/internal/client/reactivity/deriveds.js","../node_modules/svelte/src/internal/client/reactivity/effects.js","../node_modules/svelte/src/internal/client/dom/task.js","../node_modules/svelte/src/internal/client/runtime.js","../node_modules/svelte/src/utils.js","../node_modules/svelte/src/internal/client/dom/elements/misc.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/shared.js","../node_modules/svelte/src/internal/client/dom/elements/events.js","../node_modules/svelte/src/internal/client/dom/reconciler.js","../node_modules/svelte/src/internal/client/dom/template.js","../node_modules/svelte/src/internal/client/render.js","../node_modules/svelte/src/internal/client/dom/blocks/if.js","../node_modules/svelte/src/internal/client/dom/blocks/each.js","../node_modules/svelte/src/internal/client/dom/blocks/html.js","../node_modules/svelte/src/internal/client/dom/blocks/snippet.js","../node_modules/svelte/src/internal/client/dom/elements/actions.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/svelte/src/internal/shared/attributes.js","../node_modules/svelte/src/internal/client/dom/elements/attributes.js","../node_modules/svelte/src/internal/client/dom/elements/class.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/input.js","../node_modules/svelte/src/internal/client/dom/elements/bindings/this.js","../node_modules/svelte/src/store/utils.js","../node_modules/svelte/src/store/shared/index.js","../node_modules/svelte/src/internal/client/reactivity/props.js","../node_modules/svelte/src/index-client.js","../node_modules/svelte/src/reactivity/utils.js","../node_modules/svelte/src/reactivity/create-subscriber.js","../node_modules/svelte/src/store/index-client.js","../src/scripts/store/module-store.ts","../src/scripts/store/advanced.ts","../src/scripts/helpers.ts","../src/enums/TextConsoleHook.ts","../src/enums/TextLogHook.ts","../src/scripts/store/text-log.ts","../src/enums/ThemeKey.ts","../src/scripts/lancer/util/lid.ts","../src/scripts/theme.ts","../src/scripts/store/hooks.ts","../src/scripts/store/theme.ts","../src/enums/ActiveTab.ts","../node_modules/svelte/src/version.js","../node_modules/svelte/src/internal/disclose-version.js","../src/classes/TooltipFactory.ts","../src/enums/TooltipDirection.ts","../src/enums/FlowClass.ts","../src/enums/TextLogIntro.ts","../src/scripts/context.ts","../src/svelte/shared/TerminalText.svelte","../src/svelte/shared/button/AdvancedButton.svelte","../src/svelte/shared/BoundImage.svelte","../src/scripts/text-writer.ts","../src/svelte/shared/TextLog.svelte","../src/svelte/shared/button/GlyphButton.svelte","../src/svelte/shared/button/LockImageButton.svelte","../src/svelte/mech/Header.svelte","../src/svelte/shared/StatusBar.svelte","../src/enums/EditMode.ts","../src/svelte/shared/StatComboShort.svelte","../src/svelte/shared/input/CoreAvailability.svelte","../src/classes/flows/FlowBase.ts","../src/classes/flows/RunMacro.ts","../src/svelte/shared/button/FlowButton.svelte","../src/classes/ButtonFactory.ts","../src/classes/flows/SkillTriggerOther.ts","../src/enums/LADataType.ts","../src/svelte/shared/dragdrop/DragDropHandle.svelte","../src/svelte/shared/button/SkillTriggerButton.svelte","../src/svelte/shared/dragdrop/MacroDropBox.svelte","../src/svelte/shared/ImageVideo.svelte","../src/enums/CustomFlagContentType.ts","../src/classes/CustomFlags.ts","../src/scripts/flags.ts","../src/enums/CustomFlagKey.ts","../src/svelte/mech/Sidebar.svelte","../src/enums/ActionLogCollapsePrefix.ts","../src/scripts/store/collapse.ts","../src/svelte/shared/header/HeaderMain.svelte","../src/svelte/shared/ActiveEffects.svelte","../src/svelte/shared/button/CollapseAllButton.svelte","../src/svelte/shared/header/HeaderSecondary.svelte","../src/scripts/lancer/actor/damage-calc.ts","../src/scripts/lancer/models/bits/damage.ts","../src/scripts/action-log.ts","../src/svelte/shared/ActionLogMessage.svelte","../src/svelte/shared/ActionLog.svelte","../src/svelte/mech/Status.svelte","../src/enums/CounterBoxType.ts","../src/enums/ChatCardType.ts","../src/scripts/constants.ts","../node_modules/nanoid/index.browser.js","../src/scripts/lancer/flows/_render.ts","../src/classes/flows/SendUnknownToChat.ts","../node_modules/svelte/src/internal/flags/legacy.js","../src/svelte/shared/button/Button.svelte","../src/svelte/shared/EffectBox.svelte","../src/svelte/shared/header/HeaderQuinary.svelte","../src/svelte/shared/button/EffectButton.svelte","../src/svelte/shared/ActionBox.svelte","../src/svelte/shared/DeployableBox.svelte","../src/svelte/mech/FrameActivePower.svelte","../src/svelte/mech/FramePassivePower.svelte","../src/svelte/shared/counter/CounterBox.svelte","../src/svelte/shared/BonusBox.svelte","../src/svelte/mech/FrameTrait.svelte","../src/svelte/shared/TagArray.svelte","../src/svelte/mech/Frame.svelte","../src/enums/AcceptType.ts","../src/svelte/shared/header/HeaderTertiary.svelte","../src/svelte/shared/counter/LimitedBox.svelte","../src/svelte/shared/decoration/TotalSP.svelte","../src/svelte/mech/Systems.svelte","../src/svelte/shared/counter/LoadedBox.svelte","../src/svelte/shared/DamageArray.svelte","../src/svelte/shared/RangeArray.svelte","../src/svelte/shared/button/DamageButton.svelte","../src/svelte/shared/button/AttackButton.svelte","../src/svelte/mech/WeaponMod.svelte","../src/svelte/shared/ProfileBox.svelte","../src/svelte/mech/Weapon.svelte","../src/svelte/shared/decoration/MountNames.svelte","../src/svelte/mech/Mounts.svelte","../src/svelte/pilot/CoreBonus.svelte","../src/svelte/pilot/Talents.svelte","../src/svelte/mech/Loadout.svelte","../src/scripts/enrichers.ts","../src/svelte/mech/Custom.svelte","../src/svelte/mech/CustomToggle.svelte","../src/svelte/shared/button/HexButton.svelte","../src/svelte/shared/HaseArray.svelte","../src/scripts/mech/mount-helpers.ts","../src/svelte/mech/settings/MountOptions.svelte","../src/svelte/mech/settings/MountDelete.svelte","../src/svelte/mech/settings/MountAdd.svelte","../src/svelte/mech/settings/MountSettings.svelte","../src/svelte/mech/settings/InventorySettings.svelte","../src/svelte/mech/settings/AdvancedSettings.svelte","../src/svelte/shared/input/SidebarRatioSlider.svelte","../src/svelte/shared/button/ThemeOverrideButton.svelte","../src/svelte/mech/settings/AdvancedSettingsNav.svelte","../src/svelte/mech/Activity.svelte","../src/classes/mech/MechSheetBase.ts","../src/svelte/npc/ChargedBox.svelte","../src/svelte/npc/WeaponItem.svelte","../src/svelte/npc/Weapons.svelte","../src/svelte/npc/SystemItem.svelte","../src/svelte/npc/Systems.svelte","../src/svelte/npc/TraitItem.svelte","../src/svelte/npc/Traits.svelte","../src/svelte/npc/ReactionItem.svelte","../src/svelte/npc/Reactions.svelte","../src/svelte/npc/TechAttackItem.svelte","../src/svelte/npc/TechAttack.svelte","../src/svelte/npc/Loadout.svelte","../src/svelte/npc/Template.svelte","../src/svelte/npc/HaseDisplay.svelte","../src/svelte/npc/Stats.svelte","../src/svelte/npc/Header.svelte","../src/svelte/npc/Activity.svelte","../src/svelte/npc/Status.svelte","../src/svelte/npc/Custom.svelte","../src/svelte/npc/CustomToggle.svelte","../src/classes/npc/NPCSheetBase.ts","../src/svelte/pilot/Header.svelte","../src/svelte/pilot/Sidebar.svelte","../src/svelte/pilot/Weapon.svelte","../src/svelte/pilot/Armor.svelte","../src/svelte/pilot/Gear.svelte","../src/svelte/pilot/Reserve.svelte","../src/svelte/pilot/Equipment.svelte","../src/svelte/pilot/Burden.svelte","../src/svelte/pilot/LimitedBondBox.svelte","../src/svelte/pilot/Power.svelte","../src/svelte/pilot/Clock.svelte","../src/scripts/store/bond.ts","../src/svelte/pilot/Passion.svelte","../src/svelte/pilot/Bond.svelte","../src/svelte/pilot/Custom.svelte","../src/svelte/pilot/CustomToggle.svelte","../src/svelte/pilot/settings/LevelSettings.svelte","../src/svelte/pilot/settings/HullSettings.svelte","../src/svelte/pilot/settings/AgilitySettings.svelte","../src/svelte/pilot/settings/SystemsSettings.svelte","../src/svelte/pilot/settings/EngineeringSettings.svelte","../src/svelte/pilot/settings/AdvancedSettings.svelte","../src/svelte/pilot/settings/AdvancedSettingsNav.svelte","../src/svelte/pilot/Activity.svelte","../src/svelte/pilot/SkillTriggers.svelte","../src/svelte/pilot/License.svelte","../src/svelte/pilot/Abilities.svelte","../src/svelte/pilot/History.svelte","../src/svelte/pilot/Note.svelte","../src/svelte/pilot/Sync.svelte","../src/svelte/pilot/Dossier.svelte","../src/svelte/pilot/MechStats.svelte","../src/svelte/pilot/MechStorage.svelte","../src/classes/pilot/PilotSheetBase.ts","../src/svelte/deployable/Detail.svelte","../src/svelte/deployable/Stats.svelte","../src/svelte/deployable/Header.svelte","../src/svelte/deployable/Activity.svelte","../src/svelte/deployable/Custom.svelte","../src/svelte/deployable/CustomToggle.svelte","../src/classes/deployable/DeployableSheetBase.ts","../src/scripts/module.ts"],"sourcesContent":["import { id as moduleID } from '../module.json';\n\nexport const TEMPLATE_PATHS = {\n    mechSheetSvelte: `modules/${moduleID}/templates/la-mech-svelte.hbs`,\n    npcSheetSvelte: `modules/${moduleID}/templates/la-npc-svelte.hbs`,\n    pilotSheetSvelte: `modules/${moduleID}/templates/la-pilot-svelte.hbs`,\n    deployableSheetSvelte: `modules/${moduleID}/templates/la-deployable-svelte.hbs`,\n\n    featureCard: `modules/${moduleID}/templates/chat/feature-card.hbs`,\n\n    pilotSettingsSubmenu: `modules/${moduleID}/templates/settings/la-pilot-settings-submenu.hbs`,\n    mechSettingsSubmenu: `modules/${moduleID}/templates/settings/la-mech-settings-submenu.hbs`,\n    npcSettingsSubmenu: `modules/${moduleID}/templates/settings/la-npc-settings-submenu.hbs`,\n    deployableSettingsSubmenu: `modules/${moduleID}/templates/settings/la-deployable-settings-submenu.hbs`,\n};\n\nexport const preloadTemplates = async function ()\n{\n    return foundry.applications.handlebars.loadTemplates(Object.values(TEMPLATE_PATHS));\n}","export enum LancerAlternative\n{\n    Name = \"lancer-alternative-sheets\",\n    EnricherTag = \"AltSheetCustom\",\n}","export function utf8Count(str) {\n    const strLength = str.length;\n    let byteLength = 0;\n    let pos = 0;\n    while (pos < strLength) {\n        let value = str.charCodeAt(pos++);\n        if ((value & 0xffffff80) === 0) {\n            // 1-byte\n            byteLength++;\n            continue;\n        }\n        else if ((value & 0xfffff800) === 0) {\n            // 2-bytes\n            byteLength += 2;\n        }\n        else {\n            // handle surrogate pair\n            if (value >= 0xd800 && value <= 0xdbff) {\n                // high surrogate\n                if (pos < strLength) {\n                    const extra = str.charCodeAt(pos);\n                    if ((extra & 0xfc00) === 0xdc00) {\n                        ++pos;\n                        value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n                    }\n                }\n            }\n            if ((value & 0xffff0000) === 0) {\n                // 3-byte\n                byteLength += 3;\n            }\n            else {\n                // 4-byte\n                byteLength += 4;\n            }\n        }\n    }\n    return byteLength;\n}\nexport function utf8EncodeJs(str, output, outputOffset) {\n    const strLength = str.length;\n    let offset = outputOffset;\n    let pos = 0;\n    while (pos < strLength) {\n        let value = str.charCodeAt(pos++);\n        if ((value & 0xffffff80) === 0) {\n            // 1-byte\n            output[offset++] = value;\n            continue;\n        }\n        else if ((value & 0xfffff800) === 0) {\n            // 2-bytes\n            output[offset++] = ((value >> 6) & 0x1f) | 0xc0;\n        }\n        else {\n            // handle surrogate pair\n            if (value >= 0xd800 && value <= 0xdbff) {\n                // high surrogate\n                if (pos < strLength) {\n                    const extra = str.charCodeAt(pos);\n                    if ((extra & 0xfc00) === 0xdc00) {\n                        ++pos;\n                        value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n                    }\n                }\n            }\n            if ((value & 0xffff0000) === 0) {\n                // 3-byte\n                output[offset++] = ((value >> 12) & 0x0f) | 0xe0;\n                output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n            }\n            else {\n                // 4-byte\n                output[offset++] = ((value >> 18) & 0x07) | 0xf0;\n                output[offset++] = ((value >> 12) & 0x3f) | 0x80;\n                output[offset++] = ((value >> 6) & 0x3f) | 0x80;\n            }\n        }\n        output[offset++] = (value & 0x3f) | 0x80;\n    }\n}\n// TextEncoder and TextDecoder are standardized in whatwg encoding:\n// https://encoding.spec.whatwg.org/\n// and available in all the modern browsers:\n// https://caniuse.com/textencoder\n// They are available in Node.js since v12 LTS as well:\n// https://nodejs.org/api/globals.html#textencoder\nconst sharedTextEncoder = new TextEncoder();\n// This threshold should be determined by benchmarking, which might vary in engines and input data.\n// Run `npx ts-node benchmark/encode-string.ts` for details.\nconst TEXT_ENCODER_THRESHOLD = 50;\nexport function utf8EncodeTE(str, output, outputOffset) {\n    sharedTextEncoder.encodeInto(str, output.subarray(outputOffset));\n}\nexport function utf8Encode(str, output, outputOffset) {\n    if (str.length > TEXT_ENCODER_THRESHOLD) {\n        utf8EncodeTE(str, output, outputOffset);\n    }\n    else {\n        utf8EncodeJs(str, output, outputOffset);\n    }\n}\nconst CHUNK_SIZE = 4096;\nexport function utf8DecodeJs(bytes, inputOffset, byteLength) {\n    let offset = inputOffset;\n    const end = offset + byteLength;\n    const units = [];\n    let result = \"\";\n    while (offset < end) {\n        const byte1 = bytes[offset++];\n        if ((byte1 & 0x80) === 0) {\n            // 1 byte\n            units.push(byte1);\n        }\n        else if ((byte1 & 0xe0) === 0xc0) {\n            // 2 bytes\n            const byte2 = bytes[offset++] & 0x3f;\n            units.push(((byte1 & 0x1f) << 6) | byte2);\n        }\n        else if ((byte1 & 0xf0) === 0xe0) {\n            // 3 bytes\n            const byte2 = bytes[offset++] & 0x3f;\n            const byte3 = bytes[offset++] & 0x3f;\n            units.push(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n        }\n        else if ((byte1 & 0xf8) === 0xf0) {\n            // 4 bytes\n            const byte2 = bytes[offset++] & 0x3f;\n            const byte3 = bytes[offset++] & 0x3f;\n            const byte4 = bytes[offset++] & 0x3f;\n            let unit = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n            if (unit > 0xffff) {\n                unit -= 0x10000;\n                units.push(((unit >>> 10) & 0x3ff) | 0xd800);\n                unit = 0xdc00 | (unit & 0x3ff);\n            }\n            units.push(unit);\n        }\n        else {\n            units.push(byte1);\n        }\n        if (units.length >= CHUNK_SIZE) {\n            result += String.fromCharCode(...units);\n            units.length = 0;\n        }\n    }\n    if (units.length > 0) {\n        result += String.fromCharCode(...units);\n    }\n    return result;\n}\nconst sharedTextDecoder = new TextDecoder();\n// This threshold should be determined by benchmarking, which might vary in engines and input data.\n// Run `npx ts-node benchmark/decode-string.ts` for details.\nconst TEXT_DECODER_THRESHOLD = 200;\nexport function utf8DecodeTD(bytes, inputOffset, byteLength) {\n    const stringBytes = bytes.subarray(inputOffset, inputOffset + byteLength);\n    return sharedTextDecoder.decode(stringBytes);\n}\nexport function utf8Decode(bytes, inputOffset, byteLength) {\n    if (byteLength > TEXT_DECODER_THRESHOLD) {\n        return utf8DecodeTD(bytes, inputOffset, byteLength);\n    }\n    else {\n        return utf8DecodeJs(bytes, inputOffset, byteLength);\n    }\n}\n//# sourceMappingURL=utf8.mjs.map","/**\n * ExtData is used to handle Extension Types that are not registered to ExtensionCodec.\n */\nexport class ExtData {\n    constructor(type, data) {\n        this.type = type;\n        this.data = data;\n    }\n}\n//# sourceMappingURL=ExtData.mjs.map","export class DecodeError extends Error {\n    constructor(message) {\n        super(message);\n        // fix the prototype chain in a cross-platform way\n        const proto = Object.create(DecodeError.prototype);\n        Object.setPrototypeOf(this, proto);\n        Object.defineProperty(this, \"name\", {\n            configurable: true,\n            enumerable: false,\n            value: DecodeError.name,\n        });\n    }\n}\n//# sourceMappingURL=DecodeError.mjs.map","// Integer Utility\nexport const UINT32_MAX = 4294967295;\n// DataView extension to handle int64 / uint64,\n// where the actual range is 53-bits integer (a.k.a. safe integer)\nexport function setUint64(view, offset, value) {\n    const high = value / 4294967296;\n    const low = value; // high bits are truncated by DataView\n    view.setUint32(offset, high);\n    view.setUint32(offset + 4, low);\n}\nexport function setInt64(view, offset, value) {\n    const high = Math.floor(value / 4294967296);\n    const low = value; // high bits are truncated by DataView\n    view.setUint32(offset, high);\n    view.setUint32(offset + 4, low);\n}\nexport function getInt64(view, offset) {\n    const high = view.getInt32(offset);\n    const low = view.getUint32(offset + 4);\n    return high * 4294967296 + low;\n}\nexport function getUint64(view, offset) {\n    const high = view.getUint32(offset);\n    const low = view.getUint32(offset + 4);\n    return high * 4294967296 + low;\n}\n//# sourceMappingURL=int.mjs.map","// https://github.com/msgpack/msgpack/blob/master/spec.md#timestamp-extension-type\nimport { DecodeError } from \"./DecodeError.mjs\";\nimport { getInt64, setInt64 } from \"./utils/int.mjs\";\nexport const EXT_TIMESTAMP = -1;\nconst TIMESTAMP32_MAX_SEC = 0x100000000 - 1; // 32-bit unsigned int\nconst TIMESTAMP64_MAX_SEC = 0x400000000 - 1; // 34-bit unsigned int\nexport function encodeTimeSpecToTimestamp({ sec, nsec }) {\n    if (sec >= 0 && nsec >= 0 && sec <= TIMESTAMP64_MAX_SEC) {\n        // Here sec >= 0 && nsec >= 0\n        if (nsec === 0 && sec <= TIMESTAMP32_MAX_SEC) {\n            // timestamp 32 = { sec32 (unsigned) }\n            const rv = new Uint8Array(4);\n            const view = new DataView(rv.buffer);\n            view.setUint32(0, sec);\n            return rv;\n        }\n        else {\n            // timestamp 64 = { nsec30 (unsigned), sec34 (unsigned) }\n            const secHigh = sec / 0x100000000;\n            const secLow = sec & 0xffffffff;\n            const rv = new Uint8Array(8);\n            const view = new DataView(rv.buffer);\n            // nsec30 | secHigh2\n            view.setUint32(0, (nsec << 2) | (secHigh & 0x3));\n            // secLow32\n            view.setUint32(4, secLow);\n            return rv;\n        }\n    }\n    else {\n        // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n        const rv = new Uint8Array(12);\n        const view = new DataView(rv.buffer);\n        view.setUint32(0, nsec);\n        setInt64(view, 4, sec);\n        return rv;\n    }\n}\nexport function encodeDateToTimeSpec(date) {\n    const msec = date.getTime();\n    const sec = Math.floor(msec / 1e3);\n    const nsec = (msec - sec * 1e3) * 1e6;\n    // Normalizes { sec, nsec } to ensure nsec is unsigned.\n    const nsecInSec = Math.floor(nsec / 1e9);\n    return {\n        sec: sec + nsecInSec,\n        nsec: nsec - nsecInSec * 1e9,\n    };\n}\nexport function encodeTimestampExtension(object) {\n    if (object instanceof Date) {\n        const timeSpec = encodeDateToTimeSpec(object);\n        return encodeTimeSpecToTimestamp(timeSpec);\n    }\n    else {\n        return null;\n    }\n}\nexport function decodeTimestampToTimeSpec(data) {\n    const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n    // data may be 32, 64, or 96 bits\n    switch (data.byteLength) {\n        case 4: {\n            // timestamp 32 = { sec32 }\n            const sec = view.getUint32(0);\n            const nsec = 0;\n            return { sec, nsec };\n        }\n        case 8: {\n            // timestamp 64 = { nsec30, sec34 }\n            const nsec30AndSecHigh2 = view.getUint32(0);\n            const secLow32 = view.getUint32(4);\n            const sec = (nsec30AndSecHigh2 & 0x3) * 0x100000000 + secLow32;\n            const nsec = nsec30AndSecHigh2 >>> 2;\n            return { sec, nsec };\n        }\n        case 12: {\n            // timestamp 96 = { nsec32 (unsigned), sec64 (signed) }\n            const sec = getInt64(view, 4);\n            const nsec = view.getUint32(0);\n            return { sec, nsec };\n        }\n        default:\n            throw new DecodeError(`Unrecognized data size for timestamp (expected 4, 8, or 12): ${data.length}`);\n    }\n}\nexport function decodeTimestampExtension(data) {\n    const timeSpec = decodeTimestampToTimeSpec(data);\n    return new Date(timeSpec.sec * 1e3 + timeSpec.nsec / 1e6);\n}\nexport const timestampExtension = {\n    type: EXT_TIMESTAMP,\n    encode: encodeTimestampExtension,\n    decode: decodeTimestampExtension,\n};\n//# sourceMappingURL=timestamp.mjs.map","// ExtensionCodec to handle MessagePack extensions\nimport { ExtData } from \"./ExtData.mjs\";\nimport { timestampExtension } from \"./timestamp.mjs\";\nexport class ExtensionCodec {\n    constructor() {\n        // built-in extensions\n        this.builtInEncoders = [];\n        this.builtInDecoders = [];\n        // custom extensions\n        this.encoders = [];\n        this.decoders = [];\n        this.register(timestampExtension);\n    }\n    register({ type, encode, decode, }) {\n        if (type >= 0) {\n            // custom extensions\n            this.encoders[type] = encode;\n            this.decoders[type] = decode;\n        }\n        else {\n            // built-in extensions\n            const index = -1 - type;\n            this.builtInEncoders[index] = encode;\n            this.builtInDecoders[index] = decode;\n        }\n    }\n    tryToEncode(object, context) {\n        // built-in extensions\n        for (let i = 0; i < this.builtInEncoders.length; i++) {\n            const encodeExt = this.builtInEncoders[i];\n            if (encodeExt != null) {\n                const data = encodeExt(object, context);\n                if (data != null) {\n                    const type = -1 - i;\n                    return new ExtData(type, data);\n                }\n            }\n        }\n        // custom extensions\n        for (let i = 0; i < this.encoders.length; i++) {\n            const encodeExt = this.encoders[i];\n            if (encodeExt != null) {\n                const data = encodeExt(object, context);\n                if (data != null) {\n                    const type = i;\n                    return new ExtData(type, data);\n                }\n            }\n        }\n        if (object instanceof ExtData) {\n            // to keep ExtData as is\n            return object;\n        }\n        return null;\n    }\n    decode(data, type, context) {\n        const decodeExt = type < 0 ? this.builtInDecoders[-1 - type] : this.decoders[type];\n        if (decodeExt) {\n            return decodeExt(data, type, context);\n        }\n        else {\n            // decode() does not fail, returns ExtData instead.\n            return new ExtData(type, data);\n        }\n    }\n}\nExtensionCodec.defaultCodec = new ExtensionCodec();\n//# sourceMappingURL=ExtensionCodec.mjs.map","function isArrayBufferLike(buffer) {\n    return (buffer instanceof ArrayBuffer || (typeof SharedArrayBuffer !== \"undefined\" && buffer instanceof SharedArrayBuffer));\n}\nexport function ensureUint8Array(buffer) {\n    if (buffer instanceof Uint8Array) {\n        return buffer;\n    }\n    else if (ArrayBuffer.isView(buffer)) {\n        return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n    }\n    else if (isArrayBufferLike(buffer)) {\n        return new Uint8Array(buffer);\n    }\n    else {\n        // ArrayLike<number>\n        return Uint8Array.from(buffer);\n    }\n}\n//# sourceMappingURL=typedArrays.mjs.map","import { utf8Count, utf8Encode } from \"./utils/utf8.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { setInt64, setUint64 } from \"./utils/int.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nexport const DEFAULT_MAX_DEPTH = 100;\nexport const DEFAULT_INITIAL_BUFFER_SIZE = 2048;\nexport class Encoder {\n    constructor(options) {\n        this.entered = false;\n        this.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n        this.context = options?.context; // needs a type assertion because EncoderOptions has no context property when ContextType is undefined\n        this.useBigInt64 = options?.useBigInt64 ?? false;\n        this.maxDepth = options?.maxDepth ?? DEFAULT_MAX_DEPTH;\n        this.initialBufferSize = options?.initialBufferSize ?? DEFAULT_INITIAL_BUFFER_SIZE;\n        this.sortKeys = options?.sortKeys ?? false;\n        this.forceFloat32 = options?.forceFloat32 ?? false;\n        this.ignoreUndefined = options?.ignoreUndefined ?? false;\n        this.forceIntegerToFloat = options?.forceIntegerToFloat ?? false;\n        this.pos = 0;\n        this.view = new DataView(new ArrayBuffer(this.initialBufferSize));\n        this.bytes = new Uint8Array(this.view.buffer);\n    }\n    clone() {\n        // Because of slightly special argument `context`,\n        // type assertion is needed.\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        return new Encoder({\n            extensionCodec: this.extensionCodec,\n            context: this.context,\n            useBigInt64: this.useBigInt64,\n            maxDepth: this.maxDepth,\n            initialBufferSize: this.initialBufferSize,\n            sortKeys: this.sortKeys,\n            forceFloat32: this.forceFloat32,\n            ignoreUndefined: this.ignoreUndefined,\n            forceIntegerToFloat: this.forceIntegerToFloat,\n        });\n    }\n    reinitializeState() {\n        this.pos = 0;\n    }\n    /**\n     * This is almost equivalent to {@link Encoder#encode}, but it returns an reference of the encoder's internal buffer and thus much faster than {@link Encoder#encode}.\n     *\n     * @returns Encodes the object and returns a shared reference the encoder's internal buffer.\n     */\n    encodeSharedRef(object) {\n        if (this.entered) {\n            const instance = this.clone();\n            return instance.encodeSharedRef(object);\n        }\n        try {\n            this.entered = true;\n            this.reinitializeState();\n            this.doEncode(object, 1);\n            return this.bytes.subarray(0, this.pos);\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    /**\n     * @returns Encodes the object and returns a copy of the encoder's internal buffer.\n     */\n    encode(object) {\n        if (this.entered) {\n            const instance = this.clone();\n            return instance.encode(object);\n        }\n        try {\n            this.entered = true;\n            this.reinitializeState();\n            this.doEncode(object, 1);\n            return this.bytes.slice(0, this.pos);\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    doEncode(object, depth) {\n        if (depth > this.maxDepth) {\n            throw new Error(`Too deep objects in depth ${depth}`);\n        }\n        if (object == null) {\n            this.encodeNil();\n        }\n        else if (typeof object === \"boolean\") {\n            this.encodeBoolean(object);\n        }\n        else if (typeof object === \"number\") {\n            if (!this.forceIntegerToFloat) {\n                this.encodeNumber(object);\n            }\n            else {\n                this.encodeNumberAsFloat(object);\n            }\n        }\n        else if (typeof object === \"string\") {\n            this.encodeString(object);\n        }\n        else if (this.useBigInt64 && typeof object === \"bigint\") {\n            this.encodeBigInt64(object);\n        }\n        else {\n            this.encodeObject(object, depth);\n        }\n    }\n    ensureBufferSizeToWrite(sizeToWrite) {\n        const requiredSize = this.pos + sizeToWrite;\n        if (this.view.byteLength < requiredSize) {\n            this.resizeBuffer(requiredSize * 2);\n        }\n    }\n    resizeBuffer(newSize) {\n        const newBuffer = new ArrayBuffer(newSize);\n        const newBytes = new Uint8Array(newBuffer);\n        const newView = new DataView(newBuffer);\n        newBytes.set(this.bytes);\n        this.view = newView;\n        this.bytes = newBytes;\n    }\n    encodeNil() {\n        this.writeU8(0xc0);\n    }\n    encodeBoolean(object) {\n        if (object === false) {\n            this.writeU8(0xc2);\n        }\n        else {\n            this.writeU8(0xc3);\n        }\n    }\n    encodeNumber(object) {\n        if (!this.forceIntegerToFloat && Number.isSafeInteger(object)) {\n            if (object >= 0) {\n                if (object < 0x80) {\n                    // positive fixint\n                    this.writeU8(object);\n                }\n                else if (object < 0x100) {\n                    // uint 8\n                    this.writeU8(0xcc);\n                    this.writeU8(object);\n                }\n                else if (object < 0x10000) {\n                    // uint 16\n                    this.writeU8(0xcd);\n                    this.writeU16(object);\n                }\n                else if (object < 0x100000000) {\n                    // uint 32\n                    this.writeU8(0xce);\n                    this.writeU32(object);\n                }\n                else if (!this.useBigInt64) {\n                    // uint 64\n                    this.writeU8(0xcf);\n                    this.writeU64(object);\n                }\n                else {\n                    this.encodeNumberAsFloat(object);\n                }\n            }\n            else {\n                if (object >= -0x20) {\n                    // negative fixint\n                    this.writeU8(0xe0 | (object + 0x20));\n                }\n                else if (object >= -0x80) {\n                    // int 8\n                    this.writeU8(0xd0);\n                    this.writeI8(object);\n                }\n                else if (object >= -0x8000) {\n                    // int 16\n                    this.writeU8(0xd1);\n                    this.writeI16(object);\n                }\n                else if (object >= -0x80000000) {\n                    // int 32\n                    this.writeU8(0xd2);\n                    this.writeI32(object);\n                }\n                else if (!this.useBigInt64) {\n                    // int 64\n                    this.writeU8(0xd3);\n                    this.writeI64(object);\n                }\n                else {\n                    this.encodeNumberAsFloat(object);\n                }\n            }\n        }\n        else {\n            this.encodeNumberAsFloat(object);\n        }\n    }\n    encodeNumberAsFloat(object) {\n        if (this.forceFloat32) {\n            // float 32\n            this.writeU8(0xca);\n            this.writeF32(object);\n        }\n        else {\n            // float 64\n            this.writeU8(0xcb);\n            this.writeF64(object);\n        }\n    }\n    encodeBigInt64(object) {\n        if (object >= BigInt(0)) {\n            // uint 64\n            this.writeU8(0xcf);\n            this.writeBigUint64(object);\n        }\n        else {\n            // int 64\n            this.writeU8(0xd3);\n            this.writeBigInt64(object);\n        }\n    }\n    writeStringHeader(byteLength) {\n        if (byteLength < 32) {\n            // fixstr\n            this.writeU8(0xa0 + byteLength);\n        }\n        else if (byteLength < 0x100) {\n            // str 8\n            this.writeU8(0xd9);\n            this.writeU8(byteLength);\n        }\n        else if (byteLength < 0x10000) {\n            // str 16\n            this.writeU8(0xda);\n            this.writeU16(byteLength);\n        }\n        else if (byteLength < 0x100000000) {\n            // str 32\n            this.writeU8(0xdb);\n            this.writeU32(byteLength);\n        }\n        else {\n            throw new Error(`Too long string: ${byteLength} bytes in UTF-8`);\n        }\n    }\n    encodeString(object) {\n        const maxHeaderSize = 1 + 4;\n        const byteLength = utf8Count(object);\n        this.ensureBufferSizeToWrite(maxHeaderSize + byteLength);\n        this.writeStringHeader(byteLength);\n        utf8Encode(object, this.bytes, this.pos);\n        this.pos += byteLength;\n    }\n    encodeObject(object, depth) {\n        // try to encode objects with custom codec first of non-primitives\n        const ext = this.extensionCodec.tryToEncode(object, this.context);\n        if (ext != null) {\n            this.encodeExtension(ext);\n        }\n        else if (Array.isArray(object)) {\n            this.encodeArray(object, depth);\n        }\n        else if (ArrayBuffer.isView(object)) {\n            this.encodeBinary(object);\n        }\n        else if (typeof object === \"object\") {\n            this.encodeMap(object, depth);\n        }\n        else {\n            // symbol, function and other special object come here unless extensionCodec handles them.\n            throw new Error(`Unrecognized object: ${Object.prototype.toString.apply(object)}`);\n        }\n    }\n    encodeBinary(object) {\n        const size = object.byteLength;\n        if (size < 0x100) {\n            // bin 8\n            this.writeU8(0xc4);\n            this.writeU8(size);\n        }\n        else if (size < 0x10000) {\n            // bin 16\n            this.writeU8(0xc5);\n            this.writeU16(size);\n        }\n        else if (size < 0x100000000) {\n            // bin 32\n            this.writeU8(0xc6);\n            this.writeU32(size);\n        }\n        else {\n            throw new Error(`Too large binary: ${size}`);\n        }\n        const bytes = ensureUint8Array(object);\n        this.writeU8a(bytes);\n    }\n    encodeArray(object, depth) {\n        const size = object.length;\n        if (size < 16) {\n            // fixarray\n            this.writeU8(0x90 + size);\n        }\n        else if (size < 0x10000) {\n            // array 16\n            this.writeU8(0xdc);\n            this.writeU16(size);\n        }\n        else if (size < 0x100000000) {\n            // array 32\n            this.writeU8(0xdd);\n            this.writeU32(size);\n        }\n        else {\n            throw new Error(`Too large array: ${size}`);\n        }\n        for (const item of object) {\n            this.doEncode(item, depth + 1);\n        }\n    }\n    countWithoutUndefined(object, keys) {\n        let count = 0;\n        for (const key of keys) {\n            if (object[key] !== undefined) {\n                count++;\n            }\n        }\n        return count;\n    }\n    encodeMap(object, depth) {\n        const keys = Object.keys(object);\n        if (this.sortKeys) {\n            keys.sort();\n        }\n        const size = this.ignoreUndefined ? this.countWithoutUndefined(object, keys) : keys.length;\n        if (size < 16) {\n            // fixmap\n            this.writeU8(0x80 + size);\n        }\n        else if (size < 0x10000) {\n            // map 16\n            this.writeU8(0xde);\n            this.writeU16(size);\n        }\n        else if (size < 0x100000000) {\n            // map 32\n            this.writeU8(0xdf);\n            this.writeU32(size);\n        }\n        else {\n            throw new Error(`Too large map object: ${size}`);\n        }\n        for (const key of keys) {\n            const value = object[key];\n            if (!(this.ignoreUndefined && value === undefined)) {\n                this.encodeString(key);\n                this.doEncode(value, depth + 1);\n            }\n        }\n    }\n    encodeExtension(ext) {\n        if (typeof ext.data === \"function\") {\n            const data = ext.data(this.pos + 6);\n            const size = data.length;\n            if (size >= 0x100000000) {\n                throw new Error(`Too large extension object: ${size}`);\n            }\n            this.writeU8(0xc9);\n            this.writeU32(size);\n            this.writeI8(ext.type);\n            this.writeU8a(data);\n            return;\n        }\n        const size = ext.data.length;\n        if (size === 1) {\n            // fixext 1\n            this.writeU8(0xd4);\n        }\n        else if (size === 2) {\n            // fixext 2\n            this.writeU8(0xd5);\n        }\n        else if (size === 4) {\n            // fixext 4\n            this.writeU8(0xd6);\n        }\n        else if (size === 8) {\n            // fixext 8\n            this.writeU8(0xd7);\n        }\n        else if (size === 16) {\n            // fixext 16\n            this.writeU8(0xd8);\n        }\n        else if (size < 0x100) {\n            // ext 8\n            this.writeU8(0xc7);\n            this.writeU8(size);\n        }\n        else if (size < 0x10000) {\n            // ext 16\n            this.writeU8(0xc8);\n            this.writeU16(size);\n        }\n        else if (size < 0x100000000) {\n            // ext 32\n            this.writeU8(0xc9);\n            this.writeU32(size);\n        }\n        else {\n            throw new Error(`Too large extension object: ${size}`);\n        }\n        this.writeI8(ext.type);\n        this.writeU8a(ext.data);\n    }\n    writeU8(value) {\n        this.ensureBufferSizeToWrite(1);\n        this.view.setUint8(this.pos, value);\n        this.pos++;\n    }\n    writeU8a(values) {\n        const size = values.length;\n        this.ensureBufferSizeToWrite(size);\n        this.bytes.set(values, this.pos);\n        this.pos += size;\n    }\n    writeI8(value) {\n        this.ensureBufferSizeToWrite(1);\n        this.view.setInt8(this.pos, value);\n        this.pos++;\n    }\n    writeU16(value) {\n        this.ensureBufferSizeToWrite(2);\n        this.view.setUint16(this.pos, value);\n        this.pos += 2;\n    }\n    writeI16(value) {\n        this.ensureBufferSizeToWrite(2);\n        this.view.setInt16(this.pos, value);\n        this.pos += 2;\n    }\n    writeU32(value) {\n        this.ensureBufferSizeToWrite(4);\n        this.view.setUint32(this.pos, value);\n        this.pos += 4;\n    }\n    writeI32(value) {\n        this.ensureBufferSizeToWrite(4);\n        this.view.setInt32(this.pos, value);\n        this.pos += 4;\n    }\n    writeF32(value) {\n        this.ensureBufferSizeToWrite(4);\n        this.view.setFloat32(this.pos, value);\n        this.pos += 4;\n    }\n    writeF64(value) {\n        this.ensureBufferSizeToWrite(8);\n        this.view.setFloat64(this.pos, value);\n        this.pos += 8;\n    }\n    writeU64(value) {\n        this.ensureBufferSizeToWrite(8);\n        setUint64(this.view, this.pos, value);\n        this.pos += 8;\n    }\n    writeI64(value) {\n        this.ensureBufferSizeToWrite(8);\n        setInt64(this.view, this.pos, value);\n        this.pos += 8;\n    }\n    writeBigUint64(value) {\n        this.ensureBufferSizeToWrite(8);\n        this.view.setBigUint64(this.pos, value);\n        this.pos += 8;\n    }\n    writeBigInt64(value) {\n        this.ensureBufferSizeToWrite(8);\n        this.view.setBigInt64(this.pos, value);\n        this.pos += 8;\n    }\n}\n//# sourceMappingURL=Encoder.mjs.map","export function prettyByte(byte) {\n    return `${byte < 0 ? \"-\" : \"\"}0x${Math.abs(byte).toString(16).padStart(2, \"0\")}`;\n}\n//# sourceMappingURL=prettyByte.mjs.map","import { utf8DecodeJs } from \"./utils/utf8.mjs\";\nconst DEFAULT_MAX_KEY_LENGTH = 16;\nconst DEFAULT_MAX_LENGTH_PER_KEY = 16;\nexport class CachedKeyDecoder {\n    constructor(maxKeyLength = DEFAULT_MAX_KEY_LENGTH, maxLengthPerKey = DEFAULT_MAX_LENGTH_PER_KEY) {\n        this.hit = 0;\n        this.miss = 0;\n        this.maxKeyLength = maxKeyLength;\n        this.maxLengthPerKey = maxLengthPerKey;\n        // avoid `new Array(N)`, which makes a sparse array,\n        // because a sparse array is typically slower than a non-sparse array.\n        this.caches = [];\n        for (let i = 0; i < this.maxKeyLength; i++) {\n            this.caches.push([]);\n        }\n    }\n    canBeCached(byteLength) {\n        return byteLength > 0 && byteLength <= this.maxKeyLength;\n    }\n    find(bytes, inputOffset, byteLength) {\n        const records = this.caches[byteLength - 1];\n        FIND_CHUNK: for (const record of records) {\n            const recordBytes = record.bytes;\n            for (let j = 0; j < byteLength; j++) {\n                if (recordBytes[j] !== bytes[inputOffset + j]) {\n                    continue FIND_CHUNK;\n                }\n            }\n            return record.str;\n        }\n        return null;\n    }\n    store(bytes, value) {\n        const records = this.caches[bytes.length - 1];\n        const record = { bytes, str: value };\n        if (records.length >= this.maxLengthPerKey) {\n            // `records` are full!\n            // Set `record` to an arbitrary position.\n            records[(Math.random() * records.length) | 0] = record;\n        }\n        else {\n            records.push(record);\n        }\n    }\n    decode(bytes, inputOffset, byteLength) {\n        const cachedValue = this.find(bytes, inputOffset, byteLength);\n        if (cachedValue != null) {\n            this.hit++;\n            return cachedValue;\n        }\n        this.miss++;\n        const str = utf8DecodeJs(bytes, inputOffset, byteLength);\n        // Ensure to copy a slice of bytes because the bytes may be a NodeJS Buffer and Buffer#slice() returns a reference to its internal ArrayBuffer.\n        const slicedCopyOfBytes = Uint8Array.prototype.slice.call(bytes, inputOffset, inputOffset + byteLength);\n        this.store(slicedCopyOfBytes, str);\n        return str;\n    }\n}\n//# sourceMappingURL=CachedKeyDecoder.mjs.map","import { prettyByte } from \"./utils/prettyByte.mjs\";\nimport { ExtensionCodec } from \"./ExtensionCodec.mjs\";\nimport { getInt64, getUint64, UINT32_MAX } from \"./utils/int.mjs\";\nimport { utf8Decode } from \"./utils/utf8.mjs\";\nimport { ensureUint8Array } from \"./utils/typedArrays.mjs\";\nimport { CachedKeyDecoder } from \"./CachedKeyDecoder.mjs\";\nimport { DecodeError } from \"./DecodeError.mjs\";\nconst STATE_ARRAY = \"array\";\nconst STATE_MAP_KEY = \"map_key\";\nconst STATE_MAP_VALUE = \"map_value\";\nconst mapKeyConverter = (key) => {\n    if (typeof key === \"string\" || typeof key === \"number\") {\n        return key;\n    }\n    throw new DecodeError(\"The type of key must be string or number but \" + typeof key);\n};\nclass StackPool {\n    constructor() {\n        this.stack = [];\n        this.stackHeadPosition = -1;\n    }\n    get length() {\n        return this.stackHeadPosition + 1;\n    }\n    top() {\n        return this.stack[this.stackHeadPosition];\n    }\n    pushArrayState(size) {\n        const state = this.getUninitializedStateFromPool();\n        state.type = STATE_ARRAY;\n        state.position = 0;\n        state.size = size;\n        state.array = new Array(size);\n    }\n    pushMapState(size) {\n        const state = this.getUninitializedStateFromPool();\n        state.type = STATE_MAP_KEY;\n        state.readCount = 0;\n        state.size = size;\n        state.map = {};\n    }\n    getUninitializedStateFromPool() {\n        this.stackHeadPosition++;\n        if (this.stackHeadPosition === this.stack.length) {\n            const partialState = {\n                type: undefined,\n                size: 0,\n                array: undefined,\n                position: 0,\n                readCount: 0,\n                map: undefined,\n                key: null,\n            };\n            this.stack.push(partialState);\n        }\n        return this.stack[this.stackHeadPosition];\n    }\n    release(state) {\n        const topStackState = this.stack[this.stackHeadPosition];\n        if (topStackState !== state) {\n            throw new Error(\"Invalid stack state. Released state is not on top of the stack.\");\n        }\n        if (state.type === STATE_ARRAY) {\n            const partialState = state;\n            partialState.size = 0;\n            partialState.array = undefined;\n            partialState.position = 0;\n            partialState.type = undefined;\n        }\n        if (state.type === STATE_MAP_KEY || state.type === STATE_MAP_VALUE) {\n            const partialState = state;\n            partialState.size = 0;\n            partialState.map = undefined;\n            partialState.readCount = 0;\n            partialState.type = undefined;\n        }\n        this.stackHeadPosition--;\n    }\n    reset() {\n        this.stack.length = 0;\n        this.stackHeadPosition = -1;\n    }\n}\nconst HEAD_BYTE_REQUIRED = -1;\nconst EMPTY_VIEW = new DataView(new ArrayBuffer(0));\nconst EMPTY_BYTES = new Uint8Array(EMPTY_VIEW.buffer);\ntry {\n    // IE11: The spec says it should throw RangeError,\n    // IE11: but in IE11 it throws TypeError.\n    EMPTY_VIEW.getInt8(0);\n}\ncatch (e) {\n    if (!(e instanceof RangeError)) {\n        throw new Error(\"This module is not supported in the current JavaScript engine because DataView does not throw RangeError on out-of-bounds access\");\n    }\n}\nconst MORE_DATA = new RangeError(\"Insufficient data\");\nconst sharedCachedKeyDecoder = new CachedKeyDecoder();\nexport class Decoder {\n    constructor(options) {\n        this.totalPos = 0;\n        this.pos = 0;\n        this.view = EMPTY_VIEW;\n        this.bytes = EMPTY_BYTES;\n        this.headByte = HEAD_BYTE_REQUIRED;\n        this.stack = new StackPool();\n        this.entered = false;\n        this.extensionCodec = options?.extensionCodec ?? ExtensionCodec.defaultCodec;\n        this.context = options?.context; // needs a type assertion because EncoderOptions has no context property when ContextType is undefined\n        this.useBigInt64 = options?.useBigInt64 ?? false;\n        this.rawStrings = options?.rawStrings ?? false;\n        this.maxStrLength = options?.maxStrLength ?? UINT32_MAX;\n        this.maxBinLength = options?.maxBinLength ?? UINT32_MAX;\n        this.maxArrayLength = options?.maxArrayLength ?? UINT32_MAX;\n        this.maxMapLength = options?.maxMapLength ?? UINT32_MAX;\n        this.maxExtLength = options?.maxExtLength ?? UINT32_MAX;\n        this.keyDecoder = options?.keyDecoder !== undefined ? options.keyDecoder : sharedCachedKeyDecoder;\n        this.mapKeyConverter = options?.mapKeyConverter ?? mapKeyConverter;\n    }\n    clone() {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n        return new Decoder({\n            extensionCodec: this.extensionCodec,\n            context: this.context,\n            useBigInt64: this.useBigInt64,\n            rawStrings: this.rawStrings,\n            maxStrLength: this.maxStrLength,\n            maxBinLength: this.maxBinLength,\n            maxArrayLength: this.maxArrayLength,\n            maxMapLength: this.maxMapLength,\n            maxExtLength: this.maxExtLength,\n            keyDecoder: this.keyDecoder,\n        });\n    }\n    reinitializeState() {\n        this.totalPos = 0;\n        this.headByte = HEAD_BYTE_REQUIRED;\n        this.stack.reset();\n        // view, bytes, and pos will be re-initialized in setBuffer()\n    }\n    setBuffer(buffer) {\n        const bytes = ensureUint8Array(buffer);\n        this.bytes = bytes;\n        this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n        this.pos = 0;\n    }\n    appendBuffer(buffer) {\n        if (this.headByte === HEAD_BYTE_REQUIRED && !this.hasRemaining(1)) {\n            this.setBuffer(buffer);\n        }\n        else {\n            const remainingData = this.bytes.subarray(this.pos);\n            const newData = ensureUint8Array(buffer);\n            // concat remainingData + newData\n            const newBuffer = new Uint8Array(remainingData.length + newData.length);\n            newBuffer.set(remainingData);\n            newBuffer.set(newData, remainingData.length);\n            this.setBuffer(newBuffer);\n        }\n    }\n    hasRemaining(size) {\n        return this.view.byteLength - this.pos >= size;\n    }\n    createExtraByteError(posToShow) {\n        const { view, pos } = this;\n        return new RangeError(`Extra ${view.byteLength - pos} of ${view.byteLength} byte(s) found at buffer[${posToShow}]`);\n    }\n    /**\n     * @throws {@link DecodeError}\n     * @throws {@link RangeError}\n     */\n    decode(buffer) {\n        if (this.entered) {\n            const instance = this.clone();\n            return instance.decode(buffer);\n        }\n        try {\n            this.entered = true;\n            this.reinitializeState();\n            this.setBuffer(buffer);\n            const object = this.doDecodeSync();\n            if (this.hasRemaining(1)) {\n                throw this.createExtraByteError(this.pos);\n            }\n            return object;\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    *decodeMulti(buffer) {\n        if (this.entered) {\n            const instance = this.clone();\n            yield* instance.decodeMulti(buffer);\n            return;\n        }\n        try {\n            this.entered = true;\n            this.reinitializeState();\n            this.setBuffer(buffer);\n            while (this.hasRemaining(1)) {\n                yield this.doDecodeSync();\n            }\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    async decodeAsync(stream) {\n        if (this.entered) {\n            const instance = this.clone();\n            return instance.decodeAsync(stream);\n        }\n        try {\n            this.entered = true;\n            let decoded = false;\n            let object;\n            for await (const buffer of stream) {\n                if (decoded) {\n                    this.entered = false;\n                    throw this.createExtraByteError(this.totalPos);\n                }\n                this.appendBuffer(buffer);\n                try {\n                    object = this.doDecodeSync();\n                    decoded = true;\n                }\n                catch (e) {\n                    if (!(e instanceof RangeError)) {\n                        throw e; // rethrow\n                    }\n                    // fallthrough\n                }\n                this.totalPos += this.pos;\n            }\n            if (decoded) {\n                if (this.hasRemaining(1)) {\n                    throw this.createExtraByteError(this.totalPos);\n                }\n                return object;\n            }\n            const { headByte, pos, totalPos } = this;\n            throw new RangeError(`Insufficient data in parsing ${prettyByte(headByte)} at ${totalPos} (${pos} in the current buffer)`);\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    decodeArrayStream(stream) {\n        return this.decodeMultiAsync(stream, true);\n    }\n    decodeStream(stream) {\n        return this.decodeMultiAsync(stream, false);\n    }\n    async *decodeMultiAsync(stream, isArray) {\n        if (this.entered) {\n            const instance = this.clone();\n            yield* instance.decodeMultiAsync(stream, isArray);\n            return;\n        }\n        try {\n            this.entered = true;\n            let isArrayHeaderRequired = isArray;\n            let arrayItemsLeft = -1;\n            for await (const buffer of stream) {\n                if (isArray && arrayItemsLeft === 0) {\n                    throw this.createExtraByteError(this.totalPos);\n                }\n                this.appendBuffer(buffer);\n                if (isArrayHeaderRequired) {\n                    arrayItemsLeft = this.readArraySize();\n                    isArrayHeaderRequired = false;\n                    this.complete();\n                }\n                try {\n                    while (true) {\n                        yield this.doDecodeSync();\n                        if (--arrayItemsLeft === 0) {\n                            break;\n                        }\n                    }\n                }\n                catch (e) {\n                    if (!(e instanceof RangeError)) {\n                        throw e; // rethrow\n                    }\n                    // fallthrough\n                }\n                this.totalPos += this.pos;\n            }\n        }\n        finally {\n            this.entered = false;\n        }\n    }\n    doDecodeSync() {\n        DECODE: while (true) {\n            const headByte = this.readHeadByte();\n            let object;\n            if (headByte >= 0xe0) {\n                // negative fixint (111x xxxx) 0xe0 - 0xff\n                object = headByte - 0x100;\n            }\n            else if (headByte < 0xc0) {\n                if (headByte < 0x80) {\n                    // positive fixint (0xxx xxxx) 0x00 - 0x7f\n                    object = headByte;\n                }\n                else if (headByte < 0x90) {\n                    // fixmap (1000 xxxx) 0x80 - 0x8f\n                    const size = headByte - 0x80;\n                    if (size !== 0) {\n                        this.pushMapState(size);\n                        this.complete();\n                        continue DECODE;\n                    }\n                    else {\n                        object = {};\n                    }\n                }\n                else if (headByte < 0xa0) {\n                    // fixarray (1001 xxxx) 0x90 - 0x9f\n                    const size = headByte - 0x90;\n                    if (size !== 0) {\n                        this.pushArrayState(size);\n                        this.complete();\n                        continue DECODE;\n                    }\n                    else {\n                        object = [];\n                    }\n                }\n                else {\n                    // fixstr (101x xxxx) 0xa0 - 0xbf\n                    const byteLength = headByte - 0xa0;\n                    object = this.decodeString(byteLength, 0);\n                }\n            }\n            else if (headByte === 0xc0) {\n                // nil\n                object = null;\n            }\n            else if (headByte === 0xc2) {\n                // false\n                object = false;\n            }\n            else if (headByte === 0xc3) {\n                // true\n                object = true;\n            }\n            else if (headByte === 0xca) {\n                // float 32\n                object = this.readF32();\n            }\n            else if (headByte === 0xcb) {\n                // float 64\n                object = this.readF64();\n            }\n            else if (headByte === 0xcc) {\n                // uint 8\n                object = this.readU8();\n            }\n            else if (headByte === 0xcd) {\n                // uint 16\n                object = this.readU16();\n            }\n            else if (headByte === 0xce) {\n                // uint 32\n                object = this.readU32();\n            }\n            else if (headByte === 0xcf) {\n                // uint 64\n                if (this.useBigInt64) {\n                    object = this.readU64AsBigInt();\n                }\n                else {\n                    object = this.readU64();\n                }\n            }\n            else if (headByte === 0xd0) {\n                // int 8\n                object = this.readI8();\n            }\n            else if (headByte === 0xd1) {\n                // int 16\n                object = this.readI16();\n            }\n            else if (headByte === 0xd2) {\n                // int 32\n                object = this.readI32();\n            }\n            else if (headByte === 0xd3) {\n                // int 64\n                if (this.useBigInt64) {\n                    object = this.readI64AsBigInt();\n                }\n                else {\n                    object = this.readI64();\n                }\n            }\n            else if (headByte === 0xd9) {\n                // str 8\n                const byteLength = this.lookU8();\n                object = this.decodeString(byteLength, 1);\n            }\n            else if (headByte === 0xda) {\n                // str 16\n                const byteLength = this.lookU16();\n                object = this.decodeString(byteLength, 2);\n            }\n            else if (headByte === 0xdb) {\n                // str 32\n                const byteLength = this.lookU32();\n                object = this.decodeString(byteLength, 4);\n            }\n            else if (headByte === 0xdc) {\n                // array 16\n                const size = this.readU16();\n                if (size !== 0) {\n                    this.pushArrayState(size);\n                    this.complete();\n                    continue DECODE;\n                }\n                else {\n                    object = [];\n                }\n            }\n            else if (headByte === 0xdd) {\n                // array 32\n                const size = this.readU32();\n                if (size !== 0) {\n                    this.pushArrayState(size);\n                    this.complete();\n                    continue DECODE;\n                }\n                else {\n                    object = [];\n                }\n            }\n            else if (headByte === 0xde) {\n                // map 16\n                const size = this.readU16();\n                if (size !== 0) {\n                    this.pushMapState(size);\n                    this.complete();\n                    continue DECODE;\n                }\n                else {\n                    object = {};\n                }\n            }\n            else if (headByte === 0xdf) {\n                // map 32\n                const size = this.readU32();\n                if (size !== 0) {\n                    this.pushMapState(size);\n                    this.complete();\n                    continue DECODE;\n                }\n                else {\n                    object = {};\n                }\n            }\n            else if (headByte === 0xc4) {\n                // bin 8\n                const size = this.lookU8();\n                object = this.decodeBinary(size, 1);\n            }\n            else if (headByte === 0xc5) {\n                // bin 16\n                const size = this.lookU16();\n                object = this.decodeBinary(size, 2);\n            }\n            else if (headByte === 0xc6) {\n                // bin 32\n                const size = this.lookU32();\n                object = this.decodeBinary(size, 4);\n            }\n            else if (headByte === 0xd4) {\n                // fixext 1\n                object = this.decodeExtension(1, 0);\n            }\n            else if (headByte === 0xd5) {\n                // fixext 2\n                object = this.decodeExtension(2, 0);\n            }\n            else if (headByte === 0xd6) {\n                // fixext 4\n                object = this.decodeExtension(4, 0);\n            }\n            else if (headByte === 0xd7) {\n                // fixext 8\n                object = this.decodeExtension(8, 0);\n            }\n            else if (headByte === 0xd8) {\n                // fixext 16\n                object = this.decodeExtension(16, 0);\n            }\n            else if (headByte === 0xc7) {\n                // ext 8\n                const size = this.lookU8();\n                object = this.decodeExtension(size, 1);\n            }\n            else if (headByte === 0xc8) {\n                // ext 16\n                const size = this.lookU16();\n                object = this.decodeExtension(size, 2);\n            }\n            else if (headByte === 0xc9) {\n                // ext 32\n                const size = this.lookU32();\n                object = this.decodeExtension(size, 4);\n            }\n            else {\n                throw new DecodeError(`Unrecognized type byte: ${prettyByte(headByte)}`);\n            }\n            this.complete();\n            const stack = this.stack;\n            while (stack.length > 0) {\n                // arrays and maps\n                const state = stack.top();\n                if (state.type === STATE_ARRAY) {\n                    state.array[state.position] = object;\n                    state.position++;\n                    if (state.position === state.size) {\n                        object = state.array;\n                        stack.release(state);\n                    }\n                    else {\n                        continue DECODE;\n                    }\n                }\n                else if (state.type === STATE_MAP_KEY) {\n                    if (object === \"__proto__\") {\n                        throw new DecodeError(\"The key __proto__ is not allowed\");\n                    }\n                    state.key = this.mapKeyConverter(object);\n                    state.type = STATE_MAP_VALUE;\n                    continue DECODE;\n                }\n                else {\n                    // it must be `state.type === State.MAP_VALUE` here\n                    state.map[state.key] = object;\n                    state.readCount++;\n                    if (state.readCount === state.size) {\n                        object = state.map;\n                        stack.release(state);\n                    }\n                    else {\n                        state.key = null;\n                        state.type = STATE_MAP_KEY;\n                        continue DECODE;\n                    }\n                }\n            }\n            return object;\n        }\n    }\n    readHeadByte() {\n        if (this.headByte === HEAD_BYTE_REQUIRED) {\n            this.headByte = this.readU8();\n            // console.log(\"headByte\", prettyByte(this.headByte));\n        }\n        return this.headByte;\n    }\n    complete() {\n        this.headByte = HEAD_BYTE_REQUIRED;\n    }\n    readArraySize() {\n        const headByte = this.readHeadByte();\n        switch (headByte) {\n            case 0xdc:\n                return this.readU16();\n            case 0xdd:\n                return this.readU32();\n            default: {\n                if (headByte < 0xa0) {\n                    return headByte - 0x90;\n                }\n                else {\n                    throw new DecodeError(`Unrecognized array type byte: ${prettyByte(headByte)}`);\n                }\n            }\n        }\n    }\n    pushMapState(size) {\n        if (size > this.maxMapLength) {\n            throw new DecodeError(`Max length exceeded: map length (${size}) > maxMapLengthLength (${this.maxMapLength})`);\n        }\n        this.stack.pushMapState(size);\n    }\n    pushArrayState(size) {\n        if (size > this.maxArrayLength) {\n            throw new DecodeError(`Max length exceeded: array length (${size}) > maxArrayLength (${this.maxArrayLength})`);\n        }\n        this.stack.pushArrayState(size);\n    }\n    decodeString(byteLength, headerOffset) {\n        if (!this.rawStrings || this.stateIsMapKey()) {\n            return this.decodeUtf8String(byteLength, headerOffset);\n        }\n        return this.decodeBinary(byteLength, headerOffset);\n    }\n    /**\n     * @throws {@link RangeError}\n     */\n    decodeUtf8String(byteLength, headerOffset) {\n        if (byteLength > this.maxStrLength) {\n            throw new DecodeError(`Max length exceeded: UTF-8 byte length (${byteLength}) > maxStrLength (${this.maxStrLength})`);\n        }\n        if (this.bytes.byteLength < this.pos + headerOffset + byteLength) {\n            throw MORE_DATA;\n        }\n        const offset = this.pos + headerOffset;\n        let object;\n        if (this.stateIsMapKey() && this.keyDecoder?.canBeCached(byteLength)) {\n            object = this.keyDecoder.decode(this.bytes, offset, byteLength);\n        }\n        else {\n            object = utf8Decode(this.bytes, offset, byteLength);\n        }\n        this.pos += headerOffset + byteLength;\n        return object;\n    }\n    stateIsMapKey() {\n        if (this.stack.length > 0) {\n            const state = this.stack.top();\n            return state.type === STATE_MAP_KEY;\n        }\n        return false;\n    }\n    /**\n     * @throws {@link RangeError}\n     */\n    decodeBinary(byteLength, headOffset) {\n        if (byteLength > this.maxBinLength) {\n            throw new DecodeError(`Max length exceeded: bin length (${byteLength}) > maxBinLength (${this.maxBinLength})`);\n        }\n        if (!this.hasRemaining(byteLength + headOffset)) {\n            throw MORE_DATA;\n        }\n        const offset = this.pos + headOffset;\n        const object = this.bytes.subarray(offset, offset + byteLength);\n        this.pos += headOffset + byteLength;\n        return object;\n    }\n    decodeExtension(size, headOffset) {\n        if (size > this.maxExtLength) {\n            throw new DecodeError(`Max length exceeded: ext length (${size}) > maxExtLength (${this.maxExtLength})`);\n        }\n        const extType = this.view.getInt8(this.pos + headOffset);\n        const data = this.decodeBinary(size, headOffset + 1 /* extType */);\n        return this.extensionCodec.decode(data, extType, this.context);\n    }\n    lookU8() {\n        return this.view.getUint8(this.pos);\n    }\n    lookU16() {\n        return this.view.getUint16(this.pos);\n    }\n    lookU32() {\n        return this.view.getUint32(this.pos);\n    }\n    readU8() {\n        const value = this.view.getUint8(this.pos);\n        this.pos++;\n        return value;\n    }\n    readI8() {\n        const value = this.view.getInt8(this.pos);\n        this.pos++;\n        return value;\n    }\n    readU16() {\n        const value = this.view.getUint16(this.pos);\n        this.pos += 2;\n        return value;\n    }\n    readI16() {\n        const value = this.view.getInt16(this.pos);\n        this.pos += 2;\n        return value;\n    }\n    readU32() {\n        const value = this.view.getUint32(this.pos);\n        this.pos += 4;\n        return value;\n    }\n    readI32() {\n        const value = this.view.getInt32(this.pos);\n        this.pos += 4;\n        return value;\n    }\n    readU64() {\n        const value = getUint64(this.view, this.pos);\n        this.pos += 8;\n        return value;\n    }\n    readI64() {\n        const value = getInt64(this.view, this.pos);\n        this.pos += 8;\n        return value;\n    }\n    readU64AsBigInt() {\n        const value = this.view.getBigUint64(this.pos);\n        this.pos += 8;\n        return value;\n    }\n    readI64AsBigInt() {\n        const value = this.view.getBigInt64(this.pos);\n        this.pos += 8;\n        return value;\n    }\n    readF32() {\n        const value = this.view.getFloat32(this.pos);\n        this.pos += 4;\n        return value;\n    }\n    readF64() {\n        const value = this.view.getFloat64(this.pos);\n        this.pos += 8;\n        return value;\n    }\n}\n//# sourceMappingURL=Decoder.mjs.map","import type { PilotSheetLocalSettingsData } from \"@/interfaces/settings/PilotSheetLocalSettingsData\";\n\nexport class PilotSheetLocalSettings implements PilotSheetLocalSettingsData\n{\n    [uuid: string]: {\n        sidebarRatio: number;\n    };\n\n    static emptyContent()\n    {\n        return {\n            sidebarRatio: 1,\n        }\n    }\n}","// Buttons that are not macros but baked as flows in the system\n// These are used for the button factory so that removing them from \n// the sheets does not permanently lose them\nexport enum SystemButton\n{\n    Stabilize = \"Stabilize\",\n    Overcharge = \"Overcharge\",\n    BasicAttack = \"BasicAttack\",\n    Damage = \"Damage\",\n    TechAttack = \"TechAttack\",\n    SkillTriggerOther = \"SkillTriggerOther\",\n}","import { SystemButton } from \"@/enums/SystemButton\";\nimport type { PilotSheetSettingsData } from \"@/interfaces/settings/PilotSheetSettingsData\";\n\nexport class PilotSheetSettings implements PilotSheetSettingsData\n{\n    [uuid: string]: {\n        headerImgOffsetY: number;\n        headerImgOffsetX: number;\n        headerImgWidth: number;\n        themeOverride: string;\n        sidebarExes: Array<string>;\n        bondImageSrc: string;\n        syncActorTokenImages: boolean;\n    };\n\n    static emptyContent()\n    {\n        return {\n            headerImgOffsetY: 0,\n            headerImgOffsetX: 0,\n            headerImgWidth: 0,\n            themeOverride: \"\",\n            sidebarExes: [\n                SystemButton.SkillTriggerOther,\n                SystemButton.BasicAttack,\n                SystemButton.Damage,\n            ],\n            bondImageSrc: \"modules/lancer-alternative-sheets/assets/nobond.webp\",\n            syncActorTokenImages: true,\n        }\n    }\n}","import { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { Logger } from \"@/classes/Logger\";\n\nexport class SocketManager \n{\n    private static instance: SocketManager;\n    public static getInstance(): SocketManager\n    {\n        if (!SocketManager.instance)\n        {\n            SocketManager.instance = new SocketManager();\n        }\n        return SocketManager.instance;\n    }\n\n    private socketName: string = `module.${LancerAlternative.Name}`;\n    private socket: io.Socket;\n    private registeredFunctions: Map<string, (...args: any[]) => any> = new Map();\n    private awaitingResponse: Map<string, (data: any) => any> = new Map();\n\n    private constructor()\n    {\n        if (!game.socket)\n        {\n            throw new Error(\"Lancer Alternative Sheets: SocketManager initialized before Foundry socket is available.\");\n        }\n        this.socket = game.socket;\n        this.socket.on(\n            this.socketName,\n            (\n                data: any,\n                caller: string\n            ) =>\n            {\n                if (data.type === \"GM\" && game.user.isGM)\n                {\n                    //@ts-expect-error\n                    Logger.log(`GM proxy for ${data.func} requested by ${game.users?.get(caller).name}`, data);\n\n                    const func = this.registeredFunctions.get(data.func);\n                    if (!func)\n                    {\n                        Logger.error(`Function ${data.func} is not registered.`);\n                        return;\n                    }\n                    const response = func(...data.args);\n                    if (data.responseID)\n                        this.handleResponse(response, data);\n                }\n                else if (data.type === \"response\")\n                {\n                    const callback = this.awaitingResponse.get(data.responseID);\n                    if (!callback)\n                    {\n                        return;\n                    }\n                    Logger.log(`Response for ${data.func} received`, data.args);\n                    callback(data.args);\n                    this.awaitingResponse.delete(data.func);\n                }\n            });\n    }\n\n    private handleResponse(response: any, data: any)\n    {\n        if (response instanceof Promise)\n        {\n            Logger.log(`GM proxy for ${data.func} is a promise, waiting for resolution...`);\n            response.then((resolvedResponse) =>\n            {\n                if (data.responseID)\n                {\n                    this.socket.emit(\n                        this.socketName,\n                        {\n                            type: \"response\",\n                            func: data.func,\n                            args: resolvedResponse,\n                            responseID: data.responseID,\n                        }\n                    );\n                }\n                Logger.log(`GM proxy for ${data.func} resolved`, resolvedResponse);\n            }).catch((error) =>\n            {\n                Logger.error(`Error in GM proxy function ${data.func}:`, error);\n            });\n        }\n        else\n        {\n            this.socket.emit(\n                this.socketName,\n                {\n                    type: \"response\",\n                    func: data.func,\n                    args: response,\n                    responseID: data.responseID,\n                }\n            );\n        }\n    }\n\n    public register(func: (...args: any[]) => void)\n    {\n        if (this.registeredFunctions.has(func.name))\n        {\n            Logger.error(`Function ${func.name} is already registered.`);\n            return;\n        }\n        const wrappedCallback = (...args: any[]) => func(...args);\n        this.registeredFunctions.set(func.name, wrappedCallback);\n\n        Logger.log(`Registered socket function ${func.name}`);\n    }\n\n    public unregister(func: (...args: any[]) => void)\n    {\n        const wrappedCallback = this.registeredFunctions.get(func.name);\n        if (!wrappedCallback)\n        {\n            Logger.error(`Function ${func.name} is not registered.`);\n            return;\n        }\n        this.registeredFunctions.delete(func.name);\n    }\n\n    public runAsGM(func: (...args: any[]) => any, callback?: (data: any) => any, ...args: any[])\n    {\n        if (game.user.isGM)\n        {\n            const response = func(...args);\n            if (callback)\n            {\n                if (response instanceof Promise)\n                {\n                    response.then((resolvedResponse) =>\n                    {\n                        callback(resolvedResponse);\n                    }).catch((error) =>\n                    {\n                        Logger.error(`Error in ${func.name}:`, error);\n                    });\n                }\n                else\n                {\n                    callback(response);\n                }\n            }\n            return;\n        }\n        if (!game.users.activeGM)\n        {\n            Logger.error(`An active GM must be online to run GM-proxied functions`);\n            return;\n        }\n\n        Logger.log(`Requested GM proxy for ${func.name}`, args);\n        let responseID = undefined;\n        if (callback)\n        {\n            responseID = foundry.utils.randomID(16);\n            this.awaitingResponse.set(responseID, callback);\n        }\n\n        this.socket.emit(\n            this.socketName,\n            {\n                type: \"GM\",\n                func: func.name,\n                args: args,\n                responseID: responseID,\n            }\n        );\n    }\n}","import { Logger } from \"@/classes/Logger\";\nimport { PilotSheetLocalSettings } from \"@/classes/settings/PilotSheetLocalSettings\";\nimport { PilotSheetSettings } from \"@/classes/settings/PilotSheetSettings\";\nimport { SocketManager } from \"@/classes/SocketManager\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { getModuleVersion } from \"@/scripts/helpers\";\nimport { msgPackDecoder, msgPackEncoder } from \"@/scripts/settings\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\n\nexport class PilotSheetSettingsSubmenu extends foundry.applications.api.HandlebarsApplicationMixin(\n    foundry.applications.api.ApplicationV2\n)\n{\n    static override DEFAULT_OPTIONS: foundry.applications.api.ApplicationV2.DefaultOptions = {\n        id: \"la-pilot-settings-submenu\",\n        tag: \"form\",\n        window: {\n            title: \"LA.SETTINGS.pilot.label\",\n            icon: \"fas fa-gear\",\n            contentClasses: [\"standard-form\"],\n        },\n        position: {\n            width: 600,\n        },\n        form: {\n            handler: PilotSheetSettingsSubmenu.#onSubmit,\n            closeOnSubmit: true,\n            submitOnChange: false,\n        },\n        actions: {\n            resetLocalData: PilotSheetSettingsSubmenu.#onResetLocalData,\n            resetServerData: PilotSheetSettingsSubmenu.#onResetServerData,\n        },\n    };\n\n    static override PARTS: Record<string, foundry.applications.api.HandlebarsApplicationMixin.HandlebarsTemplatePart> = {\n        body: {\n            template: TEMPLATE_PATHS.pilotSettingsSubmenu,\n        },\n        footer: {\n            template: \"templates/generic/form-footer.hbs\",\n        },\n    };\n\n    // Return type is `any` to work around the opaque generic RenderContext in the mixin\n    protected override async _prepareContext(\n        _options: object\n    ): Promise<any>\n    {\n        return {\n            tip: game.settings.get(LancerAlternative.Name, `pilot-settings-tip`) as boolean,\n            logHeader: game.settings.get(LancerAlternative.Name, `pilot-settings-log-header`) as boolean,\n            logActionSidebar: game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-sidebar`) as boolean,\n            saveCollapse: game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-save-collapse`) as boolean,\n            startCollapsed: game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-start-collapsed`) as boolean,\n            enableSensors: game.settings.get(LancerAlternative.Name, `pilot-settings-enable-sensors`) as boolean,\n            enableTechAttack: game.settings.get(LancerAlternative.Name, `pilot-settings-enable-tech-attack`) as boolean,\n            isGM: game.user.isGM,\n            buttons: [\n                { type: \"submit\", icon: \"fa-solid fa-floppy-disk\", label: \"SETTINGS.Save\" },\n            ],\n        };\n    }\n\n    static #onResetLocalData(\n        this: PilotSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        resetPilotSheetLocalData();\n    }\n\n    static #onResetServerData(\n        this: PilotSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        resetPilotSheetData();\n    }\n\n    static async #onSubmit(\n        _event: SubmitEvent | Event,\n        _form: HTMLFormElement,\n        formData: foundry.applications.ux.FormDataExtended,\n    ): Promise<void>\n    {\n        const data = formData.object;\n        const promises: Promise<unknown>[] = [\n            game.settings.set(LancerAlternative.Name, `pilot-settings-tip`, data[\"tip\"] === true),\n            game.settings.set(LancerAlternative.Name, `pilot-settings-log-header`, data[\"logHeader\"] === true),\n            game.settings.set(LancerAlternative.Name, `pilot-settings-log-action-sidebar`, data[\"logActionSidebar\"] === true),\n            game.settings.set(LancerAlternative.Name, `pilot-settings-log-action-save-collapse`, data[\"saveCollapse\"] === true),\n            game.settings.set(LancerAlternative.Name, `pilot-settings-log-action-start-collapsed`, data[\"startCollapsed\"] === true),\n        ];\n        if (game.user.isGM)\n        {\n            promises.push(\n                game.settings.set(LancerAlternative.Name, `pilot-settings-enable-sensors`, data[\"enableSensors\"] === true),\n                game.settings.set(LancerAlternative.Name, `pilot-settings-enable-tech-attack`, data[\"enableTechAttack\"] === true),\n            );\n        }\n        await Promise.all(promises);\n    }\n}\n\nexport function registerPilotSheetSettings()\n{\n    // Public Settings\n    game.settings.register(LancerAlternative.Name, `pilot-settings-tip`, {\n        name: \"LA.SETTINGS.pilot.enableTooltip.label\",\n        hint: \"LA.SETTINGS.pilot.enableTooltip.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-log-header`, {\n        name: \"LA.SETTINGS.pilot.enableHeaderLog.label\",\n        hint: \"LA.SETTINGS.pilot.enableHeaderLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-log-action-sidebar`, {\n        name: \"LA.SETTINGS.pilot.enableSidebarActionLog.label\",\n        hint: \"LA.SETTINGS.pilot.enableSidebarActionLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-log-action-save-collapse`, {\n        name: \"LA.SETTINGS.pilot.saveCollapse.label\",\n        hint: \"LA.SETTINGS.pilot.saveCollapse.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-log-action-start-collapsed`, {\n        name: \"LA.SETTINGS.pilot.startCollapsed.label\",\n        hint: \"LA.SETTINGS.pilot.startCollapsed.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-enable-sensors`, {\n        name: \"LA.SETTINGS.pilot.enableSensors.label\",\n        hint: \"LA.SETTINGS.pilot.enableSensors.subLabel\",\n        scope: \"world\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `pilot-settings-enable-tech-attack`, {\n        name: \"LA.SETTINGS.pilot.enableTechAttack.label\",\n        hint: \"LA.SETTINGS.pilot.enableTechAttack.subLabel\",\n        scope: \"world\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    // Private Settings\n    game.settings.register(LancerAlternative.Name, `_pilot-settings-local`, {\n        scope: \"client\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    game.settings.register(LancerAlternative.Name, `_pilot-settings-local-version`, {\n        scope: \"client\",\n        config: false,\n        type: String, // JSON object\n        default: \"\",\n    });\n\n    game.settings.register(LancerAlternative.Name, `_pilot-settings`, {\n        scope: \"world\",\n        config: false,\n        type: Array, // MessagePack encoded object\n        default: [],\n    });\n\n    game.settings.register(LancerAlternative.Name, `_pilot-settings-version`, {\n        scope: \"world\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    // Sockets\n    SocketManager.getInstance().register(setPilotSheetData);\n}\n\n// Client Settings\nexport function getPilotSheetTooltipEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-tip`) as boolean;\n}\n\nexport function getPilotSheetLogHeaderEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-log-header`) as boolean;\n}\n\nexport function getPilotSheetLogActionSidebarEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-sidebar`) as boolean;\n}\n\nexport function getPilotSheetLogActionMainEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-main`) as boolean;\n}\n\nexport function getPilotSheetLogActionMainMaxHeight(): number\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-main-max-height`) as number;\n}\n\nexport function getPilotSheetLogActionDontSaveCollapse(): boolean\n{\n    // It is easier to maintain this code if this setting was inverted\n    // But semantically it makes more sense to have it worded the way it is\n    // Therefore, this setting is inverted in the UI\n    return !game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-save-collapse`) as boolean;\n}\n\nexport function getPilotSheetLogActionStartCollapsed(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-log-action-start-collapsed`) as boolean;\n}\n\n// RAW player pilots do not have sensors\nexport function getPilotSheetSensorsEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-enable-sensors`) as boolean;\n}\n\n// RAW player pilots do not have tech attacks\nexport function getPilotSheetTechAttackEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `pilot-settings-enable-tech-attack`) as boolean;\n}\n\n// Client Private Settings\nexport function resetPilotSheetLocalData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getPilotSheetLocalData();\n        if (data[uuid])\n            delete data[uuid];\n        setPilotSheetLocalData(data);\n    }\n    else\n    {\n        const data = new PilotSheetLocalSettings();\n        setPilotSheetLocalData(data);\n    }\n}\n\nexport function getPilotSheetLocalData()\n{\n    try\n    {\n        const settings = game.settings.get(LancerAlternative.Name, `_pilot-settings-local`) as string;\n        return JSON.parse(settings) as PilotSheetLocalSettings;\n    }\n    catch\n    {\n        return new PilotSheetLocalSettings();\n    }\n}\n\nexport function setPilotSheetLocalData(data: PilotSheetLocalSettings)\n{\n    const encoded = JSON.stringify(data);\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_pilot-settings-local`, encoded),\n        game.settings.set(LancerAlternative.Name, `_pilot-settings-local-version`, getModuleVersion()),\n    ])\n}\n\nexport function getSidebarRatio(uuid: string): number\n{\n    const data = getPilotSheetLocalData();\n    return data[uuid]?.sidebarRatio ?? 1;\n}\n\nexport function setSidebarRatio(uuid: string, value: number)\n{\n    const data = getPilotSheetLocalData();\n    if (!data[uuid])\n        data[uuid] = PilotSheetLocalSettings.emptyContent();\n    data[uuid].sidebarRatio = value;\n    setPilotSheetLocalData(data);\n}\n\n// World Private Settings\nexport function resetPilotSheetData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getPilotSheetData();\n        if (data[uuid])\n            delete data[uuid];\n        setPilotSheetData(encodePilotSheetData(data));\n    }\n    else\n    {\n        game.settings.set(LancerAlternative.Name, `_pilot-settings`, game.settings.settings.get(`${LancerAlternative.Name}._pilot-settings`)?.default);\n        game.settings.set(LancerAlternative.Name, `_pilot-settings-version`, game.settings.settings.get(`${LancerAlternative.Name}._pilot-settings-version`)?.default);\n    }\n}\n\nexport function getPilotSheetData()\n{\n    const settings = game.settings.get(LancerAlternative.Name, `_pilot-settings`) as Array<number>;\n    const version = game.settings.get(LancerAlternative.Name, `_pilot-settings-version`) as string;\n    if (!version || !settings.length)\n        return new PilotSheetSettings();\n    try\n    {\n        let encoded = new Uint8Array(Object.values(settings));\n        if (encoded.length === 1)\n        {\n            Logger.log(\"PilotSheetSettings: Decoding failed, trying legacy decode.\");\n            encoded = new Uint8Array(Object.values(settings[0]));\n        }\n        return msgPackDecoder.decode(encoded) as PilotSheetSettings;\n    }\n    catch\n    {\n        Logger.error(\"PilotSheetSettings: Decoding failed, returning empty settings.\");\n        return new PilotSheetSettings();\n    }\n}\n\n/**\n * If default behavior is ambiguous or a setting has a side effect that would affect the system \n * as a whole, determine the default settings in a more sophisticated way.\n * @param uuid \n * @param data \n */\nfunction migratedDefaults(uuid: string, data: PilotSheetSettings)\n{\n    const defaultSettings = PilotSheetSettings.emptyContent();\n    defaultSettings.syncActorTokenImages = determineActorTokenSync(uuid, data);\n    return defaultSettings;\n}\n\n\nexport function encodePilotSheetData(data: PilotSheetSettings): Array<number>\n{\n    const encoded: Uint8Array = msgPackEncoder.encode(data);\n    return Array.from(encoded);\n}\n\nexport function setPilotSheetData(encoded: Array<number>)\n{\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_pilot-settings`, encoded),\n        game.settings.set(LancerAlternative.Name, `_pilot-settings-version`, getModuleVersion()),\n    ]);\n}\n\nexport function setImageOffsetXY(uuid: string, x: number, y: number)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = x;\n    data[uuid].headerImgOffsetY = y;\n\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Image offset (X, Y) set to (${x}, ${y}) for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getImageOffsetY(uuid: string): number\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.headerImgOffsetY ?? 0;\n}\n\nexport function setImageOffsetY(uuid: string, value: number)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetY = value;\n\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Image offset Y set to ${value} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getImageOffsetX(uuid: string): number\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.headerImgOffsetX ?? 0;\n}\n\nexport function setImageOffsetX(uuid: string, value: number)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = value;\n\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Image offset X set to ${value} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getImageWidth(uuid: string): number\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.headerImgWidth ?? 0;\n}\n\nexport function setImageWidth(uuid: string, value: number)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgWidth = value;\n\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Image width set to ${value} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\n// Note that calling separate setImage functions requires callbacks to run in sequence, otherwise requests will get dropped\n// Which is mainly why this optimization function exists\nexport function setImageBatched(uuid: string, x: number, y: number, width: number)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = x;\n    data[uuid].headerImgOffsetY = y;\n    data[uuid].headerImgWidth = width;\n\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Image offset (X, Y) set to (${x}, ${y}) and width set to ${width} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getThemeOverride(uuid: string): string\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.themeOverride ?? \"\";\n}\n\nexport function setThemeOverride(uuid: string, value: string)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].themeOverride = value;\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Theme override set to ${value} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n    Hooks.call(\"laOverrideTheme\", uuid, value);\n}\n\nexport function getSidebarExecutables(uuid: string): Array<string>\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.sidebarExes ?? migratedDefaults(uuid, data).sidebarExes;\n}\n\nexport function setSidebarExecutables(uuid: string, macros: Array<string>)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].sidebarExes = macros;\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Sidebar executables set to ${macros.join(\", \")} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getBondImageSrc(uuid: string): string\n{\n    const data = getPilotSheetData();\n    return data[uuid]?.bondImageSrc ?? migratedDefaults(uuid, data).bondImageSrc;\n}\n\nexport function setBondImageSrc(uuid: string, src: string)\n{\n    const data = getPilotSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].bondImageSrc = src;\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () =>\n        {\n            Logger.log(`Bond image src set to ${src} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}\n\nexport function getActorTokenSync(uuid: string): boolean\n{\n    const data = getPilotSheetData();\n\n    return determineActorTokenSync(uuid, data);\n}\n\nfunction determineActorTokenSync(uuid: string, data: PilotSheetSettings): boolean\n{\n    // Find an appropriate default setting for token-actor image relationship \n    // if newly applying sheet or from old version\n    if (data[uuid]?.syncActorTokenImages === undefined || data[uuid]?.syncActorTokenImages === null)\n    {\n        Logger.log(\"Determining default syncActorTokenImages setting for a new or unsaved pilot/old module version\");\n        \n        const actor = fromUuidSync(uuid) as any;\n        if (actor.prototypeToken?.texture?.src && actor.img)\n            return actor.img === actor.prototypeToken.texture.src;\n        \n        return true;\n    }\n    else\n        return data[uuid].syncActorTokenImages;\n}\n\nexport function setActorTokenSync(uuid: string, value: boolean)\n{\n    const data = getPilotSheetData();\n\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n\n    data[uuid].syncActorTokenImages = value;\n    SocketManager.getInstance().runAsGM(\n        setPilotSheetData,\n        () => {\n            Logger.log(`Sync actor-token images set to ${value} for ${uuid}`);\n        },\n        encodePilotSheetData(data),\n    );\n}","import type { MechSheetLocalSettingsData } from \"@/interfaces/settings/MechSheetLocalSettingsData\";\n\nexport class MechSheetLocalSettings implements MechSheetLocalSettingsData\n{\n    [uuid: string]: {\n        sidebarRatio: number;\n    };\n\n    static emptyContent()\n    {\n        return {\n            sidebarRatio: 1,\n        }\n    }\n}","import { SystemButton } from \"@/enums/SystemButton\";\nimport type { MechSheetSettingsData } from \"@/interfaces/settings/MechSheetSettingsData\";\n\nexport class MechSheetSettings implements MechSheetSettingsData\n{\n    [uuid: string]: {\n        headerImgOffsetY: number;\n        headerImgOffsetX: number;\n        headerImgWidth: number;\n        themeOverride: string;\n        sidebarExes: Array<string>;\n        syncActorTokenImages: boolean;\n    };\n\n    static emptyContent()\n    {\n        return {\n            headerImgOffsetY: 0,\n            headerImgOffsetX: 0,\n            headerImgWidth: 0,\n            themeOverride: \"\",\n            sidebarExes: [\n                SystemButton.Stabilize,\n                SystemButton.Overcharge,\n                SystemButton.BasicAttack,\n                SystemButton.Damage,\n                SystemButton.TechAttack,\n            ],\n            syncActorTokenImages: true,\n        }\n    }\n}","import { Logger } from \"@/classes/Logger\";\nimport { MechSheetLocalSettings } from \"@/classes/settings/MechSheetLocalSettings\";\nimport { MechSheetSettings } from \"@/classes/settings/MechSheetSettings\";\nimport { SocketManager } from \"@/classes/SocketManager\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { getModuleVersion } from \"@/scripts/helpers\";\nimport { msgPackDecoder, msgPackEncoder } from \"@/scripts/settings\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\n\nexport class MechSheetSettingsSubmenu extends foundry.applications.api.HandlebarsApplicationMixin(\n    foundry.applications.api.ApplicationV2\n)\n{\n    static override DEFAULT_OPTIONS: foundry.applications.api.ApplicationV2.DefaultOptions = {\n        id: \"la-mech-settings-submenu\",\n        tag: \"form\",\n        window: {\n            title: \"LA.SETTINGS.mech.label\",\n            icon: \"fas fa-gear\",\n            contentClasses: [\"standard-form\"],\n        },\n        position: {\n            width: 600,\n        },\n        form: {\n            handler: MechSheetSettingsSubmenu.#onSubmit,\n            closeOnSubmit: true,\n            submitOnChange: false,\n        },\n        actions: {\n            resetLocalData: MechSheetSettingsSubmenu.#onResetLocalData,\n            resetServerData: MechSheetSettingsSubmenu.#onResetServerData,\n        },\n    };\n\n    static override PARTS: Record<string, foundry.applications.api.HandlebarsApplicationMixin.HandlebarsTemplatePart> = {\n        body: {\n            template: TEMPLATE_PATHS.mechSettingsSubmenu,\n        },\n        footer: {\n            template: \"templates/generic/form-footer.hbs\",\n        },\n    };\n\n    // Return type is `any` to work around the opaque generic RenderContext in the mixin\n    protected override async _prepareContext(\n        _options: object\n    ): Promise<any>\n    {\n        return {\n            tip: game.settings.get(LancerAlternative.Name, `mech-settings-tip`) as boolean,\n            logHeader: game.settings.get(LancerAlternative.Name, `mech-settings-log-header`) as boolean,\n            logActionSidebar: game.settings.get(LancerAlternative.Name, `mech-settings-log-action-sidebar`) as boolean,\n            logActionMain: game.settings.get(LancerAlternative.Name, `mech-settings-log-action-main`) as boolean,\n            logActionMainMaxHeight: game.settings.get(LancerAlternative.Name, `mech-settings-log-action-main-max-height`) as number,\n            saveCollapse: game.settings.get(LancerAlternative.Name, `mech-settings-log-action-save-collapse`) as boolean,\n            startCollapsed: game.settings.get(LancerAlternative.Name, `mech-settings-log-action-start-collapsed`) as boolean,\n            isGM: game.user.isGM,\n            buttons: [\n                { type: \"submit\", icon: \"fa-solid fa-floppy-disk\", label: \"SETTINGS.Save\" },\n            ],\n        };\n    }\n\n    static #onResetLocalData(\n        this: MechSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        resetMechSheetLocalData();\n    }\n\n    static #onResetServerData(\n        this: MechSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        if (!game.user.isGM) return;\n        resetMechSheetData();\n    }\n\n    static async #onSubmit(\n        _event: SubmitEvent | Event,\n        _form: HTMLFormElement,\n        formData: foundry.applications.ux.FormDataExtended,\n    ): Promise<void>\n    {\n        const data = formData.object;\n        await Promise.all([\n            game.settings.set(LancerAlternative.Name, `mech-settings-tip`, data[\"tip\"] === true),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-header`, data[\"logHeader\"] === true),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-action-sidebar`, data[\"logActionSidebar\"] === true),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-action-main`, data[\"logActionMain\"] === true),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-action-main-max-height`, Number(data[\"logActionMainMaxHeight\"])),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-action-save-collapse`, data[\"saveCollapse\"] === true),\n            game.settings.set(LancerAlternative.Name, `mech-settings-log-action-start-collapsed`, data[\"startCollapsed\"] === true),\n        ]);\n    }\n}\n\nexport function registerMechSheetSettings()\n{\n    // Public Settings\n    game.settings.register(LancerAlternative.Name, `mech-settings-tip`, {\n        name: \"LA.SETTINGS.mech.enableTooltip.label\",\n        hint: \"LA.SETTINGS.mech.enableTooltip.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-header`, {\n        name: \"LA.SETTINGS.mech.enableHeaderLog.label\",\n        hint: \"LA.SETTINGS.mech.enableHeaderLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-action-sidebar`, {\n        name: \"LA.SETTINGS.mech.enableSidebarActionLog.label\",\n        hint: \"LA.SETTINGS.mech.enableSidebarActionLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-action-main`, {\n        name: \"LA.SETTINGS.mech.enableMainActionLog.label\",\n        hint: \"LA.SETTINGS.mech.enableMainActionLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-action-main-max-height`, {\n        name: \"LA.SETTINGS.mech.sizeMainActionLog.label\",\n        hint: \"LA.SETTINGS.mech.sizeMainActionLog.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Number,\n        range: {\n            min: 10,\n            max: 30,\n            step: 1,\n        },\n        default: 12,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-action-save-collapse`, {\n        name: \"LA.SETTINGS.mech.saveCollapse.label\",\n        hint: \"LA.SETTINGS.mech.saveCollapse.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `mech-settings-log-action-start-collapsed`, {\n        name: \"LA.SETTINGS.mech.startCollapsed.label\",\n        hint: \"LA.SETTINGS.mech.startCollapsed.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    // Private Settings\n    game.settings.register(LancerAlternative.Name, `_mech-settings-local`, {\n        scope: \"client\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    game.settings.register(LancerAlternative.Name, `_mech-settings-local-version`, {\n        scope: \"client\",\n        config: false,\n        type: String, // JSON object\n        default: \"\",\n    });\n\n    game.settings.register(LancerAlternative.Name, `_mech-settings`, {\n        scope: \"world\",\n        config: false,\n        type: Array, // MessagePack encoded object\n        default: [],\n    });\n\n    game.settings.register(LancerAlternative.Name, `_mech-settings-version`, {\n        scope: \"world\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    // Sockets\n    SocketManager.getInstance().register(setMechSheetData);\n}\n\n// Client Settings\n// export function getMechSheetEffectsEnabled(): boolean\n// {\n//     return game.settings.get(LancerAlternative.Name, `mech-settings-performance`) as boolean;\n// }\n\nexport function getMechSheetTooltipEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-tip`) as boolean;\n}\n\nexport function getMechSheetLogHeaderEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-log-header`) as boolean;\n}\n\nexport function getMechSheetLogActionSidebarEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-log-action-sidebar`) as boolean;\n}\n\nexport function getMechSheetLogActionMainEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-log-action-main`) as boolean;\n}\n\nexport function getMechSheetLogActionMainMaxHeight(): number\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-log-action-main-max-height`) as number;\n}\n\nexport function getMechSheetLogActionDontSaveCollapse(): boolean\n{\n    // It is easier to maintain this code if this setting was inverted\n    // But semantically it makes more sense to have it worded the way it is\n    // Therefore, this setting is inverted in the UI\n    return !game.settings.get(LancerAlternative.Name, `mech-settings-log-action-save-collapse`) as boolean;\n}\n\nexport function getMechSheetLogActionStartCollapsed(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `mech-settings-log-action-start-collapsed`) as boolean;\n}\n\n// Client Private Settings\nexport function resetMechSheetLocalData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getMechSheetLocalData();\n        if (data[uuid])\n            delete data[uuid];\n        setMechSheetLocalData(data);\n    }\n    else\n    {\n        const data = new MechSheetLocalSettings();\n        setMechSheetLocalData(data);\n    }\n}\n\nexport function getMechSheetLocalData()\n{\n    try\n    {\n        const settings = game.settings.get(LancerAlternative.Name, `_mech-settings-local`) as string;\n        return JSON.parse(settings) as MechSheetLocalSettings;\n    }\n    catch\n    {\n        return new MechSheetLocalSettings();\n    }\n}\n\nexport function setMechSheetLocalData(data: MechSheetLocalSettings)\n{\n    const encoded = JSON.stringify(data);\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_mech-settings-local`, encoded),\n        game.settings.set(LancerAlternative.Name, `_mech-settings-local-version`, getModuleVersion()),\n    ])\n}\n\nexport function getSidebarRatio(uuid: string): number\n{\n    const data = getMechSheetLocalData();\n    return data[uuid]?.sidebarRatio ?? 1;\n}\n\nexport function setSidebarRatio(uuid: string, value: number)\n{\n    const data = getMechSheetLocalData();\n    if (!data[uuid])\n        data[uuid] = MechSheetLocalSettings.emptyContent();\n    data[uuid].sidebarRatio = value;\n    setMechSheetLocalData(data);\n}\n\n// World Private Settings\nexport function resetMechSheetData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getMechSheetData();\n        if (data[uuid])\n            delete data[uuid];\n        setMechSheetData(encodeMechSheetData(data));\n    }\n    else\n    {\n        game.settings.set(LancerAlternative.Name, `_mech-settings`, game.settings.settings.get(`${LancerAlternative.Name}._mech-settings`)?.default);\n        game.settings.set(LancerAlternative.Name, `_mech-settings-version`, game.settings.settings.get(`${LancerAlternative.Name}._mech-settings-version`)?.default);\n    }\n}\n\n\nexport function getMechSheetData()\n{\n    const settings = game.settings.get(LancerAlternative.Name, `_mech-settings`) as Array<number>;\n    if (!settings.length)\n        return new MechSheetSettings();\n    try\n    {\n        let encoded = new Uint8Array(Object.values(settings));\n        if (encoded.length === 1)\n        {\n            Logger.log(\"MechSheetSettings: Decoding failed, trying legacy decode.\");\n            encoded = new Uint8Array(Object.values(settings[0]));\n        }\n        return msgPackDecoder.decode(encoded) as MechSheetSettings;\n    }\n    catch\n    {\n        Logger.error(\"MechSheetSettings: Decoding failed, returning empty settings.\");\n        return new MechSheetSettings();\n    }\n}\n\n/**\n * If default behavior is ambiguous or a setting has a side effect that would affect the system \n * as a whole, determine the default settings in a more sophisticated way.\n * @param uuid \n * @param data \n */\nfunction migratedDefaults(uuid: string, data: MechSheetSettings)\n{\n    const defaultSettings = MechSheetSettings.emptyContent();\n    defaultSettings.syncActorTokenImages = determineActorTokenSync(uuid, data);\n    return defaultSettings;\n}\n\nexport function encodeMechSheetData(data: MechSheetSettings): Array<number>\n{\n    const encoded: Uint8Array = msgPackEncoder.encode(data);\n    return Array.from(encoded);\n}\n\nexport function setMechSheetData(encoded: Array<number>)\n{\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_mech-settings`, encoded),\n        game.settings.set(LancerAlternative.Name, `_mech-settings-version`, getModuleVersion()),\n    ]);\n}\n\nexport function setImageOffsetXY(uuid: string, x: number, y: number)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = x;\n    data[uuid].headerImgOffsetY = y;\n\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Image offset (X, Y) set to (${x}, ${y}) for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\nexport function getImageOffsetY(uuid: string): number\n{\n    const data = getMechSheetData();\n    return data[uuid]?.headerImgOffsetY ?? 0;\n}\n\nexport function setImageOffsetY(uuid: string, value: number)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetY = value;\n\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Image offset Y set to ${value} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\nexport function getImageOffsetX(uuid: string): number\n{\n    const data = getMechSheetData();\n    return data[uuid]?.headerImgOffsetX ?? 0;\n}\n\nexport function setImageOffsetX(uuid: string, value: number)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = value;\n\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Image offset X set to ${value} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\nexport function getImageWidth(uuid: string): number\n{\n    const data = getMechSheetData();\n    return data[uuid]?.headerImgWidth ?? 0;\n}\n\nexport function setImageWidth(uuid: string, value: number)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgWidth = value;\n\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Image width set to ${value} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\n// Note that calling separate setImage functions requires callbacks to run in sequence, otherwise requests will get dropped\n// Which is mainly why this optimization function exists\nexport function setImageBatched(uuid: string, x: number, y: number, width: number)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].headerImgOffsetX = x;\n    data[uuid].headerImgOffsetY = y;\n    data[uuid].headerImgWidth = width;\n\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Image offset (X, Y) set to (${x}, ${y}) and width set to ${width} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\nexport function getThemeOverride(uuid: string): string\n{\n    const data = getMechSheetData();\n    return data[uuid]?.themeOverride ?? \"\";\n}\n\nexport function setThemeOverride(uuid: string, value: string)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].themeOverride = value;\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Theme override set to ${value} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n    Hooks.call(\"laOverrideTheme\", uuid, value);\n}\n\nexport function getSidebarExecutables(uuid: string): Array<string>\n{\n    const data = getMechSheetData();\n    return data[uuid]?.sidebarExes ?? migratedDefaults(uuid, data).sidebarExes;\n}\n\nexport function setSidebarExecutables(uuid: string, macros: Array<string>)\n{\n    const data = getMechSheetData();\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n    data[uuid].sidebarExes = macros;\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () =>\n        {\n            Logger.log(`Sidebar executables set to ${macros.join(\", \")} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}\n\nexport function getActorTokenSync(uuid: string): boolean\n{\n    const data = getMechSheetData();\n\n    return determineActorTokenSync(uuid, data);\n}\n\nfunction determineActorTokenSync(uuid: string, data: MechSheetSettings): boolean\n{\n    // Find an appropriate default setting for token-actor image relationship \n    // if newly applying sheet or from old version\n    if (data[uuid]?.syncActorTokenImages === undefined || data[uuid]?.syncActorTokenImages === null)\n    {\n        Logger.log(\"Determining default syncActorTokenImages setting for a new or unsaved mech/old module version\");\n\n        const actor = fromUuidSync(uuid) as any;\n        if (actor.prototypeToken?.texture?.src && actor.img)\n            return actor.img === actor.prototypeToken.texture.src;\n        \n        return true;\n    }\n    else\n        return data[uuid].syncActorTokenImages;\n}\n\nexport function setActorTokenSync(uuid: string, value: boolean)\n{\n    const data = getMechSheetData();\n\n    if (!data[uuid])\n        data[uuid] = migratedDefaults(uuid, data);\n\n    data[uuid].syncActorTokenImages = value;\n    SocketManager.getInstance().runAsGM(\n        setMechSheetData,\n        () => {\n            Logger.log(`Sync actor-token images set to ${value} for ${uuid}`);\n        },\n        encodeMechSheetData(data),\n    );\n}","import type { NPCSheetSettingsData } from \"@/interfaces/settings/NPCSheetSettingsData\";\n\nexport class NPCSheetSettings implements NPCSheetSettingsData\n{\n    [uuid: string]: {\n        themeOverride: string;\n        sidebarExes: Array<string>;\n        syncActorTokenImages: boolean;\n        pinnedTraits: Array<string>; // LIDs\n        pinnedSystems: Array<string>; // LIDs\n        pinnedTechs: Array<string>; // LIDs\n        pinnedReactions: Array<string>; // LIDs\n    };\n\n    static emptyContent()\n    {\n        return {\n            themeOverride: \"\",\n            sidebarExes: [\n            ],\n            syncActorTokenImages: true,\n            pinnedTraits: [\n            ],\n            pinnedSystems: [\n            ],\n            pinnedTechs: [\n            ],\n            pinnedReactions: [\n            ],\n        }\n    }\n}","import { msgPackDecoder, msgPackEncoder } from \"@/scripts/settings\";\nimport { NPCSheetSettings } from \"@/classes/settings/NPCSheetSettings\";\nimport { SocketManager } from \"@/classes/SocketManager\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { getModuleVersion } from \"@/scripts/helpers\";\nimport { Logger } from \"@/classes/Logger\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\n\nexport class NPCSheetSettingsSubmenu extends foundry.applications.api.HandlebarsApplicationMixin(\n    foundry.applications.api.ApplicationV2\n)\n{\n    static override DEFAULT_OPTIONS: foundry.applications.api.ApplicationV2.DefaultOptions = {\n        id: \"la-npc-settings-submenu\",\n        tag: \"form\",\n        window: {\n            title: \"LA.SETTINGS.npc.label\",\n            icon: \"fas fa-gear\",\n            contentClasses: [\"standard-form\"],\n        },\n        position: {\n            width: 600,\n        },\n        form: {\n            handler: NPCSheetSettingsSubmenu.#onSubmit,\n            closeOnSubmit: true,\n            submitOnChange: false,\n        },\n        actions: {\n            resetServerData: NPCSheetSettingsSubmenu.#onResetServerData,\n        },\n    };\n\n    static override PARTS: Record<string, foundry.applications.api.HandlebarsApplicationMixin.HandlebarsTemplatePart> = {\n        body: {\n            template: TEMPLATE_PATHS.npcSettingsSubmenu,\n        },\n        footer: {\n            template: \"templates/generic/form-footer.hbs\",\n        },\n    };\n\n    // Return type is `any` to work around the opaque generic RenderContext in the mixin\n    protected override async _prepareContext(\n        _options: object\n    ): Promise<any>\n    {\n        return {\n            tip: game.settings.get(LancerAlternative.Name, `npc-settings-tip`) as boolean,\n            sheetWidth: game.settings.get(LancerAlternative.Name, `npc-settings-sheet-width`) as number,\n            sheetHeight: game.settings.get(LancerAlternative.Name, `npc-settings-sheet-height`) as number,\n            saveCollapse: game.settings.get(LancerAlternative.Name, `npc-settings-log-action-save-collapse`) as boolean,\n            startCollapsed: game.settings.get(LancerAlternative.Name, `npc-settings-log-action-start-collapsed`) as boolean,\n            isGM: game.user.isGM,\n            buttons: [\n                { type: \"submit\", icon: \"fa-solid fa-floppy-disk\", label: \"SETTINGS.Save\" },\n            ],\n        };\n    }\n\n    static #onResetServerData(\n        this: NPCSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        if (!game.user.isGM) return;\n        resetNPCSheetData();\n    }\n\n    static async #onSubmit(\n        _event: SubmitEvent | Event,\n        _form: HTMLFormElement,\n        formData: foundry.applications.ux.FormDataExtended,\n    ): Promise<void>\n    {\n        const data = formData.object;\n        await Promise.all([\n            game.settings.set(LancerAlternative.Name, `npc-settings-tip`, data[\"tip\"] === true),\n            game.settings.set(LancerAlternative.Name, `npc-settings-sheet-width`, Number(data[\"sheetWidth\"])),\n            game.settings.set(LancerAlternative.Name, `npc-settings-sheet-height`, Number(data[\"sheetHeight\"])),\n            game.settings.set(LancerAlternative.Name, `npc-settings-log-action-save-collapse`, data[\"saveCollapse\"] === true),\n            game.settings.set(LancerAlternative.Name, `npc-settings-log-action-start-collapsed`, data[\"startCollapsed\"] === true),\n        ]);\n    }\n}\n\nexport function registerNPCSheetSettings()\n{\n    // Public Settings\n    game.settings.register(LancerAlternative.Name, `npc-settings-tip`, {\n        name: \"LA.SETTINGS.npc.enableTooltip.label\",\n        hint: \"LA.SETTINGS.npc.enableTooltip.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `npc-settings-sheet-width`, {\n        name: \"LA.SETTINGS.npc.sheetWidth.label\",\n        hint: \"LA.SETTINGS.npc.sheetWidth.subLabel\",\n        scope: \"client\",\n        config: false,\n        requiresReload: true,\n        // @ts-ignore\n        type: Number,\n        default: 500,\n    });\n\n    game.settings.register(LancerAlternative.Name, `npc-settings-sheet-height`, {\n        name: \"LA.SETTINGS.npc.sheetHeight.label\",\n        hint: \"LA.SETTINGS.npc.sheetHeight.subLabel\",\n        scope: \"client\",\n        config: false,\n        requiresReload: true,\n        // @ts-ignore\n        type: Number,\n        default: 800,\n    });\n\n    game.settings.register(LancerAlternative.Name, `npc-settings-log-action-save-collapse`, {\n        name: \"LA.SETTINGS.npc.saveCollapse.label\",\n        hint: \"LA.SETTINGS.npc.saveCollapse.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `npc-settings-log-action-start-collapsed`, {\n        name: \"LA.SETTINGS.npc.startCollapsed.label\",\n        hint: \"LA.SETTINGS.npc.startCollapsed.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    // Private Settings\n    game.settings.register(LancerAlternative.Name, `_npc-settings`, {\n        scope: \"world\",\n        config: false,\n        type: Array, // MessagePack encoded object\n        default: [],\n    });\n\n    game.settings.register(LancerAlternative.Name, `_npc-settings-version`, {\n        scope: \"world\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    // Sockets\n    SocketManager.getInstance().register(setNPCSheetData);\n}\n\n// Client Settings\nexport function getNPCSheetTooltipEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `npc-settings-tip`) as boolean;\n}\n\nexport function getNPCSheetWidth(): number\n{\n    const width = game.settings.get(LancerAlternative.Name, `npc-settings-sheet-width`) as number;\n    return Math.max(0, width);\n}\n\nexport function getNPCSheetHeight(): number\n{\n    const height = game.settings.get(LancerAlternative.Name, `npc-settings-sheet-height`) as number;\n    return Math.max(0, height);\n}\n\nexport function getNPCSheetLogActionDontSaveCollapse(): boolean\n{\n    return !game.settings.get(LancerAlternative.Name, `npc-settings-log-action-save-collapse`) as boolean;\n}\n\nexport function getNPCSheetLogActionStartCollapsed(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `npc-settings-log-action-start-collapsed`) as boolean;\n}\n\n// World Private Settings\nexport function resetNPCSheetData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getNPCSheetData();\n        if (data[uuid])\n            delete data[uuid];\n        setNPCSheetData(encodeNPCSheetData(data));\n    }\n    else\n    {\n        game.settings.set(LancerAlternative.Name, `_npc-settings`, game.settings.settings.get(`${LancerAlternative.Name}._npc-settings`)?.default);\n        game.settings.set(LancerAlternative.Name, `_npc-settings-version`, game.settings.settings.get(`${LancerAlternative.Name}._npc-settings-version`)?.default);\n    }\n}\n\nexport function getNPCSheetData()\n{\n    const settings = game.settings.get(LancerAlternative.Name, `_npc-settings`) as Array<number>;\n    if (!settings.length)\n        return new NPCSheetSettings();\n    try\n    {\n        let encoded = new Uint8Array(Object.values(settings));\n        if (encoded.length === 1)\n        {\n            Logger.log(\"NPCSheetSettings: Decoding failed, trying legacy decode.\");\n            encoded = new Uint8Array(Object.values(settings[0]));\n        }\n        return msgPackDecoder.decode(encoded) as NPCSheetSettings;\n    }\n    catch\n    {\n        Logger.error(\"NPCSheetSettings: Decoding failed, returning empty settings.\");\n        return new NPCSheetSettings();\n    }\n}\n\n/**\n * Searches for whether or not the passed UUID has a root NPC sheet in the data.\n * For example, if `Scene.4sJEdBnHRGvA0gFb.Token.4OPJsPGkq6k2Xw5u.Actor.6aSsblgi20r7RoND` is the UUID\n * `Actor.6aSsblgi20r7RoND` is the root NPC sheet, in which case it will return the actorMatch.\n * If the UUID is not found, it will return null.\n * @param uuid \n * @returns \n */\nfunction getRoot(uuid: string): string | null\n{\n    const actorMatch = uuid.includes(\"Actor.\") ? uuid.split(\".\").slice(-2).join(\".\") : null;\n    return actorMatch;\n}\n\n/**\n * If default behavior is ambiguous or a setting has a side effect that would affect the system \n * as a whole, determine the default settings in a more sophisticated way.\n * @param uuid \n * @param data \n */\nfunction migratedDefaults(uuid: string, data: NPCSheetSettings)\n{\n    const defaultSettings = NPCSheetSettings.emptyContent();\n    defaultSettings.syncActorTokenImages = determineActorTokenSync(uuid, data);\n    return defaultSettings;\n}\n\nexport function encodeNPCSheetData(data: NPCSheetSettings): Array<number>\n{\n    const encoded: Uint8Array = msgPackEncoder.encode(data);\n    return Array.from(encoded);\n}\n\nexport function setNPCSheetData(encoded: Array<number>)\n{\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_npc-settings`, encoded),\n        game.settings.set(LancerAlternative.Name, `_npc-settings-version`, getModuleVersion()),\n    ])\n}\n\nexport function getThemeOverride(uuid: string): string\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.themeOverride ?? \"\";\n}\n\nexport function setThemeOverride(uuid: string, value: string)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].themeOverride = value;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Theme override set to ${value} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n\n    Hooks.call(\"laOverrideTheme\", uuid, value);\n}\n\nexport function getSidebarExecutables(uuid: string): Array<string>\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.sidebarExes ?? [];\n}\n\nexport function setSidebarExecutables(uuid: string, macros: Array<string>)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].sidebarExes = macros;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Sidebar executables set to ${macros.join(\", \")} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}\n\nexport function getActorTokenSync(uuid: string): boolean\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    \n    return determineActorTokenSync(workingUUID, data);\n}\n\nfunction determineActorTokenSync(uuid: string, data: NPCSheetSettings): boolean\n{\n    // Find an appropriate default setting for token-actor image relationship \n    // if newly applying sheet or from old version\n    if (data[uuid]?.syncActorTokenImages === undefined || data[uuid]?.syncActorTokenImages === null)\n    {\n        Logger.log(\"Determining default syncActorTokenImages setting for a new or unsaved NPC/old module version\");\n\n        const actor = fromUuidSync(uuid) as any;\n        if (actor.prototypeToken?.texture?.src && actor.img)\n            return actor.img === actor.prototypeToken.texture.src;\n        \n        return true;\n    }\n    else\n        return data[uuid].syncActorTokenImages;\n}\n\nexport function setActorTokenSync(uuid: string, value: boolean)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].syncActorTokenImages = value;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Sync actor-token images set to ${value} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}\n\nexport function getPinnedTraits(uuid: string): Array<string>\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.pinnedTraits ?? [];\n}\n\nexport function setPinnedTraits(uuid: string, lids: Array<string>)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].pinnedTraits = lids;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Pinned traits set to ${lids.join(\", \")} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}\n\nexport function getPinnedSystems(uuid: string): Array<string>\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.pinnedSystems ?? [];\n}\n\nexport function setPinnedSystems(uuid: string, lids: Array<string>)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].pinnedSystems = lids;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Pinned systems set to ${lids.join(\", \")} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}\n\nexport function getPinnedTechs(uuid: string): Array<string>\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.pinnedTechs ?? [];\n}\n\nexport function setPinnedTechs(uuid: string, lids: Array<string>)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].pinnedTechs = lids;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Pinned tech attacks set to ${lids.join(\", \")} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}\n\nexport function getPinnedReactions(uuid: string): Array<string>\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.pinnedReactions ?? [];\n}\n\nexport function setPinnedReactions(uuid: string, lids: Array<string>)\n{\n    const data = getNPCSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].pinnedReactions = lids;\n    SocketManager.getInstance().runAsGM(\n        setNPCSheetData,\n        () => {\n            Logger.log(`Pinned reactions set to ${lids.join(\", \")} for ${uuid}`);\n        },\n        encodeNPCSheetData(data),\n    );\n}","import type { DeployableSheetSettingsData } from \"@/interfaces/settings/DeployableSheetSettingsData\";\n\nexport class DeployableSheetSettings implements DeployableSheetSettingsData\n{\n    [uuid: string]: {\n        themeOverride: string;\n        sidebarExes: Array<string>;\n        syncActorTokenImages: boolean;\n    };\n\n    static emptyContent()\n    {\n        return {\n            themeOverride: \"\",\n            sidebarExes: [\n            ],\n            syncActorTokenImages: true,\n        }\n    }\n}","import { msgPackDecoder, msgPackEncoder } from \"@/scripts/settings\";\nimport { DeployableSheetSettings } from \"@/classes/settings/DeployableSheetSettings\";\nimport { SocketManager } from \"@/classes/SocketManager\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { getModuleVersion } from \"@/scripts/helpers\";\nimport { Logger } from \"@/classes/Logger\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\n\nexport class DeployableSheetSettingsSubmenu extends foundry.applications.api.HandlebarsApplicationMixin(\n    foundry.applications.api.ApplicationV2\n)\n{\n    static override DEFAULT_OPTIONS: foundry.applications.api.ApplicationV2.DefaultOptions = {\n        id: \"la-deployable-settings-submenu\",\n        tag: \"form\",\n        window: {\n            title: \"LA.SETTINGS.deployable.label\",\n            icon: \"fas fa-gear\",\n            contentClasses: [\"standard-form\"],\n        },\n        position: {\n            width: 600,\n        },\n        form: {\n            handler: DeployableSheetSettingsSubmenu.#onSubmit,\n            closeOnSubmit: true,\n            submitOnChange: false,\n        },\n        actions: {\n            resetServerData: DeployableSheetSettingsSubmenu.#onResetServerData,\n        },\n    };\n\n    static override PARTS: Record<string, foundry.applications.api.HandlebarsApplicationMixin.HandlebarsTemplatePart> = {\n        body: {\n            template: TEMPLATE_PATHS.deployableSettingsSubmenu,\n        },\n        footer: {\n            template: \"templates/generic/form-footer.hbs\",\n        },\n    };\n\n    // Return type is `any` to work around the opaque generic RenderContext in the mixin\n    protected override async _prepareContext(\n        _options: object\n    ): Promise<any>\n    {\n        return {\n            tip: game.settings.get(LancerAlternative.Name, `deployable-settings-tip`) as boolean,\n            sheetWidth: game.settings.get(LancerAlternative.Name, `deployable-settings-sheet-width`) as number,\n            sheetHeight: game.settings.get(LancerAlternative.Name, `deployable-settings-sheet-height`) as number,\n            saveCollapse: game.settings.get(LancerAlternative.Name, `deployable-settings-log-action-save-collapse`) as boolean,\n            startCollapsed: game.settings.get(LancerAlternative.Name, `deployable-settings-log-action-start-collapsed`) as boolean,\n            isGM: game.user.isGM,\n            buttons: [\n                { type: \"submit\", icon: \"fa-solid fa-floppy-disk\", label: \"SETTINGS.Save\" },\n            ],\n        };\n    }\n\n    static #onResetServerData(\n        this: DeployableSheetSettingsSubmenu,\n        _event: PointerEvent,\n        _target: HTMLElement,\n    ): void\n    {\n        if (!game.user.isGM) return;\n        resetDeployableSheetData();\n    }\n\n    static async #onSubmit(\n        _event: SubmitEvent | Event,\n        _form: HTMLFormElement,\n        formData: foundry.applications.ux.FormDataExtended,\n    ): Promise<void>\n    {\n        const data = formData.object;\n        await Promise.all([\n            game.settings.set(LancerAlternative.Name, `deployable-settings-tip`, data[\"tip\"] === true),\n            game.settings.set(LancerAlternative.Name, `deployable-settings-sheet-width`, Number(data[\"sheetWidth\"])),\n            game.settings.set(LancerAlternative.Name, `deployable-settings-sheet-height`, Number(data[\"sheetHeight\"])),\n            game.settings.set(LancerAlternative.Name, `deployable-settings-log-action-save-collapse`, data[\"saveCollapse\"] === true),\n            game.settings.set(LancerAlternative.Name, `deployable-settings-log-action-start-collapsed`, data[\"startCollapsed\"] === true),\n        ]);\n    }\n}\n\nexport function registerDeployableSheetSettings()\n{\n    // Public Settings\n    game.settings.register(LancerAlternative.Name, `deployable-settings-tip`, {\n        name: \"LA.SETTINGS.deployable.enableTooltip.label\",\n        hint: \"LA.SETTINGS.deployable.enableTooltip.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    game.settings.register(LancerAlternative.Name, `deployable-settings-sheet-width`, {\n        name: \"LA.SETTINGS.deployable.sheetWidth.label\",\n        hint: \"LA.SETTINGS.deployable.sheetWidth.subLabel\",\n        scope: \"client\",\n        config: false,\n        requiresReload: true,\n        // @ts-ignore\n        type: Number,\n        default: 500,\n    });\n\n    game.settings.register(LancerAlternative.Name, `deployable-settings-sheet-height`, {\n        name: \"LA.SETTINGS.deployable.sheetHeight.label\",\n        hint: \"LA.SETTINGS.deployable.sheetHeight.subLabel\",\n        scope: \"client\",\n        config: false,\n        requiresReload: true,\n        // @ts-ignore\n        type: Number,\n        default: 800,\n    });\n\n    game.settings.register(LancerAlternative.Name, `deployable-settings-log-action-save-collapse`, {\n        name: \"LA.SETTINGS.deployable.saveCollapse.label\",\n        hint: \"LA.SETTINGS.deployable.saveCollapse.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `deployable-settings-log-action-start-collapsed`, {\n        name: \"LA.SETTINGS.deployable.startCollapsed.label\",\n        hint: \"LA.SETTINGS.deployable.startCollapsed.subLabel\",\n        scope: \"client\",\n        config: false,\n        type: Boolean,\n        default: true,\n    });\n\n    // Private Settings\n    game.settings.register(LancerAlternative.Name, `_deployable-settings`, {\n        scope: \"world\",\n        config: false,\n        type: Array, // MessagePack encoded object\n        default: [],\n    });\n\n    game.settings.register(LancerAlternative.Name, `_deployable-settings-version`, {\n        scope: \"world\",\n        config: false,\n        type: String,\n        default: \"\",\n    });\n\n    // Sockets\n    SocketManager.getInstance().register(setDeployableSheetData);\n}\n\n// Client Settings\nexport function getDeployableSheetTooltipEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `deployable-settings-tip`) as boolean;\n}\n\nexport function getDeployableSheetWidth(): number\n{\n    const width = game.settings.get(LancerAlternative.Name, `deployable-settings-sheet-width`) as number;\n    return Math.max(0, width);\n}\n\nexport function getDeployableSheetHeight(): number\n{\n    const height = game.settings.get(LancerAlternative.Name, `deployable-settings-sheet-height`) as number;\n    return Math.max(0, height);\n}\n\nexport function getDeployableSheetLogActionDontSaveCollapse(): boolean\n{\n    return !game.settings.get(LancerAlternative.Name, `deployable-settings-log-action-save-collapse`) as boolean;\n}\n\nexport function getDeployableSheetLogActionStartCollapsed(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `deployable-settings-log-action-start-collapsed`) as boolean;\n}\n\n// World Private Settings\nexport function resetDeployableSheetData(uuid?: string)\n{\n    if (uuid)\n    {\n        const data = getDeployableSheetData();\n        if (data[uuid])\n            delete data[uuid];\n        setDeployableSheetData(encodeDeployableSheetData(data));\n    }\n    else\n    {\n        game.settings.set(LancerAlternative.Name, `_deployable-settings`, game.settings.settings.get(`${LancerAlternative.Name}._deployable-settings`)?.default);\n        game.settings.set(LancerAlternative.Name, `_deployable-settings-version`, game.settings.settings.get(`${LancerAlternative.Name}._deployable-settings-version`)?.default);\n    }\n}\n\nexport function getDeployableSheetData()\n{\n    const settings = game.settings.get(LancerAlternative.Name, `_deployable-settings`) as Array<number>;\n    if (!settings.length)\n        return new DeployableSheetSettings();\n    try\n    {\n        let encoded = new Uint8Array(Object.values(settings));\n        if (encoded.length === 1)\n        {\n            Logger.log(\"DeployableSheetSettings: Decoding failed, trying legacy decode.\");\n            encoded = new Uint8Array(Object.values(settings[0]));\n        }\n        return msgPackDecoder.decode(encoded) as DeployableSheetSettings;\n    }\n    catch\n    {\n        Logger.error(\"DeployableSheetSettings: Decoding failed, returning empty settings.\");\n        return new DeployableSheetSettings();\n    }\n}\n\n/**\n * Searches for whether or not the passed UUID has a root Deployable sheet in the data.\n * For example, if `Scene.4sJEdBnHRGvA0gFb.Token.4OPJsPGkq6k2Xw5u.Actor.6aSsblgi20r7RoND` is the UUID\n * `Actor.6aSsblgi20r7RoND` is the root Deployable sheet, in which case it will return the actorMatch.\n * If the UUID is not found, it will return null.\n * @param uuid \n * @returns \n */\nfunction getRoot(uuid: string): string | null\n{\n    const actorMatch = uuid.includes(\"Actor.\") ? uuid.split(\".\").slice(-2).join(\".\") : null;\n    return actorMatch;\n}\n\n/**\n * If default behavior is ambiguous or a setting has a side effect that would affect the system \n * as a whole, determine the default settings in a more sophisticated way.\n * @param uuid \n * @param data \n */\nfunction migratedDefaults(uuid: string, data: DeployableSheetSettings)\n{\n    const defaultSettings = DeployableSheetSettings.emptyContent();\n    defaultSettings.syncActorTokenImages = determineActorTokenSync(uuid, data);\n    return defaultSettings;\n}\n\nexport function encodeDeployableSheetData(data: DeployableSheetSettings): Array<number>\n{\n    const encoded: Uint8Array = msgPackEncoder.encode(data);\n    return Array.from(encoded);\n}\n\nexport function setDeployableSheetData(encoded: Array<number>)\n{\n    return Promise.all([\n        game.settings.set(LancerAlternative.Name, `_deployable-settings`, encoded),\n        game.settings.set(LancerAlternative.Name, `_deployable-settings-version`, getModuleVersion()),\n    ])\n}\n\nexport function getThemeOverride(uuid: string): string\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.themeOverride ?? \"\";\n}\n\nexport function setThemeOverride(uuid: string, value: string)\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].themeOverride = value;\n\n    SocketManager.getInstance().runAsGM(\n        setDeployableSheetData,\n        () => {\n            Logger.log(`Theme override set to ${value} for ${uuid}`);\n        },\n        encodeDeployableSheetData(data),\n    );\n\n    Hooks.call(\"laOverrideTheme\", uuid, value);\n}\n\nexport function getSidebarExecutables(uuid: string): Array<string>\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n    return data[workingUUID]?.sidebarExes ?? [];\n}\n\nexport function setSidebarExecutables(uuid: string, macros: Array<string>)\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].sidebarExes = macros;\n    SocketManager.getInstance().runAsGM(\n        setDeployableSheetData,\n        () => {\n            Logger.log(`Sidebar executables set to ${macros.join(\", \")} for ${uuid}`);\n        },\n        encodeDeployableSheetData(data),\n    );\n}\n\nexport function getActorTokenSync(uuid: string): boolean\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    return determineActorTokenSync(workingUUID, data);\n}\n\nfunction determineActorTokenSync(uuid: string, data: DeployableSheetSettings): boolean\n{\n    // Find an appropriate default setting for token-actor image relationship \n    // if newly applying sheet or from old version\n    if (data[uuid]?.syncActorTokenImages === undefined || data[uuid]?.syncActorTokenImages === null)\n    {\n        Logger.log(\"Determining default syncActorTokenImages setting for a new or unsaved deployable/old module version\");\n\n        const actor = fromUuidSync(uuid) as any;\n        if (actor.prototypeToken?.texture?.src && actor.img)\n            return actor.img === actor.prototypeToken.texture.src;\n        \n        return true;\n    }\n    else\n        return data[uuid].syncActorTokenImages;\n}\n\nexport function setActorTokenSync(uuid: string, value: boolean)\n{\n    const data = getDeployableSheetData();\n    const workingUUID = getRoot(uuid) ?? uuid;\n\n    if (!data[workingUUID])\n        data[workingUUID] = migratedDefaults(workingUUID, data);\n\n    data[workingUUID].syncActorTokenImages = value;\n    SocketManager.getInstance().runAsGM(\n        setDeployableSheetData,\n        () => {\n            Logger.log(`Sync actor-token images set to ${value} for ${uuid}`);\n        },\n        encodeDeployableSheetData(data),\n    );\n}","import { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { Encoder, Decoder } from \"@msgpack/msgpack\";\nimport { PilotSheetSettingsSubmenu } from \"@/scripts/pilot/settings\";\nimport { MechSheetSettingsSubmenu } from \"@/scripts/mech/settings\";\nimport { NPCSheetSettingsSubmenu } from \"@/scripts/npc/settings\";\nimport { DeployableSheetSettingsSubmenu } from \"@/scripts/deployable/settings\";\n\nexport const msgPackEncoder = new Encoder();\nexport const msgPackDecoder = new Decoder();\n\nexport function registerModuleSettings()\n{\n    game.settings.registerMenu(LancerAlternative.Name, `settings-submenu-pilot`, {\n        name: \"LA.SETTINGS.pilot.label\",\n        label: \"\",\n        hint: \"\",\n        icon: \"mdi mdi-account\",\n        type: PilotSheetSettingsSubmenu,\n        restricted: false,\n    });\n\n    game.settings.registerMenu(LancerAlternative.Name, `settings-submenu-mech`, {\n        name: \"LA.SETTINGS.mech.label\",\n        label: \"\",\n        hint: \"\",\n        icon: \"mdi mdi-robot\",\n        type: MechSheetSettingsSubmenu,\n        restricted: false,\n    });\n\n    game.settings.registerMenu(LancerAlternative.Name, `settings-submenu-npc`, {\n        name: \"LA.SETTINGS.npc.label\",\n        label: \"\",\n        hint: \"\",\n        icon: \"mdi mdi-skull\",\n        type: NPCSheetSettingsSubmenu,\n        restricted: false,\n    });\n\n    game.settings.registerMenu(LancerAlternative.Name, `settings-submenu-deployable`, {\n        name: \"LA.SETTINGS.deployable.label\",\n        label: \"\",\n        hint: \"\",\n        icon: \"mdi mdi-quadcopter\",\n        type: DeployableSheetSettingsSubmenu,\n        restricted: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `settings-verbose-logging`, {\n        name: \"LA.SETTINGS.debug.label\",\n        hint: \"LA.SETTINGS.debug.subLabel\",\n        scope: \"client\",\n        config: true,\n        type: Boolean,\n        default: false,\n    });\n\n    game.settings.register(LancerAlternative.Name, `settings-enable-effects`, {\n        name: \"LA.SETTINGS.enableEffects.label\",\n        hint: \"LA.SETTINGS.enableEffects.subLabel\",\n        scope: \"client\",\n        config: true,\n        type: Boolean,\n        default: true,\n    });\n}\n\nexport function getVerboseLoggingEnabled(): boolean\n{\n    return game.settings.get(LancerAlternative.Name, `settings-verbose-logging`) as boolean;\n}\n\nexport function getExtraEffectsEnabled(): boolean\n{\n    // (#13) This optional chaining is not a mistake; the module will try to preload\n    // `game.settings` before they are initialized via Svelte's own initialization step\n    // even though the sheets can't get accessed until Foundry is fully initialized\n    return game.settings?.get(LancerAlternative.Name, `settings-enable-effects`) as boolean;\n}","import { getModuleVersion } from \"@/scripts/helpers\";\nimport { getVerboseLoggingEnabled } from \"@/scripts/settings\";\n\nexport class Logger\n{\n    private static moduleName = \"LAS\";\n    private static version: string | undefined;\n\n    private static getVersion(): string\n    {\n        return this.version ??= getModuleVersion();\n    }\n\n    public static log(message: string, ...args: any[]): void\n    {\n        if (getVerboseLoggingEnabled())\n            ui.notifications?.info(message);\n\n        console.log(\n            `%c[${this.moduleName} ${this.getVersion()}] ${message}`,\n            \"color: #00FF00; font-weight: bold;\",\n            ...args\n        );\n    }\n\n    public static error(message: string, ...args: any[]): void\n    {\n        if (getVerboseLoggingEnabled())\n            ui.notifications?.error(message);\n\n        console.error(\n            `%c[${this.moduleName} ${this.getVersion()}] ${message}`,\n            \"color: #FF0000; font-weight: bold;\",\n            ...args,\n            new Error(\"Trace\")\n        );\n    }\n\n    public static warn(message: string, ...args: any[]): void\n    {\n        if (getVerboseLoggingEnabled())\n            ui.notifications?.warn(message);\n\n        console.warn(\n            `%c[${this.moduleName} ${this.getVersion()}] ${message}`,\n            \"color: #FFA500; font-weight: bold;\",\n            ...args,\n            new Error(\"Trace\")\n        );\n    }\n}\n","// Reimplementation of bare-minimum foundryvtt-lancer functionality (src/module/helpers/commons.ts)\n\nimport type { HelperOptions } from \"handlebars\";\n\n// Helper function to format a dotpath to not have any square brackets, instead using pure dot notation\nexport function formatDotpath(path: string): string\n{\n    return path.replace(/\\[/g, \".\").replace(/]/g, \"\");\n}\n\n// Helper function to get arbitrarily deep array references\n// Returns every item along the path, starting with the object itself\n// Any failed resolutions will still be emitted, but as an undefined\n// An empty string resolved in this way will simply return root.\nexport function stepwiseResolveDotpath(\n    obj: any,\n    dotpath: string\n): Array<{\n    pathlet: string | null;\n    val: unknown;\n}>\n{\n    let pathlets = formatDotpath(dotpath).split(\".\");\n\n    // Resolve each key\n    let result = [\n        {\n            pathlet: null as string | null,\n            val: obj,\n        },\n    ];\n    for (let pathlet of pathlets)\n    {\n        obj = obj?.[pathlet];\n        result.push({\n            pathlet,\n            val: obj,\n        });\n    }\n    return result;\n}\n\n// Helper function to get arbitrarily deep array references\n// Returns every item along the path, starting with the object itself\n// Any failed resolutions will still be emitted, but as a dedicated symbol\nexport function resolveDotpath<T>(ob: any, path: string): T | null;\nexport function resolveDotpath<T>(ob: any, path: string, default_: T): T;\nexport function resolveDotpath(\n    obj: any,\n    dotpath: string,\n    default_: any = null,\n    opts?: {\n        shorten_by?: number; // If provided, skip the last N path items\n    }\n): unknown\n{\n    let path = stepwiseResolveDotpath(obj, dotpath);\n    let item;\n\n    // Get the last item, or one even further back if shorten-by provided\n    if (opts?.shorten_by)\n    {\n        item = path[path.length - 1 - opts.shorten_by];\n    } else\n    {\n        item = path[path.length - 1];\n    }\n    return item.val === undefined ? default_ : item.val;\n}\n\nconst RESOLVE_FAIL = Symbol(\"Fail\");\n// Helper function to get arbitrarily deep array references, specifically in a helperoptions, and with better types for that matter\nexport function resolveHelperDotpath<T>(options: HelperOptions, path: string): T | null;\nexport function resolveHelperDotpath<T>(options: HelperOptions, path: string, default_: T): T;\nexport function resolveHelperDotpath<T>(options: HelperOptions, path: string, default_: T, try_parent: boolean): T;\nexport function resolveHelperDotpath(\n    options: HelperOptions,\n    path: string,\n    default_: any = null,\n    try_parent: boolean = false\n): any\n{\n    if (try_parent)\n    {\n        let data = options.data;\n\n        // Loop until no _parent\n        while (data)\n        {\n            let resolved = resolveDotpath(data?.root, path, RESOLVE_FAIL);\n            if (resolved != RESOLVE_FAIL)\n            {\n                // Looks like we found something!\n                return resolved;\n            }\n            data = data._parent;\n        }\n\n        // We've found nothing. Sad\n        return default_;\n    } else\n    {\n        // Trivial wrapper.\n        return resolveDotpath(options.data?.root, path, default_);\n    }\n}\n\n/**\n * As above, but generates the \"after\" state of the targeted property.\n * Suitable for use with .updates. Does not actually edit the object.\n * As an example,\n *\n * array_path_edit_result({ foo: [ 1, 2, 3 ]}, \"foo.2\", 5, \"insert\")\n * will yield\n * {\n *  path: \"foo\",\n *  new_val: [1, 2, 5, 3]\n * }\n * @param target The object our path dives into\n * @param flat_path A dotpath to our target property\n * @param value The item we wish to insert into the array, if we are inserting\n * @param mode Whether we are inserting or deleting into the array\n */\nexport function array_path_edit_changes(\n    target: any,\n    flat_path: string,\n    value: any,\n    mode: \"insert\" | \"delete\"\n): { path: string; new_val: any }\n{\n    // Break it up\n    flat_path = formatDotpath(flat_path);\n    let split = flat_path.split(\".\");\n    let tail = split.splice(split.length - 1)[0];\n    let lead = split.join(\".\");\n\n    let index = parseInt(tail);\n    let array = resolveDotpath(target, lead);\n    if (Array.isArray(array) && !Number.isNaN(index))\n    {\n        // Bound our index\n        if (index > array.length)\n        {\n            index = array.length;\n        }\n        if (index < 0)\n        {\n            // For negative indexes, count back from end, python style.\n            // With the caveat that this also shifts behavior to insert AFTER. So, -1 to append to end, -2 to 1 before end, etc.\n            index = array.length + index + 1;\n\n            // If still negative, then we've gone backwards past start of list, and so we bound to zero\n            if (index < 0)\n            {\n                index = 0;\n            }\n        }\n\n        // Different behavior depending on mode\n        if (mode == \"delete\")\n        {\n            return {\n                path: lead,\n                new_val: [...array.slice(0, index), ...array.slice(index + 1)], // Drop element at index\n            };\n        } else if (mode == \"insert\")\n        {\n            return {\n                path: lead,\n                new_val: [...array.slice(0, index), value, ...array.slice(index)], // Insert element at index\n            };\n        } else\n        {\n            throw new Error(\"Invalid path edit mode \" + mode);\n        }\n    } else\n    {\n        throw new Error(`Unable to insert array item \"${lead}[${tail}]\": not an array (or not a valid index)`);\n    }\n}\n\n/**\n * A variant of resolveDotpath that provides more context about documents we encounter along the way.\n *\n * @param rootDoc The document we are starting at\n * @param path The path to resolve\n * @returns An object providing context on the path and result relative to the most deploy nested document we encounter\n */\nexport function drilldownDocument(\n    rootDoc: any,\n    path: string\n):\n    {\n        sub_doc: any; // The last document traversed while following path from root_doc. Usually just root_doc\n        sub_path: string; // Path to terminus, continuing from sub_doc\n        terminus: any; // What was found at the end of the path\n    }\n{\n    let steps = stepwiseResolveDotpath(rootDoc, path);\n    for (let i = steps.length - 1; i >= 0; i--)\n    {\n        // Walk it back till first document\n        let step = steps[i];\n        if (step.val instanceof foundry.abstract.Document)\n        {\n            // Recombine rest of path\n            let sub_path = steps\n                .slice(i + 1)\n                .map(v => v.pathlet)\n                .join(\".\");\n            let sub_doc = step.val as any;\n            return { sub_doc, sub_path, terminus: steps[steps.length - 1].val };\n        }\n    }\n    throw new Error(\"Drilldown document must have at least one document in its path\");\n}\n\n// Used by above to figure out how to handle \"set\"/\"append\" args\n// Returns [success: boolean, val: any]\nexport async function parse_control_val(raw_val: string): Promise<{ success: boolean; val: any }>\n{\n    // Determine what we're working with\n    let match = raw_val.match(/\\((.*?)\\)(.*)/);\n    if (match)\n    {\n        let type = match[1];\n        let val = match[2];\n        switch (type)\n        {\n            case \"string\":\n                // Just pass val as-is\n                return { success: true, val };\n            case \"int\":\n                let parsed_int = parseInt(val);\n                if (!Number.isNaN(parsed_int))\n                {\n                    return { success: true, val: parsed_int };\n                }\n                break;\n            case \"float\":\n                let parsed_float = parseFloat(val);\n                if (!Number.isNaN(parsed_float))\n                {\n                    return { success: true, val: parsed_float };\n                }\n                break;\n            case \"bool\":\n                if (val == \"true\")\n                {\n                    return { success: true, val: true };\n                } else if (val == \"false\")\n                {\n                    return { success: true, val: false };\n                }\n            case \"struct\":\n                // (#7)\n                return { success: false, val: \"I HAVE NO MOUTH, AND I MUST SCREAM\" };\n        }\n    }\n\n    // No success\n    return { success: false, val: null };\n}\n","export default false;\n","// Store the references to globals in case someone tries to monkey patch these, causing the below\n// to de-opt (this occurs often when using popular extensions).\nexport var is_array = Array.isArray;\nexport var index_of = Array.prototype.indexOf;\nexport var array_from = Array.from;\nexport var object_keys = Object.keys;\nexport var define_property = Object.defineProperty;\nexport var get_descriptor = Object.getOwnPropertyDescriptor;\nexport var get_descriptors = Object.getOwnPropertyDescriptors;\nexport var object_prototype = Object.prototype;\nexport var array_prototype = Array.prototype;\nexport var get_prototype_of = Object.getPrototypeOf;\n\n/**\n * @param {any} thing\n * @returns {thing is Function}\n */\nexport function is_function(thing) {\n\treturn typeof thing === 'function';\n}\n\nexport const noop = () => {};\n\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\n\n/**\n * @template [T=any]\n * @param {any} value\n * @returns {value is PromiseLike<T>}\n */\nexport function is_promise(value) {\n\treturn typeof value?.then === 'function';\n}\n\n/** @param {Function} fn */\nexport function run(fn) {\n\treturn fn();\n}\n\n/** @param {Array<() => void>} arr */\nexport function run_all(arr) {\n\tfor (var i = 0; i < arr.length; i++) {\n\t\tarr[i]();\n\t}\n}\n\n/**\n * TODO replace with Promise.withResolvers once supported widely enough\n * @template T\n */\nexport function deferred() {\n\t/** @type {(value: T) => void} */\n\tvar resolve;\n\n\t/** @type {(reason: any) => void} */\n\tvar reject;\n\n\t/** @type {Promise<T>} */\n\tvar promise = new Promise((res, rej) => {\n\t\tresolve = res;\n\t\treject = rej;\n\t});\n\n\t// @ts-expect-error\n\treturn { promise, resolve, reject };\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {V | (() => V)} fallback\n * @param {boolean} [lazy]\n * @returns {V}\n */\nexport function fallback(value, fallback, lazy = false) {\n\treturn value === undefined\n\t\t? lazy\n\t\t\t? /** @type {() => V} */ (fallback)()\n\t\t\t: /** @type {V} */ (fallback)\n\t\t: value;\n}\n","export const DERIVED = 1 << 1;\nexport const EFFECT = 1 << 2;\nexport const RENDER_EFFECT = 1 << 3;\nexport const BLOCK_EFFECT = 1 << 4;\nexport const BRANCH_EFFECT = 1 << 5;\nexport const ROOT_EFFECT = 1 << 6;\nexport const BOUNDARY_EFFECT = 1 << 7;\nexport const UNOWNED = 1 << 8;\nexport const DISCONNECTED = 1 << 9;\nexport const CLEAN = 1 << 10;\nexport const DIRTY = 1 << 11;\nexport const MAYBE_DIRTY = 1 << 12;\nexport const INERT = 1 << 13;\nexport const DESTROYED = 1 << 14;\nexport const EFFECT_RAN = 1 << 15;\n/** 'Transparent' effects do not create a transition boundary */\nexport const EFFECT_TRANSPARENT = 1 << 16;\n/** Svelte 4 legacy mode props need to be handled with deriveds and be recognized elsewhere, hence the dedicated flag */\nexport const LEGACY_DERIVED_PROP = 1 << 17;\nexport const INSPECT_EFFECT = 1 << 18;\nexport const HEAD_EFFECT = 1 << 19;\nexport const EFFECT_HAS_DERIVED = 1 << 20;\n\nexport const STATE_SYMBOL = Symbol('$state');\nexport const STATE_SYMBOL_METADATA = Symbol('$state metadata');\nexport const LEGACY_PROPS = Symbol('legacy props');\nexport const LOADING_ATTR_SYMBOL = Symbol('');\n","/** @import { Equals } from '#client' */\n/** @type {Equals} */\nexport function equals(value) {\n\treturn value === this.v;\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function safe_not_equal(a, b) {\n\treturn a != a\n\t\t? b == b\n\t\t: a !== b || (a !== null && typeof a === 'object') || typeof a === 'function';\n}\n\n/**\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport function not_equal(a, b) {\n\treturn a !== b;\n}\n\n/** @type {Equals} */\nexport function safe_equals(value) {\n\treturn !safe_not_equal(value, this.v);\n}\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\n/**\n * Using `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\n * @returns {never}\n */\nexport function bind_invalid_checkbox_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_checkbox_value\\nUsing \\`bind:value\\` together with a checkbox input is not allowed. Use \\`bind:checked\\` instead\\nhttps://svelte.dev/e/bind_invalid_checkbox_value`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_checkbox_value`);\n\t}\n}\n\n/**\n * Component %component% has an export named `%key%` that a consumer component is trying to access using `bind:%key%`, which is disallowed. Instead, use `bind:this` (e.g. `<%name% bind:this={component} />`) and then access the property on the bound component instance (e.g. `component.%key%`)\n * @param {string} component\n * @param {string} key\n * @param {string} name\n * @returns {never}\n */\nexport function bind_invalid_export(component, key, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_invalid_export\\nComponent ${component} has an export named \\`${key}\\` that a consumer component is trying to access using \\`bind:${key}\\`, which is disallowed. Instead, use \\`bind:this\\` (e.g. \\`<${name} bind:this={component} />\\`) and then access the property on the bound component instance (e.g. \\`component.${key}\\`)\\nhttps://svelte.dev/e/bind_invalid_export`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_invalid_export`);\n\t}\n}\n\n/**\n * A component is attempting to bind to a non-bindable property `%key%` belonging to %component% (i.e. `<%name% bind:%key%={...}>`). To mark a property as bindable: `let { %key% = $bindable() } = $props()`\n * @param {string} key\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function bind_not_bindable(key, component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`bind_not_bindable\\nA component is attempting to bind to a non-bindable property \\`${key}\\` belonging to ${component} (i.e. \\`<${name} bind:${key}={...}>\\`). To mark a property as bindable: \\`let { ${key} = $bindable() } = $props()\\`\\nhttps://svelte.dev/e/bind_not_bindable`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/bind_not_bindable`);\n\t}\n}\n\n/**\n * %parent% called `%method%` on an instance of %component%, which is no longer valid in Svelte 5\n * @param {string} parent\n * @param {string} method\n * @param {string} component\n * @returns {never}\n */\nexport function component_api_changed(parent, method, component) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_changed\\n${parent} called \\`${method}\\` on an instance of ${component}, which is no longer valid in Svelte 5\\nhttps://svelte.dev/e/component_api_changed`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_changed`);\n\t}\n}\n\n/**\n * Attempted to instantiate %component% with `new %name%`, which is no longer valid in Svelte 5. If this component is not under your control, set the `compatibility.componentApi` compiler option to `4` to keep it working.\n * @param {string} component\n * @param {string} name\n * @returns {never}\n */\nexport function component_api_invalid_new(component, name) {\n\tif (DEV) {\n\t\tconst error = new Error(`component_api_invalid_new\\nAttempted to instantiate ${component} with \\`new ${name}\\`, which is no longer valid in Svelte 5. If this component is not under your control, set the \\`compatibility.componentApi\\` compiler option to \\`4\\` to keep it working.\\nhttps://svelte.dev/e/component_api_invalid_new`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/component_api_invalid_new`);\n\t}\n}\n\n/**\n * A derived value cannot reference itself recursively\n * @returns {never}\n */\nexport function derived_references_self() {\n\tif (DEV) {\n\t\tconst error = new Error(`derived_references_self\\nA derived value cannot reference itself recursively\\nhttps://svelte.dev/e/derived_references_self`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/derived_references_self`);\n\t}\n}\n\n/**\n * Keyed each block has duplicate key `%value%` at indexes %a% and %b%\n * @param {string} a\n * @param {string} b\n * @param {string | undefined | null} [value]\n * @returns {never}\n */\nexport function each_key_duplicate(a, b, value) {\n\tif (DEV) {\n\t\tconst error = new Error(`each_key_duplicate\\n${value ? `Keyed each block has duplicate key \\`${value}\\` at indexes ${a} and ${b}` : `Keyed each block has duplicate key at indexes ${a} and ${b}`}\\nhttps://svelte.dev/e/each_key_duplicate`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/each_key_duplicate`);\n\t}\n}\n\n/**\n * `%rune%` cannot be used inside an effect cleanup function\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_in_teardown(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_teardown\\n\\`${rune}\\` cannot be used inside an effect cleanup function\\nhttps://svelte.dev/e/effect_in_teardown`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_teardown`);\n\t}\n}\n\n/**\n * Effect cannot be created inside a `$derived` value that was not itself created inside an effect\n * @returns {never}\n */\nexport function effect_in_unowned_derived() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_in_unowned_derived\\nEffect cannot be created inside a \\`$derived\\` value that was not itself created inside an effect\\nhttps://svelte.dev/e/effect_in_unowned_derived`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_in_unowned_derived`);\n\t}\n}\n\n/**\n * `%rune%` can only be used inside an effect (e.g. during component initialisation)\n * @param {string} rune\n * @returns {never}\n */\nexport function effect_orphan(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_orphan\\n\\`${rune}\\` can only be used inside an effect (e.g. during component initialisation)\\nhttps://svelte.dev/e/effect_orphan`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_orphan`);\n\t}\n}\n\n/**\n * Maximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\n * @returns {never}\n */\nexport function effect_update_depth_exceeded() {\n\tif (DEV) {\n\t\tconst error = new Error(`effect_update_depth_exceeded\\nMaximum update depth exceeded. This can happen when a reactive block or effect repeatedly sets a new value. Svelte limits the number of nested updates to prevent infinite loops\\nhttps://svelte.dev/e/effect_update_depth_exceeded`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);\n\t}\n}\n\n/**\n * Failed to hydrate the application\n * @returns {never}\n */\nexport function hydration_failed() {\n\tif (DEV) {\n\t\tconst error = new Error(`hydration_failed\\nFailed to hydrate the application\\nhttps://svelte.dev/e/hydration_failed`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/hydration_failed`);\n\t}\n}\n\n/**\n * Could not `{@render}` snippet due to the expression being `null` or `undefined`. Consider using optional chaining `{@render snippet?.()}`\n * @returns {never}\n */\nexport function invalid_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_snippet\\nCould not \\`{@render}\\` snippet due to the expression being \\`null\\` or \\`undefined\\`. Consider using optional chaining \\`{@render snippet?.()}\\`\\nhttps://svelte.dev/e/invalid_snippet`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_snippet`);\n\t}\n}\n\n/**\n * `%name%(...)` cannot be used in runes mode\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_legacy_only(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_legacy_only\\n\\`${name}(...)\\` cannot be used in runes mode\\nhttps://svelte.dev/e/lifecycle_legacy_only`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_legacy_only`);\n\t}\n}\n\n/**\n * Cannot do `bind:%key%={undefined}` when `%key%` has a fallback value\n * @param {string} key\n * @returns {never}\n */\nexport function props_invalid_value(key) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_invalid_value\\nCannot do \\`bind:${key}={undefined}\\` when \\`${key}\\` has a fallback value\\nhttps://svelte.dev/e/props_invalid_value`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_invalid_value`);\n\t}\n}\n\n/**\n * Rest element properties of `$props()` such as `%property%` are readonly\n * @param {string} property\n * @returns {never}\n */\nexport function props_rest_readonly(property) {\n\tif (DEV) {\n\t\tconst error = new Error(`props_rest_readonly\\nRest element properties of \\`$props()\\` such as \\`${property}\\` are readonly\\nhttps://svelte.dev/e/props_rest_readonly`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/props_rest_readonly`);\n\t}\n}\n\n/**\n * The `%rune%` rune is only available inside `.svelte` and `.svelte.js/ts` files\n * @param {string} rune\n * @returns {never}\n */\nexport function rune_outside_svelte(rune) {\n\tif (DEV) {\n\t\tconst error = new Error(`rune_outside_svelte\\nThe \\`${rune}\\` rune is only available inside \\`.svelte\\` and \\`.svelte.js/ts\\` files\\nhttps://svelte.dev/e/rune_outside_svelte`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/rune_outside_svelte`);\n\t}\n}\n\n/**\n * Property descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\n * @returns {never}\n */\nexport function state_descriptors_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_descriptors_fixed\\nProperty descriptors defined on \\`$state\\` objects must contain \\`value\\` and always be \\`enumerable\\`, \\`configurable\\` and \\`writable\\`.\\nhttps://svelte.dev/e/state_descriptors_fixed`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_descriptors_fixed`);\n\t}\n}\n\n/**\n * Cannot set prototype of `$state` object\n * @returns {never}\n */\nexport function state_prototype_fixed() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_prototype_fixed\\nCannot set prototype of \\`$state\\` object\\nhttps://svelte.dev/e/state_prototype_fixed`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_prototype_fixed`);\n\t}\n}\n\n/**\n * Reading state that was created inside the same derived is forbidden. Consider using `untrack` to read locally created state\n * @returns {never}\n */\nexport function state_unsafe_local_read() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_unsafe_local_read\\nReading state that was created inside the same derived is forbidden. Consider using \\`untrack\\` to read locally created state\\nhttps://svelte.dev/e/state_unsafe_local_read`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_local_read`);\n\t}\n}\n\n/**\n * Updating state inside a derived or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\n * @returns {never}\n */\nexport function state_unsafe_mutation() {\n\tif (DEV) {\n\t\tconst error = new Error(`state_unsafe_mutation\\nUpdating state inside a derived or a template expression is forbidden. If the value should not be reactive, declare it without \\`$state\\`\\nhttps://svelte.dev/e/state_unsafe_mutation`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/state_unsafe_mutation`);\n\t}\n}","export let legacy_mode_flag = false;\nexport let tracing_mode_flag = false;\n\nexport function enable_legacy_mode_flag() {\n\tlegacy_mode_flag = true;\n}\n\nexport function enable_tracing_mode_flag() {\n\ttracing_mode_flag = true;\n}\n","export const EACH_ITEM_REACTIVE = 1;\nexport const EACH_INDEX_REACTIVE = 1 << 1;\n/** See EachBlock interface metadata.is_controlled for an explanation what this is */\nexport const EACH_IS_CONTROLLED = 1 << 2;\nexport const EACH_IS_ANIMATED = 1 << 3;\nexport const EACH_ITEM_IMMUTABLE = 1 << 4;\n\nexport const PROPS_IS_IMMUTABLE = 1;\nexport const PROPS_IS_RUNES = 1 << 1;\nexport const PROPS_IS_UPDATED = 1 << 2;\nexport const PROPS_IS_BINDABLE = 1 << 3;\nexport const PROPS_IS_LAZY_INITIAL = 1 << 4;\n\nexport const TRANSITION_IN = 1;\nexport const TRANSITION_OUT = 1 << 1;\nexport const TRANSITION_GLOBAL = 1 << 2;\n\nexport const TEMPLATE_FRAGMENT = 1;\nexport const TEMPLATE_USE_IMPORT_NODE = 1 << 1;\n\nexport const HYDRATION_START = '[';\n/** used to indicate that an `{:else}...` block was rendered */\nexport const HYDRATION_START_ELSE = '[!';\nexport const HYDRATION_END = ']';\nexport const HYDRATION_ERROR = {};\n\nexport const ELEMENT_IS_NAMESPACED = 1;\nexport const ELEMENT_PRESERVE_ATTRIBUTE_CASE = 1 << 1;\n\nexport const UNINITIALIZED = Symbol();\n\n// Dev-time component properties\nexport const FILENAME = Symbol('filename');\nexport const HMR = Symbol('hmr');\n\nexport const NAMESPACE_SVG = 'http://www.w3.org/2000/svg';\nexport const NAMESPACE_MATHML = 'http://www.w3.org/1998/Math/MathML';\n\n// we use a list of ignorable runtime warnings because not every runtime warning\n// can be ignored and we want to keep the validation for svelte-ignore in place\nexport const IGNORABLE_RUNTIME_WARNINGS = /** @type {const} */ ([\n\t'state_snapshot_uncloneable',\n\t'binding_property_non_reactive',\n\t'hydration_attribute_changed',\n\t'hydration_html_changed',\n\t'ownership_invalid_binding',\n\t'ownership_invalid_mutation'\n]);\n\n/**\n * Whitespace inside one of these elements will not result in\n * a whitespace node being created in any circumstances. (This\n * list is almost certainly very incomplete)\n * TODO this is currently unused\n */\nexport const ELEMENTS_WITHOUT_TEXT = ['audio', 'datalist', 'dl', 'optgroup', 'select', 'video'];\n","/* This file is generated by scripts/process-messages/index.js. Do not edit! */\n\nimport { DEV } from 'esm-env';\n\n/**\n * Cannot use `{@render children(...)}` if the parent component uses `let:` directives. Consider using a named snippet instead\n * @returns {never}\n */\nexport function invalid_default_snippet() {\n\tif (DEV) {\n\t\tconst error = new Error(`invalid_default_snippet\\nCannot use \\`{@render children(...)}\\` if the parent component uses \\`let:\\` directives. Consider using a named snippet instead\\nhttps://svelte.dev/e/invalid_default_snippet`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/invalid_default_snippet`);\n\t}\n}\n\n/**\n * `%name%(...)` can only be used during component initialisation\n * @param {string} name\n * @returns {never}\n */\nexport function lifecycle_outside_component(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`lifecycle_outside_component\\n\\`${name}(...)\\` can only be used during component initialisation\\nhttps://svelte.dev/e/lifecycle_outside_component`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/lifecycle_outside_component`);\n\t}\n}\n\n/**\n * `%name%` is not a store with a `subscribe` method\n * @param {string} name\n * @returns {never}\n */\nexport function store_invalid_shape(name) {\n\tif (DEV) {\n\t\tconst error = new Error(`store_invalid_shape\\n\\`${name}\\` is not a store with a \\`subscribe\\` method\\nhttps://svelte.dev/e/store_invalid_shape`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/store_invalid_shape`);\n\t}\n}\n\n/**\n * The `this` prop on `<svelte:element>` must be a string, if defined\n * @returns {never}\n */\nexport function svelte_element_invalid_this_value() {\n\tif (DEV) {\n\t\tconst error = new Error(`svelte_element_invalid_this_value\\nThe \\`this\\` prop on \\`<svelte:element>\\` must be a string, if defined\\nhttps://svelte.dev/e/svelte_element_invalid_this_value`);\n\n\t\terror.name = 'Svelte error';\n\t\tthrow error;\n\t} else {\n\t\tthrow new Error(`https://svelte.dev/e/svelte_element_invalid_this_value`);\n\t}\n}","/** @import { ComponentContext } from '#client' */\n\nimport { DEV } from 'esm-env';\nimport { add_owner } from './dev/ownership.js';\nimport { lifecycle_outside_component } from '../shared/errors.js';\nimport { source } from './reactivity/sources.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction,\n\tuntrack\n} from './runtime.js';\nimport { effect } from './reactivity/effects.js';\nimport { legacy_mode_flag } from '../flags/index.js';\n\n/** @type {ComponentContext | null} */\nexport let component_context = null;\n\n/** @param {ComponentContext | null} context */\nexport function set_component_context(context) {\n\tcomponent_context = context;\n}\n\n/**\n * The current component function. Different from current component context:\n * ```html\n * <!-- App.svelte -->\n * <Foo>\n *   <Bar /> <!-- context == Foo.svelte, function == App.svelte -->\n * </Foo>\n * ```\n * @type {ComponentContext['function']}\n */\nexport let dev_current_component_function = null;\n\n/** @param {ComponentContext['function']} fn */\nexport function set_dev_current_component_function(fn) {\n\tdev_current_component_function = fn;\n}\n\n/**\n * Retrieves the context that belongs to the closest parent component with the specified `key`.\n * Must be called during component initialisation.\n *\n * @template T\n * @param {any} key\n * @returns {T}\n */\nexport function getContext(key) {\n\tconst context_map = get_or_init_context_map('getContext');\n\tconst result = /** @type {T} */ (context_map.get(key));\n\treturn result;\n}\n\n/**\n * Associates an arbitrary `context` object with the current component and the specified `key`\n * and returns that object. The context is then available to children of the component\n * (including slotted content) with `getContext`.\n *\n * Like lifecycle functions, this must be called during component initialisation.\n *\n * @template T\n * @param {any} key\n * @param {T} context\n * @returns {T}\n */\nexport function setContext(key, context) {\n\tconst context_map = get_or_init_context_map('setContext');\n\n\tif (DEV) {\n\t\t// When state is put into context, we treat as if it's global from now on.\n\t\t// We do for performance reasons (it's for example very expensive to call\n\t\t// getContext on a big object many times when part of a list component)\n\t\t// and danger of false positives.\n\t\tuntrack(() => add_owner(context, null, true));\n\t}\n\n\tcontext_map.set(key, context);\n\treturn context;\n}\n\n/**\n * Checks whether a given `key` has been set in the context of a parent component.\n * Must be called during component initialisation.\n *\n * @param {any} key\n * @returns {boolean}\n */\nexport function hasContext(key) {\n\tconst context_map = get_or_init_context_map('hasContext');\n\treturn context_map.has(key);\n}\n\n/**\n * Retrieves the whole context map that belongs to the closest parent component.\n * Must be called during component initialisation. Useful, for example, if you\n * programmatically create a component and want to pass the existing context to it.\n *\n * @template {Map<any, any>} [T=Map<any, any>]\n * @returns {T}\n */\nexport function getAllContexts() {\n\tconst context_map = get_or_init_context_map('getAllContexts');\n\treturn /** @type {T} */ (context_map);\n}\n\n/**\n * @param {Record<string, unknown>} props\n * @param {any} runes\n * @param {Function} [fn]\n * @returns {void}\n */\nexport function push(props, runes = false, fn) {\n\tcomponent_context = {\n\t\tp: component_context,\n\t\tc: null,\n\t\te: null,\n\t\tm: false,\n\t\ts: props,\n\t\tx: null,\n\t\tl: null\n\t};\n\n\tif (legacy_mode_flag && !runes) {\n\t\tcomponent_context.l = {\n\t\t\ts: null,\n\t\t\tu: null,\n\t\t\tr1: [],\n\t\t\tr2: source(false)\n\t\t};\n\t}\n\n\tif (DEV) {\n\t\t// component function\n\t\tcomponent_context.function = fn;\n\t\tdev_current_component_function = fn;\n\t}\n}\n\n/**\n * @template {Record<string, any>} T\n * @param {T} [component]\n * @returns {T}\n */\nexport function pop(component) {\n\tconst context_stack_item = component_context;\n\tif (context_stack_item !== null) {\n\t\tif (component !== undefined) {\n\t\t\tcontext_stack_item.x = component;\n\t\t}\n\t\tconst component_effects = context_stack_item.e;\n\t\tif (component_effects !== null) {\n\t\t\tvar previous_effect = active_effect;\n\t\t\tvar previous_reaction = active_reaction;\n\t\t\tcontext_stack_item.e = null;\n\t\t\ttry {\n\t\t\t\tfor (var i = 0; i < component_effects.length; i++) {\n\t\t\t\t\tvar component_effect = component_effects[i];\n\t\t\t\t\tset_active_effect(component_effect.effect);\n\t\t\t\t\tset_active_reaction(component_effect.reaction);\n\t\t\t\t\teffect(component_effect.fn);\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tset_active_effect(previous_effect);\n\t\t\t\tset_active_reaction(previous_reaction);\n\t\t\t}\n\t\t}\n\t\tcomponent_context = context_stack_item.p;\n\t\tif (DEV) {\n\t\t\tdev_current_component_function = context_stack_item.p?.function ?? null;\n\t\t}\n\t\tcontext_stack_item.m = true;\n\t}\n\t// Micro-optimization: Don't set .a above to the empty object\n\t// so it can be garbage-collected when the return here is unused\n\treturn component || /** @type {T} */ ({});\n}\n\n/** @returns {boolean} */\nexport function is_runes() {\n\treturn !legacy_mode_flag || (component_context !== null && component_context.l === null);\n}\n\n/**\n * @param {string} name\n * @returns {Map<unknown, unknown>}\n */\nfunction get_or_init_context_map(name) {\n\tif (component_context === null) {\n\t\tlifecycle_outside_component(name);\n\t}\n\n\treturn (component_context.c ??= new Map(get_parent_context(component_context) || undefined));\n}\n\n/**\n * @param {ComponentContext} component_context\n * @returns {Map<unknown, unknown> | null}\n */\nfunction get_parent_context(component_context) {\n\tlet parent = component_context.p;\n\twhile (parent !== null) {\n\t\tconst context_map = parent.c;\n\t\tif (context_map !== null) {\n\t\t\treturn context_map;\n\t\t}\n\t\tparent = parent.p;\n\t}\n\treturn null;\n}\n","/** @import { Derived, Effect, Reaction, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tuntracked_writes,\n\tget,\n\tschedule_effect,\n\tset_untracked_writes,\n\tset_signal_status,\n\tuntrack,\n\tincrement_write_version,\n\tupdate_effect,\n\tderived_sources,\n\tset_derived_sources,\n\tcheck_dirtiness,\n\tset_is_flushing_effect,\n\tis_flushing_effect,\n\tuntracking\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport {\n\tCLEAN,\n\tDERIVED,\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tINSPECT_EFFECT,\n\tUNOWNED,\n\tMAYBE_DIRTY,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT\n} from '../constants.js';\nimport * as e from '../errors.js';\nimport { legacy_mode_flag, tracing_mode_flag } from '../../flags/index.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { component_context, is_runes } from '../context.js';\n\nexport let inspect_effects = new Set();\n\n/**\n * @param {Set<any>} v\n */\nexport function set_inspect_effects(v) {\n\tinspect_effects = v;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {Error | null} [stack]\n * @returns {Source<V>}\n */\nexport function source(v, stack) {\n\t/** @type {Value} */\n\tvar signal = {\n\t\tf: 0, // TODO ideally we could skip this altogether, but it causes type errors\n\t\tv,\n\t\treactions: null,\n\t\tequals,\n\t\trv: 0,\n\t\twv: 0\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = stack ?? get_stack('CreatedAt');\n\t\tsignal.debug = null;\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {V} v\n */\nexport function state(v) {\n\treturn push_derived_source(source(v));\n}\n\n/**\n * @template V\n * @param {V} initial_value\n * @param {boolean} [immutable]\n * @returns {Source<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mutable_source(initial_value, immutable = false) {\n\tconst s = source(initial_value);\n\tif (!immutable) {\n\t\ts.equals = safe_equals;\n\t}\n\n\t// bind the signal to the component context, in case we need to\n\t// track updates to trigger beforeUpdate/afterUpdate callbacks\n\tif (legacy_mode_flag && component_context !== null && component_context.l !== null) {\n\t\t(component_context.l.s ??= []).push(s);\n\t}\n\n\treturn s;\n}\n\n/**\n * @template V\n * @param {V} v\n * @param {boolean} [immutable]\n * @returns {Source<V>}\n */\nexport function mutable_state(v, immutable = false) {\n\treturn push_derived_source(mutable_source(v, immutable));\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n */\n/*#__NO_SIDE_EFFECTS__*/\nfunction push_derived_source(source) {\n\tif (active_reaction !== null && !untracking && (active_reaction.f & DERIVED) !== 0) {\n\t\tif (derived_sources === null) {\n\t\t\tset_derived_sources([source]);\n\t\t} else {\n\t\t\tderived_sources.push(source);\n\t\t}\n\t}\n\n\treturn source;\n}\n\n/**\n * @template V\n * @param {Value<V>} source\n * @param {V} value\n */\nexport function mutate(source, value) {\n\tset(\n\t\tsource,\n\t\tuntrack(() => get(source))\n\t);\n\treturn value;\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @returns {V}\n */\nexport function set(source, value) {\n\tif (\n\t\tactive_reaction !== null &&\n\t\t!untracking &&\n\t\tis_runes() &&\n\t\t(active_reaction.f & (DERIVED | BLOCK_EFFECT)) !== 0 &&\n\t\t// If the source was created locally within the current derived, then\n\t\t// we allow the mutation.\n\t\t(derived_sources === null || !derived_sources.includes(source))\n\t) {\n\t\te.state_unsafe_mutation();\n\t}\n\n\treturn internal_set(source, value);\n}\n\n/**\n * @template V\n * @param {Source<V>} source\n * @param {V} value\n * @returns {V}\n */\nexport function internal_set(source, value) {\n\tif (!source.equals(value)) {\n\t\tvar old_value = source.v;\n\t\tsource.v = value;\n\t\tsource.wv = increment_write_version();\n\n\t\tif (DEV && tracing_mode_flag) {\n\t\t\tsource.updated = get_stack('UpdatedAt');\n\t\t\tif (active_effect != null) {\n\t\t\t\tsource.trace_need_increase = true;\n\t\t\t\tsource.trace_v ??= old_value;\n\t\t\t}\n\t\t}\n\n\t\tmark_reactions(source, DIRTY);\n\n\t\t// It's possible that the current reaction might not have up-to-date dependencies\n\t\t// whilst it's actively running. So in the case of ensuring it registers the reaction\n\t\t// properly for itself, we need to ensure the current effect actually gets\n\t\t// scheduled. i.e: `$effect(() => x++)`\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tactive_effect !== null &&\n\t\t\t(active_effect.f & CLEAN) !== 0 &&\n\t\t\t(active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0\n\t\t) {\n\t\t\tif (untracked_writes === null) {\n\t\t\t\tset_untracked_writes([source]);\n\t\t\t} else {\n\t\t\t\tuntracked_writes.push(source);\n\t\t\t}\n\t\t}\n\n\t\tif (DEV && inspect_effects.size > 0) {\n\t\t\tconst inspects = Array.from(inspect_effects);\n\t\t\tvar previously_flushing_effect = is_flushing_effect;\n\t\t\tset_is_flushing_effect(true);\n\t\t\ttry {\n\t\t\t\tfor (const effect of inspects) {\n\t\t\t\t\t// Mark clean inspect-effects as maybe dirty and then check their dirtiness\n\t\t\t\t\t// instead of just updating the effects - this way we avoid overfiring.\n\t\t\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t\t\t}\n\t\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\t\tupdate_effect(effect);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tset_is_flushing_effect(previously_flushing_effect);\n\t\t\t}\n\t\t\tinspect_effects.clear();\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update(source, d = 1) {\n\tvar value = get(source);\n\tvar result = d === 1 ? value++ : value--;\n\n\tset(source, value);\n\n\t// @ts-expect-error\n\treturn result;\n}\n\n/**\n * @template {number | bigint} T\n * @param {Source<T>} source\n * @param {1 | -1} [d]\n * @returns {T}\n */\nexport function update_pre(source, d = 1) {\n\tvar value = get(source);\n\n\t// @ts-expect-error\n\treturn set(source, d === 1 ? ++value : --value);\n}\n\n/**\n * @param {Value} signal\n * @param {number} status should be DIRTY or MAYBE_DIRTY\n * @returns {void}\n */\nfunction mark_reactions(signal, status) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tvar runes = is_runes();\n\tvar length = reactions.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tvar reaction = reactions[i];\n\t\tvar flags = reaction.f;\n\n\t\t// Skip any effects that are already dirty\n\t\tif ((flags & DIRTY) !== 0) continue;\n\n\t\t// In legacy mode, skip the current effect to prevent infinite loops\n\t\tif (!runes && reaction === active_effect) continue;\n\n\t\t// Inspect effects need to run immediately, so that the stack trace makes sense\n\t\tif (DEV && (flags & INSPECT_EFFECT) !== 0) {\n\t\t\tinspect_effects.add(reaction);\n\t\t\tcontinue;\n\t\t}\n\n\t\tset_signal_status(reaction, status);\n\n\t\t// If the signal a) was previously clean or b) is an unowned derived, then mark it\n\t\tif ((flags & (CLEAN | UNOWNED)) !== 0) {\n\t\t\tif ((flags & DERIVED) !== 0) {\n\t\t\t\tmark_reactions(/** @type {Derived} */ (reaction), MAYBE_DIRTY);\n\t\t\t} else {\n\t\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t\t}\n\t\t}\n\t}\n}\n","/** @import { TemplateNode } from '#client' */\n\nimport {\n\tHYDRATION_END,\n\tHYDRATION_ERROR,\n\tHYDRATION_START,\n\tHYDRATION_START_ELSE\n} from '../../../constants.js';\nimport * as w from '../warnings.js';\nimport { get_next_sibling } from './operations.js';\n\n/**\n * Use this variable to guard everything related to hydration code so it can be treeshaken out\n * if the user doesn't use the `hydrate` method and these code paths are therefore not needed.\n */\nexport let hydrating = false;\n\n/** @param {boolean} value */\nexport function set_hydrating(value) {\n\thydrating = value;\n}\n\n/**\n * The node that is currently being hydrated. This starts out as the first node inside the opening\n * <!--[--> comment, and updates each time a component calls `$.child(...)` or `$.sibling(...)`.\n * When entering a block (e.g. `{#if ...}`), `hydrate_node` is the block opening comment; by the\n * time we leave the block it is the closing comment, which serves as the block's anchor.\n * @type {TemplateNode}\n */\nexport let hydrate_node;\n\n/** @param {TemplateNode} node */\nexport function set_hydrate_node(node) {\n\tif (node === null) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\treturn (hydrate_node = node);\n}\n\nexport function hydrate_next() {\n\treturn set_hydrate_node(/** @type {TemplateNode} */ (get_next_sibling(hydrate_node)));\n}\n\n/** @param {TemplateNode} node */\nexport function reset(node) {\n\tif (!hydrating) return;\n\n\t// If the node has remaining siblings, something has gone wrong\n\tif (get_next_sibling(hydrate_node) !== null) {\n\t\tw.hydration_mismatch();\n\t\tthrow HYDRATION_ERROR;\n\t}\n\n\thydrate_node = node;\n}\n\n/**\n * @param {HTMLTemplateElement} template\n */\nexport function hydrate_template(template) {\n\tif (hydrating) {\n\t\t// @ts-expect-error TemplateNode doesn't include DocumentFragment, but it's actually fine\n\t\thydrate_node = template.content;\n\t}\n}\n\nexport function next(count = 1) {\n\tif (hydrating) {\n\t\tvar i = count;\n\t\tvar node = hydrate_node;\n\n\t\twhile (i--) {\n\t\t\tnode = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\t}\n\n\t\thydrate_node = node;\n\t}\n}\n\n/**\n * Removes all nodes starting at `hydrate_node` up until the next hydration end comment\n */\nexport function remove_nodes() {\n\tvar depth = 0;\n\tvar node = hydrate_node;\n\n\twhile (true) {\n\t\tif (node.nodeType === 8) {\n\t\t\tvar data = /** @type {Comment} */ (node).data;\n\n\t\t\tif (data === HYDRATION_END) {\n\t\t\t\tif (depth === 0) return node;\n\t\t\t\tdepth -= 1;\n\t\t\t} else if (data === HYDRATION_START || data === HYDRATION_START_ELSE) {\n\t\t\t\tdepth += 1;\n\t\t\t}\n\t\t}\n\n\t\tvar next = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tnode.remove();\n\t\tnode = next;\n\t}\n}\n","/** @import { ProxyMetadata, Source } from '#client' */\nimport { DEV } from 'esm-env';\nimport { get, active_effect } from './runtime.js';\nimport { component_context } from './context.js';\nimport {\n\tarray_prototype,\n\tget_descriptor,\n\tget_prototype_of,\n\tis_array,\n\tobject_prototype\n} from '../shared/utils.js';\nimport { check_ownership, widen_ownership } from './dev/ownership.js';\nimport { source, set } from './reactivity/sources.js';\nimport { STATE_SYMBOL, STATE_SYMBOL_METADATA } from './constants.js';\nimport { UNINITIALIZED } from '../../constants.js';\nimport * as e from './errors.js';\nimport { get_stack } from './dev/tracing.js';\nimport { tracing_mode_flag } from '../flags/index.js';\n\n/**\n * @template T\n * @param {T} value\n * @param {ProxyMetadata | null} [parent]\n * @param {Source<T>} [prev] dev mode only\n * @returns {T}\n */\nexport function proxy(value, parent = null, prev) {\n\t/** @type {Error | null} */\n\tvar stack = null;\n\tif (DEV && tracing_mode_flag) {\n\t\tstack = get_stack('CreatedAt');\n\t}\n\t// if non-proxyable, or is already a proxy, return `value`\n\tif (typeof value !== 'object' || value === null || STATE_SYMBOL in value) {\n\t\treturn value;\n\t}\n\n\tconst prototype = get_prototype_of(value);\n\n\tif (prototype !== object_prototype && prototype !== array_prototype) {\n\t\treturn value;\n\t}\n\n\t/** @type {Map<any, Source<any>>} */\n\tvar sources = new Map();\n\tvar is_proxied_array = is_array(value);\n\tvar version = source(0);\n\n\tif (is_proxied_array) {\n\t\t// We need to create the length source eagerly to ensure that\n\t\t// mutations to the array are properly synced with our proxy\n\t\tsources.set('length', source(/** @type {any[]} */ (value).length, stack));\n\t}\n\n\t/** @type {ProxyMetadata} */\n\tvar metadata;\n\n\tif (DEV) {\n\t\tmetadata = {\n\t\t\tparent,\n\t\t\towners: null\n\t\t};\n\n\t\tif (prev) {\n\t\t\t// Reuse owners from previous state; necessary because reassignment is not guaranteed to have correct component context.\n\t\t\t// If no previous proxy exists we play it safe and assume ownerless state\n\t\t\t// @ts-expect-error\n\t\t\tconst prev_owners = prev.v?.[STATE_SYMBOL_METADATA]?.owners;\n\t\t\tmetadata.owners = prev_owners ? new Set(prev_owners) : null;\n\t\t} else {\n\t\t\tmetadata.owners =\n\t\t\t\tparent === null\n\t\t\t\t\t? component_context !== null\n\t\t\t\t\t\t? new Set([component_context.function])\n\t\t\t\t\t\t: null\n\t\t\t\t\t: new Set();\n\t\t}\n\t}\n\n\treturn new Proxy(/** @type {any} */ (value), {\n\t\tdefineProperty(_, prop, descriptor) {\n\t\t\tif (\n\t\t\t\t!('value' in descriptor) ||\n\t\t\t\tdescriptor.configurable === false ||\n\t\t\t\tdescriptor.enumerable === false ||\n\t\t\t\tdescriptor.writable === false\n\t\t\t) {\n\t\t\t\t// we disallow non-basic descriptors, because unless they are applied to the\n\t\t\t\t// target object — which we avoid, so that state can be forked — we will run\n\t\t\t\t// afoul of the various invariants\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/getOwnPropertyDescriptor#invariants\n\t\t\t\te.state_descriptors_fixed();\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\ts = source(descriptor.value, stack);\n\t\t\t\tsources.set(prop, s);\n\t\t\t} else {\n\t\t\t\tset(s, proxy(descriptor.value, metadata));\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tdeleteProperty(target, prop) {\n\t\t\tvar s = sources.get(prop);\n\n\t\t\tif (s === undefined) {\n\t\t\t\tif (prop in target) {\n\t\t\t\t\tsources.set(prop, source(UNINITIALIZED, stack));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// When working with arrays, we need to also ensure we update the length when removing\n\t\t\t\t// an indexed property\n\t\t\t\tif (is_proxied_array && typeof prop === 'string') {\n\t\t\t\t\tvar ls = /** @type {Source<number>} */ (sources.get('length'));\n\t\t\t\t\tvar n = Number(prop);\n\n\t\t\t\t\tif (Number.isInteger(n) && n < ls.v) {\n\t\t\t\t\t\tset(ls, n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tset(s, UNINITIALIZED);\n\t\t\t\tupdate_version(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\tget(target, prop, receiver) {\n\t\t\tif (DEV && prop === STATE_SYMBOL_METADATA) {\n\t\t\t\treturn metadata;\n\t\t\t}\n\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar exists = prop in target;\n\n\t\t\t// create a source, but only if it's an own property and not a prototype property\n\t\t\tif (s === undefined && (!exists || get_descriptor(target, prop)?.writable)) {\n\t\t\t\ts = source(proxy(exists ? target[prop] : UNINITIALIZED, metadata), stack);\n\t\t\t\tsources.set(prop, s);\n\t\t\t}\n\n\t\t\tif (s !== undefined) {\n\t\t\t\tvar v = get(s);\n\n\t\t\t\t// In case of something like `foo = bar.map(...)`, foo would have ownership\n\t\t\t\t// of the array itself, while the individual items would have ownership\n\t\t\t\t// of the component that created bar. That means if we later do `foo[0].baz = 42`,\n\t\t\t\t// we could get a false-positive ownership violation, since the two proxies\n\t\t\t\t// are not connected to each other via the parent metadata relationship.\n\t\t\t\t// For this reason, we need to widen the ownership of the children\n\t\t\t\t// upon access when we detect they are not connected.\n\t\t\t\tif (DEV) {\n\t\t\t\t\t/** @type {ProxyMetadata | undefined} */\n\t\t\t\t\tvar prop_metadata = v?.[STATE_SYMBOL_METADATA];\n\t\t\t\t\tif (prop_metadata && prop_metadata?.parent !== metadata) {\n\t\t\t\t\t\twiden_ownership(metadata, prop_metadata);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn v === UNINITIALIZED ? undefined : v;\n\t\t\t}\n\n\t\t\treturn Reflect.get(target, prop, receiver);\n\t\t},\n\n\t\tgetOwnPropertyDescriptor(target, prop) {\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\tif (descriptor && 'value' in descriptor) {\n\t\t\t\tvar s = sources.get(prop);\n\t\t\t\tif (s) descriptor.value = get(s);\n\t\t\t} else if (descriptor === undefined) {\n\t\t\t\tvar source = sources.get(prop);\n\t\t\t\tvar value = source?.v;\n\n\t\t\t\tif (source !== undefined && value !== UNINITIALIZED) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tenumerable: true,\n\t\t\t\t\t\tconfigurable: true,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\twritable: true\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn descriptor;\n\t\t},\n\n\t\thas(target, prop) {\n\t\t\tif (DEV && prop === STATE_SYMBOL_METADATA) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (prop === STATE_SYMBOL) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = (s !== undefined && s.v !== UNINITIALIZED) || Reflect.has(target, prop);\n\n\t\t\tif (\n\t\t\t\ts !== undefined ||\n\t\t\t\t(active_effect !== null && (!has || get_descriptor(target, prop)?.writable))\n\t\t\t) {\n\t\t\t\tif (s === undefined) {\n\t\t\t\t\ts = source(has ? proxy(target[prop], metadata) : UNINITIALIZED, stack);\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\n\t\t\t\tvar value = get(s);\n\t\t\t\tif (value === UNINITIALIZED) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn has;\n\t\t},\n\n\t\tset(target, prop, value, receiver) {\n\t\t\tvar s = sources.get(prop);\n\t\t\tvar has = prop in target;\n\n\t\t\t// variable.length = value -> clear all signals with index >= value\n\t\t\tif (is_proxied_array && prop === 'length') {\n\t\t\t\tfor (var i = value; i < /** @type {Source<number>} */ (s).v; i += 1) {\n\t\t\t\t\tvar other_s = sources.get(i + '');\n\t\t\t\t\tif (other_s !== undefined) {\n\t\t\t\t\t\tset(other_s, UNINITIALIZED);\n\t\t\t\t\t} else if (i in target) {\n\t\t\t\t\t\t// If the item exists in the original, we need to create a uninitialized source,\n\t\t\t\t\t\t// else a later read of the property would result in a source being created with\n\t\t\t\t\t\t// the value of the original item at that index.\n\t\t\t\t\t\tother_s = source(UNINITIALIZED, stack);\n\t\t\t\t\t\tsources.set(i + '', other_s);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If we haven't yet created a source for this property, we need to ensure\n\t\t\t// we do so otherwise if we read it later, then the write won't be tracked and\n\t\t\t// the heuristics of effects will be different vs if we had read the proxied\n\t\t\t// object property before writing to that property.\n\t\t\tif (s === undefined) {\n\t\t\t\tif (!has || get_descriptor(target, prop)?.writable) {\n\t\t\t\t\ts = source(undefined, stack);\n\t\t\t\t\tset(s, proxy(value, metadata));\n\t\t\t\t\tsources.set(prop, s);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thas = s.v !== UNINITIALIZED;\n\t\t\t\tset(s, proxy(value, metadata));\n\t\t\t}\n\n\t\t\tif (DEV) {\n\t\t\t\t/** @type {ProxyMetadata | undefined} */\n\t\t\t\tvar prop_metadata = value?.[STATE_SYMBOL_METADATA];\n\t\t\t\tif (prop_metadata && prop_metadata?.parent !== metadata) {\n\t\t\t\t\twiden_ownership(metadata, prop_metadata);\n\t\t\t\t}\n\t\t\t\tcheck_ownership(metadata);\n\t\t\t}\n\n\t\t\tvar descriptor = Reflect.getOwnPropertyDescriptor(target, prop);\n\n\t\t\t// Set the new value before updating any signals so that any listeners get the new value\n\t\t\tif (descriptor?.set) {\n\t\t\t\tdescriptor.set.call(receiver, value);\n\t\t\t}\n\n\t\t\tif (!has) {\n\t\t\t\t// If we have mutated an array directly, we might need to\n\t\t\t\t// signal that length has also changed. Do it before updating metadata\n\t\t\t\t// to ensure that iterating over the array as a result of a metadata update\n\t\t\t\t// will not cause the length to be out of sync.\n\t\t\t\tif (is_proxied_array && typeof prop === 'string') {\n\t\t\t\t\tvar ls = /** @type {Source<number>} */ (sources.get('length'));\n\t\t\t\t\tvar n = Number(prop);\n\n\t\t\t\t\tif (Number.isInteger(n) && n >= ls.v) {\n\t\t\t\t\t\tset(ls, n + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tupdate_version(version);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\townKeys(target) {\n\t\t\tget(version);\n\n\t\t\tvar own_keys = Reflect.ownKeys(target).filter((key) => {\n\t\t\t\tvar source = sources.get(key);\n\t\t\t\treturn source === undefined || source.v !== UNINITIALIZED;\n\t\t\t});\n\n\t\t\tfor (var [key, source] of sources) {\n\t\t\t\tif (source.v !== UNINITIALIZED && !(key in target)) {\n\t\t\t\t\town_keys.push(key);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn own_keys;\n\t\t},\n\n\t\tsetPrototypeOf() {\n\t\t\te.state_prototype_fixed();\n\t\t}\n\t});\n}\n\n/**\n * @param {Source<number>} signal\n * @param {1 | -1} [d]\n */\nfunction update_version(signal, d = 1) {\n\tset(signal, signal.v + d);\n}\n\n/**\n * @param {any} value\n */\nexport function get_proxied_value(value) {\n\tif (value !== null && typeof value === 'object' && STATE_SYMBOL in value) {\n\t\treturn value[STATE_SYMBOL];\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {any} a\n * @param {any} b\n */\nexport function is(a, b) {\n\treturn Object.is(get_proxied_value(a), get_proxied_value(b));\n}\n","/** @import { TemplateNode } from '#client' */\nimport { hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport { DEV } from 'esm-env';\nimport { init_array_prototype_warnings } from '../dev/equality.js';\nimport { get_descriptor } from '../../shared/utils.js';\n\n// export these for reference in the compiled code, making global name deduplication unnecessary\n/** @type {Window} */\nexport var $window;\n\n/** @type {Document} */\nexport var $document;\n\n/** @type {boolean} */\nexport var is_firefox;\n\n/** @type {() => Node | null} */\nvar first_child_getter;\n/** @type {() => Node | null} */\nvar next_sibling_getter;\n\n/**\n * Initialize these lazily to avoid issues when using the runtime in a server context\n * where these globals are not available while avoiding a separate server entry point\n */\nexport function init_operations() {\n\tif ($window !== undefined) {\n\t\treturn;\n\t}\n\n\t$window = window;\n\t$document = document;\n\tis_firefox = /Firefox/.test(navigator.userAgent);\n\n\tvar element_prototype = Element.prototype;\n\tvar node_prototype = Node.prototype;\n\n\t// @ts-ignore\n\tfirst_child_getter = get_descriptor(node_prototype, 'firstChild').get;\n\t// @ts-ignore\n\tnext_sibling_getter = get_descriptor(node_prototype, 'nextSibling').get;\n\n\t// the following assignments improve perf of lookups on DOM nodes\n\t// @ts-expect-error\n\telement_prototype.__click = undefined;\n\t// @ts-expect-error\n\telement_prototype.__className = '';\n\t// @ts-expect-error\n\telement_prototype.__attributes = null;\n\t// @ts-expect-error\n\telement_prototype.__styles = null;\n\t// @ts-expect-error\n\telement_prototype.__e = undefined;\n\n\t// @ts-expect-error\n\tText.prototype.__t = undefined;\n\n\tif (DEV) {\n\t\t// @ts-expect-error\n\t\telement_prototype.__svelte_meta = null;\n\n\t\tinit_array_prototype_warnings();\n\t}\n}\n\n/**\n * @param {string} value\n * @returns {Text}\n */\nexport function create_text(value = '') {\n\treturn document.createTextNode(value);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_first_child(node) {\n\treturn first_child_getter.call(node);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {Node | null}\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function get_next_sibling(node) {\n\treturn next_sibling_getter.call(node);\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @template {Node} N\n * @param {N} node\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function child(node, is_text) {\n\tif (!hydrating) {\n\t\treturn get_first_child(node);\n\t}\n\n\tvar child = /** @type {TemplateNode} */ (get_first_child(hydrate_node));\n\n\t// Child can be null if we have an element with a single child, like `<p>{text}</p>`, where `text` is empty\n\tif (child === null) {\n\t\tchild = hydrate_node.appendChild(create_text());\n\t} else if (is_text && child.nodeType !== 3) {\n\t\tvar text = create_text();\n\t\tchild?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(child);\n\treturn child;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {DocumentFragment | TemplateNode[]} fragment\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function first_child(fragment, is_text) {\n\tif (!hydrating) {\n\t\t// when not hydrating, `fragment` is a `DocumentFragment` (the result of calling `open_frag`)\n\t\tvar first = /** @type {DocumentFragment} */ (get_first_child(/** @type {Node} */ (fragment)));\n\n\t\t// TODO prevent user comments with the empty string when preserveComments is true\n\t\tif (first instanceof Comment && first.data === '') return get_next_sibling(first);\n\n\t\treturn first;\n\t}\n\n\t// if an {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && hydrate_node?.nodeType !== 3) {\n\t\tvar text = create_text();\n\n\t\thydrate_node?.before(text);\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\treturn hydrate_node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {TemplateNode} node\n * @param {number} count\n * @param {boolean} is_text\n * @returns {Node | null}\n */\nexport function sibling(node, count = 1, is_text = false) {\n\tlet next_sibling = hydrating ? hydrate_node : node;\n\tvar last_sibling;\n\n\twhile (count--) {\n\t\tlast_sibling = next_sibling;\n\t\tnext_sibling = /** @type {TemplateNode} */ (get_next_sibling(next_sibling));\n\t}\n\n\tif (!hydrating) {\n\t\treturn next_sibling;\n\t}\n\n\tvar type = next_sibling?.nodeType;\n\n\t// if a sibling {expression} is empty during SSR, there might be no\n\t// text node to hydrate — we must therefore create one\n\tif (is_text && type !== 3) {\n\t\tvar text = create_text();\n\t\t// If the next sibling is `null` and we're handling text then it's because\n\t\t// the SSR content was empty for the text, so we need to generate a new text\n\t\t// node and insert it after the last sibling\n\t\tif (next_sibling === null) {\n\t\t\tlast_sibling?.after(text);\n\t\t} else {\n\t\t\tnext_sibling.before(text);\n\t\t}\n\t\tset_hydrate_node(text);\n\t\treturn text;\n\t}\n\n\tset_hydrate_node(next_sibling);\n\treturn /** @type {TemplateNode} */ (next_sibling);\n}\n\n/**\n * @template {Node} N\n * @param {N} node\n * @returns {void}\n */\nexport function clear_text_content(node) {\n\tnode.textContent = '';\n}\n","/** @import { Derived, Effect } from '#client' */\nimport { DEV } from 'esm-env';\nimport { CLEAN, DERIVED, DIRTY, EFFECT_HAS_DERIVED, MAYBE_DIRTY, UNOWNED } from '../constants.js';\nimport {\n\tactive_reaction,\n\tactive_effect,\n\tset_signal_status,\n\tskip_reaction,\n\tupdate_reaction,\n\tincrement_write_version,\n\tset_active_effect\n} from '../runtime.js';\nimport { equals, safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport { destroy_effect } from './effects.js';\nimport { inspect_effects, set_inspect_effects } from './sources.js';\nimport { get_stack } from '../dev/tracing.js';\nimport { tracing_mode_flag } from '../../flags/index.js';\nimport { component_context } from '../context.js';\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived(fn) {\n\tvar flags = DERIVED | DIRTY;\n\tvar parent_derived =\n\t\tactive_reaction !== null && (active_reaction.f & DERIVED) !== 0\n\t\t\t? /** @type {Derived} */ (active_reaction)\n\t\t\t: null;\n\n\tif (active_effect === null || (parent_derived !== null && (parent_derived.f & UNOWNED) !== 0)) {\n\t\tflags |= UNOWNED;\n\t} else {\n\t\t// Since deriveds are evaluated lazily, any effects created inside them are\n\t\t// created too late to ensure that the parent effect is added to the tree\n\t\tactive_effect.f |= EFFECT_HAS_DERIVED;\n\t}\n\n\t/** @type {Derived<V>} */\n\tconst signal = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\teffects: null,\n\t\tequals,\n\t\tf: flags,\n\t\tfn,\n\t\treactions: null,\n\t\trv: 0,\n\t\tv: /** @type {V} */ (null),\n\t\twv: 0,\n\t\tparent: parent_derived ?? active_effect\n\t};\n\n\tif (DEV && tracing_mode_flag) {\n\t\tsignal.created = get_stack('CreatedAt');\n\t}\n\n\treturn signal;\n}\n\n/**\n * @template V\n * @param {() => V} fn\n * @returns {Derived<V>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function derived_safe_equal(fn) {\n\tconst signal = derived(fn);\n\tsignal.equals = safe_equals;\n\treturn signal;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function destroy_derived_effects(derived) {\n\tvar effects = derived.effects;\n\n\tif (effects !== null) {\n\t\tderived.effects = null;\n\n\t\tfor (var i = 0; i < effects.length; i += 1) {\n\t\t\tdestroy_effect(/** @type {Effect} */ (effects[i]));\n\t\t}\n\t}\n}\n\n/**\n * The currently updating deriveds, used to detect infinite recursion\n * in dev mode and provide a nicer error than 'too much recursion'\n * @type {Derived[]}\n */\nlet stack = [];\n\n/**\n * @param {Derived} derived\n * @returns {Effect | null}\n */\nfunction get_derived_parent_effect(derived) {\n\tvar parent = derived.parent;\n\twhile (parent !== null) {\n\t\tif ((parent.f & DERIVED) === 0) {\n\t\t\treturn /** @type {Effect} */ (parent);\n\t\t}\n\t\tparent = parent.parent;\n\t}\n\treturn null;\n}\n\n/**\n * @template T\n * @param {Derived} derived\n * @returns {T}\n */\nexport function execute_derived(derived) {\n\tvar value;\n\tvar prev_active_effect = active_effect;\n\n\tset_active_effect(get_derived_parent_effect(derived));\n\n\tif (DEV) {\n\t\tlet prev_inspect_effects = inspect_effects;\n\t\tset_inspect_effects(new Set());\n\t\ttry {\n\t\t\tif (stack.includes(derived)) {\n\t\t\t\te.derived_references_self();\n\t\t\t}\n\n\t\t\tstack.push(derived);\n\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t\tset_inspect_effects(prev_inspect_effects);\n\t\t\tstack.pop();\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tdestroy_derived_effects(derived);\n\t\t\tvalue = update_reaction(derived);\n\t\t} finally {\n\t\t\tset_active_effect(prev_active_effect);\n\t\t}\n\t}\n\n\treturn value;\n}\n\n/**\n * @param {Derived} derived\n * @returns {void}\n */\nexport function update_derived(derived) {\n\tvar value = execute_derived(derived);\n\tvar status =\n\t\t(skip_reaction || (derived.f & UNOWNED) !== 0) && derived.deps !== null ? MAYBE_DIRTY : CLEAN;\n\n\tset_signal_status(derived, status);\n\n\tif (!derived.equals(value)) {\n\t\tderived.v = value;\n\t\tderived.wv = increment_write_version();\n\t}\n}\n","/** @import { ComponentContext, ComponentContextLegacy, Derived, Effect, TemplateNode, TransitionManager } from '#client' */\nimport {\n\tcheck_dirtiness,\n\tactive_effect,\n\tactive_reaction,\n\tupdate_effect,\n\tget,\n\tis_destroying_effect,\n\tis_flushing_effect,\n\tremove_reactions,\n\tschedule_effect,\n\tset_active_reaction,\n\tset_is_destroying_effect,\n\tset_is_flushing_effect,\n\tset_signal_status,\n\tuntrack,\n\tskip_reaction,\n\tuntracking\n} from '../runtime.js';\nimport {\n\tDIRTY,\n\tBRANCH_EFFECT,\n\tRENDER_EFFECT,\n\tEFFECT,\n\tDESTROYED,\n\tINERT,\n\tEFFECT_RAN,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tEFFECT_TRANSPARENT,\n\tDERIVED,\n\tUNOWNED,\n\tCLEAN,\n\tINSPECT_EFFECT,\n\tHEAD_EFFECT,\n\tMAYBE_DIRTY,\n\tEFFECT_HAS_DERIVED,\n\tBOUNDARY_EFFECT\n} from '../constants.js';\nimport { set } from './sources.js';\nimport * as e from '../errors.js';\nimport { DEV } from 'esm-env';\nimport { define_property } from '../../shared/utils.js';\nimport { get_next_sibling } from '../dom/operations.js';\nimport { derived } from './deriveds.js';\nimport { component_context, dev_current_component_function } from '../context.js';\n\n/**\n * @param {'$effect' | '$effect.pre' | '$inspect'} rune\n */\nexport function validate_effect(rune) {\n\tif (active_effect === null && active_reaction === null) {\n\t\te.effect_orphan(rune);\n\t}\n\n\tif (active_reaction !== null && (active_reaction.f & UNOWNED) !== 0 && active_effect === null) {\n\t\te.effect_in_unowned_derived();\n\t}\n\n\tif (is_destroying_effect) {\n\t\te.effect_in_teardown(rune);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {Effect} parent_effect\n */\nfunction push_effect(effect, parent_effect) {\n\tvar parent_last = parent_effect.last;\n\tif (parent_last === null) {\n\t\tparent_effect.last = parent_effect.first = effect;\n\t} else {\n\t\tparent_last.next = effect;\n\t\teffect.prev = parent_last;\n\t\tparent_effect.last = effect;\n\t}\n}\n\n/**\n * @param {number} type\n * @param {null | (() => void | (() => void))} fn\n * @param {boolean} sync\n * @param {boolean} push\n * @returns {Effect}\n */\nfunction create_effect(type, fn, sync, push = true) {\n\tvar is_root = (type & ROOT_EFFECT) !== 0;\n\tvar parent_effect = active_effect;\n\n\tif (DEV) {\n\t\t// Ensure the parent is never an inspect effect\n\t\twhile (parent_effect !== null && (parent_effect.f & INSPECT_EFFECT) !== 0) {\n\t\t\tparent_effect = parent_effect.parent;\n\t\t}\n\t}\n\n\t/** @type {Effect} */\n\tvar effect = {\n\t\tctx: component_context,\n\t\tdeps: null,\n\t\tnodes_start: null,\n\t\tnodes_end: null,\n\t\tf: type | DIRTY,\n\t\tfirst: null,\n\t\tfn,\n\t\tlast: null,\n\t\tnext: null,\n\t\tparent: is_root ? null : parent_effect,\n\t\tprev: null,\n\t\tteardown: null,\n\t\ttransitions: null,\n\t\twv: 0\n\t};\n\n\tif (DEV) {\n\t\teffect.component_function = dev_current_component_function;\n\t}\n\n\tif (sync) {\n\t\tvar previously_flushing_effect = is_flushing_effect;\n\n\t\ttry {\n\t\t\tset_is_flushing_effect(true);\n\t\t\tupdate_effect(effect);\n\t\t\teffect.f |= EFFECT_RAN;\n\t\t} catch (e) {\n\t\t\tdestroy_effect(effect);\n\t\t\tthrow e;\n\t\t} finally {\n\t\t\tset_is_flushing_effect(previously_flushing_effect);\n\t\t}\n\t} else if (fn !== null) {\n\t\tschedule_effect(effect);\n\t}\n\n\t// if an effect has no dependencies, no DOM and no teardown function,\n\t// don't bother adding it to the effect tree\n\tvar inert =\n\t\tsync &&\n\t\teffect.deps === null &&\n\t\teffect.first === null &&\n\t\teffect.nodes_start === null &&\n\t\teffect.teardown === null &&\n\t\t(effect.f & (EFFECT_HAS_DERIVED | BOUNDARY_EFFECT)) === 0;\n\n\tif (!inert && !is_root && push) {\n\t\tif (parent_effect !== null) {\n\t\t\tpush_effect(effect, parent_effect);\n\t\t}\n\n\t\t// if we're in a derived, add the effect there too\n\t\tif (active_reaction !== null && (active_reaction.f & DERIVED) !== 0) {\n\t\t\tvar derived = /** @type {Derived} */ (active_reaction);\n\t\t\t(derived.effects ??= []).push(effect);\n\t\t}\n\t}\n\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect.tracking()`\n * @returns {boolean}\n */\nexport function effect_tracking() {\n\treturn active_reaction !== null && !untracking;\n}\n\n/**\n * @param {() => void} fn\n */\nexport function teardown(fn) {\n\tconst effect = create_effect(RENDER_EFFECT, null, false);\n\tset_signal_status(effect, CLEAN);\n\teffect.teardown = fn;\n\treturn effect;\n}\n\n/**\n * Internal representation of `$effect(...)`\n * @param {() => void | (() => void)} fn\n */\nexport function user_effect(fn) {\n\tvalidate_effect('$effect');\n\n\t// Non-nested `$effect(...)` in a component should be deferred\n\t// until the component is mounted\n\tvar defer =\n\t\tactive_effect !== null &&\n\t\t(active_effect.f & BRANCH_EFFECT) !== 0 &&\n\t\tcomponent_context !== null &&\n\t\t!component_context.m;\n\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect'\n\t\t});\n\t}\n\n\tif (defer) {\n\t\tvar context = /** @type {ComponentContext} */ (component_context);\n\t\t(context.e ??= []).push({\n\t\t\tfn,\n\t\t\teffect: active_effect,\n\t\t\treaction: active_reaction\n\t\t});\n\t} else {\n\t\tvar signal = effect(fn);\n\t\treturn signal;\n\t}\n}\n\n/**\n * Internal representation of `$effect.pre(...)`\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function user_pre_effect(fn) {\n\tvalidate_effect('$effect.pre');\n\tif (DEV) {\n\t\tdefine_property(fn, 'name', {\n\t\t\tvalue: '$effect.pre'\n\t\t});\n\t}\n\treturn render_effect(fn);\n}\n\n/** @param {() => void | (() => void)} fn */\nexport function inspect_effect(fn) {\n\treturn create_effect(INSPECT_EFFECT, fn, true);\n}\n\n/**\n * Internal representation of `$effect.root(...)`\n * @param {() => void | (() => void)} fn\n * @returns {() => void}\n */\nexport function effect_root(fn) {\n\tconst effect = create_effect(ROOT_EFFECT, fn, true);\n\n\treturn () => {\n\t\tdestroy_effect(effect);\n\t};\n}\n\n/**\n * An effect root whose children can transition out\n * @param {() => void} fn\n * @returns {(options?: { outro?: boolean }) => Promise<void>}\n */\nexport function component_root(fn) {\n\tconst effect = create_effect(ROOT_EFFECT, fn, true);\n\n\treturn (options = {}) => {\n\t\treturn new Promise((fulfil) => {\n\t\t\tif (options.outro) {\n\t\t\t\tpause_effect(effect, () => {\n\t\t\t\t\tdestroy_effect(effect);\n\t\t\t\t\tfulfil(undefined);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdestroy_effect(effect);\n\t\t\t\tfulfil(undefined);\n\t\t\t}\n\t\t});\n\t};\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function effect(fn) {\n\treturn create_effect(EFFECT, fn, false);\n}\n\n/**\n * Internal representation of `$: ..`\n * @param {() => any} deps\n * @param {() => void | (() => void)} fn\n */\nexport function legacy_pre_effect(deps, fn) {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\t/** @type {{ effect: null | Effect, ran: boolean }} */\n\tvar token = { effect: null, ran: false };\n\tcontext.l.r1.push(token);\n\n\ttoken.effect = render_effect(() => {\n\t\tdeps();\n\n\t\t// If this legacy pre effect has already run before the end of the reset, then\n\t\t// bail out to emulate the same behavior.\n\t\tif (token.ran) return;\n\n\t\ttoken.ran = true;\n\t\tset(context.l.r2, true);\n\t\tuntrack(fn);\n\t});\n}\n\nexport function legacy_pre_effect_reset() {\n\tvar context = /** @type {ComponentContextLegacy} */ (component_context);\n\n\trender_effect(() => {\n\t\tif (!get(context.l.r2)) return;\n\n\t\t// Run dirty `$:` statements\n\t\tfor (var token of context.l.r1) {\n\t\t\tvar effect = token.effect;\n\n\t\t\t// If the effect is CLEAN, then make it MAYBE_DIRTY. This ensures we traverse through\n\t\t\t// the effects dependencies and correctly ensure each dependency is up-to-date.\n\t\t\tif ((effect.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(effect, MAYBE_DIRTY);\n\t\t\t}\n\n\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\tupdate_effect(effect);\n\t\t\t}\n\n\t\t\ttoken.ran = false;\n\t\t}\n\n\t\tcontext.l.r2.v = false; // set directly to avoid rerunning this effect\n\t});\n}\n\n/**\n * @param {() => void | (() => void)} fn\n * @returns {Effect}\n */\nexport function render_effect(fn) {\n\treturn create_effect(RENDER_EFFECT, fn, true);\n}\n\n/**\n * @param {(...expressions: any) => void | (() => void)} fn\n * @param {Array<() => any>} thunks\n * @returns {Effect}\n */\nexport function template_effect(fn, thunks = [], d = derived) {\n\tconst deriveds = thunks.map(d);\n\tconst effect = () => fn(...deriveds.map(get));\n\n\tif (DEV) {\n\t\tdefine_property(effect, 'name', {\n\t\t\tvalue: '{expression}'\n\t\t});\n\t}\n\n\treturn block(effect);\n}\n\n/**\n * @param {(() => void)} fn\n * @param {number} flags\n */\nexport function block(fn, flags = 0) {\n\treturn create_effect(RENDER_EFFECT | BLOCK_EFFECT | flags, fn, true);\n}\n\n/**\n * @param {(() => void)} fn\n * @param {boolean} [push]\n */\nexport function branch(fn, push = true) {\n\treturn create_effect(RENDER_EFFECT | BRANCH_EFFECT, fn, true, push);\n}\n\n/**\n * @param {Effect} effect\n */\nexport function execute_effect_teardown(effect) {\n\tvar teardown = effect.teardown;\n\tif (teardown !== null) {\n\t\tconst previously_destroying_effect = is_destroying_effect;\n\t\tconst previous_reaction = active_reaction;\n\t\tset_is_destroying_effect(true);\n\t\tset_active_reaction(null);\n\t\ttry {\n\t\t\tteardown.call(null);\n\t\t} finally {\n\t\t\tset_is_destroying_effect(previously_destroying_effect);\n\t\t\tset_active_reaction(previous_reaction);\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @param {boolean} remove_dom\n * @returns {void}\n */\nexport function destroy_effect_children(signal, remove_dom = false) {\n\tvar effect = signal.first;\n\tsignal.first = signal.last = null;\n\n\twhile (effect !== null) {\n\t\tvar next = effect.next;\n\t\tdestroy_effect(effect, remove_dom);\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function destroy_block_effect_children(signal) {\n\tvar effect = signal.first;\n\n\twhile (effect !== null) {\n\t\tvar next = effect.next;\n\t\tif ((effect.f & BRANCH_EFFECT) === 0) {\n\t\t\tdestroy_effect(effect);\n\t\t}\n\t\teffect = next;\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} [remove_dom]\n * @returns {void}\n */\nexport function destroy_effect(effect, remove_dom = true) {\n\tvar removed = false;\n\n\tif ((remove_dom || (effect.f & HEAD_EFFECT) !== 0) && effect.nodes_start !== null) {\n\t\t/** @type {TemplateNode | null} */\n\t\tvar node = effect.nodes_start;\n\t\tvar end = effect.nodes_end;\n\n\t\twhile (node !== null) {\n\t\t\t/** @type {TemplateNode | null} */\n\t\t\tvar next = node === end ? null : /** @type {TemplateNode} */ (get_next_sibling(node));\n\n\t\t\tnode.remove();\n\t\t\tnode = next;\n\t\t}\n\n\t\tremoved = true;\n\t}\n\n\tdestroy_effect_children(effect, remove_dom && !removed);\n\tremove_reactions(effect, 0);\n\tset_signal_status(effect, DESTROYED);\n\n\tvar transitions = effect.transitions;\n\n\tif (transitions !== null) {\n\t\tfor (const transition of transitions) {\n\t\t\ttransition.stop();\n\t\t}\n\t}\n\n\texecute_effect_teardown(effect);\n\n\tvar parent = effect.parent;\n\n\t// If the parent doesn't have any children, then skip this work altogether\n\tif (parent !== null && parent.first !== null) {\n\t\tunlink_effect(effect);\n\t}\n\n\tif (DEV) {\n\t\teffect.component_function = null;\n\t}\n\n\t// `first` and `child` are nulled out in destroy_effect_children\n\t// we don't null out `parent` so that error propagation can work correctly\n\teffect.next =\n\t\teffect.prev =\n\t\teffect.teardown =\n\t\teffect.ctx =\n\t\teffect.deps =\n\t\teffect.fn =\n\t\teffect.nodes_start =\n\t\teffect.nodes_end =\n\t\t\tnull;\n}\n\n/**\n * Detach an effect from the effect tree, freeing up memory and\n * reducing the amount of work that happens on subsequent traversals\n * @param {Effect} effect\n */\nexport function unlink_effect(effect) {\n\tvar parent = effect.parent;\n\tvar prev = effect.prev;\n\tvar next = effect.next;\n\n\tif (prev !== null) prev.next = next;\n\tif (next !== null) next.prev = prev;\n\n\tif (parent !== null) {\n\t\tif (parent.first === effect) parent.first = next;\n\t\tif (parent.last === effect) parent.last = prev;\n\t}\n}\n\n/**\n * When a block effect is removed, we don't immediately destroy it or yank it\n * out of the DOM, because it might have transitions. Instead, we 'pause' it.\n * It stays around (in memory, and in the DOM) until outro transitions have\n * completed, and if the state change is reversed then we _resume_ it.\n * A paused effect does not update, and the DOM subtree becomes inert.\n * @param {Effect} effect\n * @param {() => void} [callback]\n */\nexport function pause_effect(effect, callback) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\n\tpause_children(effect, transitions, true);\n\n\trun_out_transitions(transitions, () => {\n\t\tdestroy_effect(effect);\n\t\tif (callback) callback();\n\t});\n}\n\n/**\n * @param {TransitionManager[]} transitions\n * @param {() => void} fn\n */\nexport function run_out_transitions(transitions, fn) {\n\tvar remaining = transitions.length;\n\tif (remaining > 0) {\n\t\tvar check = () => --remaining || fn();\n\t\tfor (var transition of transitions) {\n\t\t\ttransition.out(check);\n\t\t}\n\t} else {\n\t\tfn();\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @param {TransitionManager[]} transitions\n * @param {boolean} local\n */\nexport function pause_children(effect, transitions, local) {\n\tif ((effect.f & INERT) !== 0) return;\n\teffect.f ^= INERT;\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransitions.push(transition);\n\t\t\t}\n\t\t}\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;\n\t\t// TODO we don't need to call pause_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tpause_children(child, transitions, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n}\n\n/**\n * The opposite of `pause_effect`. We call this if (for example)\n * `x` becomes falsy then truthy: `{#if x}...{/if}`\n * @param {Effect} effect\n */\nexport function resume_effect(effect) {\n\tresume_children(effect, true);\n}\n\n/**\n * @param {Effect} effect\n * @param {boolean} local\n */\nfunction resume_children(effect, local) {\n\tif ((effect.f & INERT) === 0) return;\n\teffect.f ^= INERT;\n\n\t// Ensure the effect is marked as clean again so that any dirty child\n\t// effects can schedule themselves for execution\n\tif ((effect.f & CLEAN) === 0) {\n\t\teffect.f ^= CLEAN;\n\t}\n\n\t// If a dependency of this effect changed while it was paused,\n\t// schedule the effect to update\n\tif (check_dirtiness(effect)) {\n\t\tset_signal_status(effect, DIRTY);\n\t\tschedule_effect(effect);\n\t}\n\n\tvar child = effect.first;\n\n\twhile (child !== null) {\n\t\tvar sibling = child.next;\n\t\tvar transparent = (child.f & EFFECT_TRANSPARENT) !== 0 || (child.f & BRANCH_EFFECT) !== 0;\n\t\t// TODO we don't need to call resume_children recursively with a linked list in place\n\t\t// it's slightly more involved though as we have to account for `transparent` changing\n\t\t// through the tree.\n\t\tresume_children(child, transparent ? local : false);\n\t\tchild = sibling;\n\t}\n\n\tif (effect.transitions !== null) {\n\t\tfor (const transition of effect.transitions) {\n\t\t\tif (transition.is_global || local) {\n\t\t\t\ttransition.in();\n\t\t\t}\n\t\t}\n\t}\n}\n","import { run_all } from '../../shared/utils.js';\n\n// Fallback for when requestIdleCallback is not available\nexport const request_idle_callback =\n\ttypeof requestIdleCallback === 'undefined'\n\t\t? (/** @type {() => void} */ cb) => setTimeout(cb, 1)\n\t\t: requestIdleCallback;\n\nlet is_micro_task_queued = false;\nlet is_idle_task_queued = false;\n\n/** @type {Array<() => void>} */\nlet current_queued_micro_tasks = [];\n/** @type {Array<() => void>} */\nlet current_queued_idle_tasks = [];\n\nfunction process_micro_tasks() {\n\tis_micro_task_queued = false;\n\tconst tasks = current_queued_micro_tasks.slice();\n\tcurrent_queued_micro_tasks = [];\n\trun_all(tasks);\n}\n\nfunction process_idle_tasks() {\n\tis_idle_task_queued = false;\n\tconst tasks = current_queued_idle_tasks.slice();\n\tcurrent_queued_idle_tasks = [];\n\trun_all(tasks);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_micro_task(fn) {\n\tif (!is_micro_task_queued) {\n\t\tis_micro_task_queued = true;\n\t\tqueueMicrotask(process_micro_tasks);\n\t}\n\tcurrent_queued_micro_tasks.push(fn);\n}\n\n/**\n * @param {() => void} fn\n */\nexport function queue_idle_task(fn) {\n\tif (!is_idle_task_queued) {\n\t\tis_idle_task_queued = true;\n\t\trequest_idle_callback(process_idle_tasks);\n\t}\n\tcurrent_queued_idle_tasks.push(fn);\n}\n\n/**\n * Synchronously run any queued tasks.\n */\nexport function flush_tasks() {\n\tif (is_micro_task_queued) {\n\t\tprocess_micro_tasks();\n\t}\n\tif (is_idle_task_queued) {\n\t\tprocess_idle_tasks();\n\t}\n}\n","/** @import { ComponentContext, Derived, Effect, Reaction, Signal, Source, Value } from '#client' */\nimport { DEV } from 'esm-env';\nimport { define_property, get_descriptors, get_prototype_of, index_of } from '../shared/utils.js';\nimport {\n\tdestroy_block_effect_children,\n\tdestroy_effect_children,\n\texecute_effect_teardown,\n\tunlink_effect\n} from './reactivity/effects.js';\nimport {\n\tEFFECT,\n\tRENDER_EFFECT,\n\tDIRTY,\n\tMAYBE_DIRTY,\n\tCLEAN,\n\tDERIVED,\n\tUNOWNED,\n\tDESTROYED,\n\tINERT,\n\tBRANCH_EFFECT,\n\tSTATE_SYMBOL,\n\tBLOCK_EFFECT,\n\tROOT_EFFECT,\n\tLEGACY_DERIVED_PROP,\n\tDISCONNECTED,\n\tBOUNDARY_EFFECT\n} from './constants.js';\nimport { flush_tasks } from './dom/task.js';\nimport { internal_set } from './reactivity/sources.js';\nimport { destroy_derived_effects, update_derived } from './reactivity/deriveds.js';\nimport * as e from './errors.js';\nimport { FILENAME } from '../../constants.js';\nimport { tracing_mode_flag } from '../flags/index.js';\nimport { tracing_expressions, get_stack } from './dev/tracing.js';\nimport {\n\tcomponent_context,\n\tdev_current_component_function,\n\tis_runes,\n\tset_component_context,\n\tset_dev_current_component_function\n} from './context.js';\nimport { is_firefox } from './dom/operations.js';\n\nconst FLUSH_MICROTASK = 0;\nconst FLUSH_SYNC = 1;\n// Used for DEV time error handling\n/** @param {WeakSet<Error>} value */\nconst handled_errors = new WeakSet();\nexport let is_throwing_error = false;\n\n// Used for controlling the flush of effects.\nlet scheduler_mode = FLUSH_MICROTASK;\n// Used for handling scheduling\nlet is_micro_task_queued = false;\n\n/** @type {Effect | null} */\nlet last_scheduled_effect = null;\n\nexport let is_flushing_effect = false;\nexport let is_destroying_effect = false;\n\n/** @param {boolean} value */\nexport function set_is_flushing_effect(value) {\n\tis_flushing_effect = value;\n}\n\n/** @param {boolean} value */\nexport function set_is_destroying_effect(value) {\n\tis_destroying_effect = value;\n}\n\n// Handle effect queues\n\n/** @type {Effect[]} */\nlet queued_root_effects = [];\n\nlet flush_count = 0;\n/** @type {Effect[]} Stack of effects, dev only */\nlet dev_effect_stack = [];\n// Handle signal reactivity tree dependencies and reactions\n\n/** @type {null | Reaction} */\nexport let active_reaction = null;\n\nexport let untracking = false;\n\n/** @param {null | Reaction} reaction */\nexport function set_active_reaction(reaction) {\n\tactive_reaction = reaction;\n}\n\n/** @type {null | Effect} */\nexport let active_effect = null;\n\n/** @param {null | Effect} effect */\nexport function set_active_effect(effect) {\n\tactive_effect = effect;\n}\n\n/**\n * When sources are created within a derived, we record them so that we can safely allow\n * local mutations to these sources without the side-effect error being invoked unnecessarily.\n * @type {null | Source[]}\n */\nexport let derived_sources = null;\n\n/**\n * @param {Source[] | null} sources\n */\nexport function set_derived_sources(sources) {\n\tderived_sources = sources;\n}\n\n/**\n * The dependencies of the reaction that is currently being executed. In many cases,\n * the dependencies are unchanged between runs, and so this will be `null` unless\n * and until a new dependency is accessed — we track this via `skipped_deps`\n * @type {null | Value[]}\n */\nexport let new_deps = null;\n\nlet skipped_deps = 0;\n\n/**\n * Tracks writes that the effect it's executed in doesn't listen to yet,\n * so that the dependency can be added to the effect later on if it then reads it\n * @type {null | Source[]}\n */\nexport let untracked_writes = null;\n\n/** @param {null | Source[]} value */\nexport function set_untracked_writes(value) {\n\tuntracked_writes = value;\n}\n\n/**\n * @type {number} Used by sources and deriveds for handling updates.\n * Version starts from 1 so that unowned deriveds differentiate between a created effect and a run one for tracing\n **/\nlet write_version = 1;\n\n/** @type {number} Used to version each read of a source of derived to avoid duplicating depedencies inside a reaction */\nlet read_version = 0;\n\n// If we are working with a get() chain that has no active container,\n// to prevent memory leaks, we skip adding the reaction.\nexport let skip_reaction = false;\n// Handle collecting all signals which are read during a specific time frame\n/** @type {Set<Value> | null} */\nexport let captured_signals = null;\n\n/** @param {Set<Value> | null} value */\nexport function set_captured_signals(value) {\n\tcaptured_signals = value;\n}\n\nexport function increment_write_version() {\n\treturn ++write_version;\n}\n\n/**\n * Determines whether a derived or effect is dirty.\n * If it is MAYBE_DIRTY, will set the status to CLEAN\n * @param {Reaction} reaction\n * @returns {boolean}\n */\nexport function check_dirtiness(reaction) {\n\tvar flags = reaction.f;\n\n\tif ((flags & DIRTY) !== 0) {\n\t\treturn true;\n\t}\n\n\tif ((flags & MAYBE_DIRTY) !== 0) {\n\t\tvar dependencies = reaction.deps;\n\t\tvar is_unowned = (flags & UNOWNED) !== 0;\n\n\t\tif (dependencies !== null) {\n\t\t\tvar i;\n\t\t\tvar dependency;\n\t\t\tvar is_disconnected = (flags & DISCONNECTED) !== 0;\n\t\t\tvar is_unowned_connected = is_unowned && active_effect !== null && !skip_reaction;\n\t\t\tvar length = dependencies.length;\n\n\t\t\t// If we are working with a disconnected or an unowned signal that is now connected (due to an active effect)\n\t\t\t// then we need to re-connect the reaction to the dependency\n\t\t\tif (is_disconnected || is_unowned_connected) {\n\t\t\t\tvar derived = /** @type {Derived} */ (reaction);\n\t\t\t\tvar parent = derived.parent;\n\n\t\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\t\t// We always re-add all reactions (even duplicates) if the derived was\n\t\t\t\t\t// previously disconnected, however we don't if it was unowned as we\n\t\t\t\t\t// de-duplicate dependencies in that case\n\t\t\t\t\tif (is_disconnected || !dependency?.reactions?.includes(derived)) {\n\t\t\t\t\t\t(dependency.reactions ??= []).push(derived);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (is_disconnected) {\n\t\t\t\t\tderived.f ^= DISCONNECTED;\n\t\t\t\t}\n\t\t\t\t// If the unowned derived is now fully connected to the graph again (it's unowned and reconnected, has a parent\n\t\t\t\t// and the parent is not unowned), then we can mark it as connected again, removing the need for the unowned\n\t\t\t\t// flag\n\t\t\t\tif (is_unowned_connected && parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t\t\tderived.f ^= UNOWNED;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (i = 0; i < length; i++) {\n\t\t\t\tdependency = dependencies[i];\n\n\t\t\t\tif (check_dirtiness(/** @type {Derived} */ (dependency))) {\n\t\t\t\t\tupdate_derived(/** @type {Derived} */ (dependency));\n\t\t\t\t}\n\n\t\t\t\tif (dependency.wv > reaction.wv) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Unowned signals should never be marked as clean unless they\n\t\t// are used within an active_effect without skip_reaction\n\t\tif (!is_unowned || (active_effect !== null && !skip_reaction)) {\n\t\t\tset_signal_status(reaction, CLEAN);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {unknown} error\n * @param {Effect} effect\n */\nfunction propagate_error(error, effect) {\n\t/** @type {Effect | null} */\n\tvar current = effect;\n\n\twhile (current !== null) {\n\t\tif ((current.f & BOUNDARY_EFFECT) !== 0) {\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tcurrent.fn(error);\n\t\t\t\treturn;\n\t\t\t} catch {\n\t\t\t\t// Remove boundary flag from effect\n\t\t\t\tcurrent.f ^= BOUNDARY_EFFECT;\n\t\t\t}\n\t\t}\n\n\t\tcurrent = current.parent;\n\t}\n\n\tis_throwing_error = false;\n\tthrow error;\n}\n\n/**\n * @param {Effect} effect\n */\nfunction should_rethrow_error(effect) {\n\treturn (\n\t\t(effect.f & DESTROYED) === 0 &&\n\t\t(effect.parent === null || (effect.parent.f & BOUNDARY_EFFECT) === 0)\n\t);\n}\n\nexport function reset_is_throwing_error() {\n\tis_throwing_error = false;\n}\n\n/**\n * @param {unknown} error\n * @param {Effect} effect\n * @param {Effect | null} previous_effect\n * @param {ComponentContext | null} component_context\n */\nexport function handle_error(error, effect, previous_effect, component_context) {\n\tif (is_throwing_error) {\n\t\tif (previous_effect === null) {\n\t\t\tis_throwing_error = false;\n\t\t}\n\n\t\tif (should_rethrow_error(effect)) {\n\t\t\tthrow error;\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (previous_effect !== null) {\n\t\tis_throwing_error = true;\n\t}\n\n\tif (\n\t\t!DEV ||\n\t\tcomponent_context === null ||\n\t\t!(error instanceof Error) ||\n\t\thandled_errors.has(error)\n\t) {\n\t\tpropagate_error(error, effect);\n\t\treturn;\n\t}\n\n\thandled_errors.add(error);\n\n\tconst component_stack = [];\n\n\tconst effect_name = effect.fn?.name;\n\n\tif (effect_name) {\n\t\tcomponent_stack.push(effect_name);\n\t}\n\n\t/** @type {ComponentContext | null} */\n\tlet current_context = component_context;\n\n\twhile (current_context !== null) {\n\t\tif (DEV) {\n\t\t\t/** @type {string} */\n\t\t\tvar filename = current_context.function?.[FILENAME];\n\n\t\t\tif (filename) {\n\t\t\t\tconst file = filename.split('/').pop();\n\t\t\t\tcomponent_stack.push(file);\n\t\t\t}\n\t\t}\n\n\t\tcurrent_context = current_context.p;\n\t}\n\n\tconst indent = is_firefox ? '  ' : '\\t';\n\tdefine_property(error, 'message', {\n\t\tvalue: error.message + `\\n${component_stack.map((name) => `\\n${indent}in ${name}`).join('')}\\n`\n\t});\n\tdefine_property(error, 'component_stack', {\n\t\tvalue: component_stack\n\t});\n\n\tconst stack = error.stack;\n\n\t// Filter out internal files from callstack\n\tif (stack) {\n\t\tconst lines = stack.split('\\n');\n\t\tconst new_lines = [];\n\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\tconst line = lines[i];\n\t\t\tif (line.includes('svelte/src/internal')) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tnew_lines.push(line);\n\t\t}\n\t\tdefine_property(error, 'stack', {\n\t\t\tvalue: new_lines.join('\\n')\n\t\t});\n\t}\n\n\tpropagate_error(error, effect);\n\n\tif (should_rethrow_error(effect)) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * @param {Value} signal\n * @param {Effect} effect\n * @param {boolean} [root]\n */\nfunction schedule_possible_effect_self_invalidation(signal, effect, root = true) {\n\tvar reactions = signal.reactions;\n\tif (reactions === null) return;\n\n\tfor (var i = 0; i < reactions.length; i++) {\n\t\tvar reaction = reactions[i];\n\t\tif ((reaction.f & DERIVED) !== 0) {\n\t\t\tschedule_possible_effect_self_invalidation(/** @type {Derived} */ (reaction), effect, false);\n\t\t} else if (effect === reaction) {\n\t\t\tif (root) {\n\t\t\t\tset_signal_status(reaction, DIRTY);\n\t\t\t} else if ((reaction.f & CLEAN) !== 0) {\n\t\t\t\tset_signal_status(reaction, MAYBE_DIRTY);\n\t\t\t}\n\t\t\tschedule_effect(/** @type {Effect} */ (reaction));\n\t\t}\n\t}\n}\n\n/**\n * @template V\n * @param {Reaction} reaction\n * @returns {V}\n */\nexport function update_reaction(reaction) {\n\tvar previous_deps = new_deps;\n\tvar previous_skipped_deps = skipped_deps;\n\tvar previous_untracked_writes = untracked_writes;\n\tvar previous_reaction = active_reaction;\n\tvar previous_skip_reaction = skip_reaction;\n\tvar prev_derived_sources = derived_sources;\n\tvar previous_component_context = component_context;\n\tvar previous_untracking = untracking;\n\tvar flags = reaction.f;\n\n\tnew_deps = /** @type {null | Value[]} */ (null);\n\tskipped_deps = 0;\n\tuntracked_writes = null;\n\tactive_reaction = (flags & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;\n\tskip_reaction =\n\t\t(flags & UNOWNED) !== 0 &&\n\t\t(!is_flushing_effect || previous_reaction === null || previous_untracking);\n\n\tderived_sources = null;\n\tset_component_context(reaction.ctx);\n\tuntracking = false;\n\tread_version++;\n\n\ttry {\n\t\tvar result = /** @type {Function} */ (0, reaction.fn)();\n\t\tvar deps = reaction.deps;\n\n\t\tif (new_deps !== null) {\n\t\t\tvar i;\n\n\t\t\tremove_reactions(reaction, skipped_deps);\n\n\t\t\tif (deps !== null && skipped_deps > 0) {\n\t\t\t\tdeps.length = skipped_deps + new_deps.length;\n\t\t\t\tfor (i = 0; i < new_deps.length; i++) {\n\t\t\t\t\tdeps[skipped_deps + i] = new_deps[i];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treaction.deps = deps = new_deps;\n\t\t\t}\n\n\t\t\tif (!skip_reaction) {\n\t\t\t\tfor (i = skipped_deps; i < deps.length; i++) {\n\t\t\t\t\t(deps[i].reactions ??= []).push(reaction);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (deps !== null && skipped_deps < deps.length) {\n\t\t\tremove_reactions(reaction, skipped_deps);\n\t\t\tdeps.length = skipped_deps;\n\t\t}\n\n\t\t// If we're inside an effect and we have untracked writes, then we need to\n\t\t// ensure that if any of those untracked writes result in re-invalidation\n\t\t// of the current effect, then that happens accordingly\n\t\tif (\n\t\t\tis_runes() &&\n\t\t\tuntracked_writes !== null &&\n\t\t\t!untracking &&\n\t\t\tdeps !== null &&\n\t\t\t(reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0\n\t\t) {\n\t\t\tfor (i = 0; i < /** @type {Source[]} */ (untracked_writes).length; i++) {\n\t\t\t\tschedule_possible_effect_self_invalidation(\n\t\t\t\t\tuntracked_writes[i],\n\t\t\t\t\t/** @type {Effect} */ (reaction)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// If we are returning to an previous reaction then\n\t\t// we need to increment the read version to ensure that\n\t\t// any dependencies in this reaction aren't marked with\n\t\t// the same version\n\t\tif (previous_reaction !== null) {\n\t\t\tread_version++;\n\t\t}\n\n\t\treturn result;\n\t} finally {\n\t\tnew_deps = previous_deps;\n\t\tskipped_deps = previous_skipped_deps;\n\t\tuntracked_writes = previous_untracked_writes;\n\t\tactive_reaction = previous_reaction;\n\t\tskip_reaction = previous_skip_reaction;\n\t\tderived_sources = prev_derived_sources;\n\t\tset_component_context(previous_component_context);\n\t\tuntracking = previous_untracking;\n\t}\n}\n\n/**\n * @template V\n * @param {Reaction} signal\n * @param {Value<V>} dependency\n * @returns {void}\n */\nfunction remove_reaction(signal, dependency) {\n\tlet reactions = dependency.reactions;\n\tif (reactions !== null) {\n\t\tvar index = index_of.call(reactions, signal);\n\t\tif (index !== -1) {\n\t\t\tvar new_length = reactions.length - 1;\n\t\t\tif (new_length === 0) {\n\t\t\t\treactions = dependency.reactions = null;\n\t\t\t} else {\n\t\t\t\t// Swap with last element and then remove.\n\t\t\t\treactions[index] = reactions[new_length];\n\t\t\t\treactions.pop();\n\t\t\t}\n\t\t}\n\t}\n\t// If the derived has no reactions, then we can disconnect it from the graph,\n\t// allowing it to either reconnect in the future, or be GC'd by the VM.\n\tif (\n\t\treactions === null &&\n\t\t(dependency.f & DERIVED) !== 0 &&\n\t\t// Destroying a child effect while updating a parent effect can cause a dependency to appear\n\t\t// to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`\n\t\t// allows us to skip the expensive work of disconnecting and immediately reconnecting it\n\t\t(new_deps === null || !new_deps.includes(dependency))\n\t) {\n\t\tset_signal_status(dependency, MAYBE_DIRTY);\n\t\t// If we are working with a derived that is owned by an effect, then mark it as being\n\t\t// disconnected.\n\t\tif ((dependency.f & (UNOWNED | DISCONNECTED)) === 0) {\n\t\t\tdependency.f ^= DISCONNECTED;\n\t\t}\n\t\t// Disconnect any reactions owned by this reaction\n\t\tdestroy_derived_effects(/** @type {Derived} **/ (dependency));\n\t\tremove_reactions(/** @type {Derived} **/ (dependency), 0);\n\t}\n}\n\n/**\n * @param {Reaction} signal\n * @param {number} start_index\n * @returns {void}\n */\nexport function remove_reactions(signal, start_index) {\n\tvar dependencies = signal.deps;\n\tif (dependencies === null) return;\n\n\tfor (var i = start_index; i < dependencies.length; i++) {\n\t\tremove_reaction(signal, dependencies[i]);\n\t}\n}\n\n/**\n * @param {Effect} effect\n * @returns {void}\n */\nexport function update_effect(effect) {\n\tvar flags = effect.f;\n\n\tif ((flags & DESTROYED) !== 0) {\n\t\treturn;\n\t}\n\n\tset_signal_status(effect, CLEAN);\n\n\tvar previous_effect = active_effect;\n\tvar previous_component_context = component_context;\n\n\tactive_effect = effect;\n\n\tif (DEV) {\n\t\tvar previous_component_fn = dev_current_component_function;\n\t\tset_dev_current_component_function(effect.component_function);\n\t}\n\n\ttry {\n\t\tif ((flags & BLOCK_EFFECT) !== 0) {\n\t\t\tdestroy_block_effect_children(effect);\n\t\t} else {\n\t\t\tdestroy_effect_children(effect);\n\t\t}\n\n\t\texecute_effect_teardown(effect);\n\t\tvar teardown = update_reaction(effect);\n\t\teffect.teardown = typeof teardown === 'function' ? teardown : null;\n\t\teffect.wv = write_version;\n\n\t\tvar deps = effect.deps;\n\n\t\t// In DEV, we need to handle a case where $inspect.trace() might\n\t\t// incorrectly state a source dependency has not changed when it has.\n\t\t// That's beacuse that source was changed by the same effect, causing\n\t\t// the versions to match. We can avoid this by incrementing the version\n\t\tif (DEV && tracing_mode_flag && (effect.f & DIRTY) !== 0 && deps !== null) {\n\t\t\tfor (let i = 0; i < deps.length; i++) {\n\t\t\t\tvar dep = deps[i];\n\t\t\t\tif (dep.trace_need_increase) {\n\t\t\t\t\tdep.wv = increment_write_version();\n\t\t\t\t\tdep.trace_need_increase = undefined;\n\t\t\t\t\tdep.trace_v = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (DEV) {\n\t\t\tdev_effect_stack.push(effect);\n\t\t}\n\t} catch (error) {\n\t\thandle_error(error, effect, previous_effect, previous_component_context || effect.ctx);\n\t} finally {\n\t\tactive_effect = previous_effect;\n\n\t\tif (DEV) {\n\t\t\tset_dev_current_component_function(previous_component_fn);\n\t\t}\n\t}\n}\n\nfunction log_effect_stack() {\n\t// eslint-disable-next-line no-console\n\tconsole.error(\n\t\t'Last ten effects were: ',\n\t\tdev_effect_stack.slice(-10).map((d) => d.fn)\n\t);\n\tdev_effect_stack = [];\n}\n\nfunction infinite_loop_guard() {\n\tif (flush_count > 1000) {\n\t\tflush_count = 0;\n\t\ttry {\n\t\t\te.effect_update_depth_exceeded();\n\t\t} catch (error) {\n\t\t\tif (DEV) {\n\t\t\t\t// stack is garbage, ignore. Instead add a console.error message.\n\t\t\t\tdefine_property(error, 'stack', {\n\t\t\t\t\tvalue: ''\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Try and handle the error so it can be caught at a boundary, that's\n\t\t\t// if there's an effect available from when it was last scheduled\n\t\t\tif (last_scheduled_effect !== null) {\n\t\t\t\tif (DEV) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// Only log the effect stack if the error is re-thrown\n\t\t\t\t\t\tlog_effect_stack();\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\thandle_error(error, last_scheduled_effect, null, null);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (DEV) {\n\t\t\t\t\tlog_effect_stack();\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tflush_count++;\n}\n\n/**\n * @param {Array<Effect>} root_effects\n * @returns {void}\n */\nfunction flush_queued_root_effects(root_effects) {\n\tvar length = root_effects.length;\n\tif (length === 0) {\n\t\treturn;\n\t}\n\tinfinite_loop_guard();\n\n\tvar previously_flushing_effect = is_flushing_effect;\n\tis_flushing_effect = true;\n\n\ttry {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar effect = root_effects[i];\n\n\t\t\tif ((effect.f & CLEAN) === 0) {\n\t\t\t\teffect.f ^= CLEAN;\n\t\t\t}\n\n\t\t\tvar collected_effects = process_effects(effect);\n\t\t\tflush_queued_effects(collected_effects);\n\t\t}\n\t} finally {\n\t\tis_flushing_effect = previously_flushing_effect;\n\t}\n}\n\n/**\n * @param {Array<Effect>} effects\n * @returns {void}\n */\nfunction flush_queued_effects(effects) {\n\tvar length = effects.length;\n\tif (length === 0) return;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tvar effect = effects[i];\n\n\t\tif ((effect.f & (DESTROYED | INERT)) === 0) {\n\t\t\ttry {\n\t\t\t\tif (check_dirtiness(effect)) {\n\t\t\t\t\tupdate_effect(effect);\n\n\t\t\t\t\t// Effects with no dependencies or teardown do not get added to the effect tree.\n\t\t\t\t\t// Deferred effects (e.g. `$effect(...)`) _are_ added to the tree because we\n\t\t\t\t\t// don't know if we need to keep them until they are executed. Doing the check\n\t\t\t\t\t// here (rather than in `update_effect`) allows us to skip the work for\n\t\t\t\t\t// immediate effects.\n\t\t\t\t\tif (effect.deps === null && effect.first === null && effect.nodes_start === null) {\n\t\t\t\t\t\tif (effect.teardown === null) {\n\t\t\t\t\t\t\t// remove this effect from the graph\n\t\t\t\t\t\t\tunlink_effect(effect);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// keep the effect in the graph, but free up some memory\n\t\t\t\t\t\t\teffect.fn = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\thandle_error(error, effect, null, effect.ctx);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction process_deferred() {\n\tis_micro_task_queued = false;\n\tif (flush_count > 1001) {\n\t\treturn;\n\t}\n\tconst previous_queued_root_effects = queued_root_effects;\n\tqueued_root_effects = [];\n\tflush_queued_root_effects(previous_queued_root_effects);\n\n\tif (!is_micro_task_queued) {\n\t\tflush_count = 0;\n\t\tlast_scheduled_effect = null;\n\t\tif (DEV) {\n\t\t\tdev_effect_stack = [];\n\t\t}\n\t}\n}\n\n/**\n * @param {Effect} signal\n * @returns {void}\n */\nexport function schedule_effect(signal) {\n\tif (scheduler_mode === FLUSH_MICROTASK) {\n\t\tif (!is_micro_task_queued) {\n\t\t\tis_micro_task_queued = true;\n\t\t\tqueueMicrotask(process_deferred);\n\t\t}\n\t}\n\n\tlast_scheduled_effect = signal;\n\n\tvar effect = signal;\n\n\twhile (effect.parent !== null) {\n\t\teffect = effect.parent;\n\t\tvar flags = effect.f;\n\n\t\tif ((flags & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {\n\t\t\tif ((flags & CLEAN) === 0) return;\n\t\t\teffect.f ^= CLEAN;\n\t\t}\n\t}\n\n\tqueued_root_effects.push(effect);\n}\n\n/**\n *\n * This function both runs render effects and collects user effects in topological order\n * from the starting effect passed in. Effects will be collected when they match the filtered\n * bitwise flag passed in only. The collected effects array will be populated with all the user\n * effects to be flushed.\n *\n * @param {Effect} effect\n * @returns {Effect[]}\n */\nfunction process_effects(effect) {\n\t/** @type {Effect[]} */\n\tvar effects = [];\n\n\tvar current_effect = effect.first;\n\n\tmain_loop: while (current_effect !== null) {\n\t\tvar flags = current_effect.f;\n\t\tvar is_branch = (flags & BRANCH_EFFECT) !== 0;\n\t\tvar is_skippable_branch = is_branch && (flags & CLEAN) !== 0;\n\t\tvar sibling = current_effect.next;\n\n\t\tif (!is_skippable_branch && (flags & INERT) === 0) {\n\t\t\tif ((flags & EFFECT) !== 0) {\n\t\t\t\teffects.push(current_effect);\n\t\t\t} else if (is_branch) {\n\t\t\t\tcurrent_effect.f ^= CLEAN;\n\t\t\t} else {\n\t\t\t\t// Ensure we set the effect to be the active reaction\n\t\t\t\t// to ensure that unowned deriveds are correctly tracked\n\t\t\t\t// because we're flushing the current effect\n\t\t\t\tvar previous_active_reaction = active_reaction;\n\t\t\t\ttry {\n\t\t\t\t\tactive_reaction = current_effect;\n\t\t\t\t\tif (check_dirtiness(current_effect)) {\n\t\t\t\t\t\tupdate_effect(current_effect);\n\t\t\t\t\t}\n\t\t\t\t} catch (error) {\n\t\t\t\t\thandle_error(error, current_effect, null, current_effect.ctx);\n\t\t\t\t} finally {\n\t\t\t\t\tactive_reaction = previous_active_reaction;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tvar child = current_effect.first;\n\n\t\t\tif (child !== null) {\n\t\t\t\tcurrent_effect = child;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (sibling === null) {\n\t\t\tlet parent = current_effect.parent;\n\n\t\t\twhile (parent !== null) {\n\t\t\t\tif (effect === parent) {\n\t\t\t\t\tbreak main_loop;\n\t\t\t\t}\n\t\t\t\tvar parent_sibling = parent.next;\n\t\t\t\tif (parent_sibling !== null) {\n\t\t\t\t\tcurrent_effect = parent_sibling;\n\t\t\t\t\tcontinue main_loop;\n\t\t\t\t}\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t}\n\n\t\tcurrent_effect = sibling;\n\t}\n\n\treturn effects;\n}\n\n/**\n * Internal version of `flushSync` with the option to not flush previous effects.\n * Returns the result of the passed function, if given.\n * @param {() => any} [fn]\n * @returns {any}\n */\nexport function flush_sync(fn) {\n\tvar previous_scheduler_mode = scheduler_mode;\n\tvar previous_queued_root_effects = queued_root_effects;\n\n\ttry {\n\t\tinfinite_loop_guard();\n\n\t\t/** @type {Effect[]} */\n\t\tconst root_effects = [];\n\n\t\tscheduler_mode = FLUSH_SYNC;\n\t\tqueued_root_effects = root_effects;\n\t\tis_micro_task_queued = false;\n\n\t\tflush_queued_root_effects(previous_queued_root_effects);\n\n\t\tvar result = fn?.();\n\n\t\tflush_tasks();\n\t\tif (queued_root_effects.length > 0 || root_effects.length > 0) {\n\t\t\tflush_sync();\n\t\t}\n\n\t\tflush_count = 0;\n\t\tlast_scheduled_effect = null;\n\t\tif (DEV) {\n\t\t\tdev_effect_stack = [];\n\t\t}\n\n\t\treturn result;\n\t} finally {\n\t\tscheduler_mode = previous_scheduler_mode;\n\t\tqueued_root_effects = previous_queued_root_effects;\n\t}\n}\n\n/**\n * Returns a promise that resolves once any pending state changes have been applied.\n * @returns {Promise<void>}\n */\nexport async function tick() {\n\tawait Promise.resolve();\n\t// By calling flush_sync we guarantee that any pending state changes are applied after one tick.\n\t// TODO look into whether we can make flushing subsequent updates synchronously in the future.\n\tflush_sync();\n}\n\n/**\n * @template V\n * @param {Value<V>} signal\n * @returns {V}\n */\nexport function get(signal) {\n\tvar flags = signal.f;\n\tvar is_derived = (flags & DERIVED) !== 0;\n\n\tif (captured_signals !== null) {\n\t\tcaptured_signals.add(signal);\n\t}\n\n\t// Register the dependency on the current reaction signal.\n\tif (active_reaction !== null && !untracking) {\n\t\tif (derived_sources !== null && derived_sources.includes(signal)) {\n\t\t\te.state_unsafe_local_read();\n\t\t}\n\t\tvar deps = active_reaction.deps;\n\t\tif (signal.rv < read_version) {\n\t\t\tsignal.rv = read_version;\n\t\t\t// If the signal is accessing the same dependencies in the same\n\t\t\t// order as it did last time, increment `skipped_deps`\n\t\t\t// rather than updating `new_deps`, which creates GC cost\n\t\t\tif (new_deps === null && deps !== null && deps[skipped_deps] === signal) {\n\t\t\t\tskipped_deps++;\n\t\t\t} else if (new_deps === null) {\n\t\t\t\tnew_deps = [signal];\n\t\t\t} else if (!skip_reaction || !new_deps.includes(signal)) {\n\t\t\t\t// Normally we can push duplicated dependencies to `new_deps`, but if we're inside\n\t\t\t\t// an unowned derived because skip_reaction is true, then we need to ensure that\n\t\t\t\t// we don't have duplicates\n\t\t\t\tnew_deps.push(signal);\n\t\t\t}\n\t\t}\n\t} else if (\n\t\tis_derived &&\n\t\t/** @type {Derived} */ (signal).deps === null &&\n\t\t/** @type {Derived} */ (signal).effects === null\n\t) {\n\t\tvar derived = /** @type {Derived} */ (signal);\n\t\tvar parent = derived.parent;\n\n\t\tif (parent !== null && (parent.f & UNOWNED) === 0) {\n\t\t\t// If the derived is owned by another derived then mark it as unowned\n\t\t\t// as the derived value might have been referenced in a different context\n\t\t\t// since and thus its parent might not be its true owner anymore\n\t\t\tderived.f ^= UNOWNED;\n\t\t}\n\t}\n\n\tif (is_derived) {\n\t\tderived = /** @type {Derived} */ (signal);\n\n\t\tif (check_dirtiness(derived)) {\n\t\t\tupdate_derived(derived);\n\t\t}\n\t}\n\n\tif (\n\t\tDEV &&\n\t\ttracing_mode_flag &&\n\t\ttracing_expressions !== null &&\n\t\tactive_reaction !== null &&\n\t\ttracing_expressions.reaction === active_reaction\n\t) {\n\t\t// Used when mapping state between special blocks like `each`\n\t\tif (signal.debug) {\n\t\t\tsignal.debug();\n\t\t} else if (signal.created) {\n\t\t\tvar entry = tracing_expressions.entries.get(signal);\n\n\t\t\tif (entry === undefined) {\n\t\t\t\tentry = { read: [] };\n\t\t\t\ttracing_expressions.entries.set(signal, entry);\n\t\t\t}\n\n\t\t\tentry.read.push(get_stack('TracedAt'));\n\t\t}\n\t}\n\n\treturn signal.v;\n}\n\n/**\n * Like `get`, but checks for `undefined`. Used for `var` declarations because they can be accessed before being declared\n * @template V\n * @param {Value<V> | undefined} signal\n * @returns {V | undefined}\n */\nexport function safe_get(signal) {\n\treturn signal && get(signal);\n}\n\n/**\n * Capture an array of all the signals that are read when `fn` is called\n * @template T\n * @param {() => T} fn\n */\nexport function capture_signals(fn) {\n\tvar previous_captured_signals = captured_signals;\n\tcaptured_signals = new Set();\n\n\tvar captured = captured_signals;\n\tvar signal;\n\n\ttry {\n\t\tuntrack(fn);\n\t\tif (previous_captured_signals !== null) {\n\t\t\tfor (signal of captured_signals) {\n\t\t\t\tprevious_captured_signals.add(signal);\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tcaptured_signals = previous_captured_signals;\n\t}\n\n\treturn captured;\n}\n\n/**\n * Invokes a function and captures all signals that are read during the invocation,\n * then invalidates them.\n * @param {() => any} fn\n */\nexport function invalidate_inner_signals(fn) {\n\tvar captured = capture_signals(() => untrack(fn));\n\n\tfor (var signal of captured) {\n\t\t// Go one level up because derived signals created as part of props in legacy mode\n\t\tif ((signal.f & LEGACY_DERIVED_PROP) !== 0) {\n\t\t\tfor (const dep of /** @type {Derived} */ (signal).deps || []) {\n\t\t\t\tif ((dep.f & DERIVED) === 0) {\n\t\t\t\t\t// Use internal_set instead of set here and below to avoid mutation validation\n\t\t\t\t\tinternal_set(dep, dep.v);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tinternal_set(signal, signal.v);\n\t\t}\n\t}\n}\n\n/**\n * When used inside a [`$derived`](https://svelte.dev/docs/svelte/$derived) or [`$effect`](https://svelte.dev/docs/svelte/$effect),\n * any state read inside `fn` will not be treated as a dependency.\n *\n * ```ts\n * $effect(() => {\n *   // this will run when `data` changes, but not when `time` changes\n *   save(data, {\n *     timestamp: untrack(() => time)\n *   });\n * });\n * ```\n * @template T\n * @param {() => T} fn\n * @returns {T}\n */\nexport function untrack(fn) {\n\tvar previous_untracking = untracking;\n\ttry {\n\t\tuntracking = true;\n\t\treturn fn();\n\t} finally {\n\t\tuntracking = previous_untracking;\n\t}\n}\n\nconst STATUS_MASK = ~(DIRTY | MAYBE_DIRTY | CLEAN);\n\n/**\n * @param {Signal} signal\n * @param {number} status\n * @returns {void}\n */\nexport function set_signal_status(signal, status) {\n\tsignal.f = (signal.f & STATUS_MASK) | status;\n}\n\n/**\n * @param {Record<string, unknown>} obj\n * @param {string[]} keys\n * @returns {Record<string, unknown>}\n */\nexport function exclude_from_object(obj, keys) {\n\t/** @type {Record<string, unknown>} */\n\tvar result = {};\n\n\tfor (var key in obj) {\n\t\tif (!keys.includes(key)) {\n\t\t\tresult[key] = obj[key];\n\t\t}\n\t}\n\n\treturn result;\n}\n\n/**\n * Possibly traverse an object and read all its properties so that they're all reactive in case this is `$state`.\n * Does only check first level of an object for performance reasons (heuristic should be good for 99% of all cases).\n * @param {any} value\n * @returns {void}\n */\nexport function deep_read_state(value) {\n\tif (typeof value !== 'object' || !value || value instanceof EventTarget) {\n\t\treturn;\n\t}\n\n\tif (STATE_SYMBOL in value) {\n\t\tdeep_read(value);\n\t} else if (!Array.isArray(value)) {\n\t\tfor (let key in value) {\n\t\t\tconst prop = value[key];\n\t\t\tif (typeof prop === 'object' && prop && STATE_SYMBOL in prop) {\n\t\t\t\tdeep_read(prop);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Deeply traverse an object and read all its properties\n * so that they're all reactive in case this is `$state`\n * @param {any} value\n * @param {Set<any>} visited\n * @returns {void}\n */\nexport function deep_read(value, visited = new Set()) {\n\tif (\n\t\ttypeof value === 'object' &&\n\t\tvalue !== null &&\n\t\t// We don't want to traverse DOM elements\n\t\t!(value instanceof EventTarget) &&\n\t\t!visited.has(value)\n\t) {\n\t\tvisited.add(value);\n\t\t// When working with a possible SvelteDate, this\n\t\t// will ensure we capture changes to it.\n\t\tif (value instanceof Date) {\n\t\t\tvalue.getTime();\n\t\t}\n\t\tfor (let key in value) {\n\t\t\ttry {\n\t\t\t\tdeep_read(value[key], visited);\n\t\t\t} catch (e) {\n\t\t\t\t// continue\n\t\t\t}\n\t\t}\n\t\tconst proto = get_prototype_of(value);\n\t\tif (\n\t\t\tproto !== Object.prototype &&\n\t\t\tproto !== Array.prototype &&\n\t\t\tproto !== Map.prototype &&\n\t\t\tproto !== Set.prototype &&\n\t\t\tproto !== Date.prototype\n\t\t) {\n\t\t\tconst descriptors = get_descriptors(proto);\n\t\t\tfor (let key in descriptors) {\n\t\t\t\tconst get = descriptors[key].get;\n\t\t\t\tif (get) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tget.call(value);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// continue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","const regex_return_characters = /\\r/g;\n\n/**\n * @param {string} str\n * @returns {string}\n */\nexport function hash(str) {\n\tstr = str.replace(regex_return_characters, '');\n\tlet hash = 5381;\n\tlet i = str.length;\n\n\twhile (i--) hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n\treturn (hash >>> 0).toString(36);\n}\n\nconst VOID_ELEMENT_NAMES = [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr'\n];\n\n/**\n * Returns `true` if `name` is of a void element\n * @param {string} name\n */\nexport function is_void(name) {\n\treturn VOID_ELEMENT_NAMES.includes(name) || name.toLowerCase() === '!doctype';\n}\n\nconst RESERVED_WORDS = [\n\t'arguments',\n\t'await',\n\t'break',\n\t'case',\n\t'catch',\n\t'class',\n\t'const',\n\t'continue',\n\t'debugger',\n\t'default',\n\t'delete',\n\t'do',\n\t'else',\n\t'enum',\n\t'eval',\n\t'export',\n\t'extends',\n\t'false',\n\t'finally',\n\t'for',\n\t'function',\n\t'if',\n\t'implements',\n\t'import',\n\t'in',\n\t'instanceof',\n\t'interface',\n\t'let',\n\t'new',\n\t'null',\n\t'package',\n\t'private',\n\t'protected',\n\t'public',\n\t'return',\n\t'static',\n\t'super',\n\t'switch',\n\t'this',\n\t'throw',\n\t'true',\n\t'try',\n\t'typeof',\n\t'var',\n\t'void',\n\t'while',\n\t'with',\n\t'yield'\n];\n\n/**\n * Returns `true` if `word` is a reserved JavaScript keyword\n * @param {string} word\n */\nexport function is_reserved(word) {\n\treturn RESERVED_WORDS.includes(word);\n}\n\n/**\n * @param {string} name\n */\nexport function is_capture_event(name) {\n\treturn name.endsWith('capture') && name !== 'gotpointercapture' && name !== 'lostpointercapture';\n}\n\n/** List of Element events that will be delegated */\nconst DELEGATED_EVENTS = [\n\t'beforeinput',\n\t'click',\n\t'change',\n\t'dblclick',\n\t'contextmenu',\n\t'focusin',\n\t'focusout',\n\t'input',\n\t'keydown',\n\t'keyup',\n\t'mousedown',\n\t'mousemove',\n\t'mouseout',\n\t'mouseover',\n\t'mouseup',\n\t'pointerdown',\n\t'pointermove',\n\t'pointerout',\n\t'pointerover',\n\t'pointerup',\n\t'touchend',\n\t'touchmove',\n\t'touchstart'\n];\n\n/**\n * Returns `true` if `event_name` is a delegated event\n * @param {string} event_name\n */\nexport function is_delegated(event_name) {\n\treturn DELEGATED_EVENTS.includes(event_name);\n}\n\n/**\n * Attributes that are boolean, i.e. they are present or not present.\n */\nconst DOM_BOOLEAN_ATTRIBUTES = [\n\t'allowfullscreen',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'disabled',\n\t'formnovalidate',\n\t'hidden',\n\t'indeterminate',\n\t'inert',\n\t'ismap',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'seamless',\n\t'selected',\n\t'webkitdirectory',\n\t'defer',\n\t'disablepictureinpicture',\n\t'disableremoteplayback'\n];\n\n/**\n * Returns `true` if `name` is a boolean attribute\n * @param {string} name\n */\nexport function is_boolean_attribute(name) {\n\treturn DOM_BOOLEAN_ATTRIBUTES.includes(name);\n}\n\n/**\n * @type {Record<string, string>}\n * List of attribute names that should be aliased to their property names\n * because they behave differently between setting them as an attribute and\n * setting them as a property.\n */\nconst ATTRIBUTE_ALIASES = {\n\t// no `class: 'className'` because we handle that separately\n\tformnovalidate: 'formNoValidate',\n\tismap: 'isMap',\n\tnomodule: 'noModule',\n\tplaysinline: 'playsInline',\n\treadonly: 'readOnly',\n\tdefaultvalue: 'defaultValue',\n\tdefaultchecked: 'defaultChecked',\n\tsrcobject: 'srcObject',\n\tnovalidate: 'noValidate',\n\tallowfullscreen: 'allowFullscreen',\n\tdisablepictureinpicture: 'disablePictureInPicture',\n\tdisableremoteplayback: 'disableRemotePlayback'\n};\n\n/**\n * @param {string} name\n */\nexport function normalize_attribute(name) {\n\tname = name.toLowerCase();\n\treturn ATTRIBUTE_ALIASES[name] ?? name;\n}\n\nconst DOM_PROPERTIES = [\n\t...DOM_BOOLEAN_ATTRIBUTES,\n\t'formNoValidate',\n\t'isMap',\n\t'noModule',\n\t'playsInline',\n\t'readOnly',\n\t'value',\n\t'volume',\n\t'defaultValue',\n\t'defaultChecked',\n\t'srcObject',\n\t'noValidate',\n\t'allowFullscreen',\n\t'disablePictureInPicture',\n\t'disableRemotePlayback'\n];\n\n/**\n * @param {string} name\n */\nexport function is_dom_property(name) {\n\treturn DOM_PROPERTIES.includes(name);\n}\n\nconst NON_STATIC_PROPERTIES = ['autofocus', 'muted', 'defaultValue', 'defaultChecked'];\n\n/**\n * Returns `true` if the given attribute cannot be set through the template\n * string, i.e. needs some kind of JavaScript handling to work.\n * @param {string} name\n */\nexport function cannot_be_set_statically(name) {\n\treturn NON_STATIC_PROPERTIES.includes(name);\n}\n\n/**\n * Subset of delegated events which should be passive by default.\n * These two are already passive via browser defaults on window, document and body.\n * But since\n * - we're delegating them\n * - they happen often\n * - they apply to mobile which is generally less performant\n * we're marking them as passive by default for other elements, too.\n */\nconst PASSIVE_EVENTS = ['touchstart', 'touchmove'];\n\n/**\n * Returns `true` if `name` is a passive event\n * @param {string} name\n */\nexport function is_passive_event(name) {\n\treturn PASSIVE_EVENTS.includes(name);\n}\n\nconst CONTENT_EDITABLE_BINDINGS = ['textContent', 'innerHTML', 'innerText'];\n\n/** @param {string} name */\nexport function is_content_editable_binding(name) {\n\treturn CONTENT_EDITABLE_BINDINGS.includes(name);\n}\n\nconst LOAD_ERROR_ELEMENTS = [\n\t'body',\n\t'embed',\n\t'iframe',\n\t'img',\n\t'link',\n\t'object',\n\t'script',\n\t'style',\n\t'track'\n];\n\n/**\n * Returns `true` if the element emits `load` and `error` events\n * @param {string} name\n */\nexport function is_load_error_element(name) {\n\treturn LOAD_ERROR_ELEMENTS.includes(name);\n}\n\nconst SVG_ELEMENTS = [\n\t'altGlyph',\n\t'altGlyphDef',\n\t'altGlyphItem',\n\t'animate',\n\t'animateColor',\n\t'animateMotion',\n\t'animateTransform',\n\t'circle',\n\t'clipPath',\n\t'color-profile',\n\t'cursor',\n\t'defs',\n\t'desc',\n\t'discard',\n\t'ellipse',\n\t'feBlend',\n\t'feColorMatrix',\n\t'feComponentTransfer',\n\t'feComposite',\n\t'feConvolveMatrix',\n\t'feDiffuseLighting',\n\t'feDisplacementMap',\n\t'feDistantLight',\n\t'feDropShadow',\n\t'feFlood',\n\t'feFuncA',\n\t'feFuncB',\n\t'feFuncG',\n\t'feFuncR',\n\t'feGaussianBlur',\n\t'feImage',\n\t'feMerge',\n\t'feMergeNode',\n\t'feMorphology',\n\t'feOffset',\n\t'fePointLight',\n\t'feSpecularLighting',\n\t'feSpotLight',\n\t'feTile',\n\t'feTurbulence',\n\t'filter',\n\t'font',\n\t'font-face',\n\t'font-face-format',\n\t'font-face-name',\n\t'font-face-src',\n\t'font-face-uri',\n\t'foreignObject',\n\t'g',\n\t'glyph',\n\t'glyphRef',\n\t'hatch',\n\t'hatchpath',\n\t'hkern',\n\t'image',\n\t'line',\n\t'linearGradient',\n\t'marker',\n\t'mask',\n\t'mesh',\n\t'meshgradient',\n\t'meshpatch',\n\t'meshrow',\n\t'metadata',\n\t'missing-glyph',\n\t'mpath',\n\t'path',\n\t'pattern',\n\t'polygon',\n\t'polyline',\n\t'radialGradient',\n\t'rect',\n\t'set',\n\t'solidcolor',\n\t'stop',\n\t'svg',\n\t'switch',\n\t'symbol',\n\t'text',\n\t'textPath',\n\t'tref',\n\t'tspan',\n\t'unknown',\n\t'use',\n\t'view',\n\t'vkern'\n];\n\n/** @param {string} name */\nexport function is_svg(name) {\n\treturn SVG_ELEMENTS.includes(name);\n}\n\nconst MATHML_ELEMENTS = [\n\t'annotation',\n\t'annotation-xml',\n\t'maction',\n\t'math',\n\t'merror',\n\t'mfrac',\n\t'mi',\n\t'mmultiscripts',\n\t'mn',\n\t'mo',\n\t'mover',\n\t'mpadded',\n\t'mphantom',\n\t'mprescripts',\n\t'mroot',\n\t'mrow',\n\t'ms',\n\t'mspace',\n\t'msqrt',\n\t'mstyle',\n\t'msub',\n\t'msubsup',\n\t'msup',\n\t'mtable',\n\t'mtd',\n\t'mtext',\n\t'mtr',\n\t'munder',\n\t'munderover',\n\t'semantics'\n];\n\n/** @param {string} name */\nexport function is_mathml(name) {\n\treturn MATHML_ELEMENTS.includes(name);\n}\n\nconst RUNES = /** @type {const} */ ([\n\t'$state',\n\t'$state.raw',\n\t'$state.snapshot',\n\t'$props',\n\t'$props.id',\n\t'$bindable',\n\t'$derived',\n\t'$derived.by',\n\t'$effect',\n\t'$effect.pre',\n\t'$effect.tracking',\n\t'$effect.root',\n\t'$inspect',\n\t'$inspect().with',\n\t'$inspect.trace',\n\t'$host'\n]);\n\n/**\n * @param {string} name\n * @returns {name is RUNES[number]}\n */\nexport function is_rune(name) {\n\treturn RUNES.includes(/** @type {RUNES[number]} */ (name));\n}\n\n/** List of elements that require raw contents and should not have SSR comments put in them */\nconst RAW_TEXT_ELEMENTS = /** @type {const} */ (['textarea', 'script', 'style', 'title']);\n\n/** @param {string} name */\nexport function is_raw_text_element(name) {\n\treturn RAW_TEXT_ELEMENTS.includes(/** @type {RAW_TEXT_ELEMENTS[number]} */ (name));\n}\n\n/**\n * Prevent devtools trying to make `location` a clickable link by inserting a zero-width space\n * @param {string | undefined} location\n */\nexport function sanitize_location(location) {\n\treturn location?.replace(/\\//g, '/\\u200b');\n}\n","import { hydrating } from '../hydration.js';\nimport { clear_text_content, get_first_child } from '../operations.js';\nimport { queue_micro_task } from '../task.js';\n\n/**\n * @param {HTMLElement} dom\n * @param {boolean} value\n * @returns {void}\n */\nexport function autofocus(dom, value) {\n\tif (value) {\n\t\tconst body = document.body;\n\t\tdom.autofocus = true;\n\n\t\tqueue_micro_task(() => {\n\t\t\tif (document.activeElement === body) {\n\t\t\t\tdom.focus();\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * The child of a textarea actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLTextAreaElement} dom\n * @returns {void}\n */\nexport function remove_textarea_child(dom) {\n\tif (hydrating && get_first_child(dom) !== null) {\n\t\tclear_text_content(dom);\n\t}\n}\n\nlet listening_to_form_reset = false;\n\nexport function add_form_reset_listener() {\n\tif (!listening_to_form_reset) {\n\t\tlistening_to_form_reset = true;\n\t\tdocument.addEventListener(\n\t\t\t'reset',\n\t\t\t(evt) => {\n\t\t\t\t// Needs to happen one tick later or else the dom properties of the form\n\t\t\t\t// elements have not updated to their reset values yet\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tif (!evt.defaultPrevented) {\n\t\t\t\t\t\tfor (const e of /**@type {HTMLFormElement} */ (evt.target).elements) {\n\t\t\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\t\t\te.__on_r?.();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t// In the capture phase to guarantee we get noticed of it (no possiblity of stopPropagation)\n\t\t\t{ capture: true }\n\t\t);\n\t}\n}\n","import { teardown } from '../../../reactivity/effects.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../../runtime.js';\nimport { add_form_reset_listener } from '../misc.js';\n\n/**\n * Fires the handler once immediately (unless corresponding arg is set to `false`),\n * then listens to the given events until the render effect context is destroyed\n * @param {EventTarget} target\n * @param {Array<string>} events\n * @param {(event?: Event) => void} handler\n * @param {any} call_handler_immediately\n */\nexport function listen(target, events, handler, call_handler_immediately = true) {\n\tif (call_handler_immediately) {\n\t\thandler();\n\t}\n\n\tfor (var name of events) {\n\t\ttarget.addEventListener(name, handler);\n\t}\n\n\tteardown(() => {\n\t\tfor (var name of events) {\n\t\t\ttarget.removeEventListener(name, handler);\n\t\t}\n\t});\n}\n\n/**\n * @template T\n * @param {() => T} fn\n */\nexport function without_reactive_context(fn) {\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * Listen to the given event, and then instantiate a global form reset listener if not already done,\n * to notify all bindings when the form is reset\n * @param {HTMLElement} element\n * @param {string} event\n * @param {(is_reset?: true) => void} handler\n * @param {(is_reset?: true) => void} [on_reset]\n */\nexport function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {\n\telement.addEventListener(event, () => without_reactive_context(handler));\n\t// @ts-expect-error\n\tconst prev = element.__on_r;\n\tif (prev) {\n\t\t// special case for checkbox that can have multiple binds (group & checked)\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => {\n\t\t\tprev();\n\t\t\ton_reset(true);\n\t\t};\n\t} else {\n\t\t// @ts-expect-error\n\t\telement.__on_r = () => on_reset(true);\n\t}\n\n\tadd_form_reset_listener();\n}\n","/** @import { Location } from 'locate-character' */\nimport { teardown } from '../../reactivity/effects.js';\nimport { define_property, is_array } from '../../../shared/utils.js';\nimport { hydrating } from '../hydration.js';\nimport { queue_micro_task } from '../task.js';\nimport { FILENAME } from '../../../../constants.js';\nimport * as w from '../../warnings.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { without_reactive_context } from './bindings/shared.js';\n\n/** @type {Set<string>} */\nexport const all_registered_events = new Set();\n\n/** @type {Set<(events: Array<string>) => void>} */\nexport const root_event_handles = new Set();\n\n/**\n * SSR adds onload and onerror attributes to catch those events before the hydration.\n * This function detects those cases, removes the attributes and replays the events.\n * @param {HTMLElement} dom\n */\nexport function replay_events(dom) {\n\tif (!hydrating) return;\n\n\tif (dom.onload) {\n\t\tdom.removeAttribute('onload');\n\t}\n\tif (dom.onerror) {\n\t\tdom.removeAttribute('onerror');\n\t}\n\t// @ts-expect-error\n\tconst event = dom.__e;\n\tif (event !== undefined) {\n\t\t// @ts-expect-error\n\t\tdom.__e = undefined;\n\t\tqueueMicrotask(() => {\n\t\t\tif (dom.isConnected) {\n\t\t\t\tdom.dispatchEvent(event);\n\t\t\t}\n\t\t});\n\t}\n}\n\n/**\n * @param {string} event_name\n * @param {EventTarget} dom\n * @param {EventListener} [handler]\n * @param {AddEventListenerOptions} [options]\n */\nexport function create_event(event_name, dom, handler, options = {}) {\n\t/**\n\t * @this {EventTarget}\n\t */\n\tfunction target_handler(/** @type {Event} */ event) {\n\t\tif (!options.capture) {\n\t\t\t// Only call in the bubble phase, else delegated events would be called before the capturing events\n\t\t\thandle_event_propagation.call(dom, event);\n\t\t}\n\t\tif (!event.cancelBubble) {\n\t\t\treturn without_reactive_context(() => {\n\t\t\t\treturn handler?.call(this, event);\n\t\t\t});\n\t\t}\n\t}\n\n\t// Chrome has a bug where pointer events don't work when attached to a DOM element that has been cloned\n\t// with cloneNode() and the DOM element is disconnected from the document. To ensure the event works, we\n\t// defer the attachment till after it's been appended to the document. TODO: remove this once Chrome fixes\n\t// this bug. The same applies to wheel events and touch events.\n\tif (\n\t\tevent_name.startsWith('pointer') ||\n\t\tevent_name.startsWith('touch') ||\n\t\tevent_name === 'wheel'\n\t) {\n\t\tqueue_micro_task(() => {\n\t\t\tdom.addEventListener(event_name, target_handler, options);\n\t\t});\n\t} else {\n\t\tdom.addEventListener(event_name, target_handler, options);\n\t}\n\n\treturn target_handler;\n}\n\n/**\n * Attaches an event handler to an element and returns a function that removes the handler. Using this\n * rather than `addEventListener` will preserve the correct order relative to handlers added declaratively\n * (with attributes like `onclick`), which use event delegation for performance reasons\n *\n * @param {EventTarget} element\n * @param {string} type\n * @param {EventListener} handler\n * @param {AddEventListenerOptions} [options]\n */\nexport function on(element, type, handler, options = {}) {\n\tvar target_handler = create_event(type, element, handler, options);\n\n\treturn () => {\n\t\telement.removeEventListener(type, target_handler, options);\n\t};\n}\n\n/**\n * @param {string} event_name\n * @param {Element} dom\n * @param {EventListener} [handler]\n * @param {boolean} [capture]\n * @param {boolean} [passive]\n * @returns {void}\n */\nexport function event(event_name, dom, handler, capture, passive) {\n\tvar options = { capture, passive };\n\tvar target_handler = create_event(event_name, dom, handler, options);\n\n\t// @ts-ignore\n\tif (dom === document.body || dom === window || dom === document) {\n\t\tteardown(() => {\n\t\t\tdom.removeEventListener(event_name, target_handler, options);\n\t\t});\n\t}\n}\n\n/**\n * @param {Array<string>} events\n * @returns {void}\n */\nexport function delegate(events) {\n\tfor (var i = 0; i < events.length; i++) {\n\t\tall_registered_events.add(events[i]);\n\t}\n\n\tfor (var fn of root_event_handles) {\n\t\tfn(events);\n\t}\n}\n\n/**\n * @this {EventTarget}\n * @param {Event} event\n * @returns {void}\n */\nexport function handle_event_propagation(event) {\n\tvar handler_element = this;\n\tvar owner_document = /** @type {Node} */ (handler_element).ownerDocument;\n\tvar event_name = event.type;\n\tvar path = event.composedPath?.() || [];\n\tvar current_target = /** @type {null | Element} */ (path[0] || event.target);\n\n\t// composedPath contains list of nodes the event has propagated through.\n\t// We check __root to skip all nodes below it in case this is a\n\t// parent of the __root node, which indicates that there's nested\n\t// mounted apps. In this case we don't want to trigger events multiple times.\n\tvar path_idx = 0;\n\n\t// @ts-expect-error is added below\n\tvar handled_at = event.__root;\n\n\tif (handled_at) {\n\t\tvar at_idx = path.indexOf(handled_at);\n\t\tif (\n\t\t\tat_idx !== -1 &&\n\t\t\t(handler_element === document || handler_element === /** @type {any} */ (window))\n\t\t) {\n\t\t\t// This is the fallback document listener or a window listener, but the event was already handled\n\t\t\t// -> ignore, but set handle_at to document/window so that we're resetting the event\n\t\t\t// chain in case someone manually dispatches the same event object again.\n\t\t\t// @ts-expect-error\n\t\t\tevent.__root = handler_element;\n\t\t\treturn;\n\t\t}\n\n\t\t// We're deliberately not skipping if the index is higher, because\n\t\t// someone could create an event programmatically and emit it multiple times,\n\t\t// in which case we want to handle the whole propagation chain properly each time.\n\t\t// (this will only be a false negative if the event is dispatched multiple times and\n\t\t// the fallback document listener isn't reached in between, but that's super rare)\n\t\tvar handler_idx = path.indexOf(handler_element);\n\t\tif (handler_idx === -1) {\n\t\t\t// handle_idx can theoretically be -1 (happened in some JSDOM testing scenarios with an event listener on the window object)\n\t\t\t// so guard against that, too, and assume that everything was handled at this point.\n\t\t\treturn;\n\t\t}\n\n\t\tif (at_idx <= handler_idx) {\n\t\t\tpath_idx = at_idx;\n\t\t}\n\t}\n\n\tcurrent_target = /** @type {Element} */ (path[path_idx] || event.target);\n\t// there can only be one delegated event per element, and we either already handled the current target,\n\t// or this is the very first target in the chain which has a non-delegated listener, in which case it's safe\n\t// to handle a possible delegated event on it later (through the root delegation listener for example).\n\tif (current_target === handler_element) return;\n\n\t// Proxy currentTarget to correct target\n\tdefine_property(event, 'currentTarget', {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn current_target || owner_document;\n\t\t}\n\t});\n\n\t// This started because of Chromium issue https://chromestatus.com/feature/5128696823545856,\n\t// where removal or moving of of the DOM can cause sync `blur` events to fire, which can cause logic\n\t// to run inside the current `active_reaction`, which isn't what we want at all. However, on reflection,\n\t// it's probably best that all event handled by Svelte have this behaviour, as we don't really want\n\t// an event handler to run in the context of another reaction or effect.\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\n\ttry {\n\t\t/**\n\t\t * @type {unknown}\n\t\t */\n\t\tvar throw_error;\n\t\t/**\n\t\t * @type {unknown[]}\n\t\t */\n\t\tvar other_errors = [];\n\n\t\twhile (current_target !== null) {\n\t\t\t/** @type {null | Element} */\n\t\t\tvar parent_element =\n\t\t\t\tcurrent_target.assignedSlot ||\n\t\t\t\tcurrent_target.parentNode ||\n\t\t\t\t/** @type {any} */ (current_target).host ||\n\t\t\t\tnull;\n\n\t\t\ttry {\n\t\t\t\t// @ts-expect-error\n\t\t\t\tvar delegated = current_target['__' + event_name];\n\n\t\t\t\tif (delegated !== undefined && !(/** @type {any} */ (current_target).disabled)) {\n\t\t\t\t\tif (is_array(delegated)) {\n\t\t\t\t\t\tvar [fn, ...data] = delegated;\n\t\t\t\t\t\tfn.apply(current_target, [event, ...data]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelegated.call(current_target, event);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tif (throw_error) {\n\t\t\t\t\tother_errors.push(error);\n\t\t\t\t} else {\n\t\t\t\t\tthrow_error = error;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (event.cancelBubble || parent_element === handler_element || parent_element === null) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrent_target = parent_element;\n\t\t}\n\n\t\tif (throw_error) {\n\t\t\tfor (let error of other_errors) {\n\t\t\t\t// Throw the rest of the errors, one-by-one on a microtask\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\t\t\t}\n\t\t\tthrow throw_error;\n\t\t}\n\t} finally {\n\t\t// @ts-expect-error is used above\n\t\tevent.__root = handler_element;\n\t\t// @ts-ignore remove proxy on currentTarget\n\t\tdelete event.currentTarget;\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t}\n}\n\n/**\n * In dev, warn if an event handler is not a function, as it means the\n * user probably called the handler or forgot to add a `() =>`\n * @param {() => (event: Event, ...args: any) => void} thunk\n * @param {EventTarget} element\n * @param {[Event, ...any]} args\n * @param {any} component\n * @param {[number, number]} [loc]\n * @param {boolean} [remove_parens]\n */\nexport function apply(\n\tthunk,\n\telement,\n\targs,\n\tcomponent,\n\tloc,\n\thas_side_effects = false,\n\tremove_parens = false\n) {\n\tlet handler;\n\tlet error;\n\n\ttry {\n\t\thandler = thunk();\n\t} catch (e) {\n\t\terror = e;\n\t}\n\n\tif (typeof handler === 'function') {\n\t\thandler.apply(element, args);\n\t} else if (has_side_effects || handler != null || error) {\n\t\tconst filename = component?.[FILENAME];\n\t\tconst location = loc ? ` at ${filename}:${loc[0]}:${loc[1]}` : ` in ${filename}`;\n\n\t\tconst event_name = args[0].type;\n\t\tconst description = `\\`${event_name}\\` handler${location}`;\n\t\tconst suggestion = remove_parens ? 'remove the trailing `()`' : 'add a leading `() =>`';\n\n\t\tw.event_handler_invalid(description, suggestion);\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\t}\n}\n","/** @param {string} html */\nexport function create_fragment_from_html(html) {\n\tvar elem = document.createElement('template');\n\telem.innerHTML = html;\n\treturn elem.content;\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from './hydration.js';\nimport { create_text, get_first_child, is_firefox } from './operations.js';\nimport { create_fragment_from_html } from './reconciler.js';\nimport { active_effect } from '../runtime.js';\nimport { TEMPLATE_FRAGMENT, TEMPLATE_USE_IMPORT_NODE } from '../../../constants.js';\n\n/**\n * @param {TemplateNode} start\n * @param {TemplateNode | null} end\n */\nexport function assign_nodes(start, end) {\n\tvar effect = /** @type {Effect} */ (active_effect);\n\tif (effect.nodes_start === null) {\n\t\teffect.nodes_start = start;\n\t\teffect.nodes_end = end;\n\t}\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function template(content, flags) {\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar use_import_node = (flags & TEMPLATE_USE_IMPORT_NODE) !== 0;\n\n\t/** @type {Node} */\n\tvar node;\n\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (node === undefined) {\n\t\t\tnode = create_fragment_from_html(has_start ? content : '<!>' + content);\n\t\t\tif (!is_fragment) node = /** @type {Node} */ (get_first_child(node));\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (\n\t\t\tuse_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)\n\t\t);\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function template_with_script(content, flags) {\n\tvar fn = template(content, flags);\n\treturn () => run_scripts(/** @type {Element | DocumentFragment} */ (fn()));\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @param {'svg' | 'math'} ns\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function ns_template(content, flags, ns = 'svg') {\n\t/**\n\t * Whether or not the first item is a text/element node. If not, we need to\n\t * create an additional comment node to act as `effect.nodes.start`\n\t */\n\tvar has_start = !content.startsWith('<!>');\n\n\tvar is_fragment = (flags & TEMPLATE_FRAGMENT) !== 0;\n\tvar wrapped = `<${ns}>${has_start ? content : '<!>' + content}</${ns}>`;\n\n\t/** @type {Element | DocumentFragment} */\n\tvar node;\n\n\treturn () => {\n\t\tif (hydrating) {\n\t\t\tassign_nodes(hydrate_node, null);\n\t\t\treturn hydrate_node;\n\t\t}\n\n\t\tif (!node) {\n\t\t\tvar fragment = /** @type {DocumentFragment} */ (create_fragment_from_html(wrapped));\n\t\t\tvar root = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (is_fragment) {\n\t\t\t\tnode = document.createDocumentFragment();\n\t\t\t\twhile (get_first_child(root)) {\n\t\t\t\t\tnode.appendChild(/** @type {Node} */ (get_first_child(root)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode = /** @type {Element} */ (get_first_child(root));\n\t\t\t}\n\t\t}\n\n\t\tvar clone = /** @type {TemplateNode} */ (node.cloneNode(true));\n\n\t\tif (is_fragment) {\n\t\t\tvar start = /** @type {TemplateNode} */ (get_first_child(clone));\n\t\t\tvar end = /** @type {TemplateNode} */ (clone.lastChild);\n\n\t\t\tassign_nodes(start, end);\n\t\t} else {\n\t\t\tassign_nodes(clone, clone);\n\t\t}\n\n\t\treturn clone;\n\t};\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function svg_template_with_script(content, flags) {\n\tvar fn = ns_template(content, flags);\n\treturn () => run_scripts(/** @type {Element | DocumentFragment} */ (fn()));\n}\n\n/**\n * @param {string} content\n * @param {number} flags\n * @returns {() => Node | Node[]}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function mathml_template(content, flags) {\n\treturn ns_template(content, flags, 'math');\n}\n\n/**\n * Creating a document fragment from HTML that contains script tags will not execute\n * the scripts. We need to replace the script tags with new ones so that they are executed.\n * @param {Element | DocumentFragment} node\n * @returns {Node | Node[]}\n */\nfunction run_scripts(node) {\n\t// scripts were SSR'd, in which case they will run\n\tif (hydrating) return node;\n\n\tconst is_fragment = node.nodeType === 11;\n\tconst scripts =\n\t\t/** @type {HTMLElement} */ (node).tagName === 'SCRIPT'\n\t\t\t? [/** @type {HTMLScriptElement} */ (node)]\n\t\t\t: node.querySelectorAll('script');\n\tconst effect = /** @type {Effect} */ (active_effect);\n\n\tfor (const script of scripts) {\n\t\tconst clone = document.createElement('script');\n\t\tfor (var attribute of script.attributes) {\n\t\t\tclone.setAttribute(attribute.name, attribute.value);\n\t\t}\n\n\t\tclone.textContent = script.textContent;\n\n\t\t// The script has changed - if it's at the edges, the effect now points at dead nodes\n\t\tif (is_fragment ? node.firstChild === script : node === script) {\n\t\t\teffect.nodes_start = clone;\n\t\t}\n\t\tif (is_fragment ? node.lastChild === script : node === script) {\n\t\t\teffect.nodes_end = clone;\n\t\t}\n\n\t\tscript.replaceWith(clone);\n\t}\n\treturn node;\n}\n\n/**\n * Don't mark this as side-effect-free, hydration needs to walk all nodes\n * @param {any} value\n */\nexport function text(value = '') {\n\tif (!hydrating) {\n\t\tvar t = create_text(value + '');\n\t\tassign_nodes(t, t);\n\t\treturn t;\n\t}\n\n\tvar node = hydrate_node;\n\n\tif (node.nodeType !== 3) {\n\t\t// if an {expression} is empty during SSR, we need to insert an empty text node\n\t\tnode.before((node = create_text()));\n\t\tset_hydrate_node(node);\n\t}\n\n\tassign_nodes(node, node);\n\treturn node;\n}\n\nexport function comment() {\n\t// we're not delegating to `template` here for performance reasons\n\tif (hydrating) {\n\t\tassign_nodes(hydrate_node, null);\n\t\treturn hydrate_node;\n\t}\n\n\tvar frag = document.createDocumentFragment();\n\tvar start = document.createComment('');\n\tvar anchor = create_text();\n\tfrag.append(start, anchor);\n\n\tassign_nodes(start, anchor);\n\n\treturn frag;\n}\n\n/**\n * Assign the created (or in hydration mode, traversed) dom elements to the current block\n * and insert the elements into the dom (in client mode).\n * @param {Text | Comment | Element} anchor\n * @param {DocumentFragment | Element} dom\n */\nexport function append(anchor, dom) {\n\tif (hydrating) {\n\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\t\thydrate_next();\n\t\treturn;\n\t}\n\n\tif (anchor === null) {\n\t\t// edge case — void `<svelte:element>` with content\n\t\treturn;\n\t}\n\n\tanchor.before(/** @type {Node} */ (dom));\n}\n\nlet uid = 1;\n\n/**\n * Create (or hydrate) an unique UID for the component instance.\n */\nexport function props_id() {\n\tif (\n\t\thydrating &&\n\t\thydrate_node &&\n\t\thydrate_node.nodeType === 8 &&\n\t\thydrate_node.textContent?.startsWith('#s')\n\t) {\n\t\tconst id = hydrate_node.textContent.substring(1);\n\t\thydrate_next();\n\t\treturn id;\n\t}\n\n\treturn 'c' + uid++;\n}\n","/** @import { ComponentContext, Effect, TemplateNode } from '#client' */\n/** @import { Component, ComponentType, SvelteComponent, MountOptions } from '../../index.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling,\n\tinit_operations\n} from './dom/operations.js';\nimport { HYDRATION_END, HYDRATION_ERROR, HYDRATION_START } from '../../constants.js';\nimport { active_effect } from './runtime.js';\nimport { push, pop, component_context } from './context.js';\nimport { component_root, branch } from './reactivity/effects.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tset_hydrate_node,\n\tset_hydrating\n} from './dom/hydration.js';\nimport { array_from } from '../shared/utils.js';\nimport {\n\tall_registered_events,\n\thandle_event_propagation,\n\troot_event_handles\n} from './dom/elements/events.js';\nimport { reset_head_anchor } from './dom/blocks/svelte-head.js';\nimport * as w from './warnings.js';\nimport * as e from './errors.js';\nimport { assign_nodes } from './dom/template.js';\nimport { is_passive_event } from '../../utils.js';\n\n/**\n * This is normally true — block effects should run their intro transitions —\n * but is false during hydration (unless `options.intro` is `true`) and\n * when creating the children of a `<svelte:element>` that just changed tag\n */\nexport let should_intro = true;\n\n/** @param {boolean} value */\nexport function set_should_intro(value) {\n\tshould_intro = value;\n}\n\n/**\n * @param {Element} text\n * @param {string} value\n * @returns {void}\n */\nexport function set_text(text, value) {\n\t// For objects, we apply string coercion (which might make things like $state array references in the template reactive) before diffing\n\tvar str = value == null ? '' : typeof value === 'object' ? value + '' : value;\n\t// @ts-expect-error\n\tif (str !== (text.__t ??= text.nodeValue)) {\n\t\t// @ts-expect-error\n\t\ttext.__t = str;\n\t\ttext.nodeValue = str + '';\n\t}\n}\n\n/**\n * Mounts a component to the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component.\n * Transitions will play during the initial render unless the `intro` option is set to `false`.\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {MountOptions<Props>} options\n * @returns {Exports}\n */\nexport function mount(component, options) {\n\treturn _mount(component, options);\n}\n\n/**\n * Hydrates a component on the given target and returns the exports and potentially the props (if compiled with `accessors: true`) of the component\n *\n * @template {Record<string, any>} Props\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<Props>> | Component<Props, Exports, any>} component\n * @param {{} extends Props ? {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops?: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n *  \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t} : {\n * \t\ttarget: Document | Element | ShadowRoot;\n * \t\tprops: Props;\n * \t\tevents?: Record<string, (e: any) => any>;\n *  \tcontext?: Map<any, any>;\n * \t\tintro?: boolean;\n * \t\trecover?: boolean;\n * \t}} options\n * @returns {Exports}\n */\nexport function hydrate(component, options) {\n\tinit_operations();\n\toptions.intro = options.intro ?? false;\n\tconst target = options.target;\n\tconst was_hydrating = hydrating;\n\tconst previous_hydrate_node = hydrate_node;\n\n\ttry {\n\t\tvar anchor = /** @type {TemplateNode} */ (get_first_child(target));\n\t\twhile (\n\t\t\tanchor &&\n\t\t\t(anchor.nodeType !== 8 || /** @type {Comment} */ (anchor).data !== HYDRATION_START)\n\t\t) {\n\t\t\tanchor = /** @type {TemplateNode} */ (get_next_sibling(anchor));\n\t\t}\n\n\t\tif (!anchor) {\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(true);\n\t\tset_hydrate_node(/** @type {Comment} */ (anchor));\n\t\thydrate_next();\n\n\t\tconst instance = _mount(component, { ...options, anchor });\n\n\t\tif (\n\t\t\thydrate_node === null ||\n\t\t\thydrate_node.nodeType !== 8 ||\n\t\t\t/** @type {Comment} */ (hydrate_node).data !== HYDRATION_END\n\t\t) {\n\t\t\tw.hydration_mismatch();\n\t\t\tthrow HYDRATION_ERROR;\n\t\t}\n\n\t\tset_hydrating(false);\n\n\t\treturn /**  @type {Exports} */ (instance);\n\t} catch (error) {\n\t\tif (error === HYDRATION_ERROR) {\n\t\t\tif (options.recover === false) {\n\t\t\t\te.hydration_failed();\n\t\t\t}\n\n\t\t\t// If an error occured above, the operations might not yet have been initialised.\n\t\t\tinit_operations();\n\t\t\tclear_text_content(target);\n\n\t\t\tset_hydrating(false);\n\t\t\treturn mount(component, options);\n\t\t}\n\n\t\tthrow error;\n\t} finally {\n\t\tset_hydrating(was_hydrating);\n\t\tset_hydrate_node(previous_hydrate_node);\n\t\treset_head_anchor();\n\t}\n}\n\n/** @type {Map<string, number>} */\nconst document_listeners = new Map();\n\n/**\n * @template {Record<string, any>} Exports\n * @param {ComponentType<SvelteComponent<any>> | Component<any>} Component\n * @param {MountOptions} options\n * @returns {Exports}\n */\nfunction _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {\n\tinit_operations();\n\n\tvar registered_events = new Set();\n\n\t/** @param {Array<string>} events */\n\tvar event_handle = (events) => {\n\t\tfor (var i = 0; i < events.length; i++) {\n\t\t\tvar event_name = events[i];\n\n\t\t\tif (registered_events.has(event_name)) continue;\n\t\t\tregistered_events.add(event_name);\n\n\t\t\tvar passive = is_passive_event(event_name);\n\n\t\t\t// Add the event listener to both the container and the document.\n\t\t\t// The container listener ensures we catch events from within in case\n\t\t\t// the outer content stops propagation of the event.\n\t\t\ttarget.addEventListener(event_name, handle_event_propagation, { passive });\n\n\t\t\tvar n = document_listeners.get(event_name);\n\n\t\t\tif (n === undefined) {\n\t\t\t\t// The document listener ensures we catch events that originate from elements that were\n\t\t\t\t// manually moved outside of the container (e.g. via manual portals).\n\t\t\t\tdocument.addEventListener(event_name, handle_event_propagation, { passive });\n\t\t\t\tdocument_listeners.set(event_name, 1);\n\t\t\t} else {\n\t\t\t\tdocument_listeners.set(event_name, n + 1);\n\t\t\t}\n\t\t}\n\t};\n\n\tevent_handle(array_from(all_registered_events));\n\troot_event_handles.add(event_handle);\n\n\t/** @type {Exports} */\n\t// @ts-expect-error will be defined because the render effect runs synchronously\n\tvar component = undefined;\n\n\tvar unmount = component_root(() => {\n\t\tvar anchor_node = anchor ?? target.appendChild(create_text());\n\n\t\tbranch(() => {\n\t\t\tif (context) {\n\t\t\t\tpush({});\n\t\t\t\tvar ctx = /** @type {ComponentContext} */ (component_context);\n\t\t\t\tctx.c = context;\n\t\t\t}\n\n\t\t\tif (events) {\n\t\t\t\t// We can't spread the object or else we'd lose the state proxy stuff, if it is one\n\t\t\t\t/** @type {any} */ (props).$$events = events;\n\t\t\t}\n\n\t\t\tif (hydrating) {\n\t\t\t\tassign_nodes(/** @type {TemplateNode} */ (anchor_node), null);\n\t\t\t}\n\n\t\t\tshould_intro = intro;\n\t\t\t// @ts-expect-error the public typings are not what the actual function looks like\n\t\t\tcomponent = Component(anchor_node, props) || {};\n\t\t\tshould_intro = true;\n\n\t\t\tif (hydrating) {\n\t\t\t\t/** @type {Effect} */ (active_effect).nodes_end = hydrate_node;\n\t\t\t}\n\n\t\t\tif (context) {\n\t\t\t\tpop();\n\t\t\t}\n\t\t});\n\n\t\treturn () => {\n\t\t\tfor (var event_name of registered_events) {\n\t\t\t\ttarget.removeEventListener(event_name, handle_event_propagation);\n\n\t\t\t\tvar n = /** @type {number} */ (document_listeners.get(event_name));\n\n\t\t\t\tif (--n === 0) {\n\t\t\t\t\tdocument.removeEventListener(event_name, handle_event_propagation);\n\t\t\t\t\tdocument_listeners.delete(event_name);\n\t\t\t\t} else {\n\t\t\t\t\tdocument_listeners.set(event_name, n);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\troot_event_handles.delete(event_handle);\n\n\t\t\tif (anchor_node !== anchor) {\n\t\t\t\tanchor_node.parentNode?.removeChild(anchor_node);\n\t\t\t}\n\t\t};\n\t});\n\n\tmounted_components.set(component, unmount);\n\treturn component;\n}\n\n/**\n * References of the components that were mounted or hydrated.\n * Uses a `WeakMap` to avoid memory leaks.\n */\nlet mounted_components = new WeakMap();\n\n/**\n * Unmounts a component that was previously mounted using `mount` or `hydrate`.\n *\n * Since 5.13.0, if `options.outro` is `true`, [transitions](https://svelte.dev/docs/svelte/transition) will play before the component is removed from the DOM.\n *\n * Returns a `Promise` that resolves after transitions have completed if `options.outro` is true, or immediately otherwise (prior to 5.13.0, returns `void`).\n *\n * ```js\n * import { mount, unmount } from 'svelte';\n * import App from './App.svelte';\n *\n * const app = mount(App, { target: document.body });\n *\n * // later...\n * unmount(app, { outro: true });\n * ```\n * @param {Record<string, any>} component\n * @param {{ outro?: boolean }} [options]\n * @returns {Promise<void>}\n */\nexport function unmount(component, options) {\n\tconst fn = mounted_components.get(component);\n\n\tif (fn) {\n\t\tmounted_components.delete(component);\n\t\treturn fn(options);\n\t}\n\n\tif (DEV) {\n\t\tw.lifecycle_double_unmount();\n\t}\n\n\treturn Promise.resolve();\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { EFFECT_TRANSPARENT } from '../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport { block, branch, pause_effect, resume_effect } from '../../reactivity/effects.js';\nimport { HYDRATION_START_ELSE, UNINITIALIZED } from '../../../../constants.js';\n\n/**\n * @param {TemplateNode} node\n * @param {(branch: (fn: (anchor: Node) => void, flag?: boolean) => void) => void} fn\n * @param {boolean} [elseif] True if this is an `{:else if ...}` block rather than an `{#if ...}`, as that affects which transitions are considered 'local'\n * @returns {void}\n */\nexport function if_block(node, fn, elseif = false) {\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\tvar anchor = node;\n\n\t/** @type {Effect | null} */\n\tvar consequent_effect = null;\n\n\t/** @type {Effect | null} */\n\tvar alternate_effect = null;\n\n\t/** @type {UNINITIALIZED | boolean | null} */\n\tvar condition = UNINITIALIZED;\n\n\tvar flags = elseif ? EFFECT_TRANSPARENT : 0;\n\n\tvar has_branch = false;\n\n\tconst set_branch = (/** @type {(anchor: Node) => void} */ fn, flag = true) => {\n\t\thas_branch = true;\n\t\tupdate_branch(flag, fn);\n\t};\n\n\tconst update_branch = (\n\t\t/** @type {boolean | null} */ new_condition,\n\t\t/** @type {null | ((anchor: Node) => void)} */ fn\n\t) => {\n\t\tif (condition === (condition = new_condition)) return;\n\n\t\t/** Whether or not there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tconst is_else = /** @type {Comment} */ (anchor).data === HYDRATION_START_ELSE;\n\n\t\t\tif (!!condition === is_else) {\n\t\t\t\t// Hydration mismatch: remove everything inside the anchor and start fresh.\n\t\t\t\t// This could happen with `{#if browser}...{/if}`, for example\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t}\n\t\t}\n\n\t\tif (condition) {\n\t\t\tif (consequent_effect) {\n\t\t\t\tresume_effect(consequent_effect);\n\t\t\t} else if (fn) {\n\t\t\t\tconsequent_effect = branch(() => fn(anchor));\n\t\t\t}\n\n\t\t\tif (alternate_effect) {\n\t\t\t\tpause_effect(alternate_effect, () => {\n\t\t\t\t\talternate_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif (alternate_effect) {\n\t\t\t\tresume_effect(alternate_effect);\n\t\t\t} else if (fn) {\n\t\t\t\talternate_effect = branch(() => fn(anchor));\n\t\t\t}\n\n\t\t\tif (consequent_effect) {\n\t\t\t\tpause_effect(consequent_effect, () => {\n\t\t\t\t\tconsequent_effect = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\t};\n\n\tblock(() => {\n\t\thas_branch = false;\n\t\tfn(set_branch);\n\t\tif (!has_branch) {\n\t\t\tupdate_branch(null, null);\n\t\t}\n\t}, flags);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n","/** @import { EachItem, EachState, Effect, MaybeSource, Source, TemplateNode, TransitionManager, Value } from '#client' */\nimport {\n\tEACH_INDEX_REACTIVE,\n\tEACH_IS_ANIMATED,\n\tEACH_IS_CONTROLLED,\n\tEACH_ITEM_IMMUTABLE,\n\tEACH_ITEM_REACTIVE,\n\tHYDRATION_END,\n\tHYDRATION_START_ELSE\n} from '../../../../constants.js';\nimport {\n\thydrate_next,\n\thydrate_node,\n\thydrating,\n\tremove_nodes,\n\tset_hydrate_node,\n\tset_hydrating\n} from '../hydration.js';\nimport {\n\tclear_text_content,\n\tcreate_text,\n\tget_first_child,\n\tget_next_sibling\n} from '../operations.js';\nimport {\n\tblock,\n\tbranch,\n\tdestroy_effect,\n\trun_out_transitions,\n\tpause_children,\n\tpause_effect,\n\tresume_effect\n} from '../../reactivity/effects.js';\nimport { source, mutable_source, internal_set } from '../../reactivity/sources.js';\nimport { array_from, is_array } from '../../../shared/utils.js';\nimport { INERT } from '../../constants.js';\nimport { queue_micro_task } from '../task.js';\nimport { active_effect, active_reaction, get } from '../../runtime.js';\nimport { DEV } from 'esm-env';\nimport { derived_safe_equal } from '../../reactivity/deriveds.js';\n\n/**\n * The row of a keyed each block that is currently updating. We track this\n * so that `animate:` directives have something to attach themselves to\n * @type {EachItem | null}\n */\nexport let current_each_item = null;\n\n/** @param {EachItem | null} item */\nexport function set_current_each_item(item) {\n\tcurrent_each_item = item;\n}\n\n/**\n * @param {any} _\n * @param {number} i\n */\nexport function index(_, i) {\n\treturn i;\n}\n\n/**\n * Pause multiple effects simultaneously, and coordinate their\n * subsequent destruction. Used in each blocks\n * @param {EachState} state\n * @param {EachItem[]} items\n * @param {null | Node} controlled_anchor\n * @param {Map<any, EachItem>} items_map\n */\nfunction pause_effects(state, items, controlled_anchor, items_map) {\n\t/** @type {TransitionManager[]} */\n\tvar transitions = [];\n\tvar length = items.length;\n\n\tfor (var i = 0; i < length; i++) {\n\t\tpause_children(items[i].e, transitions, true);\n\t}\n\n\tvar is_controlled = length > 0 && transitions.length === 0 && controlled_anchor !== null;\n\t// If we have a controlled anchor, it means that the each block is inside a single\n\t// DOM element, so we can apply a fast-path for clearing the contents of the element.\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (\n\t\t\t/** @type {Element} */ (controlled_anchor).parentNode\n\t\t);\n\t\tclear_text_content(parent_node);\n\t\tparent_node.append(/** @type {Element} */ (controlled_anchor));\n\t\titems_map.clear();\n\t\tlink(state, items[0].prev, items[length - 1].next);\n\t}\n\n\trun_out_transitions(transitions, () => {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tvar item = items[i];\n\t\t\tif (!is_controlled) {\n\t\t\t\titems_map.delete(item.k);\n\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t}\n\t\t\tdestroy_effect(item.e, !is_controlled);\n\t\t}\n\t});\n}\n\n/**\n * @template V\n * @param {Element | Comment} node The next sibling node, or the parent node if this is a 'controlled' block\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @param {(value: V, index: number) => any} get_key\n * @param {(anchor: Node, item: MaybeSource<V>, index: MaybeSource<number>) => void} render_fn\n * @param {null | ((anchor: Node) => void)} fallback_fn\n * @returns {void}\n */\nexport function each(node, flags, get_collection, get_key, render_fn, fallback_fn = null) {\n\tvar anchor = node;\n\n\t/** @type {EachState} */\n\tvar state = { flags, items: new Map(), first: null };\n\n\tvar is_controlled = (flags & EACH_IS_CONTROLLED) !== 0;\n\n\tif (is_controlled) {\n\t\tvar parent_node = /** @type {Element} */ (node);\n\n\t\tanchor = hydrating\n\t\t\t? set_hydrate_node(/** @type {Comment | Text} */ (get_first_child(parent_node)))\n\t\t\t: parent_node.appendChild(create_text());\n\t}\n\n\tif (hydrating) {\n\t\thydrate_next();\n\t}\n\n\t/** @type {Effect | null} */\n\tvar fallback = null;\n\n\tvar was_empty = false;\n\n\t// TODO: ideally we could use derived for runes mode but because of the ability\n\t// to use a store which can be mutated, we can't do that here as mutating a store\n\t// will still result in the collection array being the same from the store\n\tvar each_array = derived_safe_equal(() => {\n\t\tvar collection = get_collection();\n\n\t\treturn is_array(collection) ? collection : collection == null ? [] : array_from(collection);\n\t});\n\n\tblock(() => {\n\t\tvar array = get(each_array);\n\t\tvar length = array.length;\n\n\t\tif (was_empty && length === 0) {\n\t\t\t// ignore updates if the array is empty,\n\t\t\t// and it already was empty on previous run\n\t\t\treturn;\n\t\t}\n\t\twas_empty = length === 0;\n\n\t\t/** `true` if there was a hydration mismatch. Needs to be a `let` or else it isn't treeshaken out */\n\t\tlet mismatch = false;\n\n\t\tif (hydrating) {\n\t\t\tvar is_else = /** @type {Comment} */ (anchor).data === HYDRATION_START_ELSE;\n\n\t\t\tif (is_else !== (length === 0)) {\n\t\t\t\t// hydration mismatch — remove the server-rendered DOM and start over\n\t\t\t\tanchor = remove_nodes();\n\n\t\t\t\tset_hydrate_node(anchor);\n\t\t\t\tset_hydrating(false);\n\t\t\t\tmismatch = true;\n\t\t\t}\n\t\t}\n\n\t\t// this is separate to the previous block because `hydrating` might change\n\t\tif (hydrating) {\n\t\t\t/** @type {EachItem | null} */\n\t\t\tvar prev = null;\n\n\t\t\t/** @type {EachItem} */\n\t\t\tvar item;\n\n\t\t\tfor (var i = 0; i < length; i++) {\n\t\t\t\tif (\n\t\t\t\t\thydrate_node.nodeType === 8 &&\n\t\t\t\t\t/** @type {Comment} */ (hydrate_node).data === HYDRATION_END\n\t\t\t\t) {\n\t\t\t\t\t// The server rendered fewer items than expected,\n\t\t\t\t\t// so break out and continue appending non-hydrated items\n\t\t\t\t\tanchor = /** @type {Comment} */ (hydrate_node);\n\t\t\t\t\tmismatch = true;\n\t\t\t\t\tset_hydrating(false);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tvar value = array[i];\n\t\t\t\tvar key = get_key(value, i);\n\t\t\t\titem = create_item(\n\t\t\t\t\thydrate_node,\n\t\t\t\t\tstate,\n\t\t\t\t\tprev,\n\t\t\t\t\tnull,\n\t\t\t\t\tvalue,\n\t\t\t\t\tkey,\n\t\t\t\t\ti,\n\t\t\t\t\trender_fn,\n\t\t\t\t\tflags,\n\t\t\t\t\tget_collection\n\t\t\t\t);\n\t\t\t\tstate.items.set(key, item);\n\n\t\t\t\tprev = item;\n\t\t\t}\n\n\t\t\t// remove excess nodes\n\t\t\tif (length > 0) {\n\t\t\t\tset_hydrate_node(remove_nodes());\n\t\t\t}\n\t\t}\n\n\t\tif (!hydrating) {\n\t\t\treconcile(array, state, anchor, render_fn, flags, get_key, get_collection);\n\t\t}\n\n\t\tif (fallback_fn !== null) {\n\t\t\tif (length === 0) {\n\t\t\t\tif (fallback) {\n\t\t\t\t\tresume_effect(fallback);\n\t\t\t\t} else {\n\t\t\t\t\tfallback = branch(() => fallback_fn(anchor));\n\t\t\t\t}\n\t\t\t} else if (fallback !== null) {\n\t\t\t\tpause_effect(fallback, () => {\n\t\t\t\t\tfallback = null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (mismatch) {\n\t\t\t// continue in hydration mode\n\t\t\tset_hydrating(true);\n\t\t}\n\n\t\t// When we mount the each block for the first time, the collection won't be\n\t\t// connected to this effect as the effect hasn't finished running yet and its deps\n\t\t// won't be assigned. However, it's possible that when reconciling the each block\n\t\t// that a mutation occurred and it's made the collection MAYBE_DIRTY, so reading the\n\t\t// collection again can provide consistency to the reactive graph again as the deriveds\n\t\t// will now be `CLEAN`.\n\t\tget(each_array);\n\t});\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * Add, remove, or reorder items output by an each block as its input changes\n * @template V\n * @param {Array<V>} array\n * @param {EachState} state\n * @param {Element | Comment | Text} anchor\n * @param {(anchor: Node, item: MaybeSource<V>, index: number | Source<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {(value: V, index: number) => any} get_key\n * @param {() => V[]} get_collection\n * @returns {void}\n */\nfunction reconcile(array, state, anchor, render_fn, flags, get_key, get_collection) {\n\tvar is_animated = (flags & EACH_IS_ANIMATED) !== 0;\n\tvar should_update = (flags & (EACH_ITEM_REACTIVE | EACH_INDEX_REACTIVE)) !== 0;\n\n\tvar length = array.length;\n\tvar items = state.items;\n\tvar first = state.first;\n\tvar current = first;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar seen;\n\n\t/** @type {EachItem | null} */\n\tvar prev = null;\n\n\t/** @type {undefined | Set<EachItem>} */\n\tvar to_animate;\n\n\t/** @type {EachItem[]} */\n\tvar matched = [];\n\n\t/** @type {EachItem[]} */\n\tvar stashed = [];\n\n\t/** @type {V} */\n\tvar value;\n\n\t/** @type {any} */\n\tvar key;\n\n\t/** @type {EachItem | undefined} */\n\tvar item;\n\n\t/** @type {number} */\n\tvar i;\n\n\tif (is_animated) {\n\t\tfor (i = 0; i < length; i += 1) {\n\t\t\tvalue = array[i];\n\t\t\tkey = get_key(value, i);\n\t\t\titem = items.get(key);\n\n\t\t\tif (item !== undefined) {\n\t\t\t\titem.a?.measure();\n\t\t\t\t(to_animate ??= new Set()).add(item);\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (i = 0; i < length; i += 1) {\n\t\tvalue = array[i];\n\t\tkey = get_key(value, i);\n\t\titem = items.get(key);\n\n\t\tif (item === undefined) {\n\t\t\tvar child_anchor = current ? /** @type {TemplateNode} */ (current.e.nodes_start) : anchor;\n\n\t\t\tprev = create_item(\n\t\t\t\tchild_anchor,\n\t\t\t\tstate,\n\t\t\t\tprev,\n\t\t\t\tprev === null ? state.first : prev.next,\n\t\t\t\tvalue,\n\t\t\t\tkey,\n\t\t\t\ti,\n\t\t\t\trender_fn,\n\t\t\t\tflags,\n\t\t\t\tget_collection\n\t\t\t);\n\n\t\t\titems.set(key, prev);\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\tcurrent = prev.next;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (should_update) {\n\t\t\tupdate_item(item, value, i, flags);\n\t\t}\n\n\t\tif ((item.e.f & INERT) !== 0) {\n\t\t\tresume_effect(item.e);\n\t\t\tif (is_animated) {\n\t\t\t\titem.a?.unfix();\n\t\t\t\t(to_animate ??= new Set()).delete(item);\n\t\t\t}\n\t\t}\n\n\t\tif (item !== current) {\n\t\t\tif (seen !== undefined && seen.has(item)) {\n\t\t\t\tif (matched.length < stashed.length) {\n\t\t\t\t\t// more efficient to move later items to the front\n\t\t\t\t\tvar start = stashed[0];\n\t\t\t\t\tvar j;\n\n\t\t\t\t\tprev = start.prev;\n\n\t\t\t\t\tvar a = matched[0];\n\t\t\t\t\tvar b = matched[matched.length - 1];\n\n\t\t\t\t\tfor (j = 0; j < matched.length; j += 1) {\n\t\t\t\t\t\tmove(matched[j], start, anchor);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (j = 0; j < stashed.length; j += 1) {\n\t\t\t\t\t\tseen.delete(stashed[j]);\n\t\t\t\t\t}\n\n\t\t\t\t\tlink(state, a.prev, b.next);\n\t\t\t\t\tlink(state, prev, a);\n\t\t\t\t\tlink(state, b, start);\n\n\t\t\t\t\tcurrent = start;\n\t\t\t\t\tprev = b;\n\t\t\t\t\ti -= 1;\n\n\t\t\t\t\tmatched = [];\n\t\t\t\t\tstashed = [];\n\t\t\t\t} else {\n\t\t\t\t\t// more efficient to move earlier items to the back\n\t\t\t\t\tseen.delete(item);\n\t\t\t\t\tmove(item, current, anchor);\n\n\t\t\t\t\tlink(state, item.prev, item.next);\n\t\t\t\t\tlink(state, item, prev === null ? state.first : prev.next);\n\t\t\t\t\tlink(state, prev, item);\n\n\t\t\t\t\tprev = item;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmatched = [];\n\t\t\tstashed = [];\n\n\t\t\twhile (current !== null && current.k !== key) {\n\t\t\t\t// If the each block isn't inert and an item has an effect that is already inert,\n\t\t\t\t// skip over adding it to our seen Set as the item is already being handled\n\t\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\t\t(seen ??= new Set()).add(current);\n\t\t\t\t}\n\t\t\t\tstashed.push(current);\n\t\t\t\tcurrent = current.next;\n\t\t\t}\n\n\t\t\tif (current === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\titem = current;\n\t\t}\n\n\t\tmatched.push(item);\n\t\tprev = item;\n\t\tcurrent = item.next;\n\t}\n\n\tif (current !== null || seen !== undefined) {\n\t\tvar to_destroy = seen === undefined ? [] : array_from(seen);\n\n\t\twhile (current !== null) {\n\t\t\t// If the each block isn't inert, then inert effects are currently outroing and will be removed once the transition is finished\n\t\t\tif ((current.e.f & INERT) === 0) {\n\t\t\t\tto_destroy.push(current);\n\t\t\t}\n\t\t\tcurrent = current.next;\n\t\t}\n\n\t\tvar destroy_length = to_destroy.length;\n\n\t\tif (destroy_length > 0) {\n\t\t\tvar controlled_anchor = (flags & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;\n\n\t\t\tif (is_animated) {\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.measure();\n\t\t\t\t}\n\n\t\t\t\tfor (i = 0; i < destroy_length; i += 1) {\n\t\t\t\t\tto_destroy[i].a?.fix();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tpause_effects(state, to_destroy, controlled_anchor, items);\n\t\t}\n\t}\n\n\tif (is_animated) {\n\t\tqueue_micro_task(() => {\n\t\t\tif (to_animate === undefined) return;\n\t\t\tfor (item of to_animate) {\n\t\t\t\titem.a?.apply();\n\t\t\t}\n\t\t});\n\t}\n\n\t/** @type {Effect} */ (active_effect).first = state.first && state.first.e;\n\t/** @type {Effect} */ (active_effect).last = prev && prev.e;\n}\n\n/**\n * @param {EachItem} item\n * @param {any} value\n * @param {number} index\n * @param {number} type\n * @returns {void}\n */\nfunction update_item(item, value, index, type) {\n\tif ((type & EACH_ITEM_REACTIVE) !== 0) {\n\t\tinternal_set(item.v, value);\n\t}\n\n\tif ((type & EACH_INDEX_REACTIVE) !== 0) {\n\t\tinternal_set(/** @type {Value<number>} */ (item.i), index);\n\t} else {\n\t\titem.i = index;\n\t}\n}\n\n/**\n * @template V\n * @param {Node} anchor\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n * @param {V} value\n * @param {unknown} key\n * @param {number} index\n * @param {(anchor: Node, item: V | Source<V>, index: number | Value<number>, collection: () => V[]) => void} render_fn\n * @param {number} flags\n * @param {() => V[]} get_collection\n * @returns {EachItem}\n */\nfunction create_item(\n\tanchor,\n\tstate,\n\tprev,\n\tnext,\n\tvalue,\n\tkey,\n\tindex,\n\trender_fn,\n\tflags,\n\tget_collection\n) {\n\tvar previous_each_item = current_each_item;\n\tvar reactive = (flags & EACH_ITEM_REACTIVE) !== 0;\n\tvar mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;\n\n\tvar v = reactive ? (mutable ? mutable_source(value) : source(value)) : value;\n\tvar i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);\n\n\tif (DEV && reactive) {\n\t\t// For tracing purposes, we need to link the source signal we create with the\n\t\t// collection + index so that tracing works as intended\n\t\t/** @type {Value} */ (v).debug = () => {\n\t\t\tvar collection_index = typeof i === 'number' ? index : i.v;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-expressions\n\t\t\tget_collection()[collection_index];\n\t\t};\n\t}\n\n\t/** @type {EachItem} */\n\tvar item = {\n\t\ti,\n\t\tv,\n\t\tk: key,\n\t\ta: null,\n\t\t// @ts-expect-error\n\t\te: null,\n\t\tprev,\n\t\tnext\n\t};\n\n\tcurrent_each_item = item;\n\n\ttry {\n\t\titem.e = branch(() => render_fn(anchor, v, i, get_collection), hydrating);\n\n\t\titem.e.prev = prev && prev.e;\n\t\titem.e.next = next && next.e;\n\n\t\tif (prev === null) {\n\t\t\tstate.first = item;\n\t\t} else {\n\t\t\tprev.next = item;\n\t\t\tprev.e.next = item.e;\n\t\t}\n\n\t\tif (next !== null) {\n\t\t\tnext.prev = item;\n\t\t\tnext.e.prev = item.e;\n\t\t}\n\n\t\treturn item;\n\t} finally {\n\t\tcurrent_each_item = previous_each_item;\n\t}\n}\n\n/**\n * @param {EachItem} item\n * @param {EachItem | null} next\n * @param {Text | Element | Comment} anchor\n */\nfunction move(item, next, anchor) {\n\tvar end = item.next ? /** @type {TemplateNode} */ (item.next.e.nodes_start) : anchor;\n\n\tvar dest = next ? /** @type {TemplateNode} */ (next.e.nodes_start) : anchor;\n\tvar node = /** @type {TemplateNode} */ (item.e.nodes_start);\n\n\twhile (node !== end) {\n\t\tvar next_node = /** @type {TemplateNode} */ (get_next_sibling(node));\n\t\tdest.before(node);\n\t\tnode = next_node;\n\t}\n}\n\n/**\n * @param {EachState} state\n * @param {EachItem | null} prev\n * @param {EachItem | null} next\n */\nfunction link(state, prev, next) {\n\tif (prev === null) {\n\t\tstate.first = next;\n\t} else {\n\t\tprev.next = next;\n\t\tprev.e.next = next && next.e;\n\t}\n\n\tif (next !== null) {\n\t\tnext.prev = prev;\n\t\tnext.e.prev = prev && prev.e;\n\t}\n}\n","/** @import { Effect, TemplateNode } from '#client' */\nimport { FILENAME, HYDRATION_ERROR } from '../../../../constants.js';\nimport { block, branch, destroy_effect } from '../../reactivity/effects.js';\nimport { hydrate_next, hydrate_node, hydrating, set_hydrate_node } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport { hash, sanitize_location } from '../../../../utils.js';\nimport { DEV } from 'esm-env';\nimport { dev_current_component_function } from '../../context.js';\nimport { get_first_child, get_next_sibling } from '../operations.js';\n\n/**\n * @param {Element} element\n * @param {string | null} server_hash\n * @param {string} value\n */\nfunction check_hash(element, server_hash, value) {\n\tif (!server_hash || server_hash === hash(String(value ?? ''))) return;\n\n\tlet location;\n\n\t// @ts-expect-error\n\tconst loc = element.__svelte_meta?.loc;\n\tif (loc) {\n\t\tlocation = `near ${loc.file}:${loc.line}:${loc.column}`;\n\t} else if (dev_current_component_function?.[FILENAME]) {\n\t\tlocation = `in ${dev_current_component_function[FILENAME]}`;\n\t}\n\n\tw.hydration_html_changed(sanitize_location(location));\n}\n\n/**\n * @param {Element | Text | Comment} node\n * @param {() => string} get_value\n * @param {boolean} svg\n * @param {boolean} mathml\n * @param {boolean} [skip_warning]\n * @returns {void}\n */\nexport function html(node, get_value, svg, mathml, skip_warning) {\n\tvar anchor = node;\n\n\tvar value = '';\n\n\t/** @type {Effect | undefined} */\n\tvar effect;\n\n\tblock(() => {\n\t\tif (value === (value = get_value() ?? '')) {\n\t\t\tif (hydrating) {\n\t\t\t\thydrate_next();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (effect !== undefined) {\n\t\t\tdestroy_effect(effect);\n\t\t\teffect = undefined;\n\t\t}\n\n\t\tif (value === '') return;\n\n\t\teffect = branch(() => {\n\t\t\tif (hydrating) {\n\t\t\t\t// We're deliberately not trying to repair mismatches between server and client,\n\t\t\t\t// as it's costly and error-prone (and it's an edge case to have a mismatch anyway)\n\t\t\t\tvar hash = /** @type {Comment} */ (hydrate_node).data;\n\t\t\t\tvar next = hydrate_next();\n\t\t\t\tvar last = next;\n\n\t\t\t\twhile (\n\t\t\t\t\tnext !== null &&\n\t\t\t\t\t(next.nodeType !== 8 || /** @type {Comment} */ (next).data !== '')\n\t\t\t\t) {\n\t\t\t\t\tlast = next;\n\t\t\t\t\tnext = /** @type {TemplateNode} */ (get_next_sibling(next));\n\t\t\t\t}\n\n\t\t\t\tif (next === null) {\n\t\t\t\t\tw.hydration_mismatch();\n\t\t\t\t\tthrow HYDRATION_ERROR;\n\t\t\t\t}\n\n\t\t\t\tif (DEV && !skip_warning) {\n\t\t\t\t\tcheck_hash(/** @type {Element} */ (next.parentNode), hash, value);\n\t\t\t\t}\n\n\t\t\t\tassign_nodes(hydrate_node, last);\n\t\t\t\tanchor = set_hydrate_node(next);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar html = value + '';\n\t\t\tif (svg) html = `<svg>${html}</svg>`;\n\t\t\telse if (mathml) html = `<math>${html}</math>`;\n\n\t\t\t// Don't use create_fragment_with_script_from_html here because that would mean script tags are executed.\n\t\t\t// @html is basically `.innerHTML = ...` and that doesn't execute scripts either due to security reasons.\n\t\t\t/** @type {DocumentFragment | Element} */\n\t\t\tvar node = create_fragment_from_html(html);\n\n\t\t\tif (svg || mathml) {\n\t\t\t\tnode = /** @type {Element} */ (get_first_child(node));\n\t\t\t}\n\n\t\t\tassign_nodes(\n\t\t\t\t/** @type {TemplateNode} */ (get_first_child(node)),\n\t\t\t\t/** @type {TemplateNode} */ (node.lastChild)\n\t\t\t);\n\n\t\t\tif (svg || mathml) {\n\t\t\t\twhile (get_first_child(node)) {\n\t\t\t\t\tanchor.before(/** @type {Node} */ (get_first_child(node)));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tanchor.before(node);\n\t\t\t}\n\t\t});\n\t});\n}\n","/** @import { Snippet } from 'svelte' */\n/** @import { Effect, TemplateNode } from '#client' */\n/** @import { Getters } from '#shared' */\nimport { EFFECT_TRANSPARENT } from '../../constants.js';\nimport { branch, block, destroy_effect, teardown } from '../../reactivity/effects.js';\nimport {\n\tdev_current_component_function,\n\tset_dev_current_component_function\n} from '../../context.js';\nimport { hydrate_next, hydrate_node, hydrating } from '../hydration.js';\nimport { create_fragment_from_html } from '../reconciler.js';\nimport { assign_nodes } from '../template.js';\nimport * as w from '../../warnings.js';\nimport * as e from '../../errors.js';\nimport { DEV } from 'esm-env';\nimport { get_first_child, get_next_sibling } from '../operations.js';\nimport { noop } from '../../../shared/utils.js';\n\n/**\n * @template {(node: TemplateNode, ...args: any[]) => void} SnippetFn\n * @param {TemplateNode} node\n * @param {() => SnippetFn | null | undefined} get_snippet\n * @param {(() => any)[]} args\n * @returns {void}\n */\nexport function snippet(node, get_snippet, ...args) {\n\tvar anchor = node;\n\n\t/** @type {SnippetFn | null | undefined} */\n\t// @ts-ignore\n\tvar snippet = noop;\n\n\t/** @type {Effect | null} */\n\tvar snippet_effect;\n\n\tblock(() => {\n\t\tif (snippet === (snippet = get_snippet())) return;\n\n\t\tif (snippet_effect) {\n\t\t\tdestroy_effect(snippet_effect);\n\t\t\tsnippet_effect = null;\n\t\t}\n\n\t\tif (DEV && snippet == null) {\n\t\t\te.invalid_snippet();\n\t\t}\n\n\t\tsnippet_effect = branch(() => /** @type {SnippetFn} */ (snippet)(anchor, ...args));\n\t}, EFFECT_TRANSPARENT);\n\n\tif (hydrating) {\n\t\tanchor = hydrate_node;\n\t}\n}\n\n/**\n * In development, wrap the snippet function so that it passes validation, and so that the\n * correct component context is set for ownership checks\n * @param {any} component\n * @param {(node: TemplateNode, ...args: any[]) => void} fn\n */\nexport function wrap_snippet(component, fn) {\n\treturn (/** @type {TemplateNode} */ node, /** @type {any[]} */ ...args) => {\n\t\tvar previous_component_function = dev_current_component_function;\n\t\tset_dev_current_component_function(component);\n\n\t\ttry {\n\t\t\treturn fn(node, ...args);\n\t\t} finally {\n\t\t\tset_dev_current_component_function(previous_component_function);\n\t\t}\n\t};\n}\n\n/**\n * Create a snippet programmatically\n * @template {unknown[]} Params\n * @param {(...params: Getters<Params>) => {\n *   render: () => string\n *   setup?: (element: Element) => void | (() => void)\n * }} fn\n * @returns {Snippet<Params>}\n */\nexport function createRawSnippet(fn) {\n\t// @ts-expect-error the types are a lie\n\treturn (/** @type {TemplateNode} */ anchor, /** @type {Getters<Params>} */ ...params) => {\n\t\tvar snippet = fn(...params);\n\n\t\t/** @type {Element} */\n\t\tvar element;\n\n\t\tif (hydrating) {\n\t\t\telement = /** @type {Element} */ (hydrate_node);\n\t\t\thydrate_next();\n\t\t} else {\n\t\t\tvar html = snippet.render().trim();\n\t\t\tvar fragment = create_fragment_from_html(html);\n\t\t\telement = /** @type {Element} */ (get_first_child(fragment));\n\n\t\t\tif (DEV && (get_next_sibling(element) !== null || element.nodeType !== 1)) {\n\t\t\t\tw.invalid_raw_snippet_render();\n\t\t\t}\n\n\t\t\tanchor.before(element);\n\t\t}\n\n\t\tconst result = snippet.setup?.(element);\n\t\tassign_nodes(element, element);\n\n\t\tif (typeof result === 'function') {\n\t\t\tteardown(result);\n\t\t}\n\t};\n}\n","/** @import { ActionPayload } from '#client' */\nimport { effect, render_effect } from '../../reactivity/effects.js';\nimport { safe_not_equal } from '../../reactivity/equality.js';\nimport { deep_read_state, untrack } from '../../runtime.js';\n\n/**\n * @template P\n * @param {Element} dom\n * @param {(dom: Element, value?: P) => ActionPayload<P>} action\n * @param {() => P} [get_value]\n * @returns {void}\n */\nexport function action(dom, action, get_value) {\n\teffect(() => {\n\t\tvar payload = untrack(() => action(dom, get_value?.()) || {});\n\n\t\tif (get_value && payload?.update) {\n\t\t\tvar inited = false;\n\t\t\t/** @type {P} */\n\t\t\tvar prev = /** @type {any} */ ({}); // initialize with something so it's never equal on first run\n\n\t\t\trender_effect(() => {\n\t\t\t\tvar value = get_value();\n\n\t\t\t\t// Action's update method is coarse-grained, i.e. when anything in the passed value changes, update.\n\t\t\t\t// This works in legacy mode because of mutable_source being updated as a whole, but when using $state\n\t\t\t\t// together with actions and mutation, it wouldn't notice the change without a deep read.\n\t\t\t\tdeep_read_state(value);\n\n\t\t\t\tif (inited && safe_not_equal(prev, value)) {\n\t\t\t\t\tprev = value;\n\t\t\t\t\t/** @type {Function} */ (payload.update)(value);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tinited = true;\n\t\t}\n\n\t\tif (payload?.destroy) {\n\t\t\treturn () => /** @type {Function} */ (payload.destroy)();\n\t\t}\n\t});\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { escape_html } from '../../escaping.js';\nimport { clsx as _clsx } from 'clsx';\n\n/**\n * `<div translate={false}>` should be rendered as `<div translate=\"no\">` and _not_\n * `<div translate=\"false\">`, which is equivalent to `<div translate=\"yes\">`. There\n * may be other odd cases that need to be added to this list in future\n * @type {Record<string, Map<any, string>>}\n */\nconst replacements = {\n\ttranslate: new Map([\n\t\t[true, 'yes'],\n\t\t[false, 'no']\n\t])\n};\n\n/**\n * @template V\n * @param {string} name\n * @param {V} value\n * @param {boolean} [is_boolean]\n * @returns {string}\n */\nexport function attr(name, value, is_boolean = false) {\n\tif (value == null || (!value && is_boolean) || (value === '' && name === 'class')) return '';\n\tconst normalized = (name in replacements && replacements[name].get(value)) || value;\n\tconst assignment = is_boolean ? '' : `=\"${escape_html(normalized, true)}\"`;\n\treturn ` ${name}${assignment}`;\n}\n\n/**\n * Small wrapper around clsx to preserve Svelte's (weird) handling of falsy values.\n * TODO Svelte 6 revisit this, and likely turn all falsy values into the empty string (what clsx also does)\n * @param  {any} value\n */\nexport function clsx(value) {\n\tif (typeof value === 'object') {\n\t\treturn _clsx(value);\n\t} else {\n\t\treturn value ?? '';\n\t}\n}\n","import { DEV } from 'esm-env';\nimport { hydrating, set_hydrating } from '../hydration.js';\nimport { get_descriptors, get_prototype_of } from '../../../shared/utils.js';\nimport { create_event, delegate } from './events.js';\nimport { add_form_reset_listener, autofocus } from './misc.js';\nimport * as w from '../../warnings.js';\nimport { LOADING_ATTR_SYMBOL } from '../../constants.js';\nimport { queue_idle_task } from '../task.js';\nimport { is_capture_event, is_delegated, normalize_attribute } from '../../../../utils.js';\nimport {\n\tactive_effect,\n\tactive_reaction,\n\tset_active_effect,\n\tset_active_reaction\n} from '../../runtime.js';\nimport { clsx } from '../../../shared/attributes.js';\n\n/**\n * The value/checked attribute in the template actually corresponds to the defaultValue property, so we need\n * to remove it upon hydration to avoid a bug when someone resets the form value.\n * @param {HTMLInputElement} input\n * @returns {void}\n */\nexport function remove_input_defaults(input) {\n\tif (!hydrating) return;\n\n\tvar already_removed = false;\n\n\t// We try and remove the default attributes later, rather than sync during hydration.\n\t// Doing it sync during hydration has a negative impact on performance, but deferring the\n\t// work in an idle task alleviates this greatly. If a form reset event comes in before\n\t// the idle callback, then we ensure the input defaults are cleared just before.\n\tvar remove_defaults = () => {\n\t\tif (already_removed) return;\n\t\talready_removed = true;\n\n\t\t// Remove the attributes but preserve the values\n\t\tif (input.hasAttribute('value')) {\n\t\t\tvar value = input.value;\n\t\t\tset_attribute(input, 'value', null);\n\t\t\tinput.value = value;\n\t\t}\n\n\t\tif (input.hasAttribute('checked')) {\n\t\t\tvar checked = input.checked;\n\t\t\tset_attribute(input, 'checked', null);\n\t\t\tinput.checked = checked;\n\t\t}\n\t};\n\n\t// @ts-expect-error\n\tinput.__on_r = remove_defaults;\n\tqueue_idle_task(remove_defaults);\n\tadd_form_reset_listener();\n}\n\n/**\n * @param {Element} element\n * @param {any} value\n */\nexport function set_value(element, value) {\n\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\n\n\tif (\n\t\tattributes.value ===\n\t\t\t(attributes.value =\n\t\t\t\t// treat null and undefined the same for the initial value\n\t\t\t\tvalue ?? undefined) ||\n\t\t// @ts-expect-error\n\t\t// `progress` elements always need their value set when it's `0`\n\t\t(element.value === value && (value !== 0 || element.nodeName !== 'PROGRESS'))\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.value = value ?? '';\n}\n\n/**\n * @param {Element} element\n * @param {boolean} checked\n */\nexport function set_checked(element, checked) {\n\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\n\n\tif (\n\t\tattributes.checked ===\n\t\t(attributes.checked =\n\t\t\t// treat null and undefined the same for the initial value\n\t\t\tchecked ?? undefined)\n\t) {\n\t\treturn;\n\t}\n\n\t// @ts-expect-error\n\telement.checked = checked;\n}\n\n/**\n * Sets the `selected` attribute on an `option` element.\n * Not set through the property because that doesn't reflect to the DOM,\n * which means it wouldn't be taken into account when a form is reset.\n * @param {HTMLOptionElement} element\n * @param {boolean} selected\n */\nexport function set_selected(element, selected) {\n\tif (selected) {\n\t\t// The selected option could've changed via user selection, and\n\t\t// setting the value without this check would set it back.\n\t\tif (!element.hasAttribute('selected')) {\n\t\t\telement.setAttribute('selected', '');\n\t\t}\n\t} else {\n\t\telement.removeAttribute('selected');\n\t}\n}\n\n/**\n * Applies the default checked property without influencing the current checked property.\n * @param {HTMLInputElement} element\n * @param {boolean} checked\n */\nexport function set_default_checked(element, checked) {\n\tconst existing_value = element.checked;\n\telement.defaultChecked = checked;\n\telement.checked = existing_value;\n}\n\n/**\n * Applies the default value property without influencing the current value property.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * @param {string} value\n */\nexport function set_default_value(element, value) {\n\tconst existing_value = element.value;\n\telement.defaultValue = value;\n\telement.value = existing_value;\n}\n\n/**\n * @param {Element} element\n * @param {string} attribute\n * @param {string | null} value\n * @param {boolean} [skip_warning]\n */\nexport function set_attribute(element, attribute, value, skip_warning) {\n\t// @ts-expect-error\n\tvar attributes = (element.__attributes ??= {});\n\n\tif (hydrating) {\n\t\tattributes[attribute] = element.getAttribute(attribute);\n\n\t\tif (\n\t\t\tattribute === 'src' ||\n\t\t\tattribute === 'srcset' ||\n\t\t\t(attribute === 'href' && element.nodeName === 'LINK')\n\t\t) {\n\t\t\tif (!skip_warning) {\n\t\t\t\tcheck_src_in_dev_hydration(element, attribute, value ?? '');\n\t\t\t}\n\n\t\t\t// If we reset these attributes, they would result in another network request, which we want to avoid.\n\t\t\t// We assume they are the same between client and server as checking if they are equal is expensive\n\t\t\t// (we can't just compare the strings as they can be different between client and server but result in the\n\t\t\t// same url, so we would need to create hidden anchor elements to compare them)\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (attributes[attribute] === (attributes[attribute] = value)) return;\n\n\tif (attribute === 'style' && '__styles' in element) {\n\t\t// reset styles to force style: directive to update\n\t\telement.__styles = {};\n\t}\n\n\tif (attribute === 'loading') {\n\t\t// @ts-expect-error\n\t\telement[LOADING_ATTR_SYMBOL] = value;\n\t}\n\n\tif (value == null) {\n\t\telement.removeAttribute(attribute);\n\t} else if (typeof value !== 'string' && get_setters(element).includes(attribute)) {\n\t\t// @ts-ignore\n\t\telement[attribute] = value;\n\t} else {\n\t\telement.setAttribute(attribute, value);\n\t}\n}\n\n/**\n * @param {Element} dom\n * @param {string} attribute\n * @param {string} value\n */\nexport function set_xlink_attribute(dom, attribute, value) {\n\tdom.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\n\n/**\n * @param {HTMLElement} node\n * @param {string} prop\n * @param {any} value\n */\nexport function set_custom_element_data(node, prop, value) {\n\t// We need to ensure that setting custom element props, which can\n\t// invoke lifecycle methods on other custom elements, does not also\n\t// associate those lifecycle methods with the current active reaction\n\t// or effect\n\tvar previous_reaction = active_reaction;\n\tvar previous_effect = active_effect;\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet was_hydrating = hydrating;\n\tif (hydrating) {\n\t\tset_hydrating(false);\n\t}\n\n\tset_active_reaction(null);\n\tset_active_effect(null);\n\ttry {\n\t\tif (\n\t\t\t// Don't compute setters for custom elements while they aren't registered yet,\n\t\t\t// because during their upgrade/instantiation they might add more setters.\n\t\t\t// Instead, fall back to a simple \"an object, then set as property\" heuristic.\n\t\t\tsetters_cache.has(node.nodeName) ||\n\t\t\t// customElements may not be available in browser extension contexts\n\t\t\t!customElements ||\n\t\t\tcustomElements.get(node.tagName.toLowerCase())\n\t\t\t\t? get_setters(node).includes(prop)\n\t\t\t\t: value && typeof value === 'object'\n\t\t) {\n\t\t\t// @ts-expect-error\n\t\t\tnode[prop] = value;\n\t\t} else {\n\t\t\t// We did getters etc checks already, stringify before passing to set_attribute\n\t\t\t// to ensure it doesn't invoke the same logic again, and potentially populating\n\t\t\t// the setters cache too early.\n\t\t\tset_attribute(node, prop, value == null ? value : String(value));\n\t\t}\n\t} finally {\n\t\tset_active_reaction(previous_reaction);\n\t\tset_active_effect(previous_effect);\n\t\tif (was_hydrating) {\n\t\t\tset_hydrating(true);\n\t\t}\n\t}\n}\n\n/**\n * Spreads attributes onto a DOM element, taking into account the currently set attributes\n * @param {Element & ElementCSSInlineStyle} element\n * @param {Record<string, any> | undefined} prev\n * @param {Record<string, any>} next New attributes - this function mutates this object\n * @param {string} [css_hash]\n * @param {boolean} [preserve_attribute_case]\n * @param {boolean} [is_custom_element]\n * @param {boolean} [skip_warning]\n * @returns {Record<string, any>}\n */\nexport function set_attributes(\n\telement,\n\tprev,\n\tnext,\n\tcss_hash,\n\tpreserve_attribute_case = false,\n\tis_custom_element = false,\n\tskip_warning = false\n) {\n\t// If we're hydrating but the custom element is from Svelte, and it already scaffolded,\n\t// then it might run block logic in hydration mode, which we have to prevent.\n\tlet is_hydrating_custom_element = hydrating && is_custom_element;\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(false);\n\t}\n\n\tvar current = prev || {};\n\tvar is_option_element = element.tagName === 'OPTION';\n\n\tfor (var key in prev) {\n\t\tif (!(key in next)) {\n\t\t\tnext[key] = null;\n\t\t}\n\t}\n\n\tif (next.class) {\n\t\tnext.class = clsx(next.class);\n\t}\n\n\tif (css_hash !== undefined) {\n\t\tnext.class = next.class ? next.class + ' ' + css_hash : css_hash;\n\t}\n\n\tvar setters = get_setters(element);\n\n\t// @ts-expect-error\n\tvar attributes = /** @type {Record<string, unknown>} **/ (element.__attributes ??= {});\n\n\t// since key is captured we use const\n\tfor (const key in next) {\n\t\t// let instead of var because referenced in a closure\n\t\tlet value = next[key];\n\n\t\t// Up here because we want to do this for the initial value, too, even if it's undefined,\n\t\t// and this wouldn't be reached in case of undefined because of the equality check below\n\t\tif (is_option_element && key === 'value' && value == null) {\n\t\t\t// The <option> element is a special case because removing the value attribute means\n\t\t\t// the value is set to the text content of the option element, and setting the value\n\t\t\t// to null or undefined means the value is set to the string \"null\" or \"undefined\".\n\t\t\t// To align with how we handle this case in non-spread-scenarios, this logic is needed.\n\t\t\t// There's a super-edge-case bug here that is left in in favor of smaller code size:\n\t\t\t// Because of the \"set missing props to null\" logic above, we can't differentiate\n\t\t\t// between a missing value and an explicitly set value of null or undefined. That means\n\t\t\t// that once set, the value attribute of an <option> element can't be removed. This is\n\t\t\t// a very rare edge case, and removing the attribute altogether isn't possible either\n\t\t\t// for the <option value={undefined}> case, so we're not losing any functionality here.\n\t\t\t// @ts-ignore\n\t\t\telement.value = element.__value = '';\n\t\t\tcurrent[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar prev_value = current[key];\n\t\tif (value === prev_value) continue;\n\n\t\tcurrent[key] = value;\n\n\t\tvar prefix = key[0] + key[1]; // this is faster than key.slice(0, 2)\n\t\tif (prefix === '$$') continue;\n\n\t\tif (prefix === 'on') {\n\t\t\t/** @type {{ capture?: true }} */\n\t\t\tconst opts = {};\n\t\t\tconst event_handle_key = '$$' + key;\n\t\t\tlet event_name = key.slice(2);\n\t\t\tvar delegated = is_delegated(event_name);\n\n\t\t\tif (is_capture_event(event_name)) {\n\t\t\t\tevent_name = event_name.slice(0, -7);\n\t\t\t\topts.capture = true;\n\t\t\t}\n\n\t\t\tif (!delegated && prev_value) {\n\t\t\t\t// Listening to same event but different handler -> our handle function below takes care of this\n\t\t\t\t// If we were to remove and add listeners in this case, it could happen that the event is \"swallowed\"\n\t\t\t\t// (the browser seems to not know yet that a new one exists now) and doesn't reach the handler\n\t\t\t\t// https://github.com/sveltejs/svelte/issues/11903\n\t\t\t\tif (value != null) continue;\n\n\t\t\t\telement.removeEventListener(event_name, current[event_handle_key], opts);\n\t\t\t\tcurrent[event_handle_key] = null;\n\t\t\t}\n\n\t\t\tif (value != null) {\n\t\t\t\tif (!delegated) {\n\t\t\t\t\t/**\n\t\t\t\t\t * @this {any}\n\t\t\t\t\t * @param {Event} evt\n\t\t\t\t\t */\n\t\t\t\t\tfunction handle(evt) {\n\t\t\t\t\t\tcurrent[key].call(this, evt);\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrent[event_handle_key] = create_event(event_name, element, handle, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\telement[`__${event_name}`] = value;\n\t\t\t\t\tdelegate([event_name]);\n\t\t\t\t}\n\t\t\t} else if (delegated) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[`__${event_name}`] = undefined;\n\t\t\t}\n\t\t} else if (key === 'style' && value != null) {\n\t\t\telement.style.cssText = value + '';\n\t\t} else if (key === 'autofocus') {\n\t\t\tautofocus(/** @type {HTMLElement} */ (element), Boolean(value));\n\t\t} else if (!is_custom_element && (key === '__value' || (key === 'value' && value != null))) {\n\t\t\t// @ts-ignore We're not running this for custom elements because __value is actually\n\t\t\t// how Lit stores the current value on the element, and messing with that would break things.\n\t\t\telement.value = element.__value = value;\n\t\t} else if (key === 'selected' && is_option_element) {\n\t\t\tset_selected(/** @type {HTMLOptionElement} */ (element), value);\n\t\t} else {\n\t\t\tvar name = key;\n\t\t\tif (!preserve_attribute_case) {\n\t\t\t\tname = normalize_attribute(name);\n\t\t\t}\n\n\t\t\tvar is_default = name === 'defaultValue' || name === 'defaultChecked';\n\n\t\t\tif (value == null && !is_custom_element && !is_default) {\n\t\t\t\tattributes[key] = null;\n\n\t\t\t\tif (name === 'value' || name === 'checked') {\n\t\t\t\t\t// removing value/checked also removes defaultValue/defaultChecked — preserve\n\t\t\t\t\tlet input = /** @type {HTMLInputElement} */ (element);\n\t\t\t\t\tconst use_default = prev === undefined;\n\t\t\t\t\tif (name === 'value') {\n\t\t\t\t\t\tlet previous = input.defaultValue;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultValue = previous;\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tinput.value = input.__value = use_default ? previous : null;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet previous = input.defaultChecked;\n\t\t\t\t\t\tinput.removeAttribute(name);\n\t\t\t\t\t\tinput.defaultChecked = previous;\n\t\t\t\t\t\tinput.checked = use_default ? previous : false;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\telement.removeAttribute(key);\n\t\t\t\t}\n\t\t\t} else if (\n\t\t\t\tis_default ||\n\t\t\t\t(setters.includes(name) && (is_custom_element || typeof value !== 'string'))\n\t\t\t) {\n\t\t\t\t// @ts-ignore\n\t\t\t\telement[name] = value;\n\t\t\t} else if (typeof value !== 'function') {\n\t\t\t\tset_attribute(element, name, value);\n\t\t\t}\n\t\t}\n\t\tif (key === 'style' && '__styles' in element) {\n\t\t\t// reset styles to force style: directive to update\n\t\t\telement.__styles = {};\n\t\t}\n\t}\n\n\tif (is_hydrating_custom_element) {\n\t\tset_hydrating(true);\n\t}\n\n\treturn current;\n}\n\n/** @type {Map<string, string[]>} */\nvar setters_cache = new Map();\n\n/** @param {Element} element */\nfunction get_setters(element) {\n\tvar setters = setters_cache.get(element.nodeName);\n\tif (setters) return setters;\n\tsetters_cache.set(element.nodeName, (setters = []));\n\n\tvar descriptors;\n\tvar proto = element; // In the case of custom elements there might be setters on the instance\n\tvar element_proto = Element.prototype;\n\n\t// Stop at Element, from there on there's only unnecessary setters we're not interested in\n\t// Do not use contructor.name here as that's unreliable in some browser environments\n\twhile (element_proto !== proto) {\n\t\tdescriptors = get_descriptors(proto);\n\n\t\tfor (var key in descriptors) {\n\t\t\tif (descriptors[key].set) {\n\t\t\t\tsetters.push(key);\n\t\t\t}\n\t\t}\n\n\t\tproto = get_prototype_of(proto);\n\t}\n\n\treturn setters;\n}\n\n/**\n * @param {any} element\n * @param {string} attribute\n * @param {string} value\n */\nfunction check_src_in_dev_hydration(element, attribute, value) {\n\tif (!DEV) return;\n\tif (attribute === 'srcset' && srcset_url_equal(element, value)) return;\n\tif (src_url_equal(element.getAttribute(attribute) ?? '', value)) return;\n\n\tw.hydration_attribute_changed(\n\t\tattribute,\n\t\telement.outerHTML.replace(element.innerHTML, element.innerHTML && '...'),\n\t\tString(value)\n\t);\n}\n\n/**\n * @param {string} element_src\n * @param {string} url\n * @returns {boolean}\n */\nfunction src_url_equal(element_src, url) {\n\tif (element_src === url) return true;\n\treturn new URL(element_src, document.baseURI).href === new URL(url, document.baseURI).href;\n}\n\n/** @param {string} srcset */\nfunction split_srcset(srcset) {\n\treturn srcset.split(',').map((src) => src.trim().split(' ').filter(Boolean));\n}\n\n/**\n * @param {HTMLSourceElement | HTMLImageElement} element\n * @param {string} srcset\n * @returns {boolean}\n */\nfunction srcset_url_equal(element, srcset) {\n\tvar element_urls = split_srcset(element.srcset);\n\tvar urls = split_srcset(srcset);\n\n\treturn (\n\t\turls.length === element_urls.length &&\n\t\turls.every(\n\t\t\t([url, width], i) =>\n\t\t\t\twidth === element_urls[i][1] &&\n\t\t\t\t// We need to test both ways because Vite will create an a full URL with\n\t\t\t\t// `new URL(asset, import.meta.url).href` for the client when `base: './'`, and the\n\t\t\t\t// relative URLs inside srcset are not automatically resolved to absolute URLs by\n\t\t\t\t// browsers (in contrast to img.src). This means both SSR and DOM code could\n\t\t\t\t// contain relative or absolute URLs.\n\t\t\t\t(src_url_equal(element_urls[i][0], url) || src_url_equal(url, element_urls[i][0]))\n\t\t)\n\t);\n}\n","import { hydrating } from '../hydration.js';\n\n/**\n * @param {SVGElement} dom\n * @param {string} value\n * @param {string} [hash]\n * @returns {void}\n */\nexport function set_svg_class(dom, value, hash) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev_class_name = dom.__className;\n\tvar next_class_name = to_class(value, hash);\n\n\tif (hydrating && dom.getAttribute('class') === next_class_name) {\n\t\t// In case of hydration don't reset the class as it's already correct.\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t} else if (\n\t\tprev_class_name !== next_class_name ||\n\t\t(hydrating && dom.getAttribute('class') !== next_class_name)\n\t) {\n\t\tif (next_class_name === '') {\n\t\t\tdom.removeAttribute('class');\n\t\t} else {\n\t\t\tdom.setAttribute('class', next_class_name);\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t}\n}\n\n/**\n * @param {MathMLElement} dom\n * @param {string} value\n * @param {string} [hash]\n * @returns {void}\n */\nexport function set_mathml_class(dom, value, hash) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev_class_name = dom.__className;\n\tvar next_class_name = to_class(value, hash);\n\n\tif (hydrating && dom.getAttribute('class') === next_class_name) {\n\t\t// In case of hydration don't reset the class as it's already correct.\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t} else if (\n\t\tprev_class_name !== next_class_name ||\n\t\t(hydrating && dom.getAttribute('class') !== next_class_name)\n\t) {\n\t\tif (next_class_name === '') {\n\t\t\tdom.removeAttribute('class');\n\t\t} else {\n\t\t\tdom.setAttribute('class', next_class_name);\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t}\n}\n\n/**\n * @param {HTMLElement} dom\n * @param {string} value\n * @param {string} [hash]\n * @returns {void}\n */\nexport function set_class(dom, value, hash) {\n\t// @ts-expect-error need to add __className to patched prototype\n\tvar prev_class_name = dom.__className;\n\tvar next_class_name = to_class(value, hash);\n\n\tif (hydrating && dom.className === next_class_name) {\n\t\t// In case of hydration don't reset the class as it's already correct.\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t} else if (\n\t\tprev_class_name !== next_class_name ||\n\t\t(hydrating && dom.className !== next_class_name)\n\t) {\n\t\t// Removing the attribute when the value is only an empty string causes\n\t\t// peformance issues vs simply making the className an empty string. So\n\t\t// we should only remove the class if the the value is nullish.\n\t\tif (value == null && !hash) {\n\t\t\tdom.removeAttribute('class');\n\t\t} else {\n\t\t\tdom.className = next_class_name;\n\t\t}\n\n\t\t// @ts-expect-error need to add __className to patched prototype\n\t\tdom.__className = next_class_name;\n\t}\n}\n\n/**\n * @template V\n * @param {V} value\n * @param {string} [hash]\n * @returns {string | V}\n */\nfunction to_class(value, hash) {\n\treturn (value == null ? '' : value) + (hash ? ' ' + hash : '');\n}\n\n/**\n * @param {Element} dom\n * @param {string} class_name\n * @param {boolean} value\n * @returns {void}\n */\nexport function toggle_class(dom, class_name, value) {\n\tif (value) {\n\t\tif (dom.classList.contains(class_name)) return;\n\t\tdom.classList.add(class_name);\n\t} else {\n\t\tif (!dom.classList.contains(class_name)) return;\n\t\tdom.classList.remove(class_name);\n\t}\n}\n","import { DEV } from 'esm-env';\nimport { render_effect, teardown } from '../../../reactivity/effects.js';\nimport { listen_to_event_and_reset_event } from './shared.js';\nimport * as e from '../../../errors.js';\nimport { is } from '../../../proxy.js';\nimport { queue_micro_task } from '../../task.js';\nimport { hydrating } from '../../hydration.js';\nimport { untrack } from '../../../runtime.js';\nimport { is_runes } from '../../../context.js';\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_value(input, get, set = get) {\n\tvar runes = is_runes();\n\n\tlisten_to_event_and_reset_event(input, 'input', (is_reset) => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\t/** @type {any} */\n\t\tvar value = is_reset ? input.defaultValue : input.value;\n\t\tvalue = is_numberlike_input(input) ? to_number(value) : value;\n\t\tset(value);\n\n\t\t// In runes mode, respect any validation in accessors (doesn't apply in legacy mode,\n\t\t// because we use mutable state which ensures the render effect always runs)\n\t\tif (runes && value !== (value = get())) {\n\t\t\tvar start = input.selectionStart;\n\t\t\tvar end = input.selectionEnd;\n\n\t\t\t// the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\n\t\t\t// Restore selection\n\t\t\tif (end !== null) {\n\t\t\t\tinput.selectionStart = start;\n\t\t\t\tinput.selectionEnd = Math.min(end, input.value.length);\n\t\t\t}\n\t\t}\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\t(hydrating && input.defaultValue !== input.value) ||\n\t\t// If defaultValue is set, then value == defaultValue\n\t\t// TODO Svelte 6: remove input.value check and set to empty string?\n\t\t(untrack(get) == null && input.value)\n\t) {\n\t\tset(is_numberlike_input(input) ? to_number(input.value) : input.value);\n\t}\n\n\trender_effect(() => {\n\t\tif (DEV && input.type === 'checkbox') {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.bind_invalid_checkbox_value();\n\t\t}\n\n\t\tvar value = get();\n\n\t\tif (is_numberlike_input(input) && value === to_number(input.value)) {\n\t\t\t// handles 0 vs 00 case (see https://github.com/sveltejs/svelte/issues/9959)\n\t\t\treturn;\n\t\t}\n\n\t\tif (input.type === 'date' && !value && !input.value) {\n\t\t\t// Handles the case where a temporarily invalid date is set (while typing, for example with a leading 0 for the day)\n\t\t\t// and prevents this state from clearing the other parts of the date input (see https://github.com/sveltejs/svelte/issues/7897)\n\t\t\treturn;\n\t\t}\n\n\t\t// don't set the value of the input if it's the same to allow\n\t\t// minlength to work properly\n\t\tif (value !== input.value) {\n\t\t\t// @ts-expect-error the value is coerced on assignment\n\t\t\tinput.value = value ?? '';\n\t\t}\n\t});\n}\n\n/** @type {Set<HTMLInputElement[]>} */\nconst pending = new Set();\n\n/**\n * @param {HTMLInputElement[]} inputs\n * @param {null | [number]} group_index\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_group(inputs, group_index, input, get, set = get) {\n\tvar is_checkbox = input.getAttribute('type') === 'checkbox';\n\tvar binding_group = inputs;\n\n\t// needs to be let or related code isn't treeshaken out if it's always false\n\tlet hydration_mismatch = false;\n\n\tif (group_index !== null) {\n\t\tfor (var index of group_index) {\n\t\t\t// @ts-expect-error\n\t\t\tbinding_group = binding_group[index] ??= [];\n\t\t}\n\t}\n\n\tbinding_group.push(input);\n\n\tlisten_to_event_and_reset_event(\n\t\tinput,\n\t\t'change',\n\t\t() => {\n\t\t\t// @ts-ignore\n\t\t\tvar value = input.__value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t}\n\n\t\t\tset(value);\n\t\t},\n\t\t// TODO better default value handling\n\t\t() => set(is_checkbox ? [] : null)\n\t);\n\n\trender_effect(() => {\n\t\tvar value = get();\n\n\t\t// If we are hydrating and the value has since changed, then use the update value\n\t\t// from the input instead.\n\t\tif (hydrating && input.defaultChecked !== input.checked) {\n\t\t\thydration_mismatch = true;\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_checkbox) {\n\t\t\tvalue = value || [];\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = value.includes(input.__value);\n\t\t} else {\n\t\t\t// @ts-ignore\n\t\t\tinput.checked = is(input.__value, value);\n\t\t}\n\t});\n\n\tteardown(() => {\n\t\tvar index = binding_group.indexOf(input);\n\n\t\tif (index !== -1) {\n\t\t\tbinding_group.splice(index, 1);\n\t\t}\n\t});\n\n\tif (!pending.has(binding_group)) {\n\t\tpending.add(binding_group);\n\n\t\tqueue_micro_task(() => {\n\t\t\t// necessary to maintain binding group order in all insertion scenarios\n\t\t\tbinding_group.sort((a, b) => (a.compareDocumentPosition(b) === 4 ? -1 : 1));\n\t\t\tpending.delete(binding_group);\n\t\t});\n\t}\n\n\tqueue_micro_task(() => {\n\t\tif (hydration_mismatch) {\n\t\t\tvar value;\n\n\t\t\tif (is_checkbox) {\n\t\t\t\tvalue = get_binding_group_value(binding_group, value, input.checked);\n\t\t\t} else {\n\t\t\t\tvar hydration_input = binding_group.find((input) => input.checked);\n\t\t\t\t// @ts-ignore\n\t\t\t\tvalue = hydration_input?.__value;\n\t\t\t}\n\n\t\t\tset(value);\n\t\t}\n\t});\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => unknown} get\n * @param {(value: unknown) => void} set\n * @returns {void}\n */\nexport function bind_checked(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', (is_reset) => {\n\t\tvar value = is_reset ? input.defaultChecked : input.checked;\n\t\tset(value);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the update value from the input instead.\n\t\t(hydrating && input.defaultChecked !== input.checked) ||\n\t\t// If defaultChecked is set, then checked == defaultChecked\n\t\tuntrack(get) == null\n\t) {\n\t\tset(input.checked);\n\t}\n\n\trender_effect(() => {\n\t\tvar value = get();\n\t\tinput.checked = Boolean(value);\n\t});\n}\n\n/**\n * @template V\n * @param {Array<HTMLInputElement>} group\n * @param {V} __value\n * @param {boolean} checked\n * @returns {V[]}\n */\nfunction get_binding_group_value(group, __value, checked) {\n\tvar value = new Set();\n\n\tfor (var i = 0; i < group.length; i += 1) {\n\t\tif (group[i].checked) {\n\t\t\t// @ts-ignore\n\t\t\tvalue.add(group[i].__value);\n\t\t}\n\t}\n\n\tif (!checked) {\n\t\tvalue.delete(__value);\n\t}\n\n\treturn Array.from(value);\n}\n\n/**\n * @param {HTMLInputElement} input\n */\nfunction is_numberlike_input(input) {\n\tvar type = input.type;\n\treturn type === 'number' || type === 'range';\n}\n\n/**\n * @param {string} value\n */\nfunction to_number(value) {\n\treturn value === '' ? null : +value;\n}\n\n/**\n * @param {HTMLInputElement} input\n * @param {() => FileList | null} get\n * @param {(value: FileList | null) => void} set\n */\nexport function bind_files(input, get, set = get) {\n\tlisten_to_event_and_reset_event(input, 'change', () => {\n\t\tset(input.files);\n\t});\n\n\tif (\n\t\t// If we are hydrating and the value has since changed,\n\t\t// then use the updated value from the input instead.\n\t\thydrating &&\n\t\tinput.files\n\t) {\n\t\tset(input.files);\n\t}\n\n\trender_effect(() => {\n\t\tinput.files = get();\n\t});\n}\n","import { STATE_SYMBOL } from '../../../constants.js';\nimport { effect, render_effect } from '../../../reactivity/effects.js';\nimport { untrack } from '../../../runtime.js';\nimport { queue_micro_task } from '../../task.js';\n\n/**\n * @param {any} bound_value\n * @param {Element} element_or_component\n * @returns {boolean}\n */\nfunction is_bound_this(bound_value, element_or_component) {\n\treturn (\n\t\tbound_value === element_or_component || bound_value?.[STATE_SYMBOL] === element_or_component\n\t);\n}\n\n/**\n * @param {any} element_or_component\n * @param {(value: unknown, ...parts: unknown[]) => void} update\n * @param {(...parts: unknown[]) => unknown} get_value\n * @param {() => unknown[]} [get_parts] Set if the this binding is used inside an each block,\n * \t\t\t\t\t\t\t\t\t\treturns all the parts of the each block context that are used in the expression\n * @returns {void}\n */\nexport function bind_this(element_or_component = {}, update, get_value, get_parts) {\n\teffect(() => {\n\t\t/** @type {unknown[]} */\n\t\tvar old_parts;\n\n\t\t/** @type {unknown[]} */\n\t\tvar parts;\n\n\t\trender_effect(() => {\n\t\t\told_parts = parts;\n\t\t\t// We only track changes to the parts, not the value itself to avoid unnecessary reruns.\n\t\t\tparts = get_parts?.() || [];\n\n\t\t\tuntrack(() => {\n\t\t\t\tif (element_or_component !== get_value(...parts)) {\n\t\t\t\t\tupdate(element_or_component, ...parts);\n\t\t\t\t\t// If this is an effect rerun (cause: each block context changes), then nullfiy the binding at\n\t\t\t\t\t// the previous position if it isn't already taken over by a different effect.\n\t\t\t\t\tif (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {\n\t\t\t\t\t\tupdate(null, ...old_parts);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn () => {\n\t\t\t// We cannot use effects in the teardown phase, we we use a microtask instead.\n\t\t\tqueue_micro_task(() => {\n\t\t\t\tif (parts && is_bound_this(get_value(...parts), element_or_component)) {\n\t\t\t\t\tupdate(null, ...parts);\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\t});\n\n\treturn element_or_component;\n}\n","/** @import { Readable } from './public' */\nimport { untrack } from '../index-client.js';\nimport { noop } from '../internal/shared/utils.js';\n\n/**\n * @template T\n * @param {Readable<T> | null | undefined} store\n * @param {(value: T) => void} run\n * @param {(value: T) => void} [invalidate]\n * @returns {() => void}\n */\nexport function subscribe_to_store(store, run, invalidate) {\n\tif (store == null) {\n\t\t// @ts-expect-error\n\t\trun(undefined);\n\n\t\t// @ts-expect-error\n\t\tif (invalidate) invalidate(undefined);\n\n\t\treturn noop;\n\t}\n\n\t// Svelte store takes a private second argument\n\t// StartStopNotifier could mutate state, and we want to silence the corresponding validation error\n\tconst unsub = untrack(() =>\n\t\tstore.subscribe(\n\t\t\trun,\n\t\t\t// @ts-expect-error\n\t\t\tinvalidate\n\t\t)\n\t);\n\n\t// Also support RxJS\n\t// @ts-expect-error TODO fix this in the types?\n\treturn unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\n","/** @import { Readable, StartStopNotifier, Subscriber, Unsubscriber, Updater, Writable } from '../public.js' */\n/** @import { Stores, StoresValues, SubscribeInvalidateTuple } from '../private.js' */\nimport { noop, run_all } from '../../internal/shared/utils.js';\nimport { safe_not_equal } from '../../internal/client/reactivity/equality.js';\nimport { subscribe_to_store } from '../utils.js';\n\n/**\n * @type {Array<SubscribeInvalidateTuple<any> | any>}\n */\nconst subscriber_queue = [];\n\n/**\n * Creates a `Readable` store that allows reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Readable<T>}\n */\nexport function readable(value, start) {\n\treturn {\n\t\tsubscribe: writable(value, start).subscribe\n\t};\n}\n\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n *\n * @template T\n * @param {T} [value] initial value\n * @param {StartStopNotifier<T>} [start]\n * @returns {Writable<T>}\n */\nexport function writable(value, start = noop) {\n\t/** @type {Unsubscriber | null} */\n\tlet stop = null;\n\n\t/** @type {Set<SubscribeInvalidateTuple<T>>} */\n\tconst subscribers = new Set();\n\n\t/**\n\t * @param {T} new_value\n\t * @returns {void}\n\t */\n\tfunction set(new_value) {\n\t\tif (safe_not_equal(value, new_value)) {\n\t\t\tvalue = new_value;\n\t\t\tif (stop) {\n\t\t\t\t// store is ready\n\t\t\t\tconst run_queue = !subscriber_queue.length;\n\t\t\t\tfor (const subscriber of subscribers) {\n\t\t\t\t\tsubscriber[1]();\n\t\t\t\t\tsubscriber_queue.push(subscriber, value);\n\t\t\t\t}\n\t\t\t\tif (run_queue) {\n\t\t\t\t\tfor (let i = 0; i < subscriber_queue.length; i += 2) {\n\t\t\t\t\t\tsubscriber_queue[i][0](subscriber_queue[i + 1]);\n\t\t\t\t\t}\n\t\t\t\t\tsubscriber_queue.length = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @param {Updater<T>} fn\n\t * @returns {void}\n\t */\n\tfunction update(fn) {\n\t\tset(fn(/** @type {T} */ (value)));\n\t}\n\n\t/**\n\t * @param {Subscriber<T>} run\n\t * @param {() => void} [invalidate]\n\t * @returns {Unsubscriber}\n\t */\n\tfunction subscribe(run, invalidate = noop) {\n\t\t/** @type {SubscribeInvalidateTuple<T>} */\n\t\tconst subscriber = [run, invalidate];\n\t\tsubscribers.add(subscriber);\n\t\tif (subscribers.size === 1) {\n\t\t\tstop = start(set, update) || noop;\n\t\t}\n\t\trun(/** @type {T} */ (value));\n\t\treturn () => {\n\t\t\tsubscribers.delete(subscriber);\n\t\t\tif (subscribers.size === 0 && stop) {\n\t\t\t\tstop();\n\t\t\t\tstop = null;\n\t\t\t}\n\t\t};\n\t}\n\treturn { set, update, subscribe };\n}\n\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>, set: (value: T) => void, update: (fn: Updater<T>) => void) => Unsubscriber | void} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n *\n * @template {Stores} S\n * @template T\n * @overload\n * @param {S} stores\n * @param {(values: StoresValues<S>) => T} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\n/**\n * @template {Stores} S\n * @template T\n * @param {S} stores\n * @param {Function} fn\n * @param {T} [initial_value]\n * @returns {Readable<T>}\n */\nexport function derived(stores, fn, initial_value) {\n\tconst single = !Array.isArray(stores);\n\t/** @type {Array<Readable<any>>} */\n\tconst stores_array = single ? [stores] : stores;\n\tif (!stores_array.every(Boolean)) {\n\t\tthrow new Error('derived() expects stores as input, got a falsy value');\n\t}\n\tconst auto = fn.length < 2;\n\treturn readable(initial_value, (set, update) => {\n\t\tlet started = false;\n\t\t/** @type {T[]} */\n\t\tconst values = [];\n\t\tlet pending = 0;\n\t\tlet cleanup = noop;\n\t\tconst sync = () => {\n\t\t\tif (pending) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcleanup();\n\t\t\tconst result = fn(single ? values[0] : values, set, update);\n\t\t\tif (auto) {\n\t\t\t\tset(result);\n\t\t\t} else {\n\t\t\t\tcleanup = typeof result === 'function' ? result : noop;\n\t\t\t}\n\t\t};\n\t\tconst unsubscribers = stores_array.map((store, i) =>\n\t\t\tsubscribe_to_store(\n\t\t\t\tstore,\n\t\t\t\t(value) => {\n\t\t\t\t\tvalues[i] = value;\n\t\t\t\t\tpending &= ~(1 << i);\n\t\t\t\t\tif (started) {\n\t\t\t\t\t\tsync();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tpending |= 1 << i;\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\t\tstarted = true;\n\t\tsync();\n\t\treturn function stop() {\n\t\t\trun_all(unsubscribers);\n\t\t\tcleanup();\n\t\t\t// We need to set this to false because callbacks can still happen despite having unsubscribed:\n\t\t\t// Callbacks might already be placed in the queue which doesn't know it should no longer\n\t\t\t// invoke this derived store.\n\t\t\tstarted = false;\n\t\t};\n\t});\n}\n\n/**\n * Takes a store and returns a new one derived from the old one that is readable.\n *\n * @template T\n * @param {Readable<T>} store  - store to make readonly\n * @returns {Readable<T>}\n */\nexport function readonly(store) {\n\treturn {\n\t\t// @ts-expect-error TODO i suspect the bind is unnecessary\n\t\tsubscribe: store.subscribe.bind(store)\n\t};\n}\n\n/**\n * Get the current value from a store by subscribing and immediately unsubscribing.\n *\n * @template T\n * @param {Readable<T>} store\n * @returns {T}\n */\nexport function get(store) {\n\tlet value;\n\tsubscribe_to_store(store, (_) => (value = _))();\n\t// @ts-expect-error\n\treturn value;\n}\n","/** @import { Source } from './types.js' */\nimport { DEV } from 'esm-env';\nimport {\n\tPROPS_IS_BINDABLE,\n\tPROPS_IS_IMMUTABLE,\n\tPROPS_IS_LAZY_INITIAL,\n\tPROPS_IS_RUNES,\n\tPROPS_IS_UPDATED\n} from '../../../constants.js';\nimport { get_descriptor, is_function } from '../../shared/utils.js';\nimport { mutable_source, set, source, update } from './sources.js';\nimport { derived, derived_safe_equal } from './deriveds.js';\nimport {\n\tactive_effect,\n\tget,\n\tcaptured_signals,\n\tset_active_effect,\n\tuntrack,\n\tactive_reaction,\n\tset_active_reaction\n} from '../runtime.js';\nimport { safe_equals } from './equality.js';\nimport * as e from '../errors.js';\nimport {\n\tBRANCH_EFFECT,\n\tLEGACY_DERIVED_PROP,\n\tLEGACY_PROPS,\n\tROOT_EFFECT,\n\tSTATE_SYMBOL\n} from '../constants.js';\nimport { proxy } from '../proxy.js';\nimport { capture_store_binding } from './store.js';\nimport { legacy_mode_flag } from '../../flags/index.js';\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_prop(fn, d = 1) {\n\tconst value = fn();\n\tfn(value + d);\n\treturn value;\n}\n\n/**\n * @param {((value?: number) => number)} fn\n * @param {1 | -1} [d]\n * @returns {number}\n */\nexport function update_pre_prop(fn, d = 1) {\n\tconst value = fn() + d;\n\tfn(value);\n\treturn value;\n}\n\n/**\n * The proxy handler for rest props (i.e. `const { x, ...rest } = $props()`).\n * Is passed the full `$$props` object and excludes the named props.\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, name?: string }>}}\n */\nconst rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\treturn target.props[key];\n\t},\n\tset(target, key) {\n\t\tif (DEV) {\n\t\t\t// TODO should this happen in prod too?\n\t\t\te.props_rest_readonly(`${target.name}.${String(key)}`);\n\t\t}\n\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @param {string} [name]\n * @returns {Record<string, unknown>}\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function rest_props(props, exclude, name) {\n\treturn new Proxy(\n\t\tDEV ? { props, exclude, name, other: {}, to_proxy: [] } : { props, exclude },\n\t\trest_props_handler\n\t);\n}\n\n/**\n * The proxy handler for legacy $$restProps and $$props\n * @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number> }>}}\n */\nconst legacy_rest_props_handler = {\n\tget(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tget(target.version);\n\t\treturn key in target.special ? target.special[key]() : target.props[key];\n\t},\n\tset(target, key, value) {\n\t\tif (!(key in target.special)) {\n\t\t\t// Handle props that can temporarily get out of sync with the parent\n\t\t\t/** @type {Record<string, (v?: unknown) => unknown>} */\n\t\t\ttarget.special[key] = prop(\n\t\t\t\t{\n\t\t\t\t\tget [key]() {\n\t\t\t\t\t\treturn target.props[key];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t/** @type {string} */ (key),\n\t\t\t\tPROPS_IS_UPDATED\n\t\t\t);\n\t\t}\n\n\t\ttarget.special[key](value);\n\t\tupdate(target.version); // $$props is coarse-grained: when $$props.x is updated, usages of $$props.y etc are also rerun\n\t\treturn true;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tif (target.exclude.includes(key)) return;\n\t\tif (key in target.props) {\n\t\t\treturn {\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true,\n\t\t\t\tvalue: target.props[key]\n\t\t\t};\n\t\t}\n\t},\n\tdeleteProperty(target, key) {\n\t\t// Svelte 4 allowed for deletions on $$restProps\n\t\tif (target.exclude.includes(key)) return true;\n\t\ttarget.exclude.push(key);\n\t\tupdate(target.version);\n\t\treturn true;\n\t},\n\thas(target, key) {\n\t\tif (target.exclude.includes(key)) return false;\n\t\treturn key in target.props;\n\t},\n\townKeys(target) {\n\t\treturn Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));\n\t}\n};\n\n/**\n * @param {Record<string, unknown>} props\n * @param {string[]} exclude\n * @returns {Record<string, unknown>}\n */\nexport function legacy_rest_props(props, exclude) {\n\treturn new Proxy({ props, exclude, special: {}, version: source(0) }, legacy_rest_props_handler);\n}\n\n/**\n * The proxy handler for spread props. Handles the incoming array of props\n * that looks like `() => { dynamic: props }, { static: prop }, ..` and wraps\n * them so that the whole thing is passed to the component as the `$$props` argument.\n * @template {Record<string | symbol, unknown>} T\n * @type {ProxyHandler<{ props: Array<T | (() => T)> }>}}\n */\nconst spread_props_handler = {\n\tget(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) return p[key];\n\t\t}\n\t},\n\tset(target, key, value) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tconst desc = get_descriptor(p, key);\n\t\t\tif (desc && desc.set) {\n\t\t\t\tdesc.set(value);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t},\n\tgetOwnPropertyDescriptor(target, key) {\n\t\tlet i = target.props.length;\n\t\twhile (i--) {\n\t\t\tlet p = target.props[i];\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (typeof p === 'object' && p !== null && key in p) {\n\t\t\t\tconst descriptor = get_descriptor(p, key);\n\t\t\t\tif (descriptor && !descriptor.configurable) {\n\t\t\t\t\t// Prevent a \"Non-configurability Report Error\": The target is an array, it does\n\t\t\t\t\t// not actually contain this property. If it is now described as non-configurable,\n\t\t\t\t\t// the proxy throws a validation error. Setting it to true avoids that.\n\t\t\t\t\tdescriptor.configurable = true;\n\t\t\t\t}\n\t\t\t\treturn descriptor;\n\t\t\t}\n\t\t}\n\t},\n\thas(target, key) {\n\t\t// To prevent a false positive `is_entry_props` in the `prop` function\n\t\tif (key === STATE_SYMBOL || key === LEGACY_PROPS) return false;\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tif (p != null && key in p) return true;\n\t\t}\n\n\t\treturn false;\n\t},\n\townKeys(target) {\n\t\t/** @type {Array<string | symbol>} */\n\t\tconst keys = [];\n\n\t\tfor (let p of target.props) {\n\t\t\tif (is_function(p)) p = p();\n\t\t\tfor (const key in p) {\n\t\t\t\tif (!keys.includes(key)) keys.push(key);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n};\n\n/**\n * @param {Array<Record<string, unknown> | (() => Record<string, unknown>)>} props\n * @returns {any}\n */\nexport function spread_props(...props) {\n\treturn new Proxy({ props }, spread_props_handler);\n}\n\n/**\n * This function is responsible for synchronizing a possibly bound prop with the inner component state.\n * It is used whenever the compiler sees that the component writes to the prop, or when it has a default prop_value.\n * @template V\n * @param {Record<string, unknown>} props\n * @param {string} key\n * @param {number} flags\n * @param {V | (() => V)} [fallback]\n * @returns {(() => V | ((arg: V) => V) | ((arg: V, mutation: boolean) => V))}\n */\nexport function prop(props, key, flags, fallback) {\n\tvar immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;\n\tvar runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;\n\tvar bindable = (flags & PROPS_IS_BINDABLE) !== 0;\n\tvar lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;\n\tvar is_store_sub = false;\n\tvar prop_value;\n\n\tif (bindable) {\n\t\t[prop_value, is_store_sub] = capture_store_binding(() => /** @type {V} */ (props[key]));\n\t} else {\n\t\tprop_value = /** @type {V} */ (props[key]);\n\t}\n\n\t// Can be the case when someone does `mount(Component, props)` with `let props = $state({...})`\n\t// or `createClassComponent(Component, props)`\n\tvar is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;\n\n\tvar setter =\n\t\t(bindable &&\n\t\t\t(get_descriptor(props, key)?.set ??\n\t\t\t\t(is_entry_props && key in props && ((v) => (props[key] = v))))) ||\n\t\tundefined;\n\n\tvar fallback_value = /** @type {V} */ (fallback);\n\tvar fallback_dirty = true;\n\tvar fallback_used = false;\n\n\tvar get_fallback = () => {\n\t\tfallback_used = true;\n\t\tif (fallback_dirty) {\n\t\t\tfallback_dirty = false;\n\t\t\tif (lazy) {\n\t\t\t\tfallback_value = untrack(/** @type {() => V} */ (fallback));\n\t\t\t} else {\n\t\t\t\tfallback_value = /** @type {V} */ (fallback);\n\t\t\t}\n\t\t}\n\n\t\treturn fallback_value;\n\t};\n\n\tif (prop_value === undefined && fallback !== undefined) {\n\t\tif (setter && runes) {\n\t\t\te.props_invalid_value(key);\n\t\t}\n\n\t\tprop_value = get_fallback();\n\t\tif (setter) setter(prop_value);\n\t}\n\n\t/** @type {() => V} */\n\tvar getter;\n\tif (runes) {\n\t\tgetter = () => {\n\t\t\tvar value = /** @type {V} */ (props[key]);\n\t\t\tif (value === undefined) return get_fallback();\n\t\t\tfallback_dirty = true;\n\t\t\tfallback_used = false;\n\t\t\treturn value;\n\t\t};\n\t} else {\n\t\t// Svelte 4 did not trigger updates when a primitive value was updated to the same value.\n\t\t// Replicate that behavior through using a derived\n\t\tvar derived_getter = (immutable ? derived : derived_safe_equal)(\n\t\t\t() => /** @type {V} */ (props[key])\n\t\t);\n\t\tderived_getter.f |= LEGACY_DERIVED_PROP;\n\t\tgetter = () => {\n\t\t\tvar value = get(derived_getter);\n\t\t\tif (value !== undefined) fallback_value = /** @type {V} */ (undefined);\n\t\t\treturn value === undefined ? fallback_value : value;\n\t\t};\n\t}\n\n\t// easy mode — prop is never written to\n\tif ((flags & PROPS_IS_UPDATED) === 0) {\n\t\treturn getter;\n\t}\n\n\t// intermediate mode — prop is written to, but the parent component had\n\t// `bind:foo` which means we can just call `$$props.foo = value` directly\n\tif (setter) {\n\t\tvar legacy_parent = props.$$legacy;\n\t\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t\tif (arguments.length > 0) {\n\t\t\t\t// We don't want to notify if the value was mutated and the parent is in runes mode.\n\t\t\t\t// In that case the state proxy (if it exists) should take care of the notification.\n\t\t\t\t// If the parent is not in runes mode, we need to notify on mutation, too, that the prop\n\t\t\t\t// has changed because the parent will not be able to detect the change otherwise.\n\t\t\t\tif (!runes || !mutation || legacy_parent || is_store_sub) {\n\t\t\t\t\t/** @type {Function} */ (setter)(mutation ? getter() : value);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t} else {\n\t\t\t\treturn getter();\n\t\t\t}\n\t\t};\n\t}\n\n\t// hard mode. this is where it gets ugly — the value in the child should\n\t// synchronize with the parent, but it should also be possible to temporarily\n\t// set the value to something else locally.\n\tvar from_child = false;\n\tvar was_from_child = false;\n\n\t// The derived returns the current value. The underlying mutable\n\t// source is written to from various places to persist this value.\n\tvar inner_current_value = mutable_source(prop_value);\n\tvar current_value = derived(() => {\n\t\tvar parent_value = getter();\n\t\tvar child_value = get(inner_current_value);\n\n\t\tif (from_child) {\n\t\t\tfrom_child = false;\n\t\t\twas_from_child = true;\n\t\t\treturn child_value;\n\t\t}\n\n\t\twas_from_child = false;\n\t\treturn (inner_current_value.v = parent_value);\n\t});\n\n\tif (!immutable) current_value.equals = safe_equals;\n\n\treturn function (/** @type {any} */ value, /** @type {boolean} */ mutation) {\n\t\t// legacy nonsense — need to ensure the source is invalidated when necessary\n\t\t// also needed for when handling inspect logic so we can inspect the correct source signal\n\t\tif (captured_signals !== null) {\n\t\t\t// set this so that we don't reset to the parent value if `d`\n\t\t\t// is invalidated because of `invalidate_inner_signals` (rather\n\t\t\t// than because the parent or child value changed)\n\t\t\tfrom_child = was_from_child;\n\t\t\t// invoke getters so that signals are picked up by `invalidate_inner_signals`\n\t\t\tgetter();\n\t\t\tget(inner_current_value);\n\t\t}\n\n\t\tif (arguments.length > 0) {\n\t\t\tconst new_value = mutation ? get(current_value) : runes && bindable ? proxy(value) : value;\n\n\t\t\tif (!current_value.equals(new_value)) {\n\t\t\t\tfrom_child = true;\n\t\t\t\tset(inner_current_value, new_value);\n\t\t\t\t// To ensure the fallback value is consistent when used with proxies, we\n\t\t\t\t// update the local fallback_value, but only if the fallback is actively used\n\t\t\t\tif (fallback_used && fallback_value !== undefined) {\n\t\t\t\t\tfallback_value = new_value;\n\t\t\t\t}\n\t\t\t\tuntrack(() => get(current_value)); // force a synchronisation immediately\n\t\t\t}\n\n\t\t\treturn value;\n\t\t}\n\t\treturn get(current_value);\n\t};\n}\n","/** @import { ComponentContext, ComponentContextLegacy } from '#client' */\n/** @import { EventDispatcher } from './index.js' */\n/** @import { NotFunction } from './internal/types.js' */\nimport { flush_sync, untrack } from './internal/client/runtime.js';\nimport { is_array } from './internal/shared/utils.js';\nimport { user_effect } from './internal/client/index.js';\nimport * as e from './internal/client/errors.js';\nimport { lifecycle_outside_component } from './internal/shared/errors.js';\nimport { legacy_mode_flag } from './internal/flags/index.js';\nimport { component_context } from './internal/client/context.js';\nimport { DEV } from 'esm-env';\n\nif (DEV) {\n\t/**\n\t * @param {string} rune\n\t */\n\tfunction throw_rune_error(rune) {\n\t\tif (!(rune in globalThis)) {\n\t\t\t// TODO if people start adjusting the \"this can contain runes\" config through v-p-s more, adjust this message\n\t\t\t/** @type {any} */\n\t\t\tlet value; // let's hope noone modifies this global, but belts and braces\n\t\t\tObject.defineProperty(globalThis, rune, {\n\t\t\t\tconfigurable: true,\n\t\t\t\t// eslint-disable-next-line getter-return\n\t\t\t\tget: () => {\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\n\t\t\t\t\te.rune_outside_svelte(rune);\n\t\t\t\t},\n\t\t\t\tset: (v) => {\n\t\t\t\t\tvalue = v;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tthrow_rune_error('$state');\n\tthrow_rune_error('$effect');\n\tthrow_rune_error('$derived');\n\tthrow_rune_error('$inspect');\n\tthrow_rune_error('$props');\n\tthrow_rune_error('$bindable');\n}\n\n/**\n * The `onMount` function schedules a callback to run as soon as the component has been mounted to the DOM.\n * It must be called during the component's initialisation (but doesn't need to live *inside* the component;\n * it can be called from an external module).\n *\n * If a function is returned _synchronously_ from `onMount`, it will be called when the component is unmounted.\n *\n * `onMount` does not run inside [server-side components](https://svelte.dev/docs/svelte/svelte-server#render).\n *\n * @template T\n * @param {() => NotFunction<T> | Promise<NotFunction<T>> | (() => any)} fn\n * @returns {void}\n */\nexport function onMount(fn) {\n\tif (component_context === null) {\n\t\tlifecycle_outside_component('onMount');\n\t}\n\n\tif (legacy_mode_flag && component_context.l !== null) {\n\t\tinit_update_callbacks(component_context).m.push(fn);\n\t} else {\n\t\tuser_effect(() => {\n\t\t\tconst cleanup = untrack(fn);\n\t\t\tif (typeof cleanup === 'function') return /** @type {() => void} */ (cleanup);\n\t\t});\n\t}\n}\n\n/**\n * Schedules a callback to run immediately before the component is unmounted.\n *\n * Out of `onMount`, `beforeUpdate`, `afterUpdate` and `onDestroy`, this is the\n * only one that runs inside a server-side component.\n *\n * @param {() => any} fn\n * @returns {void}\n */\nexport function onDestroy(fn) {\n\tif (component_context === null) {\n\t\tlifecycle_outside_component('onDestroy');\n\t}\n\n\tonMount(() => () => untrack(fn));\n}\n\n/**\n * @template [T=any]\n * @param {string} type\n * @param {T} [detail]\n * @param {any}params_0\n * @returns {CustomEvent<T>}\n */\nfunction create_custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n\treturn new CustomEvent(type, { detail, bubbles, cancelable });\n}\n\n/**\n * Creates an event dispatcher that can be used to dispatch [component events](https://svelte.dev/docs/svelte/legacy-on#Component-events).\n * Event dispatchers are functions that can take two arguments: `name` and `detail`.\n *\n * Component events created with `createEventDispatcher` create a\n * [CustomEvent](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent).\n * These events do not [bubble](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture).\n * The `detail` argument corresponds to the [CustomEvent.detail](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/detail)\n * property and can contain any type of data.\n *\n * The event dispatcher can be typed to narrow the allowed event names and the type of the `detail` argument:\n * ```ts\n * const dispatch = createEventDispatcher<{\n *  loaded: never; // does not take a detail argument\n *  change: string; // takes a detail argument of type string, which is required\n *  optional: number | null; // takes an optional detail argument of type number\n * }>();\n * ```\n *\n * @deprecated Use callback props and/or the `$host()` rune instead — see [migration guide](https://svelte.dev/docs/svelte/v5-migration-guide#Event-changes-Component-events)\n * @template {Record<string, any>} [EventMap = any]\n * @returns {EventDispatcher<EventMap>}\n */\nexport function createEventDispatcher() {\n\tconst active_component_context = component_context;\n\tif (active_component_context === null) {\n\t\tlifecycle_outside_component('createEventDispatcher');\n\t}\n\n\treturn (type, detail, options) => {\n\t\tconst events = /** @type {Record<string, Function | Function[]>} */ (\n\t\t\tactive_component_context.s.$$events\n\t\t)?.[/** @type {any} */ (type)];\n\n\t\tif (events) {\n\t\t\tconst callbacks = is_array(events) ? events.slice() : [events];\n\t\t\t// TODO are there situations where events could be dispatched\n\t\t\t// in a server (non-DOM) environment?\n\t\t\tconst event = create_custom_event(/** @type {string} */ (type), detail, options);\n\t\t\tfor (const fn of callbacks) {\n\t\t\t\tfn.call(active_component_context.x, event);\n\t\t\t}\n\t\t\treturn !event.defaultPrevented;\n\t\t}\n\n\t\treturn true;\n\t};\n}\n\n// TODO mark beforeUpdate and afterUpdate as deprecated in Svelte 6\n\n/**\n * Schedules a callback to run immediately before the component is updated after any state change.\n *\n * The first time the callback runs will be before the initial `onMount`.\n *\n * In runes mode use `$effect.pre` instead.\n *\n * @deprecated Use [`$effect.pre`](https://svelte.dev/docs/svelte/$effect#$effect.pre) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function beforeUpdate(fn) {\n\tif (component_context === null) {\n\t\tlifecycle_outside_component('beforeUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('beforeUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).b.push(fn);\n}\n\n/**\n * Schedules a callback to run immediately after the component has been updated.\n *\n * The first time the callback runs will be after the initial `onMount`.\n *\n * In runes mode use `$effect` instead.\n *\n * @deprecated Use [`$effect`](https://svelte.dev/docs/svelte/$effect) instead\n * @param {() => void} fn\n * @returns {void}\n */\nexport function afterUpdate(fn) {\n\tif (component_context === null) {\n\t\tlifecycle_outside_component('afterUpdate');\n\t}\n\n\tif (component_context.l === null) {\n\t\te.lifecycle_legacy_only('afterUpdate');\n\t}\n\n\tinit_update_callbacks(component_context).a.push(fn);\n}\n\n/**\n * Legacy-mode: Init callbacks object for onMount/beforeUpdate/afterUpdate\n * @param {ComponentContext} context\n */\nfunction init_update_callbacks(context) {\n\tvar l = /** @type {ComponentContextLegacy} */ (context).l;\n\treturn (l.u ??= { a: [], b: [], m: [] });\n}\n\n/**\n * Synchronously flushes any pending state changes and those that result from it.\n * @param {() => void} [fn]\n * @returns {void}\n */\nexport function flushSync(fn) {\n\tflush_sync(fn);\n}\n\nexport { getContext, getAllContexts, hasContext, setContext } from './internal/client/context.js';\nexport { hydrate, mount, unmount } from './internal/client/render.js';\nexport { tick, untrack } from './internal/client/runtime.js';\nexport { createRawSnippet } from './internal/client/dom/blocks/snippet.js';\n","/** @import { Source } from '#client' */\nimport { set } from '../internal/client/reactivity/sources.js';\n\n/** @param {Source<number>} source */\nexport function increment(source) {\n\tset(source, source.v + 1);\n}\n","import { get, tick, untrack } from '../internal/client/runtime.js';\nimport { effect_tracking, render_effect } from '../internal/client/reactivity/effects.js';\nimport { source } from '../internal/client/reactivity/sources.js';\nimport { increment } from './utils.js';\n\n/**\n * Returns a `subscribe` function that, if called in an effect (including expressions in the template),\n * calls its `start` callback with an `update` function. Whenever `update` is called, the effect re-runs.\n *\n * If `start` returns a function, it will be called when the effect is destroyed.\n *\n * If `subscribe` is called in multiple effects, `start` will only be called once as long as the effects\n * are active, and the returned teardown function will only be called when all effects are destroyed.\n *\n * It's best understood with an example. Here's an implementation of [`MediaQuery`](https://svelte.dev/docs/svelte/svelte-reactivity#MediaQuery):\n *\n * ```js\n * import { createSubscriber } from 'svelte/reactivity';\n * import { on } from 'svelte/events';\n *\n * export class MediaQuery {\n * \t#query;\n * \t#subscribe;\n *\n * \tconstructor(query) {\n * \t\tthis.#query = window.matchMedia(`(${query})`);\n *\n * \t\tthis.#subscribe = createSubscriber((update) => {\n * \t\t\t// when the `change` event occurs, re-run any effects that read `this.current`\n * \t\t\tconst off = on(this.#query, 'change', update);\n *\n * \t\t\t// stop listening when all the effects are destroyed\n * \t\t\treturn () => off();\n * \t\t});\n * \t}\n *\n * \tget current() {\n * \t\tthis.#subscribe();\n *\n * \t\t// Return the current state of the query, whether or not we're in an effect\n * \t\treturn this.#query.matches;\n * \t}\n * }\n * ```\n * @param {(update: () => void) => (() => void) | void} start\n * @since 5.7.0\n */\nexport function createSubscriber(start) {\n\tlet subscribers = 0;\n\tlet version = source(0);\n\t/** @type {(() => void) | void} */\n\tlet stop;\n\n\treturn () => {\n\t\tif (effect_tracking()) {\n\t\t\tget(version);\n\n\t\t\trender_effect(() => {\n\t\t\t\tif (subscribers === 0) {\n\t\t\t\t\tstop = untrack(() => start(() => increment(version)));\n\t\t\t\t}\n\n\t\t\t\tsubscribers += 1;\n\n\t\t\t\treturn () => {\n\t\t\t\t\ttick().then(() => {\n\t\t\t\t\t\t// Only count down after timeout, else we would reach 0 before our own render effect reruns,\n\t\t\t\t\t\t// but reach 1 again when the tick callback of the prior teardown runs. That would mean we\n\t\t\t\t\t\t// re-subcribe unnecessarily and create a memory leak because the old subscription is never cleaned up.\n\t\t\t\t\t\tsubscribers -= 1;\n\n\t\t\t\t\t\tif (subscribers === 0) {\n\t\t\t\t\t\t\tstop?.();\n\t\t\t\t\t\t\tstop = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n}\n","/** @import { Readable, Writable } from './public.js' */\nimport {\n\teffect_root,\n\teffect_tracking,\n\trender_effect\n} from '../internal/client/reactivity/effects.js';\nimport { get, writable } from './shared/index.js';\nimport { createSubscriber } from '../reactivity/create-subscriber.js';\n\nexport { derived, get, readable, readonly, writable } from './shared/index.js';\n\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @param {(v: V) => void} set\n * @returns {Writable<V>}\n */\n/**\n * @template V\n * @overload\n * @param {() => V} get\n * @returns {Readable<V>}\n */\n/**\n * Create a store from a function that returns state, and (to make a writable store), an\n * optional second function that sets state.\n *\n * ```ts\n * import { toStore } from 'svelte/store';\n *\n * let count = $state(0);\n *\n * const store = toStore(() => count, (v) => (count = v));\n * ```\n * @template V\n * @param {() => V} get\n * @param {(v: V) => void} [set]\n * @returns {Writable<V> | Readable<V>}\n */\nexport function toStore(get, set) {\n\tlet init_value = get();\n\tconst store = writable(init_value, (set) => {\n\t\t// If the value has changed before we call subscribe, then\n\t\t// we need to treat the value as already having run\n\t\tlet ran = init_value !== get();\n\n\t\t// TODO do we need a different implementation on the server?\n\t\tconst teardown = effect_root(() => {\n\t\t\trender_effect(() => {\n\t\t\t\tconst value = get();\n\t\t\t\tif (ran) set(value);\n\t\t\t});\n\t\t});\n\n\t\tran = true;\n\n\t\treturn teardown;\n\t});\n\n\tif (set) {\n\t\treturn {\n\t\t\tset,\n\t\t\tupdate: (fn) => set(fn(get())),\n\t\t\tsubscribe: store.subscribe\n\t\t};\n\t}\n\n\treturn {\n\t\tsubscribe: store.subscribe\n\t};\n}\n\n/**\n * @template V\n * @overload\n * @param {Writable<V>} store\n * @returns {{ current: V }}\n */\n/**\n * @template V\n * @overload\n * @param {Readable<V>} store\n * @returns {{ readonly current: V }}\n */\n/**\n * Convert a store to an object with a reactive `current` property. If `store`\n * is a readable store, `current` will be a readonly property.\n *\n * ```ts\n * import { fromStore, get, writable } from 'svelte/store';\n *\n * const store = writable(0);\n *\n * const count = fromStore(store);\n *\n * count.current; // 0;\n * store.set(1);\n * count.current; // 1\n *\n * count.current += 1;\n * get(store); // 2\n * ```\n * @template V\n * @param {Writable<V> | Readable<V>} store\n */\nexport function fromStore(store) {\n\tlet value = /** @type {V} */ (undefined);\n\n\tconst subscribe = createSubscriber((update) => {\n\t\tlet ran = false;\n\n\t\tconst unsubscribe = store.subscribe((v) => {\n\t\t\tvalue = v;\n\t\t\tif (ran) update();\n\t\t});\n\n\t\tran = true;\n\n\t\treturn unsubscribe;\n\t});\n\n\tfunction current() {\n\t\tif (effect_tracking()) {\n\t\t\tsubscribe();\n\t\t\treturn value;\n\t\t}\n\n\t\treturn get(store);\n\t}\n\n\tif ('set' in store) {\n\t\treturn {\n\t\t\tget current() {\n\t\t\t\treturn current();\n\t\t\t},\n\t\t\tset current(v) {\n\t\t\t\tstore.set(v);\n\t\t\t}\n\t\t};\n\t}\n\n\treturn {\n\t\tget current() {\n\t\t\treturn current();\n\t\t}\n\t};\n}\n","import type { ActiveTab } from \"@/enums/ActiveTab\";\nimport type { ThemeKey } from \"@/enums/ThemeKey\";\nimport type { TextLogEntry } from \"@/interfaces/actor/TextLogEntry\";\nimport { untrack } from \"svelte\";\nimport { fromStore, get, writable } from \"svelte/store\";\nimport { \n    getPinnedTraits, \n    setPinnedTraits, \n    getPinnedSystems, \n    setPinnedSystems, \n    getPinnedTechs, \n    setPinnedTechs, \n    getPinnedReactions,\n    setPinnedReactions,\n} from '@/scripts/npc/settings';\n\ninterface SheetStoreData\n{\n    advancedState: boolean;\n    introPlayed: boolean;\n    headerOffsetY: number;\n    currentTheme: string | ThemeKey;\n    activeTabs: { [key in ActiveTab]: string };\n    trackedHooks: { [key: number]: string };\n    tokenImageLock: boolean;\n    selectedTokenImage: string; // (#12)\n    textLogEntries: TextLogEntry[];\n    customFlagsSortable: boolean;\n}\n\nexport class SheetStore\n{\n    static createDefaultData(): SheetStoreData\n    {\n        return {\n            advancedState: false,\n            introPlayed: false,\n            headerOffsetY: 0,\n            currentTheme: \"\",\n            activeTabs: {} as { [key in ActiveTab]: string },\n            trackedHooks: {} as { [key: number]: string },\n            tokenImageLock: true,\n            selectedTokenImage: \"\", // (#12)\n            textLogEntries: [],\n            customFlagsSortable: false,\n        };\n    }\n\n    static store = writable<{ [key: string]: SheetStoreData }>({});\n\n    static init(key: string): void\n    {\n        const store = get(SheetStore.store);\n        if (key in store) return;\n\n        SheetStore.store.update(s =>\n        {\n            if (!s[key])\n            {\n                s[key] = SheetStore.createDefaultData();\n            }\n            return s;\n        });\n    }\n\n    static get(key: string): SheetStoreData\n    {\n        const store = get(SheetStore.store);\n        if (!(key in store))\n        {\n            untrack(() => SheetStore.init(key));\n        }\n        return fromStore(SheetStore.store).current[key];\n    }\n\n    static set(key: string, value: Partial<SheetStoreData>): void\n    {\n        SheetStore.store.update(store =>\n        {\n            if (!store[key])\n            {\n                store[key] = SheetStore.createDefaultData();\n            }\n            store[key] = { ...store[key], ...value };\n            return store;\n        });\n    }\n}\n\ninterface PilotStoreData\n{\n    bondQNAMode: boolean;\n    selectedMech: number;\n}\n\nexport class PilotStore\n{\n    static createDefaultData(): PilotStoreData\n    {\n        return {\n            bondQNAMode: false,\n            selectedMech: 0,\n        };\n    }\n\n    static store = writable<{ [key: string]: PilotStoreData }>({});\n\n    static init(key: string): void\n    {\n        const store = get(PilotStore.store);\n        if (key in store) return;\n\n        PilotStore.store.update(s =>\n        {\n            if (!s[key])\n            {\n                s[key] = PilotStore.createDefaultData();\n            }\n            return s;\n        });\n    }\n\n    static get(key: string): PilotStoreData\n    {\n        const store = get(PilotStore.store);\n        if (!(key in store))\n        {\n            untrack(() => PilotStore.init(key));\n        }\n        return fromStore(PilotStore.store).current[key];\n    }\n\n    static set(key: string, value: Partial<PilotStoreData>): void\n    {\n        PilotStore.store.update(store =>\n        {\n            if (!store[key])\n            {\n                store[key] = PilotStore.createDefaultData();\n            }\n            store[key] = { ...store[key], ...value };\n            return store;\n        });\n    }\n}\n\n/**\n * All string arrays store LIDs\n * \n * These are stored as a stop-gap for asynchronous data sync between the server and client.\n * The stop-gap helps maintain reactivity within Svelte.\n */\ninterface NPCStoreData\n{\n    pinnedTraits: string[];\n    pinnedSystems: string[];\n    pinnedTechs: string[];\n    pinnedReactions: string[];\n}\n\nexport class NPCStore\n{\n    static createDefaultData(): NPCStoreData\n    {\n        return {\n            pinnedTraits: [],\n            pinnedSystems: [],\n            pinnedTechs: [],\n            pinnedReactions: [],\n        };\n    }\n\n    static store = writable<{ [key: string]: NPCStoreData }>({});\n\n    static init(key: string): void\n    {\n        const store = get(NPCStore.store);\n        if (key in store) return;\n\n        NPCStore.store.update(s =>\n        {\n            if (!s[key])\n            {\n                s[key] = {\n                    ...NPCStore.createDefaultData(),\n                    pinnedTraits: getPinnedTraits(key),\n                    pinnedSystems: getPinnedSystems(key),\n                    pinnedTechs: getPinnedTechs(key),\n                    pinnedReactions: getPinnedReactions(key),\n                };\n            }\n            return s;\n        });\n    }\n\n    static get(key: string): NPCStoreData\n    {\n        const store = get(NPCStore.store);\n        if (!(key in store))\n        {\n            untrack(() => NPCStore.init(key));\n        }\n        return fromStore(NPCStore.store).current[key];\n    }\n\n    static set(key: string, value: Partial<NPCStoreData>): void\n    {\n        NPCStore.store.update(store =>\n        {\n            if (!store[key])\n            {\n                store[key] = NPCStore.createDefaultData();\n            }\n            store[key] = { ...store[key], ...value };\n            if (value.pinnedTraits !== undefined)\n                setPinnedTraits(key, store[key].pinnedTraits); // Persistent storage\n            if (value.pinnedSystems !== undefined)\n                setPinnedSystems(key, store[key].pinnedSystems); // Persistent storage\n            if (value.pinnedTechs !== undefined)\n                setPinnedTechs(key, store[key].pinnedTechs); // Persistent storage\n            if (value.pinnedReactions !== undefined)\n                setPinnedReactions(key, store[key].pinnedReactions); // Persistent storage\n            return store;\n        });\n    }\n}","import type { ActiveTab } from \"@/enums/ActiveTab\";\nimport { SheetStore } from \"./module-store\";\n\nexport function getActiveTab(uuid: string, tab: ActiveTab): string\n{\n    return SheetStore.get(uuid).activeTabs[tab] ?? \"\";\n}\n\nexport function setActiveTab(uuid: string, tab: ActiveTab, value: string)\n{\n    const tabs = SheetStore.get(uuid).activeTabs;\n    tabs[tab] = value;\n    SheetStore.set(uuid, { activeTabs: tabs });\n}\n\nexport function getAdvancedState(uuid: string): boolean\n{\n    return SheetStore.get(uuid).advancedState;\n}\n\nexport function setAdvancedState(uuid: string, enabled: boolean)\n{\n    SheetStore.set(uuid, { advancedState: enabled });\n}\n\nexport function getSelectedTokenImage(uuid: string): string\n{\n    return SheetStore.get(uuid).selectedTokenImage ?? \"\";\n}\n\nexport function setSelectedTokenImage(uuid: string, value: string)\n{\n    SheetStore.set(uuid, { selectedTokenImage: value });\n}\n\nexport function getTokenImageLock(uuid: string): boolean\n{\n    return SheetStore.get(uuid).tokenImageLock ?? true;\n}\n\nexport function setTokenImageLock(uuid: string, value: boolean)\n{\n    SheetStore.set(uuid, { tokenImageLock: value })\n}\n\nexport function getCustomFlagsSortable(uuid: string): boolean\n{\n    return SheetStore.get(uuid).customFlagsSortable;\n}\n\nexport function setCustomFlagsSortable(uuid: string, enabled: boolean)\n{\n    SheetStore.set(uuid, { customFlagsSortable: enabled });\n}","// Bridge module and foundryvtt-lancer system and any exported function I don't want to categorize\nimport type { HelperOptions } from \"handlebars\";\nimport { Logger } from \"@/classes/Logger\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { resolveHelperDotpath } from '@/scripts/lancer/helpers/common';\nimport { SheetStore } from \"@/scripts/store/module-store\";\nimport { getTokenImageLock, setTokenImageLock } from \"@/scripts/store/advanced\";\n\nexport function getLocalized(keys: string | string[], separator?: string): string\n{\n    if (Array.isArray(keys))\n    {\n        return keys.map(k => foundry.applications.handlebars.localize(k, {} as HelperOptions)).join(separator ? separator : \"<br><br>\");\n    }\n    return foundry.applications.handlebars.localize(keys, {} as HelperOptions);\n}\n\n/**\n * If the Foundry core setting 'Photosensitivity Mode' is enabled, disables this styling\n */\nexport function photosensitiveStyling(text: string): string\n{\n    return game.settings.get(\"core\", \"photosensitiveMode\") ? \"\" : text;\n}\n\n/**\n * If the Foundry core setting is in a logographic language, attempt to make styling more accomodating\n */\nexport function logographicLanguage(): boolean\n{\n    const languages = [\"zh-TW\", \"zh-CN\", \"ja-JP\"];\n    return languages.includes(game.settings.get(\"core\", \"language\"));\n}\n\nexport function randomExtension(): string\n{\n    const extensions = [\".exe\", \".bat\", \".cmd\", \".sh\", \".bash\", \".zsh\", \".ksh\", \".csh\"];\n    const randomIndex = Math.floor(Math.random() * extensions.length);\n    return extensions[randomIndex];\n}\n\nexport function logData(path: string, options: HelperOptions)\n{\n    const data = resolveHelperDotpath(options, path);\n    Logger.log(`Data received`, data);\n}\n\nexport function logConsole(data: any, _options: HelperOptions)\n{\n    console.log(data);\n}\n\nexport function isLoading(item: any): boolean\n{\n    return item.system.all_tags?.some((t: { is_loading: boolean; }) => t.is_loading)\n        || item.system.tags?.some((t: { is_loading: boolean; }) => t.is_loading);\n}\n\nexport function isRecharge(item: any): boolean\n{\n    return item.system.all_tags?.some((t: { is_recharge: boolean; }) => t.is_recharge)\n        || item.system.tags?.some((t: { is_recharge: boolean; }) => t.is_recharge);\n}\n\nexport function formatString(template: string, ...values: string[]): string\n{\n    return template.replace(/{(\\d+)}/g, (match, number) =>\n    {\n        return typeof values[number] !== 'undefined' ? values[number] : match;\n    });\n}\n\nexport function getFoundryVersion(split: true): string[];\nexport function getFoundryVersion(split?: false): string;\nexport function getFoundryVersion(split: boolean = false): string | string[]\n{\n    if (split)\n        return game.release.version.split('.');\n    return game.release.version;\n}\n\nexport function getLancerVersion(split: true): string[];\nexport function getLancerVersion(split?: false): string;\nexport function getLancerVersion(split: boolean = false): string | string[]\n{\n    if (split)\n        return game.system.version.split('.');\n    return game.system.version;\n}\n\nexport function getModuleVersion(split: true): string[];\nexport function getModuleVersion(split?: false): string;\nexport function getModuleVersion(split: boolean = false): string | string[]\n{\n    if (split)\n        // @ts-expect-error\n        return game.modules.get(LancerAlternative.Name).version.split('.');\n    // @ts-expect-error\n    return game.modules.get(LancerAlternative.Name).version;\n}\n\n// Loop data around into a temporary cache so that we don't need to call getData() on ever render. \n// Functionally, probably worse than just calling getData(), but because it calls a console log, it \n// gets a bit spammy and some people may get scared of it.\n// This runs even on rerenders, so there is no chance of its own key not existing by the time the Svelte components are mounted.\nexport const dataMap: { [key: string]: any } = {};\nexport function forwardData(data: any, _options: HelperOptions)\n{\n    dataMap[data.actor.uuid] = data;\n}\n\nexport function handleRelativeDataInput(\n    event: Event & { currentTarget: EventTarget & HTMLInputElement; }, \n    previous: number)\n{\n    event.preventDefault();\n    const inputValue = (event.target as HTMLInputElement)?.value;\n    let newValue = previous;\n\n    if (inputValue)\n    {\n        if (inputValue.startsWith('+'))\n        {\n            newValue = previous + Number(inputValue.slice(1));\n        }\n        else if (inputValue.startsWith('-'))\n        {\n            newValue = previous - Number(inputValue.slice(1));\n        }\n        else\n        {\n            newValue = Number(inputValue);\n        }\n\n        if (Number.isNaN(newValue))\n            newValue = previous;\n    }\n\n    event.currentTarget.value = newValue.toString();\n    event.currentTarget.blur();\n}\n\nexport function isValidVideoContainer(path: string): boolean\n{\n    const validTypes = ['webm', 'mp4', 'm4v']; // https://foundryvtt.com/article/media/\n    const extension = path.split('.').pop()?.toLowerCase();\n    return validTypes.includes(extension ?? \"\");\n}\n\nexport function getVideoMimeType(path: string): string | null\n{\n    const validTypes = ['webm', 'mp4', 'm4v']; // https://foundryvtt.com/article/media/\n    const extension = path.split('.').pop()?.toLowerCase();\n    if (extension && validTypes.includes(extension))\n        return `video/${extension === 'm4v' ? 'mp4' : extension}`;\n    return null;\n}\n\nexport function isValidImageContainer(path: string): boolean\n{\n    const validTypes = ['avif', 'jpg', 'jpeg', 'png', 'svg', 'webp', 'gif']; // https://foundryvtt.com/article/media/, but .gif is certainly supported\n    const extension = path.split('.').pop()?.toLowerCase();\n    return validTypes.includes(extension ?? \"\");\n}\n\nexport function browseTokenImage(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, \n    actor: any)\n{\n    event.stopPropagation();\n\n    const fp = new FilePicker({\n        current: actor.prototypeToken.texture.src,\n        type: \"imagevideo\",\n        callback: (path) =>\n        {\n            // (#12) When the Lancer system fixes its types in v13 and they can be exported properly\n            // https://foundryvtt.com/api/classes/foundry.applications.apps.FilePicker.html#default_options\n            // Use the `form` attribute to hopefully handle the weird override requirement of (#10).\n            // But today, we're just going to throw it in a data store and call it a day.\n            SheetStore.get(actor.uuid).selectedTokenImage = path;\n            actor.update({\n                \"prototypeToken.texture.src\": path\n            });\n        },\n    });\n\n    fp.render(true);\n}\n\nexport function browseActorImage(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, \n    actor: any)\n{\n    event.stopPropagation();\n\n    const fp = new FilePicker({\n        current: actor.img,\n        type: \"image\",\n        callback: (path) =>\n        {\n            actor.update({\n                \"img\": path\n            })\n        },\n    });\n\n    fp.render(true);\n}\n\n/**\n * Browses the actor image but syncs the prototype token and actor image together\n */\nexport function browseActorImageSync(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, \n    actor: any)\n{\n    event.stopPropagation();\n\n    const fp = new FilePicker({\n        current: actor.img,\n        type: \"image\",\n        callback: (path) =>\n        {\n            SheetStore.get(actor.uuid).selectedTokenImage = path; // (#12)\n            actor.update({\n                \"img\": path,\n                \"prototypeToken.texture.src\": path\n            })\n        },\n    });\n\n    fp.render(true);\n}\n\nexport function getCurrentOvercharge(actor: any)\n{\n    const overchargeSequence = actor.system.overcharge_sequence.split(\",\");\n    const overchargeStage = actor.system.overcharge;\n\n    return overchargeSequence[overchargeStage]\n}\n\nexport function handleOverchargeIncrease(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, \n    actor: any) \n{\n    event.stopPropagation();\n\n    const overchargeStage = actor.system.overcharge;\n    const overchargeSequence = actor.system.overcharge_sequence.split(\",\");\n    actor.update({\n        \"system.overcharge\": Math.min(overchargeStage + 1, overchargeSequence.length - 1)\n    });\n}\n\nexport function handleOverchargeDecrease(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, \n    actor: any) \n{\n    event.stopPropagation();\n    \n    const overchargeStage = actor.system.overcharge;\n    actor.update({\n        \"system.overcharge\": Math.max(overchargeStage - 1, 0)\n    });\n}\n\nexport async function handleToggleImageSync(\n    event: MouseEvent & { currentTarget: EventTarget & HTMLElement },\n    actor: any, \n    setState: (uuid: string, value: boolean) => void,\n)\n{\n    const lockState = getTokenImageLock(actor.uuid);\n    event.stopPropagation();\n\n    if (!lockState)\n    {\n        const confirm = await foundry.applications.api.DialogV2.confirm({\n            window: { title: getLocalized(\"LA.confirm\") },\n            content: getLocalized(\"LA.advanced.link.subLabel\"),\n        });\n\n        if (confirm)\n        {\n            setTokenImageLock(actor.uuid, !lockState);\n            setState(actor.uuid, !lockState);\n        \n            if (isValidImageContainer(actor.prototypeToken.texture.src))\n                actor.update({\n                    \"img\": actor.prototypeToken.texture.src\n                });\n        }\n    }\n    else\n    {\n        setTokenImageLock(actor.uuid, !lockState);\n        setState(actor.uuid, !lockState);\n    }\n}\n\nexport function handleEditToken(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, actor: any)\n{\n    event.stopPropagation();\n    \n    if (getTokenImageLock(actor.uuid))\n        browseActorImageSync(event, actor);\n    else\n        browseTokenImage(event, actor);\n}","export enum TextConsoleHook\n{\n    MechHeader = \"laMechHeaderLog\",\n    MechHeaderReset = \"laMechHeaderLogReset\",\n    PilotHeader = \"laPilotHeaderLog\",\n    PilotHeaderReset = \"laPilotHeaderLogReset\",\n}","export enum TextLogHook\n{\n    MechLog = \"laMechLog\",\n    MechLogReset = \"laMechLogReset\",\n    PilotLog = \"laPilotLog\",\n    PilotLogReset = \"laPilotLogReset\",\n}\n","// This is for logging strings to the text logs, not actual logging\nimport { SheetStore } from \"@/scripts/store/module-store\";\nimport { TextConsoleHook } from \"@/enums/TextConsoleHook\";\nimport { TextLogHook } from \"@/enums/TextLogHook\";\nimport type { TextLogEntry } from \"@/interfaces/actor/TextLogEntry\";\n\nexport function setIntroRun(uuid: string, enabled: boolean)\n{\n    SheetStore.set(uuid, { introPlayed: enabled });\n}\n\nexport function getIntroRun(uuid: string): boolean\n{\n    return SheetStore.get(uuid)?.introPlayed;\n}\n\nexport function getTextLogEntries(uuid: string): TextLogEntry[]\n{\n    return SheetStore.get(uuid)?.textLogEntries ?? [];\n}\n\n/**\n * Send text to display on an actor's (if applicable) TextLog component. This targets the bottom console lines\n *\n * `uuid` identifies the actor whose sheet the event originated in (see getActorContext). Broadcasts\n * on every sheet type's hook. Each `TextConsoleWriter` only listens on the one it was constructed\n * with, and filters on `uuid`, so only the right one ever reacts to a single pointer event.\n * @param event\n * @param text\n * @param uuid\n */\nexport function sendToTextConsole(event: PointerEvent, text: string, uuid: string)\n{\n    event.stopPropagation();\n    (Hooks.call as any)(TextConsoleHook.MechHeader, text, uuid); // dynamic TextConsoleHook id, outside the typed hook registry\n    (Hooks.call as any)(TextConsoleHook.PilotHeader, text, uuid); // dynamic TextConsoleHook id, outside the typed hook registry\n}\n\n/**\n * Resets the TextLog console component\n * @param event\n * @param uuid\n */\nexport function resetTextConsole(event: PointerEvent, uuid: string)\n{\n    event.stopPropagation();\n    (Hooks.call as any)(TextConsoleHook.MechHeaderReset, uuid); // dynamic TextConsoleHook id, outside the typed hook registry\n    (Hooks.call as any)(TextConsoleHook.PilotHeaderReset, uuid); // dynamic TextConsoleHook id, outside the typed hook registry\n}\n\n/**\n * Send text to display on an actor's (if applicable) TextLog component. This targets the top (persistent) console lines\n *\n * `uuid` identifies the actor whose sheet the event originated in (see getActorContext). Broadcasts\n * on every sheet type's hook. Each `TextLogWriter` only listens on the one it was constructed\n * with, and filters on `uuid`, so only the right one ever reacts to a single pointer event.\n *\n * Also recorded in the SheetStore so it survives sheet re-renders/remounts for the rest of the\n * session.\n * @param text\n * @param uuid\n * @param glitchy adds the Horus glitch text styling to this line (subject to photosensitive mode)\n */\nexport function sendToTextLog(text: string, uuid: string, glitchy?: boolean)\n{\n    SheetStore.set(uuid, { textLogEntries: [...SheetStore.get(uuid).textLogEntries, { text, glitchy }] });\n    (Hooks.call as any)(TextLogHook.MechLog, text, uuid, glitchy); // dynamic TextLogHook id, outside the typed hook registry\n    (Hooks.call as any)(TextLogHook.PilotLog, text, uuid, glitchy); // dynamic TextLogHook id, outside the typed hook registry\n}\n\n/**\n * Clears the persisted text log entries, so they stop reappearing on future remounts.\n * @param uuid\n * @param all also wipes the live TextLogWriter down to nothing, rather than back to just the intro banner\n */\nexport function resetTextLog(uuid: string, all: boolean = false)\n{\n    SheetStore.set(uuid, { textLogEntries: [] });\n    (Hooks.call as any)(TextLogHook.MechLogReset, uuid, all); // dynamic TextLogHook id, outside the typed hook registry\n    (Hooks.call as any)(TextLogHook.PilotLogReset, uuid, all); // dynamic TextLogHook id, outside the typed hook registry\n}","\n/**\n * ThemeKey are direct reflections of the Lancer system's keys (e.g. `game.settings.get(\"lancer\", \"uiTheme\")` will return one of these values)\n */\nexport enum ThemeKey\n{\n    /**\n     * GMS - General Massive Systems (default theme)\n     */\n    GMS = \"gms\",\n\n    /**\n     * GMSDark - Dark variant of the GMS theme\n     */\n    GMSDark = \"gmsDark\",\n\n    /**\n     * MSMC - Mirrorsmoke Mercenary Company\n     */\n    MSMC = \"msmc\",\n\n    /**\n     * GALSIM - Forecast/Galactic Simulation\n     */\n    GALSIM = \"gal\",\n\n    /**\n     * HORUS - HORUS\n     */\n    HORUS = \"horus\",\n\n    /**\n     * HA - Harrison Armory\n     */\n    HA = \"ha\",\n\n    /**\n     * SSC - Smith-Shimano Corpro\n     */\n    SSC = \"ssc\",\n\n    /**\n     * IPSN - IPS-Northstar\n     */\n    IPSN = \"ipsn\",\n}\n\n/**\n * ThemeValue are the Lancer system's themes converted to the Alternative Sheets module CSS classes\n */\nexport enum ThemeValue\n{\n    \n    /**\n     * GMS - General Massive Systems (default theme)\n     */\n    GMS = \"la-gms\",\n\n    /**\n     * GMSDark - Dark variant of the GMS theme\n     */\n    GMSDark = \"la-gmsdark\",\n\n    /**\n     * MSMC - Mirrorsmoke Mercenary Company\n     */\n    MSMC = \"la-msmc\",\n\n    /**\n     * GALSIM - Forecast/Galactic Simulation\n     */\n    GALSIM = \"la-galsim\",\n\n    /**\n     * HORUS - HORUS\n     */\n    HORUS = \"la-horus\",\n\n    /**\n     * HA - Harrison Armory\n     */\n    HA = \"la-ha\",\n\n    /**\n     * SSC - Smith-Shimano Corpro\n     */\n    SSC = \"la-ssc\",\n\n    /**\n     * IPSN - IPS-Northstar\n     */\n    IPSN = \"la-ipsn\",\n}","// Reimplementation of bare-minimum foundryvtt-lancer functionality (src/module/util/lid.ts)\n\nexport function slugify(name: string, dash: string = \"_\"): string\n{\n    return name\n        .trim()\n        .replace(/[:\\\\\\/-\\s]+/g, dash)\n        .toLowerCase();\n}","/**\n * Q: Why not put these in the Svelte components themselves?\n * A: Foundry (as of V12) has a lot of quirks when not using their prescribed workflow (e.g. not Svelte).\n *      So rather than fight the Foundry system at every turn, accomodate it where we can and use Svelte for things Foundry's tech stack does not support (e.g. reactivity).\n *      The second reason is that Svelte does a separate transpilation of CSS declared on its components, which minimizes CSS conflicts but comes with the caveat of \n *      not being able to easily predict class names and such, which makes it harder for say example, we were to open the CSS to be available for use by other modules or systems.\n *      The third reason is that CSS it's easier to maintain and reuse CSS this way by virtue of being more easily managed by IDEs.\n */\nimport \"@/styles/shared/_mixins.scss\";\nimport \"@/styles/overrides/lancer.scss\";\nimport \"@/styles/overrides/carolingian-ui.scss\";\nimport \"@/styles/shared/typography.scss\";\nimport \"@/styles/shared/space.scss\";\nimport \"@/styles/shared/misc.scss\";\nimport \"@/styles/shared/display.scss\";\nimport \"@/styles/shared/pointer.scss\";\nimport \"@/styles/shared/glow.scss\";\nimport \"@/styles/shared/glow-mixins.scss\";\nimport \"@/styles/shared/flow.scss\";\nimport \"@/styles/shared/general.scss\";\nimport \"@/styles/shared/container.scss\";\nimport \"@/styles/shared/container-mixins.scss\";\nimport \"@/styles/shared/shape.scss\";\nimport \"@/styles/shared/background.scss\";\nimport \"@/styles/shared/shadow.scss\";\nimport \"@/styles/shared/component.scss\";\nimport \"@/styles/shared/component-mixins.scss\";\n\nimport \"@/styles/actor/responsive.scss\"\nimport \"@/styles/actor/header.scss\"\nimport \"@/styles/actor/body.scss\";\nimport \"@/styles/actor/sidebar.scss\"\n\nimport \"@/styles/mech/body.scss\";\nimport \"@/styles/mech/header.scss\";\nimport \"@/styles/mech/sidebar.scss\";\nimport \"@/styles/mech/status.scss\";\nimport \"@/styles/mech/loadout.scss\";\nimport \"@/styles/mech/hase-display.scss\";\n\nimport \"@/styles/pilot/body.scss\";\nimport \"@/styles/pilot/header.scss\";\nimport \"@/styles/pilot/sidebar.scss\";\nimport \"@/styles/pilot/hase-display.scss\";\nimport \"@/styles/pilot/bond.scss\"\n\nimport \"@/styles/npc/header.scss\";\nimport \"@/styles/npc/body.scss\";\nimport \"@/styles/npc/hase-display.scss\"\n\nimport \"@/styles/deployable/header.scss\";\nimport \"@/styles/deployable/body.scss\";\n\nimport \"@/styles/color/_mixins.scss\";\nimport \"@/styles/color/la-colors.scss\";\nimport \"@/styles/color/open-color.scss\";\nimport \"@/styles/color/themes/common.scss\";\nimport \"@/styles/color/themes/gms.scss\";\nimport \"@/styles/color/themes/gmsdark.scss\";\nimport \"@/styles/color/themes/ipsn.scss\";\nimport \"@/styles/color/themes/ssc.scss\";\nimport \"@/styles/color/themes/galsim.scss\";\nimport \"@/styles/color/themes/msmc.scss\";\nimport \"@/styles/color/themes/ha.scss\";\nimport \"@/styles/color/themes/horus.scss\";\n\nimport { ThemeKey, ThemeValue } from \"@/enums/ThemeKey\";\nimport { slugify } from \"@/scripts/lancer/util/lid\";\nimport { getLocalized } from \"@/scripts/helpers\";\nimport { SheetStore } from \"@/scripts/store/module-store\";\n\n/**\n * Lancer system to Alternative Sheets theme names\n */\nconst THEME_MAP: Record<ThemeKey | string, ThemeValue> = {\n    [ThemeKey.GMS]: ThemeValue.GMS,\n    [ThemeKey.GMSDark]: ThemeValue.GMSDark,\n    [ThemeKey.MSMC]: ThemeValue.MSMC,\n    [ThemeKey.GALSIM]: ThemeValue.GALSIM,\n    [ThemeKey.HORUS]: ThemeValue.HORUS,\n    [ThemeKey.HA]: ThemeValue.HA,\n    [ThemeKey.SSC]: ThemeValue.SSC,\n    [ThemeKey.IPSN]: ThemeValue.IPSN,\n};\n\n/**\n * Whether to use the dark/light color palette (mostly for stats)\n */\nconst LIGHT_MAP: Record<ThemeKey | string, \"light\" | \"dark\"> = {\n    [ThemeKey.GMS]: \"light\",\n    [ThemeKey.GMSDark]: \"dark\",\n    [ThemeKey.MSMC]: \"dark\",\n    [ThemeKey.GALSIM]: \"dark\",\n    [ThemeKey.HORUS]: \"dark\",\n    [ThemeKey.HA]: \"dark\",\n    [ThemeKey.SSC]: \"light\",\n    [ThemeKey.IPSN]: \"light\",\n};\n\n/**\n * Localization map for names of themes, used by `getThemeName`\n */\nconst THEME_LOCALIZE_MAP: Record<ThemeKey | string, string> = {\n    [ThemeKey.GMS]: \"LA.advanced.theme.gms.label\",\n    [ThemeKey.GMSDark]: \"LA.advanced.theme.gmsDark.label\",\n    [ThemeKey.MSMC]: \"LA.advanced.theme.msmc.label\",\n    [ThemeKey.GALSIM]: \"LA.advanced.theme.galsim.label\",\n    [ThemeKey.HORUS]: \"LA.advanced.theme.horus.label\",\n    [ThemeKey.HA]: \"LA.advanced.theme.ha.label\",\n    [ThemeKey.SSC]: \"LA.advanced.theme.ssc.label\",\n    [ThemeKey.IPSN]: \"LA.advanced.theme.ipsn.label\",\n};\n\n/**\n * Localization flavor-text map for different themes, used by `getThemeHistoryLabel`.\n */\nconst THEME_LOCALIZE_HISTORY_MAP: Record<ThemeKey | string, string> = {\n    [ThemeKey.GMS]: \"LA.pilot.history.gms\",\n    [ThemeKey.GMSDark]: \"LA.pilot.history.gms\",\n    [ThemeKey.MSMC]: \"LA.pilot.history.msmc\",\n    [ThemeKey.GALSIM]: \"LA.pilot.history.gms\",\n    [ThemeKey.HORUS]: \"LA.pilot.history.horus\",\n    [ThemeKey.HA]: \"LA.pilot.history.ha\",\n    [ThemeKey.SSC]: \"LA.pilot.history.ssc\",\n    [ThemeKey.IPSN]: \"LA.pilot.history.ipsn\",\n};\n\n/**\n * Translates the keys stored by this module into their CSS class\n * @param key e.g. `gms` or `gmsDark`\n * @returns CSS class as a `ThemeValue` enum value (e.g. `la-gms` or `la-gmsdark`)\n */\nexport function convertToCSSTheme(key: ThemeKey | string): ThemeValue\n{\n    return THEME_MAP[key];\n}\n\n/**\n * Get a document's CSS theme\n * @param uuid document UUID\n * @returns CSS class as a `ThemeValue` enum value (e.g. `la-gms` or `la-gmsdark`)\n */\nexport function getCSSDocumentTheme(uuid: string): ThemeValue\n{\n    const { currentTheme } = SheetStore.get(uuid);\n    return currentTheme ? THEME_MAP[currentTheme] : getCSSSystemTheme();\n}\n\n/**\n * Get the Lancer system's CSS theme\n * @returns CSS class as a `ThemeValue` enum value (e.g. `la-gms` or `la-gmsdark`)\n */\nexport function getCSSSystemTheme(): ThemeValue\n{\n    const currentTheme = game.settings.get(\"lancer\", \"uiTheme\") as string;\n    return THEME_MAP[currentTheme];\n}\n\n/**\n * Determine the theme as 'light' or 'dark'\n * @param theme \n * @returns \n */\nexport function getBrightness(theme?: ThemeKey | string): \"light\" | \"dark\"\n{\n    const selectedTheme = theme || game.settings.get(\"lancer\", \"uiTheme\") as string;\n    return LIGHT_MAP[selectedTheme];\n}\n\n/**\n * Get the theme name localized to their title\n * @param theme \n * @returns \n */\nexport function getThemeName(theme?: ThemeKey | string)\n{\n    const selectedTheme = theme || game.settings.get(\"lancer\", \"uiTheme\") as string;\n    return getLocalized(THEME_LOCALIZE_MAP[selectedTheme]);\n}\n\n/**\n * Get the localized flavor-text label (appears in pilot dossier) \n * @param theme \n * @returns \n */\nexport function getThemeHistoryLabel(theme?: ThemeKey | string)\n{\n    const selectedTheme = theme || game.settings.get(\"lancer\", \"uiTheme\") as string;\n    return getLocalized(THEME_LOCALIZE_HISTORY_MAP[selectedTheme]);\n}\n\nexport function getManufacturerColor(key: ThemeKey | string, type: \"bckg\" | \"text\" | \"brdr\" | \"prmy\")\n{\n    let manufacturer = slugify(key, \"-\");\n\n    if (![\"gms\", \"ips-n\", \"ipsn\", \"ssc\", \"horus\", \"ha\", \"msmc\", \"galsim\"].includes(manufacturer))\n    {\n        manufacturer = \"primary\";\n    }\n\n    if (manufacturer === \"ips-n\")\n        manufacturer = \"ipsn\";\n    if (manufacturer === \"gmsdark\")\n        manufacturer = \"gms\";\n    return `la-${type}-${manufacturer}`;\n}\n\nexport function applyThemeTo(html: JQuery<HTMLElement>, theme?: ThemeKey | string)\n{\n    const selectedTheme = theme || game.settings.get(\"lancer\", \"uiTheme\") as string;\n    const themeClasses = Object.values(THEME_MAP);\n    html.removeClass(themeClasses.join(' ')).addClass(THEME_MAP[selectedTheme]);\n}\n\nexport function applyThemeToImages(html: JQuery<HTMLElement>)\n{\n    const currentTheme = game.settings.get(\"lancer\", \"uiTheme\") as string;\n    const isDarkTheme = LIGHT_MAP[currentTheme] === \"dark\";\n\n    // Swap images\n    html.find('img').each(function ()\n    {\n        const img = $(this);\n        const src = img.attr('src');\n        if (src && src.startsWith('systems/lancer/assets/icons'))\n        {\n            if (isDarkTheme && !src.includes('white'))\n                img.attr('src', src.replace('systems/lancer/assets/icons', 'systems/lancer/assets/icons/white'));\n            else if (!isDarkTheme && src.includes('white'))\n                img.attr('src', src.replace('systems/lancer/assets/icons/white', 'systems/lancer/assets/icons'));\n        }\n    });\n}\n\nexport function applyThemeToMarkedIcons(html: JQuery<HTMLElement>)\n{\n    const currentTheme = game.settings.get(\"lancer\", \"uiTheme\") as string;\n    const isDarkTheme = LIGHT_MAP[currentTheme] === \"dark\";\n\n    // Swap classes marked by la-icon-swap\n    html.find('.la-icon-swap').each(function ()\n    {\n        const element = $(this);\n        const classes = element.attr('class')?.split(' ') || [];\n        classes.forEach(cls =>\n        {\n            const isDarkClass = cls.startsWith('lancer-') && cls.endsWith('-dark');\n            const isPrimaryClass = cls.startsWith('la-') && cls.endsWith('-primary');\n            if (isDarkClass || isPrimaryClass)\n            {\n                const baseClass = cls.replace(/^(lancer-|la-)|(-dark|-primary)$/g, '');\n                const newClass = isDarkTheme ? `lancer-${baseClass}-dark` : `la-${baseClass}-primary`;\n                element.removeClass(cls).addClass(newClass);\n            }\n        });\n    });\n}","import { SheetStore } from '@/scripts/store/module-store';\n\nexport function trackHook(uuid: string, key: number, value: string)\n{\n    const hooks = SheetStore.get(uuid).trackedHooks;\n    hooks[key] = value;\n    SheetStore.set(uuid, { trackedHooks: hooks });\n}\n\nexport function unregisterTrackedHooks(uuid: string)\n{\n    const hooks = SheetStore.get(uuid).trackedHooks;\n    for (const [key, value] of Object.entries(hooks))\n    {\n        (Hooks.off as any)(value, Number(key)); // dynamic tracked-hook id, outside the typed hook registry\n    }\n    SheetStore.set(uuid, { trackedHooks: {} });\n}","import { SheetStore } from '@/scripts/store/module-store';\nimport { ThemeKey } from '@/enums/ThemeKey';\n\nexport function getThemeKey(uuid: string): ThemeKey | string\n{\n    return SheetStore.get(uuid).currentTheme;\n}\n\nexport function setThemeKey(uuid: string, theme: ThemeKey | string)\n{\n    SheetStore.set(uuid, { currentTheme: theme });\n}","export enum ActiveTab\n{\n    Primary = \"primary\",\n    Secondary = \"secondary\",\n    Tertiary = \"tertiary\",\n    Quaternary = \"quaternary\"\n}","// generated during release, do not modify\n\n/**\n * The current version, as set in package.json.\n * @type {string}\n */\nexport const VERSION = '5.20.0';\nexport const PUBLIC_VERSION = '5';\n","import { PUBLIC_VERSION } from '../version.js';\n\nif (typeof window !== 'undefined')\n\t// @ts-ignore\n\t(window.__svelte ||= { v: new Set() }).v.add(PUBLIC_VERSION);\n","import type { SvelteTooltipProps } from \"@/interfaces/actor/SvelteTooltipProps\";\nimport type { TooltipSettings } from \"@/interfaces/foundry/TooltipSettings\";\nimport Tooltip from \"@/svelte/shared/tooltip/Tooltip.svelte\";\nimport { mount } from \"svelte\";\n\nexport class TooltipFactory\n{\n    // CSS classes need to be applied via the `data-tooltip-class` attribute\n    public static buildTooltip(text: string, header?: string): string \n    {\n        return `\n            ${header\n                ? `<div class=\"la-bckg-primary -fontface-stylized -fontsize4 -upper -padding0\">${header}</div>`\n                : \"\"\n            }\n            <div class=\"la-tooltip__content -fontface-neutral\">\n                ${text}\n            </div>\n        `;\n    }\n\n    // (#5) Locked tooltips (and potentially all tooltips created through the manager) do not \n    // work with modules such as PopOut! A custom solution would have to be rolled out\n    public static renderTooltip(\n        event: MouseEvent,\n        tooltipSettings: TooltipSettings\n    )\n    {\n        const manager = game.tooltip;\n\n        const options: any = {};\n\n        if (tooltipSettings.direction)\n        {\n            options.direction = tooltipSettings.direction;\n        }\n\n        if (tooltipSettings.text)\n        {\n            options.text = tooltipSettings.text;\n        }\n\n        if (tooltipSettings.html)\n        {\n            options.html = tooltipSettings.html;\n        }\n\n        if (tooltipSettings.locked)\n        {\n            options.locked = tooltipSettings.locked;\n        }\n\n        if (tooltipSettings.cssClass)\n        {\n            options.cssClass = tooltipSettings.cssClass;\n        }\n\n        manager.activate(event.currentTarget as HTMLElement, options);\n    }\n\n    // (#5)\n    public static renderTooltipSvelte(\n        event: MouseEvent,\n        props: SvelteTooltipProps,\n        tooltipSettings: TooltipSettings\n    )\n    {\n        const manager = game.tooltip;\n\n        const mountDiv: HTMLElement = document.createElement('div');\n        mountDiv.className = 'la-tooltip-mount -widthfull';\n\n        mount(Tooltip,\n            {\n                target: mountDiv,\n                props: props,\n            }\n        )\n\n        const options: any = {\n            content: mountDiv,\n        };\n\n        if (tooltipSettings.direction)\n        {\n            options.direction = tooltipSettings.direction;\n        }\n\n        if (tooltipSettings.locked)\n        {\n            options.locked = tooltipSettings.locked;\n        }\n\n        if (tooltipSettings.cssClass)\n        {\n            options.cssClass = tooltipSettings.cssClass;\n        }\n\n        manager.activate(event.currentTarget as HTMLElement, options);\n\n        // Observe when this is removed from the DOM\n        const root = mountDiv.parentElement;\n        const observer = new MutationObserver((mutations) =>\n        {\n            mutations.forEach((mutation) =>\n            {\n                if (root && Array.from(mutation.removedNodes).includes(root))\n                {\n                    observer.disconnect();\n                    props.unrenderCallback?.();\n                }\n            });\n        });\n\n        if (root && root.parentNode)\n        {\n            observer.observe(root.parentNode, { childList: true });\n        }\n\n        return root;\n    }\n\n    public static unrenderTooltip(element: HTMLElement | null | undefined)\n    {\n        if (!element)\n            return;\n        const manager = game.tooltip;\n\n        manager.dismissLockedTooltip(element);\n    }\n\n    public static unrenderTooltips()\n    {\n        const manager = game.tooltip;\n\n        manager.dismissLockedTooltips();\n    }\n}","export enum TooltipDirection\n{\n    UP = \"UP\",\n    DOWN = \"DOWN\",\n    LEFT = \"LEFT\",\n    RIGHT = \"RIGHT\",\n    CENTER = \"CENTER\",\n    TOP = \"TOP\"\n}","export enum FlowClass\n{\n    Standard = \"lancer-flow-button\",\n    RollAttack = \"roll-attack\",\n    RollDamage = \"roll-damage\",\n    RollStat = \"roll-stat\",\n    RollHASE = \"roll-stat hase\",\n    RollTech = \"roll-tech\",\n    SendToChat = \"chat-flow-button\",\n    SendEffectToChat = \"effect-flow\",\n    ResetOvercharge = \"overcharge-reset\",\n    CoreActivation = \"activation-flow\",\n    RechargeFeatures = \"charge-macro\",\n    ContextMenu = \"lancer-context-menu\",\n    ContextItem = \"lancer-context-item\",\n    Skill = \"skill-flow\",\n    GeneralControl = \"gen-control\",\n    BondPower = \"bond-power-flow\",\n    BondTallyXP = \"bond-xp-button\", // Please RA, don't use this\n    BondPowerRefresh = \"refresh-powers-button\",\n    DownloadFromCloud = \"cloud-control\",\n    EditText = \"popout-text-edit-button\",\n    DeleteActiveEffect = \"\", // No flow class for this\n    Inventory= \"\", // No flow class for this\n    None = \"NO_FLOW_CLASS\",\n}\n\nexport enum CustomFlowClass\n{\n    SendUnknownToChat = \"SendUnknownToChat\",\n    RunMacro = \"RunMacro\",\n    SkillTriggerOther = \"SkillTriggerOther\",\n}","export enum TextLogIntro\n{\n    Version = 0,\n    Header = 1,\n    Log = 2, \n}","import { getContext, setContext } from \"svelte\";\n\n// One key per independently-mounted Svelte root (see mountComponents in the sheet base classes).\n// Context does not cross separate mount() calls, so this must be set at the top of every\n// top-level mounted component. Descendants of that root can then read it at any depth.\n//\n// This is an attempt to avoid prop drilling without throwing literally everything into a store.\n// Note that this works because we remount every single component on the sheet's render() call (contexts aren't reactive),\n//\n// but idk what we'll do once Lancer implements refreshable data without rerendering as a feature of AppV2.\n// That's a problem for future me\nconst ACTOR_CONTEXT = Symbol(\"actor\");\n\nexport function setActorContext(actor: any): void\n{\n    setContext(ACTOR_CONTEXT, actor);\n}\n\nexport function getActorContext(): any\n{\n    return getContext(ACTOR_CONTEXT);\n}\n\n// For mounting a component with no parent Svelte tree to inherit context from (e.g. ButtonFactory,\n// which mounts directly onto a target element outside any sheet's component hierarchy). Pass the\n// result as the `context` option to svelte's mount() to seed it as if setActorContext(actor) had\n// been called by an ancestor.\nexport function buildActorContext(actor: any): Map<any, any>\n{\n    return new Map([[ACTOR_CONTEXT, actor]]);\n}\n","<script lang=\"ts\">\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n\n    const {\n        children,\n\n        text,\n        extensionText,\n        textStyle,\n        disableCmdline,\n        disableExtension,\n        disableCursor\n    }: TerminalTextProps = $props();\n</script>\n<script lang=\"ts\" module>\n    export const FLOW_BUTTON_STYLE: string = \" -padding1-r -padding0-tb -height5 -letterspacing0 la-text-header la-prmy-header \";\n</script>\n\n<div class=\"la-terminaltext -whitespacenowrap -textoverflowellipsis -textalignleft\n        {textStyle?.join(' ')}\"\n><!--\n--->{#if !disableCmdline}<span class=\"la-cmdline -bold -fadein\">>//: </span>{/if}<!--\n---><span>{#if children}{@render children()}{/if}{text}</span><!--\n--->{#if !disableExtension}<span class=\"la-extension -fontface-stylized -lower -fadein\">{extensionText || `--${getLocalized(\"LA.scan.label\")}`}</span>{/if}<!--\n--->{#if !disableCursor}<span class=\"la-cursor -fontface-stylized -fadein\"></span>{/if}\n</div>","<!-- TODO: refactor into GlyphButton -->\n<script lang=\"ts\">\n    import { getAdvancedState, setAdvancedState } from \"@/scripts/store/advanced\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n\n    type AdvancedButtonProps = {\n        uuid: string;\n    }\n\n    const {\n        uuid,\n\n        style,\n        iconStyle,\n\n        logText,\n        logging,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipClass,\n        tooltipTheme,\n        tooltipDirection,\n    }: AdvancedButtonProps & IconButtonProps & TextLogEventProps & TooltipProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    let advancedOptions = $derived(getAdvancedState(uuid));\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.advanced.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.advanced.tooltip\"));\n\n    function toggleAdvancedOptions(event: MouseEvent)\n    {\n        event.stopPropagation();\n        setAdvancedState(uuid, !advancedOptions);\n    }\n</script>\n<script lang=\"ts\" module>\n    const _DEFAULT_BUTTON = \"-fontsize5\";\n    const _DEFAULT_I = \"-fontsize7 la-text-header\";\n</script>\n\n{#if uuid}\n<button type=\"button\"\n    class=\"{style?.join(' ') || _DEFAULT_BUTTON}\"\n    aria-label={getLocalized(\"LA.advanced.tooltip\")}\n    data-tooltip={tooltipEnabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.LEFT}\n    onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n    onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n    onclick={(event) => toggleAdvancedOptions(event)}\n>\n    <i class=\"mdi {iconStyle?.join(' ') || _DEFAULT_I}\n        {advancedOptions ? 'mdi-toggle-switch' : 'mdi-toggle-switch-off'}\"\n    ></i>\n</button>\n{/if}","<script lang=\"ts\">\n    import type { BoundImageProps } from \"@/interfaces/actor/BoundImageProps\";\n    import { id as moduleID } from '@/module.json';\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { onMount } from \"svelte\";\n\n    const {\n        children,\n        image,\n        uuid,\n        xySetter,\n        yGetter,\n        ySetter,\n        xGetter,\n        xSetter,\n        widthGetter,\n        widthSetter,\n    }: BoundImageProps = $props();\n\n    let advancedOptions = $derived(getAdvancedState(uuid));\n\n    export function resetLocalState()\n    {\n        position.x = 0;\n        position.y = 0;\n        width = 0;\n    }\n\n    // Dragging ---------------------------------------------------------------\n    let dragging = false;\n    let offset = { x: 0, y: 0 };\n    // svelte-ignore state_referenced_locally\n    let position = $state({\n        x: xGetter ? xGetter(uuid) : 0,\n        y: yGetter ? yGetter(uuid) : 0\n    });\n\n    function handlePointerDown(event: PointerEvent)\n    {\n        if (!advancedOptions) return;\n\n        dragging = true;\n\n        offset = {\n            x: event.clientX - position.x,\n            y: event.clientY - position.y\n        };\n    }\n\n    function handlePointerMove(event: PointerEvent)\n    {\n        if (dragging)\n            position = {\n                x: event.clientX - offset.x,\n                y: event.clientY - offset.y\n            };\n    }\n\n    function handlePointerUp(_event: PointerEvent, callback?: () => void)\n    {\n        if (dragging && callback)\n            callback();\n        dragging = false;\n    }\n\n    function handleAssignment(event: PointerEvent)\n    {\n        handlePointerUp(event, () => {\n            // NOTE: Better to just handle these seperately the avoid weird (threading?race?idk) conditions\n            // in any case, it's better to just handle it one call over the network anyway\n            if (xySetter)\n            {\n                xySetter(uuid, position.x, position.y);\n            }\n            if (ySetter)\n            {\n                ySetter(uuid, position.y);\n            }\n            if (xSetter)\n            {\n                xSetter(uuid, position.x);\n            }\n        });\n    }\n\n    // Resizing ---------------------------------------------------------------\n    let containerElement: HTMLDivElement | undefined = $state();\n    let width = $state(widthGetter ? widthGetter(uuid) : 0);\n\n    let saveTimeout: ReturnType<typeof setTimeout> | undefined;\n    function debouncedSave()\n    {\n        if (saveTimeout) clearTimeout(saveTimeout);\n        saveTimeout = setTimeout(() => {\n            if (widthSetter) widthSetter(uuid, width);\n            saveTimeout = undefined;\n        }, 400);\n    }\n\n    // Touch pinch state\n    let pinchStartDist = 0;\n    let pinchStartWidth = 0;\n\n    function getTouchDist(touches: TouchList): number\n    {\n        const dx = touches[1].clientX - touches[0].clientX;\n        const dy = touches[1].clientY - touches[0].clientY;\n        return Math.sqrt(dx * dx + dy * dy);\n    }\n\n    // ------------------------------------------------------------------------\n\n    onMount(() => {\n        if (!containerElement) return;\n\n        if (widthGetter && width === 0)\n            width = containerElement.offsetWidth;\n\n        const onWheel = (event: WheelEvent) =>\n        {\n            if (!advancedOptions || !widthSetter) return;\n            event.preventDefault();\n            width = Math.max(50, width - event.deltaY * 0.5);\n            debouncedSave();\n        };\n\n        const onTouchStart = (event: TouchEvent) =>\n        {\n            if (!advancedOptions || !widthSetter || event.touches.length !== 2) return;\n            event.preventDefault();\n            pinchStartDist = getTouchDist(event.touches);\n            pinchStartWidth = width;\n        };\n\n        const onTouchMove = (event: TouchEvent) =>\n        {\n            if (!advancedOptions || !widthSetter || event.touches.length !== 2) return;\n            event.preventDefault();\n            const scale = getTouchDist(event.touches) / pinchStartDist;\n            width = Math.max(50, Math.round(pinchStartWidth * scale));\n        };\n\n        const onTouchEnd = () =>\n        {\n            if (!advancedOptions || !widthSetter) return;\n            if (saveTimeout) clearTimeout(saveTimeout);\n            widthSetter(uuid, width);\n        };\n\n        containerElement.addEventListener('wheel', onWheel, { passive: false });\n        containerElement.addEventListener('touchstart', onTouchStart, { passive: false });\n        containerElement.addEventListener('touchmove', onTouchMove, { passive: false });\n        containerElement.addEventListener('touchend', onTouchEnd);\n\n        return () =>\n        {\n            if (saveTimeout) clearTimeout(saveTimeout);\n            containerElement?.removeEventListener('wheel', onWheel);\n            containerElement?.removeEventListener('touchstart', onTouchStart);\n            containerElement?.removeEventListener('touchmove', onTouchMove);\n            containerElement?.removeEventListener('touchend', onTouchEnd);\n        };\n    });\n</script>\n<div class=\"la-boundimage -flex1 -heightfull\"\n    style=\"{width > 0 ? `width: ${width}px;` : 'width: 100%;'}\"\n    bind:this={containerElement}\n    >\n    {#if children}\n        {@render children()}\n    {/if}\n    <img\n        class=\"la-boundimage__image -heightfull -overflowhidden -float-r\n            {advancedOptions ? '-pointermove' : ''}\"\n        src={image}\n        alt={`modules/${moduleID}/assets/nodata.png`}\n        style=\"\n            margin-top: { xySetter || ySetter ? position.y : 0 }px;\n            margin-right: { xySetter || xSetter ? -position.x : 0 }px;\n            mask-image: linear-gradient(to bottom, black calc(6.6rem - { position.y }px), transparent calc(10rem - { position.y }px));\n            -webkit-mask-image: linear-gradient(to bottom, black calc(6.6rem - { position.y }px), transparent calc(10rem - { position.y }px));\n            -moz-mask-image: linear-gradient(to bottom, black calc(6.6rem - { position.y }px), transparent calc(10rem - { position.y }px));\"\n        onpointerdown={event => handlePointerDown(event)}\n        onpointermove={event => handlePointerMove(event)}\n        onpointerup={ handleAssignment }\n        onpointerleave={ handleAssignment }\n        draggable={false}\n    />\n</div>\n","import { TextLogIntro } from \"@/enums/TextLogIntro\";\nimport { TextConsoleHook } from \"@/enums/TextConsoleHook\";\nimport { TextLogHook } from \"@/enums/TextLogHook\";\nimport {\n    formatString,\n    getFoundryVersion,\n    getLancerVersion,\n    getLocalized,\n    getModuleVersion,\n    photosensitiveStyling\n} from \"@/scripts/helpers\";\nimport { trackHook } from \"@/scripts/store/hooks\";\nimport type { TextLogEntry } from \"@/interfaces/actor/TextLogEntry\";\n\nconst GLITCHY_CLASS = \"horus--subtle\";\n\nfunction escapeHtml(text: string): string\n{\n    return text\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;');\n}\n\ntype Action =\n    | { kind: 'type'; text: string; charDelay: number; pos: number; className?: string }\n    | { kind: 'pause'; ms: number }\n    | { kind: 'break' }\n    | { kind: 'append'; html: string };\n\ninterface TextWriterOptions\n{\n    cursor?: boolean;\n    cursorChar?: string;\n    speed?: number;\n}\n\nexport class TextWriter\n{\n    private element: HTMLElement;\n    private queue: Action[] = [];\n    private running = false;\n    private timer: ReturnType<typeof setTimeout> | null = null;\n    private committedHTML = '';\n    private currentSegment = '';\n    private currentSegmentClass: string | undefined;\n    private readonly showCursor: boolean;\n    private readonly cursorChar: string;\n    private readonly defaultSpeed: number;\n\n    constructor(el: HTMLElement, options: TextWriterOptions = {})\n    {\n        this.element = el;\n        this.showCursor = options.cursor ?? false;\n        this.cursorChar = options.cursorChar ?? '_';\n        this.defaultSpeed = options.speed ?? 25;\n    }\n\n    type(text: string, options: { delay?: number; className?: string } = {}): this\n    {\n        if (options.delay)\n            this.queue.push({ kind: 'pause', ms: options.delay });\n        this.queue.push({ kind: 'type', text, charDelay: this.defaultSpeed, pos: 0, className: options.className });\n        return this;\n    }\n\n    break(): this\n    {\n        this.queue.push({ kind: 'break' });\n        return this;\n    }\n\n    pause(ms: number): this\n    {\n        this.queue.push({ kind: 'pause', ms });\n        return this;\n    }\n\n    start(): void\n    {\n        if (this.running) return;\n        this.running = true;\n        this.processNext();\n    }\n\n    resetAll(): void\n    {\n        this.reset('');\n    }\n\n    reset(html: string): void\n    {\n        if (this.timer !== null)\n        {\n            clearTimeout(this.timer);\n            this.timer = null;\n        }\n        this.running = false;\n        this.queue = [];\n        this.committedHTML = html;\n        this.currentSegment = '';\n        this.currentSegmentClass = undefined;\n        this.render();\n    }\n\n    setHTML(html: string): void\n    {\n        this.committedHTML = html;\n        this.currentSegment = '';\n        this.currentSegmentClass = undefined;\n        this.render();\n    }\n\n    // Queued rather than applied immediately, so it can't race with an in-progress typewriter\n    // animation (a direct/synchronous commit here would stomp on whatever the queue is mid-typing).\n    appendHTML(html: string): this\n    {\n        this.queue.push({ kind: 'append', html });\n        return this;\n    }\n\n    private render(): void\n    {\n        const content = this.committedHTML\n            + (this.currentSegment ? `<span${this.classAttr(this.currentSegmentClass)}>${escapeHtml(this.currentSegment)}</span>` : '');\n        const cursor = this.showCursor ? `<span class=\"la-textlog__cursor\">${this.cursorChar}</span>` : '';\n        this.element.innerHTML = content + cursor;\n    }\n\n    private classAttr(className: string | undefined): string\n    {\n        return className ? ` class=\"${className}\"` : '';\n    }\n\n    private processNext(): void\n    {\n        if (!this.running || this.queue.length === 0)\n        {\n            this.running = false;\n            return;\n        }\n\n        const item = this.queue[0];\n\n        switch (item.kind)\n        {\n            case 'type':\n            {\n                if (item.text.length === 0)\n                {\n                    this.queue.shift();\n                    this.processNext();\n                    break;\n                }\n                this.currentSegment += item.text[item.pos++];\n                this.currentSegmentClass = item.className;\n                this.render();\n                if (item.pos >= item.text.length)\n                    this.queue.shift();\n                this.timer = setTimeout(() => this.processNext(), item.charDelay);\n                break;\n            }\n\n            case 'pause':\n            {\n                this.queue.shift();\n                this.timer = setTimeout(() => this.processNext(), item.ms);\n                break;\n            }\n\n            case 'break':\n            {\n                this.queue.shift();\n                // Only commit if there's a pending segment to close off. Keeps break() safe to\n                // call defensively (e.g. to flush leftover text before a new line) without ever\n                // inserting a stray blank line.\n                if (this.currentSegment)\n                {\n                    this.committedHTML += `<span${this.classAttr(this.currentSegmentClass)}>${escapeHtml(this.currentSegment)}</span><br>`;\n                    this.currentSegment = '';\n                    this.currentSegmentClass = undefined;\n                    this.render();\n                }\n                // Already-committed content that just happens to not end in a break yet (e.g. a\n                // persistent-only reset() back to buildFinishedHTML's output) still needs closing\n                // off before whatever comes next in the queue.\n                else if (this.committedHTML && !this.committedHTML.endsWith('<br>'))\n                {\n                    this.committedHTML += '<br>';\n                    this.render();\n                }\n                this.processNext();\n                break;\n            }\n\n            case 'append':\n            {\n                this.queue.shift();\n                // Whatever was mid-typing (e.g. `runIntro`'s last line, which never gets a\n                // trailing break()) needs to be closed off before we add anything after it.\n                if (this.currentSegment)\n                {\n                    this.committedHTML += `<span${this.classAttr(this.currentSegmentClass)}>${escapeHtml(this.currentSegment)}</span><br>`;\n                    this.currentSegment = '';\n                    this.currentSegmentClass = undefined;\n                }\n                // For already-committed content that just happens to not end in a\n                // break yet (e.g. `buildFinishedHTML`'s output).\n                if (this.committedHTML && !this.committedHTML.endsWith('<br>'))\n                    this.committedHTML += '<br>';\n                this.committedHTML += item.html;\n                this.render();\n                this.processNext();\n                break;\n            }\n        }\n    }\n}\n\nexport class TextConsoleWriter\n{\n    private writer: TextWriter;\n    private hookID: TextConsoleHook;\n    private hookResetID: TextConsoleHook;\n\n    constructor(component: HTMLElement, hookID: TextConsoleHook, hookResetID: TextConsoleHook)\n    {\n        this.writer = new TextWriter(component, { cursor: true, cursorChar: '_', speed: 15 });\n        this.hookID = hookID;\n        this.hookResetID = hookResetID;\n    }\n\n    public registerHooks(uuid: string): void\n    {\n        // Dynamic, per-instance hook IDs (runtime strings) - outside fvtt-types' typed hook registry.\n        //\n        // hookID/hookResetID are shared by every open sheet of this type, so the emitted sourceUuid\n        // must be checked against this instance's own uuid to avoid reacting to another sheet's event.\n        trackHook(uuid, (Hooks.on as any)(this.hookID, (text: string, sourceUuid: string) =>\n        {\n            if (sourceUuid !== uuid)\n                return;\n            this.writer.resetAll();\n            const lines = text.split(/<br\\s*\\/?>/i);\n            lines.forEach((line, index) =>\n            {\n                this.writer.type(line);\n                if (index < lines.length - 1)\n                    this.writer.break();\n            });\n            this.writer.start();\n        }), this.hookID);\n\n        trackHook(uuid, (Hooks.on as any)(this.hookResetID, (sourceUuid: string) =>\n        {\n            if (sourceUuid !== uuid)\n                return;\n            this.writer.resetAll();\n        }), this.hookResetID);\n    }\n}\n\nexport class TextLogWriter\n{\n    private writer: TextWriter;\n    private hookID: TextLogHook;\n    private hookResetID: TextLogHook;\n    private introType: TextLogIntro | undefined;\n\n    constructor(component: HTMLElement, hookID: TextLogHook, hookResetID: TextLogHook)\n    {\n        this.writer = new TextWriter(component, { cursor: false, speed: 25 });\n        this.hookID = hookID;\n        this.hookResetID = hookResetID;\n    }\n\n    public registerHooks(uuid: string): void\n    {\n        // Dynamic, per-instance hook IDs (runtime strings) - outside fvtt-types' typed hook registry.\n        //\n        // hookID/hookResetID are shared by every open sheet of this type, so the emitted sourceUuid\n        // must be checked against this instance's own uuid to avoid reacting to another sheet's event.\n        trackHook(uuid, (Hooks.on as any)(this.hookID, (text: string, sourceUuid: string, glitchy?: boolean) =>\n        {\n            if (sourceUuid !== uuid)\n                return;\n            // First break is for flushing, second break is an actual break\n            this.writer.break().type(text, { className: glitchy ? photosensitiveStyling(GLITCHY_CLASS) : undefined }).break().start();\n        }), this.hookID);\n\n        trackHook(uuid, (Hooks.on as any)(this.hookResetID, (sourceUuid: string, all: boolean = false) =>\n        {\n            if (sourceUuid !== uuid)\n                return;\n            if (all)\n                this.writer.resetAll();\n            else\n                this.writer.reset(this.buildFinishedHTML(this.introType!));\n        }), this.hookResetID);\n    }\n\n    /**\n     * Instantly renders entries previously sent via sendToTextLog, so a remounted sheet picks back up where it\n     * left off instead of losing everything sent before.\n     *\n     * Queued via appendHTML rather than committed directly, so it plays after (not on top of) an\n     * in-progress runIntro animation instead of corrupting it.\n     * @param entries\n     */\n    public showPersistedEntries(entries: TextLogEntry[]): void\n    {\n        if (!entries.length)\n            return;\n        const html = entries.map(entry =>\n        {\n            const className = entry.glitchy ? photosensitiveStyling(GLITCHY_CLASS) : undefined;\n            return `<span${className ? ` class=\"${className}\"` : ''}>${escapeHtml(entry.text)}</span><br>`;\n        }).join('');\n        this.writer.appendHTML(html).start();\n    }\n\n    private getRandomDelay(): number\n    {\n        return Math.floor(Math.random() * 201);\n    }\n\n    private getFormattedText(introType: TextLogIntro): string\n    {\n        switch (introType)\n        {\n            case TextLogIntro.Version:\n                const template = getLocalized(\"LA.mech.log.version\");\n                return formatString(template, getFoundryVersion(), getLancerVersion(), getModuleVersion());\n            case TextLogIntro.Header:\n                return getLocalized(\"LA.mech.log.cc.welcome\");\n        }\n        return \"\";\n    }\n\n    public runIntro(introType: TextLogIntro): void\n    {\n        this.introType = introType;\n        switch (introType)\n        {\n            case TextLogIntro.Header:\n                this.writer\n                    .type(formatString(\"COMPANION/CONCIERGE UNIT v{0}\", getModuleVersion()))\n                    .break()\n                    .type(\"> INITIALIZING / INICIALIZANDO / 初期化中\")\n                    .type(\" . \", { delay: 200 }).type(\". \", { delay: 200 }).type(\". \", { delay: 200 })\n                    .pause(500)\n                    .break()\n                    .type(\">> OMNINET\", { delay: this.getRandomDelay() })\n                    .pause(this.getRandomDelay())\n                    .type(\" . \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() })\n                    .type(\"CONNECTED\")\n                    .break()\n                    .type(\">> SYSTEMS\", { delay: this.getRandomDelay() })\n                    .pause(this.getRandomDelay())\n                    .type(\" . \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() })\n                    .type(\"ONLINE\")\n                    .break()\n                    .type(\">> WEAPONS\", { delay: this.getRandomDelay() })\n                    .pause(this.getRandomDelay())\n                    .type(\" . \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() }).type(\". \", { delay: this.getRandomDelay() })\n                    .type(\"ARMED\")\n                    .break()\n                    .pause(500)\n                    .type(\"INITIALIZATION COMPLETE / INICIALIZAÇÃO CONCLUÍDA / 初期化完了\", { delay: 0 })\n                    .break()\n                    .type(this.getFormattedText(TextLogIntro.Version))\n                    .break()\n                    .pause(500)\n                    .type(this.getFormattedText(introType))\n                    .start();\n                break;\n        }\n    }\n\n    public setFinished(introType: TextLogIntro): void\n    {\n        this.introType = introType;\n        this.writer.setHTML(this.buildFinishedHTML(introType));\n    }\n\n    private buildFinishedHTML(introType: TextLogIntro): string\n    {\n        switch (introType)\n        {\n            case TextLogIntro.Header:\n                return [\n                    formatString(\"COMPANION/CONCIERGE UNIT v{0}\", getModuleVersion()),\n                    \"> INITIALIZING / INICIALIZANDO / 初期化中\",\n                    \">> OMNINET . . . CONNECTED\",\n                    \">> SYSTEMS . . . ONLINE\",\n                    \">> WEAPONS . . . ARMED\",\n                    \"INITIALIZATION COMPLETE / INICIALIZAÇÃO CONCLUÍDA / 初期化完了\",\n                    this.getFormattedText(TextLogIntro.Version),\n                    this.getFormattedText(introType),\n                ].map(line => `<span>${escapeHtml(line)}</span>`).join('<br>');\n        }\n        return '';\n    }\n}","<!--TODO: translations and add API functionality-->\n<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { getMechSheetLogHeaderEnabled } from \"@/scripts/mech/settings\";\n    import { getTextLogEntries, setIntroRun } from \"@/scripts/store/text-log.js\";\n    import { TextLogWriter, TextConsoleWriter } from \"@/scripts/text-writer.js\";\n    import type { TextLogProps } from \"@/interfaces/actor/TextLogProps\";\n\n    const props = $props();\n    const {\n        style,\n        runIntro,\n        introType,\n        uuid,\n        hookID,\n        hookResetID,\n        logHookID,\n        logHookResetID,\n    }: TextLogProps = $derived(props);\n    let consoleComponent: HTMLElement | null = $state(null);\n    let logComponent: HTMLElement | null = $state(null);\n    let consoleWriter: TextConsoleWriter | null = null;\n    let logWriter: TextLogWriter | null = null;\n\n    const enabled = getMechSheetLogHeaderEnabled();\n\n    onMount(() => \n    {\n        if (!enabled)\n            return;\n        // Setup TextWriter\n        consoleWriter = new TextConsoleWriter(consoleComponent!, hookID, hookResetID);\n        consoleWriter.registerHooks(uuid);\n        logWriter = new TextLogWriter(logComponent!, logHookID, logHookResetID);\n        logWriter.registerHooks(uuid);\n        if (runIntro)\n        {\n            logWriter.runIntro(introType);\n            setIntroRun(uuid, true);\n        }\n        else\n        {\n            logWriter.setFinished(introType);\n        }\n        logWriter.showPersistedEntries(getTextLogEntries(uuid));\n    });\n</script>\n\n{#if enabled}\n<div class=\"la-textlog la-flexrow -justifystart {style?.join(' ')}\">\n    <div class=\"la-flexcol -gap1 la-textlog-left -aligncontentend -overflowhidden -width4\">\n        <div class=\"la-textlog__ruler -flex1 -widthfull {introType ? '' : '-visibilityhidden'}\"></div>\n        <div class=\"la-textlog-left__current -widthfull\"></div>\n    </div>\n    <div class=\"la-flexcol la-textlog-left -justifyend -overflowhidden\">\n        <div\n            class=\"la-textlog__log -flex1 -justifystart -aligncontentend -widthfull\"\n            bind:this={logComponent}\n        ></div>\n        <div class=\"la-textlog__console la-flexrow -flex0 -justifystart -widthfull\">\n            >//:&nbsp;\n            <div\n                class=\"\"\n                bind:this={consoleComponent}\n            >&nbsp;</div>\n        </div>\n    </div>\n    <div class=\"la-flexcol -gap1 la-textlog-right -aligncontentend -overflowhidden -width4\">\n        <div class=\"la-textlog__ruler -flex1 -widthfull {introType ? '' : '-visibilityhidden'}\"></div>\n        <div class=\"la-textlog-right__current -widthfull\"></div>\n    </div>\n</div>\n{/if}","<script lang=\"ts\">\n    import type { Snippet } from \"svelte\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import type { PointerHoverProps } from \"@/interfaces/actor/events/PointerHoverProps\";\n\n    type GlyphButtonProps = {\n        children?: Snippet\n    }\n\n    const {\n        children,\n        \n        style,\n        onClick,\n\n        flowClass,\n        uuid,\n        type,\n        index,\n        rank,\n        path,\n        action,\n        actionValue,\n        disabled,\n        \n        tooltipEnabled,\n        tooltip,\n        tooltipClass,\n        tooltipTheme,\n        tooltipHeader,\n        tooltipDirection,\n\n        logText,\n        logging: loggingEnabled,\n\n        onPointerEnter,\n        onPointerLeave,\n    }: GlyphButtonProps & IconButtonProps & ButtonProps & TooltipProps & TextLogEventProps & PointerHoverProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(tooltip ? TooltipFactory.buildTooltip(tooltip, tooltipHeader) : undefined);\n    const logging = $derived(loggingEnabled && logText);\n\n    function handleOnPointerEnter(event: PointerEvent)\n    {\n        if (onPointerEnter)\n            onPointerEnter();\n\n        if (logging)\n            sendToTextConsole(event, logText!, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function handleOnPointerLeave(event: PointerEvent)\n    {\n        if (onPointerLeave)\n            onPointerLeave();\n\n        if (logging)\n            resetTextConsole(event, actorUuid!);\n        else\n            return undefined;\n    }\n</script>\n\n<button type=\"button\"\n    class=\"\n        {style?.join(' ')}\n        {flowClass}\"\n    data-uuid={uuid}\n    data-type={type}\n    data-index={index}\n    data-rank={rank}\n    data-path={path}\n    data-action={action}\n    data-action-value={actionValue}\n    data-tooltip={tooltipEnabled && !disabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection}\n    onpointerenter={ handleOnPointerEnter }\n    onpointerleave={ handleOnPointerLeave }\n    onclick={onClick}\n    aria-label={tooltip}\n    disabled={disabled}\n>\n{#if children}\n    {@render children()}\n{/if}\n</button>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getLocalized, handleToggleImageSync, isValidVideoContainer } from \"@/scripts/helpers\";\n    import { getTokenImageLock } from \"@/scripts/store/advanced\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n\n    type LockImageButtonProps = {\n        actor: any; \n        style: string; \n        setState: (uuid: string, value: boolean) => void;\n    }\n\n    const {\n        actor,\n        style,\n        setState,\n\n        tooltipEnabled,\n        tooltipDirection,\n\n        logging,\n    } : LockImageButtonProps & TooltipProps & TextLogEventProps = $props();\n\n    const isVideo = $derived(isValidVideoContainer(actor.prototypeToken?.texture.src));\n    const tokenImageLocked = $derived(getTokenImageLock(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n{#if tokenImageLocked}\n    {#if isVideo}    \n        <GlyphButton\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-link-variant-remove\", style]}\n            onClick={event => handleToggleImageSync(event, actor, setState)}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.advanced.link.error\")}\n            tooltipDirection={tooltipDirection || TooltipDirection.UP}\n            logText={getLocalized(\"LA.advanced.link.error\")}\n            logging={logging}\n        />\n    {:else}\n        <GlyphButton\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-link-variant\", style]}\n            onClick={event => handleToggleImageSync(event, actor, setState)}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.advanced.link.tooltip\")}\n            tooltipDirection={tooltipDirection || TooltipDirection.UP}\n            logText={getLocalized(\"LA.advanced.link.tooltip\")}\n            logging={logging}\n        />\n    {/if}\n{:else}\n    <GlyphButton\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-link-variant-off\", style]}\n        onClick={event => handleToggleImageSync(event, actor, setState)}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.advanced.unlink.tooltip\")}\n        tooltipDirection={tooltipDirection || TooltipDirection.UP}\n        logText={getLocalized(\"LA.advanced.unlink.tooltip\")}\n        logging={logging}\n    />\n{/if}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TextLogIntro } from \"@/enums/TextLogIntro\";\n    import { TextConsoleHook } from \"@/enums/TextConsoleHook\";\n    import { TextLogHook } from \"@/enums/TextLogHook\";\n\n    import { browseActorImage, getLocalized, logographicLanguage, photosensitiveStyling } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import {\n        getActorTokenSync,\n        getImageOffsetX,\n        getImageOffsetY,\n        getImageWidth,\n        getMechSheetTooltipEnabled,\n        setActorTokenSync,\n        setImageBatched,\n        setImageOffsetXY,\n        setImageWidth,\n    } from \"@/scripts/mech/settings\";\n    import {\n        getAdvancedState,\n        getTokenImageLock,\n        setTokenImageLock,\n    } from \"@/scripts/store/advanced\";\n    import { getIntroRun, resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    import TerminalText from \"@/svelte/shared/TerminalText.svelte\";\n    import AdvancedButton from \"@/svelte/shared/button/AdvancedButton.svelte\";\n    import BoundImage from \"@/svelte/shared/BoundImage.svelte\";\n    import TextLog from \"@/svelte/shared/TextLog.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LockImageButton from \"@/svelte/shared/button/LockImageButton.svelte\";\n\n    const props = $props();\n    const {\n        actor,\n        pilot\n    }: MechSheetProps = $derived(props);\n    setActorContext(actor);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n\n    const introPlayed = $derived(getIntroRun(actor.uuid));\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const tokenImageLocked = $derived(getTokenImageLock(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    let imageComponent: BoundImage;\n\n    function resetImageSettings(uuid: string, imageComponent: BoundImage)\n    {\n        imageComponent.resetLocalState();\n        setImageBatched(uuid, 0, 0, 0);\n    }\n\n    onMount(() => {\n        setTokenImageLock(actor.uuid, getActorTokenSync(actor.uuid));\n    });\n</script>\n\n<!-- Advanced Options Toggle -->\n{#snippet advancedOptionsToggle()}\n<div\n    class=\"la-settings__island la-flexcol -alignend -padding1-r -positionabsolute -right0 -top0\"\n    style=\"z-index: 2;\"\n>\n    <div\n        class=\"la-flexrow -alignend\"\n    >\n    {#if advancedOptions}\n        <i\n            class=\"mdi mdi-mouse-move-vertical -fontsize6 la-text-header la-prmy-primary\n                {qualityMode ? '-glow-prmy' : ''}\"\n            data-tooltip={TooltipFactory.buildTooltip(getLocalized([\"LA.advanced.imageOffset.tooltip\", \"LA.advanced.imageSize.tooltip\"]))}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.LEFT}\n        ></i>\n        <GlyphButton\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-image-sync -fontsize6 la-text-header -width7 la-prmy-primary la-scdy-header\",\n                qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n            onClick={() => resetImageSettings(actor.uuid, imageComponent)}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.image.reset.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n            logText={getLocalized(\"LA.edit.image.reset.tooltip\")}\n            logging={true}\n        />\n    {/if}\n        <AdvancedButton\n            style={[\"-fontsize5 la-prmy-primary la-scdy-header\",\n            qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n            uuid={actor.uuid}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n    </div>\n{#if advancedOptions}\n    <LockImageButton\n        style=\"-fontsize7 la-text-header la-prmy-primary la-scdy-header\n        {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\"\n        actor={actor}\n        setState={setActorTokenSync}\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.LEFT}\n        logging={true}\n    />\n{#if !tokenImageLocked}\n    <GlyphButton\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-image-edit -fontsize6 la-text-header -width7 la-prmy-primary la-scdy-header\",\n        qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n        onClick={event => browseActorImage(event, actor)}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.image.actor.tooltip\")}\n        tooltipDirection={TooltipDirection.LEFT}\n        logText={getLocalized(\"LA.edit.image.actor.tooltip\")}\n        logging={true}\n    />\n{/if}\n{/if}\n</div>\n{/snippet}\n\n<!-- Mech/Pilot Name -->\n{#snippet identificationMain()}\n<div\n    class=\"la-actorname la-flexcol -padding3-l -padding3-t -widthfull\"\n>\n    <div class=\"la-flexrow -widthfull\">\n        <input type=\"text\"\n            class=\"la-actorname__input la-text-header -fontsize6 -upper -letterspacing1 -textalignleft -textoverflowellipsis\n                charname\"\n            name={\"name\"}\n            value={actor.name}\n            placeholder={getLocalized(\"LA.namePlaceholder\")}\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.mech.name.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        />\n        <span class=\"-fontsizesmall la-text-darken-4 -fontface-stylized\">\n            {getLocalized(\"LA.name.label\")}\n        </span>\n    </div>\n</div>\n{/snippet}\n\n{#snippet identificationSecondary()}\n<div class=\"la-actorname la-flexcol -padding3-l -widthfull -\">\n    <div class=\"la-flexrow -widthfull\">\n        <span role=\"none\"\n            class=\"la-actorname__span la-callsign -widthfull la-text-header -upper -letterspacing0 -fontface-stylized\n                ref set pilot click-open\"\n            data-uuid={pilot?.uuid}\n            data-path={\"system.pilot\"}\n            data-accept-types={\"pilot\"}\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.open.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        >\n            <TerminalText\n                text=\"LL{pilot?.system.level || '?'}\"\n                extensionText={`--${getLocalized('LA.search.label')}`}\n                textStyle={[\"-fontsizemedium la-prmy-header\"]}\n                disableCmdline={true}\n            >\n                <span class=\"-fontsize4\">\n                    {pilot?.system.callsign || getLocalized(\"LA.pilotPlaceholder\")}\n                </span>\n            </TerminalText>\n        </span>\n        <span class=\"-fontsizesmall la-text-darken-4 -fontface-stylized\">\n            {getLocalized(\"LA.pilot.label\")}\n        </span>\n    </div>\n{#if pilot?.system.active_mech?.value?.uuid !== actor.uuid}\n    <div\n        class=\"la-flexrow -widthfull -fontface-stylized -fontsizesmall\n            {photosensitiveStyling('horus--very--subtle')}\"\n    >{getLocalized(\"LA.mech.noPilot.label\")}</div>\n{/if}\n</div>\n{/snippet}\n\n{#snippet actorImage()}\n<BoundImage bind:this={imageComponent}\n    image={actor.img}\n    uuid={actor.uuid}\n    yGetter={getImageOffsetY}\n    xGetter={getImageOffsetX}\n    xySetter={setImageOffsetXY}\n    widthGetter={getImageWidth}\n    widthSetter={setImageWidth}\n></BoundImage>\n{/snippet}\n\n{#snippet textLog()}\n{#if pilot?.system.active_mech?.value?.uuid === actor.uuid}\n<span\n    class=\"la-textlog__wrapper -left0 -positionabsolute -padding1\n        -pointerdisable\"\n>\n    <TextLog\n        style={[\"-widthfull -heightfull -fontface-stylized\", logographic ? \"-fontsize3\" : \"-fontsizemediumer\"]}\n        uuid={actor.uuid}\n        hookID={TextConsoleHook.MechHeader}\n        hookResetID={TextConsoleHook.MechHeaderReset}\n        logHookID={TextLogHook.MechLog}\n        logHookResetID={TextLogHook.MechLogReset}\n        introType={TextLogIntro.Header}\n        runIntro={!introPlayed}\n    />\n</span>\n{/if}\n{/snippet}\n\n<!-- Header -->\n<div\n    class=\"la-header-content -positionrelative -heightfull -overflowhidden -aligncontentstart\"\n    style=\"display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto auto;\"\n>\n    {@render advancedOptionsToggle()}\n    <div\n        class=\"-positionrelative -alignstart -overflowhidden\"\n        style=\"grid-area: 1 / 1; z-index: 0;\"\n    >\n        {@render identificationMain()}\n    </div>\n\n    <hr\n        class=\"la-divider-h -spacemedium -padding0-b la-bckg-header\"\n        style=\"grid-area: 2 / 1 / 2 / -1; z-index: 1;\"\n    />\n\n    <div\n        class=\"-positionrelative -overflowhidden\"\n        style=\"grid-area: 3 / 1; z-index: 0;\"\n    >\n        {@render identificationSecondary()}\n    </div>\n\n    <div\n        class=\"-positionabsolute -widthhalf -right0 -top0\"\n        style=\"z-index: 1;\"\n    >\n        {@render actorImage()}\n    </div>\n\n    {@render textLog()}\n</div>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { StatusBarProps } from \"@/interfaces/actor/StatusBarProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { handleRelativeDataInput } from \"@/scripts/helpers\";\n\n    const {\n        currentValue,\n        maxValue,\n        currentValueSecondary,\n        maxValueSecondary,\n        currentValueTertiary,\n        maxValueTertiary,\n        name,\n        nameStyle,\n        dataName,\n        barStyle,\n        barEditStyle,\n        barStyleSecondary,\n        barEditStyleSecondary,\n        barStyleTertiary,\n        barEditStyleTertiary,\n        textStyle,\n        clipPath,\n        editSecondary,\n        editTertiary,\n\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme,\n        tooltipDirection,\n        tooltip,\n        tooltipHeader,\n    } : StatusBarProps & TooltipProps = $props();\n    let editing = $state(false);\n\n    const tip = $derived(tooltip ? TooltipFactory.buildTooltip(tooltip, tooltipHeader) : undefined);\n</script>\n\n<div class=\"la-statusbar la-flexrow -fontsizemedium -gap2 {textStyle?.join(' ')}\">\n    {#if name}\n    <span class=\"la-damage__span -fontsizesmall -flexbasis13 -textalignright\n            {nameStyle?.join(' ')}\"\n        data-tooltip={tooltipEnabled ? tip : undefined}\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection ? tooltipDirection : \"RIGHT\" }\n    ><!--\n    --->{name}<!--\n---></span>\n    {/if}\n    <div class=\"la-bar-h la-bckg-darken-3 -flex1 -positionrelative -widthfull -height3 -overflowhidden {clipPath}\">\n        <div class=\"la-bar-h-progress la-flexrow -widthfull -heightfull\">\n            <input type=\"text\"\n                class=\"la-bar-h-progress__input -widthfull -heightfull -positionrelative -textaligncenter\n                    {editing ? textStyle?.join(' ') : 'la-text-transparent'}\"\n                name=\"{dataName}\"\n                data-dtype=\"Number\" \n                value=\"{currentValue}\"\n                onfocus={(event) => {event.currentTarget.select(); editing=true;}}\n                onblur={() => {editing=false;}}\n                onchange={(event) => handleRelativeDataInput(event, currentValue)}\n            >\n            <span \n                class=\"la-bar-h-progress__span -lineheight3 -positionabsolute -pointerdisable\n                    {editing ? '-visibilityhidden' : ''}\"\n            >\n                {currentValue}/{maxValue}\n            </span>\n        </div>\n        <div \n            class=\"la-bar-h-progress la-bar-h-current -positionabsolute -top0 -heightfull \n                {editing && barEditStyle\n                    ? `${barEditStyle?.join(' ')} -pulse-bckg-prmy -fast`\n                    : barStyle?.join(' ')}\"\n            style=\"--la-percent:{currentValue / maxValue * 100}%\"\n        ></div>\n        {#if currentValueSecondary && maxValueSecondary}\n        <div \n            class=\"la-bar-h-progress -secondary la-bar-h-current -positionabsolute -top0 -heightfull \n                {editSecondary && barEditStyleSecondary \n                    ? `${barEditStyleSecondary?.join(' ')} -pulse-bckg-prmy -fast`\n                    : barStyleSecondary?.join(' ')}\"\n            style=\"--la-percent:{currentValueSecondary / maxValueSecondary * 100}%\"\n        ></div>\n        {/if}\n        {#if currentValueTertiary && maxValueTertiary}\n        <div \n            class=\"la-bar-h-progress -tertiary la-bar-h-current -positionabsolute -top0 -heightfull \n                {editTertiary && barEditStyleTertiary \n                    ? `${barEditStyleTertiary?.join(' ')} -pulse-bckg-prmy -fast`\n                    : barStyleTertiary?.join(' ')}\"\n            style=\"--la-percent:{currentValueTertiary / maxValueTertiary * 100}%\"\n        ></div>\n        {/if}\n    </div>\n</div>","export enum EditMode\n{\n    Subtract,\n    Add,\n    Set,\n}","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { EditMode } from \"@/enums/EditMode\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import type { ContentSidesProps } from \"@/interfaces/actor/decoration/ContentSidesProps\";\n    import type { PointerClickProps } from \"@/interfaces/actor/events/PointerClickProps\";\n    import type { StatComboProps } from \"@/interfaces/actor/StatComboProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n\n    const {\n        icon,\n        label,\n        value,\n        valuePath,\n        outerStyle,\n        innerStyle,\n        topStyle,\n        bottomStyle,\n        editable,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        onPointerClick,\n\n        contentLeft,\n        contentRight,\n    }: StatComboProps & TooltipProps & PointerClickProps & ContentSidesProps = $props();\n\n    const tip = $derived(tooltip ? TooltipFactory.buildTooltip(tooltip, tooltipHeader) : undefined);\n\n    function handleSubtract(event: MouseEvent)\n    {\n        if (onPointerClick && valuePath && event.currentTarget instanceof HTMLElement)\n            onPointerClick(event as MouseEvent & { currentTarget: EventTarget & HTMLElement }, value, valuePath, EditMode.Subtract);\n    }\n\n    function handleAddition(event: MouseEvent)\n    {\n        if (onPointerClick && valuePath && event.currentTarget instanceof HTMLElement)\n            onPointerClick(event as MouseEvent & { currentTarget: EventTarget & HTMLElement }, value, valuePath, EditMode.Add);\n    }\n</script>\n\n{#snippet renderEditable()}\n<div class=\"-widthfull -positionrelative\">\n    <div class=\"la-flexrow {editable ? '' : '-displaynone'}\n            {topStyle?.join(' ') || '-fontface-neutral'}\"\n    >\n        <GlyphButton\n            style={[\"la-bckg-secondary -width3 clicker-minus-button input-update\"]}\n            flowClass={FlowClass.None}\n            tooltipEnabled={false}\n            onClick={handleSubtract}\n        >-</GlyphButton>\n        <input type=\"number\"\n            class=\"la-text-text -width3ch -height3\"\n            name={valuePath}\n            value={value}\n            data-dtype={\"Number\"}\n            onfocus={event => event.currentTarget.select()}\n        />\n        <GlyphButton\n            style={[\"la-bckg-secondary -width3 clicker-plus-button input-update\"]}\n            flowClass={FlowClass.None}\n            tooltipEnabled={false}\n            onClick={handleAddition}\n        >+</GlyphButton>\n    </div>\n    <span class=\"-widthfull\n            {editable ? '-displaynone' : ''}\n            {topStyle?.join(' ') || '-fontface-neutral'}\"\n    >{value}</span>\n</div>\n{/snippet}\n\n<div class=\"la-shortstat la-flexrow {outerStyle?.join(' ')}\">\n    <i class=\"{icon}\"></i>\n    {#if contentLeft}\n        {@render contentLeft()}\n    {/if}\n    <div class=\"la-flexcol {innerStyle?.join(' ')}\"\n        data-tooltip={tooltipEnabled && !editable ? tip : undefined}\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection ? tooltipDirection : \"RIGHT\" }\n    >\n    {#if valuePath != undefined && value != undefined && editable != undefined}\n        {@render renderEditable()}\n    {:else}\n        <span class=\"-widthfull\n                {topStyle?.join(' ') || '-fontface-neutral'}\"\n        >{value}</span>\n    {/if}\n        <span class=\"\n                {bottomStyle?.join(' ')}\"\n        >{label}</span>\n    </div>\n    {#if contentRight}\n        {@render contentRight()}\n    {/if}\n</div>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        system,\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme,\n    }: any = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = TooltipFactory.buildTooltip(getLocalized(\"LA.mech.core.available.tooltip\"));\n    const qualityMode = getExtraEffectsEnabled();\n</script>\n\n<label\n    class=\"mdi -fontsize8 -pointercursor\n             {system.core_energy\n             ? 'mdi-battery-high la-text-system' + (qualityMode\n                ? ' -pulse-glow-prmy la-prmy-warning'\n                : '')\n             : 'mdi-battery-off-outline la-text-repcap'}\"\n    data-tooltip={tooltipEnabled ? tip : undefined}\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={TooltipDirection.RIGHT}\n    onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.mech.core.available.tooltip\"), actorUuid!) }\n    onpointerleave={ event => resetTextConsole(event, actorUuid!) }\n>\n    <input\n        name=\"system.core_energy\"\n        type=\"checkbox\"\n        data-dtype=\"Boolean\"\n        style=\"display: none\"\n        bind:checked={system.core_energy}\n    />\n</label>","export abstract class FlowBase\n{\n    private static instances: Map<new () => FlowBase, FlowBase> = new Map();\n\n    protected constructor()\n    {\n        const constructor = this.constructor as new () => FlowBase;\n        if (FlowBase.instances.has(constructor))\n        {\n            throw new Error(\"Lancer Alternative Sheets: Use getInstance() to access the instance.\");\n        }\n        FlowBase.instances.set(constructor, this);\n    }\n\n    static getInstance<T extends FlowBase>(this: new () => T): T\n    {\n        if (!FlowBase.instances.has(this))\n        {\n            FlowBase.instances.set(this, new this());\n        }\n        return FlowBase.instances.get(this) as T;\n    }\n\n    abstract setupFlow(): any;\n    abstract setupFlowSteps(): any[];\n    abstract startFlow(uuid: string, data: any): void;\n}","import { CustomFlowClass } from \"@/enums/FlowClass\";\nimport type { FlowState } from \"@/types/lancer\";\nimport type { UUIDData } from \"@/interfaces/flows/UUIDData\";\nimport { Logger } from \"@/classes/Logger\";\nimport { FlowBase } from \"./FlowBase\";\n\n// Boiler plate mostly and an example of how this module extends flows\nexport class RunMacroBase extends FlowBase\n{\n    public constructor() { super(); }\n\n    setupFlow()\n    {\n        const RunMacro = class extends (game.lancer.Flow as any)<UUIDData>\n        {\n            static steps = [\"runMacroStep\"];\n\n            constructor(uuid: string, data: UUIDData)\n            {\n                super(uuid, data);\n            }\n        }\n\n        // Export the SendUnknownToChat class\n        return RunMacro;\n    }\n\n    setupFlowSteps(): any[]\n    {\n        return [\n            this.runMacroStep,\n        ];\n    }\n\n    /**\n     * Starts the flow by creating an instance of the `SendUnknownToChat` class and beginning the flow.\n     *\n     * @param {string} uuid - All flows require a UUID, though not all will make use of it. The matching item will be included in the data when sent.\n     * @param {any} data - The data to pass to the flow\n     */\n    startFlow(uuid: string, data: UUIDData): void\n    {\n        const flows = game.lancer.flows as Map<string, any>;\n        // UUID doesn't actually matter here, but flows require it\n        let flow = new (flows.get(CustomFlowClass.RunMacro))(\n            uuid, \n            data\n        );\n\n        flow.begin();\n    }\n\n    async runMacroStep(state: FlowState<UUIDData>): Promise<boolean>\n    {\n        if (!state.data?.uuid)\n        {\n            Logger.error(`Missing UUID passed to ${this.runMacroStep.name}.`);\n            return false;\n        }\n\n        fromUuid(state.data.uuid).then((item) => \n        {\n            (item as Macro).execute();\n        });\n        \n        return true;\n    }\n}\n","<script lang=\"ts\">\n    import { getLocalized, randomExtension } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n\n    import TerminalText, { FLOW_BUTTON_STYLE } from \"@/svelte/shared/TerminalText.svelte\";\n\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n\n    const {\n        style,\n        onClick,\n\n        uuid,\n        flowType,\n        flowArgs,\n        flowClass,\n        path,\n        \n        text,\n        textStyle,\n\n        tooltipEnabled,\n        tooltipHeader,\n        tooltip,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        disableSlide,\n        disableCmdline,\n        disableExtension,\n        disableCursor,\n\n        logText,\n        logging,\n    } : IconButtonProps & ButtonProps & TooltipProps & TerminalTextProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.flow.tooltip\"));\n</script>\n<script lang=\"ts\" module>\n    export const FLOW_BUTTON_DEFAULT = () => \" clipped-bot-alt la-bckg-secondary -widthfull -overflowhidden -lineheight3 -padding0-lr \";\n</script>\n\n<button \n    type=\"button\"\n    class=\"-upper\n        {disableSlide || 'la-flow'} \n        {style?.join(' ') || FLOW_BUTTON_DEFAULT()}\n        {flowClass || ''}\"\n    data-uuid={uuid}\n    data-flow-type={flowType}\n    data-flow-args={flowArgs}\n    data-path={path}\n    data-tooltip={tooltipEnabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || 'RIGHT'}\n    onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n    onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n    onclick={(event) => onClick && onClick(event)}\n    aria-label={text}\n>\n    <TerminalText\n        text={text}\n        extensionText={randomExtension()}\n        textStyle={textStyle || [FLOW_BUTTON_STYLE]}\n        disableCmdline={disableCmdline}\n        disableExtension={disableExtension}\n        disableCursor={disableCursor}\n    />\n</button>","\nimport { mount } from \"svelte\";\nimport type { UUIDData } from \"@/interfaces/flows/UUIDData\";\nimport { SystemButton } from \"@/enums/SystemButton\";\nimport { CustomFlowClass, FlowClass } from \"@/enums/FlowClass\";\nimport { RunMacroBase } from \"@/classes/flows/RunMacro\";\nimport { Logger } from \"@/classes/Logger\";\nimport { formatString, getCurrentOvercharge, getLocalized } from \"@/scripts/helpers\";\nimport { buildActorContext } from \"@/scripts/context\";\nimport FlowButton from '@/svelte/shared/button/FlowButton.svelte';\n\n/**\n * A factory class for creating and mounting buttons onto a target HTML element.\n */\nexport class ButtonFactory\n{\n    /**\n     * Builds and mounts a button onto the specified target element.\n     *\n     * @param target - The HTML element where the button will be mounted.\n     * @param ownerUUID - The UUID of the actor that owns the button.\n     * @param build - An optional parameter that determines the type of button to build.\n     *                If provided as a `SystemButton` enum, it configures the button accordingly.\n     *                If provided as a string that does not match a `SystemButton` enum, it is assumed to be a macro's UUID.\n     */\n    public static buildFlowButton(target: HTMLElement, ownerUUID: string, build: SystemButton | string): void\n    {\n        if (Object.values(SystemButton).includes(build as SystemButton))\n        {\n            const data = this.getSystemButtonData(build as SystemButton);\n            this.buildSystemButton(target, ownerUUID, build as SystemButton, data.label, data.tip, data.tipHeader);\n        } \n        else\n        {\n            this.buildMacroButton(target, ownerUUID, build);\n        }\n    }\n\n    public static getSystemButtonData(build: SystemButton | string): { label: string, tip: string, tipHeader: string | undefined }\n    {\n        return {\n            label: this.getSystemButtonLabel(build),\n            tip: this.getSystemButtonTip(build),\n            tipHeader: this.getSystemButtonTipHeader(build),\n        };\n    }\n\n    public static getSystemButtonLabel(build: SystemButton | string): string\n    {\n        const labels: Record<string, string> = {\n            [SystemButton.Stabilize]: \"LA.flow.stabilize.label\",\n            [SystemButton.Overcharge]: \"LA.flow.overcharge.label\",\n            [SystemButton.BasicAttack]: \"LA.flow.rollAttack.label\",\n            [SystemButton.Damage]: \"LA.flow.rollDamage.label\",\n            [SystemButton.TechAttack]: \"LA.flow.rollTechAttack.label\",\n            [SystemButton.SkillTriggerOther]: \"LA.flow.skillOther.label\",\n        };\n        return getLocalized(labels[build] || \"LA.placeholder\");\n    }\n\n    public static getSystemButtonTip(build: SystemButton | string, ownerUUID?: string): string\n    {\n        if (build === SystemButton.Overcharge && ownerUUID)\n        {\n            const actor = fromUuidSync(ownerUUID) as any;\n            if (actor && actor.type === \"mech\")\n            {\n                return formatString(getLocalized(\"LA.flow.overcharge.tooltip\"), getCurrentOvercharge(actor));\n            }\n            Logger.error(\"Actor required to get overcharge sequence for tooltip.\");\n        }\n        const tips: Record<string, string> = {\n            [SystemButton.Stabilize]: \"LA.flow.stabilize.tooltip\",\n            [SystemButton.Overcharge]: \"LA.flow.overcharge.tooltip\",\n            [SystemButton.BasicAttack]: \"LA.flow.rollAttack.tooltip\",\n            [SystemButton.Damage]: \"LA.flow.rollDamage.tooltip\",\n            [SystemButton.TechAttack]: \"LA.flow.rollTechAttack.tooltip\",\n            [SystemButton.SkillTriggerOther]: \"LA.flow.skillOther.tooltip\",\n        };\n        return getLocalized(tips[build] || \"LA.flow.tooltip\");\n    }\n\n    public static getSystemButtonTipHeader(build: SystemButton | string): string | undefined\n    {\n        const headers: Partial<Record<string, string>> = {\n            [SystemButton.Stabilize]: \"LA.action.full.label\",\n            [SystemButton.Overcharge]: \"LA.action.overcharge.label\",\n            [SystemButton.SkillTriggerOther]: \"LA.pilot.skillTrigger.label\",\n        };\n        return headers[build] ? getLocalized(headers[build]!) : undefined;\n    }\n\n    private static buildSystemButton(\n        target: HTMLElement, ownerUUID: string, type: SystemButton,\n        label: string, tip: string, tipHeader: string | undefined): void\n    {\n        const actor = fromUuidSync(ownerUUID) as any;\n        mount(FlowButton, {\n            target: target,\n            context: buildActorContext(actor),\n            props: {\n                text: label,\n\n                flowClass: FlowClass.Standard,\n                uuid: ownerUUID,\n                flowType: type,\n\n                tooltip: tip,\n                tooltipHeader: tipHeader,\n                logText: tip,\n                logging: true,\n            }\n        });\n    }\n\n    private static buildMacroButton(\n        target: HTMLElement, ownerUUID: string, macroUUID: string): void\n    {\n        function onClickHandler(ownerUUID: string, macroUUID: string)\n        {\n            let macroData = {\n                uuid: macroUUID,\n            } as UUIDData;\n            RunMacroBase.getInstance().startFlow(ownerUUID, macroData);\n        }\n\n        const actor = fromUuidSync(ownerUUID) as any;\n        // Mount the button onto the element\n        fromUuid(macroUUID).then((item) =>\n        {\n            // Build a macro button\n            mount(FlowButton, {\n                target: target,\n                context: buildActorContext(actor),\n                props: {\n                    text: item?.name || getLocalized(\"LA.placeholder\"),\n                    flowClass: CustomFlowClass.RunMacro,\n                    onClick: () => onClickHandler(ownerUUID, macroUUID),\n                    logging: true,\n                }\n            });\n        });\n    }\n}","import { CustomFlowClass } from \"@/enums/FlowClass\";\nimport { getLocalized } from \"@/scripts/helpers\";\nimport { FlowBase } from \"./FlowBase\";\n\n// Boiler plate mostly and an example of how this module extends flows\nexport class SkillTriggerOtherBase extends FlowBase\n{\n    public constructor() { super(); }\n\n    setupFlow()\n    {\n        const SkillTriggerOther = class extends (game.lancer.Flow as any)<any>\n        {\n            static steps = [\"initStatRollData\", \"showStatRollHUD\", \"rollCheck\", \"printStatRollCard\"];\n\n            constructor(uuid: string, _data: any)\n            {\n                super(uuid, {\n                    title: getLocalized(\"LA.pilot.skillTrigger.label\"),\n                    path: \"system.__generic_skill_trigger\", // This should never resolve to anything\n                    roll_str: \"1d20\",\n                });\n            }\n        }\n\n        return SkillTriggerOther;\n    }\n\n    setupFlowSteps(): any[]\n    {\n        return [];\n    }\n\n    /**\n     * Starts the flow by creating an instance of the `SkillTriggerOther` class and beginning the flow.\n     *\n     * @param {string} uuid - All flows require a UUID, though not all will make use of it. The matching item will be included in the data when sent.\n     * @param {any} data - The data to pass to the flow\n     */\n    startFlow(uuid: string, data: any): void\n    {\n        const flows = game.lancer.flows as Map<string, any>;\n        let flow = new (flows.get(CustomFlowClass.SkillTriggerOther))(\n            uuid,\n            data\n        );\n        \n        flow.begin();\n    }\n}\n","// Lancer Alternative Sheets data types for Foundry systems\nexport enum LADataType\n{\n    Sorting = \"LASort\",\n}","<!-- Wrapper handle for sorting -->\n<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { DragDropHandleProps } from \"@/interfaces/dragdrop/DragDropHandleProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    const {\n        children,\n        index,\n        root,\n        \n        data,\n        style,\n        iconStyle,\n\n        onDragStart,\n        onDrop,\n        onDropError,\n        onDelete,\n\n        disabled,\n        deleteDisabled,\n\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        logging,\n    }: DragDropHandleProps & TooltipProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    let component: HTMLElement | null = $state(null);\n\n    const deleteTip = TooltipFactory.buildTooltip(getLocalized(\"LA.delete.tooltip\"));\n\n    function handleDragStart(event: DragEvent): void \n    {\n        try \n        {\n            const jsonData = JSON.stringify(data);\n            event.dataTransfer?.setData('text/plain', jsonData);\n            onDragStart?.(event, data);\n        } \n        catch (error) \n        {\n            Logger.error('Failed to handle drag start', error);\n        }\n    }\n\n    function handleDrop(event: DragEvent) \n    {\n        event.preventDefault();\n        const dropData = event.dataTransfer?.getData('text/plain');\n        if (!dropData) return;\n\n        try \n        {\n            const obj = JSON.parse(dropData);\n            if (obj.index !== index) \n            {\n                const eventTarget = event.target as HTMLElement;\n                // Do an additional check just in case this was being dropped\n                // on a completely different root element that is listening for drops\n                if (component && eventTarget && root &&\n                    root.contains(component) && root.contains(eventTarget)) \n                {\n                    onDrop?.(event, obj, data);\n                }\n                else \n                {\n                    onDropError?.(event, obj);\n                }\n            }\n        } \n        catch (error) \n        {\n            Logger.error('Failed to parse drop data', error);\n        }\n    }\n\n    function handleOnDelete(event: MouseEvent) \n    {\n        event.stopPropagation();\n        onDelete?.(event);\n    }\n</script>\n\n<div role=\"none\"\n    class=\"la-flexrow -widthfull -aligncenter -positionrelative\n        {style?.join(' ')}\"\n    ondragstart={handleDragStart}\n    ondrop={handleDrop}\n    draggable={!disabled}\n    bind:this={component}\n>\n{#if !disabled}\n    <i role=\"none\"\n        class=\"fas fa-grip-lines -positionabsolute -left0 -pointergrab la-prmy-primary -glow-prmy-hover {iconStyle?.join(' ')}\"\n        onpointerenter={ logging ? event => sendToTextConsole(event, getLocalized(\"LA.advanced.reorderMacro.tooltip\"), actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        style=\"z-index: 1;\"\n    ></i>\n{/if}\n{#if children}\n    {@render children()}\n{/if}\n{#if !disabled && !deleteDisabled}\n    <button type=\"button\"\n        class=\"mdi mdi-close-thick -positionabsolute -right0 la-prmy-error -glow-prmy-hover {iconStyle?.join(' ')}\"\n        onpointerenter={ logging ? event => sendToTextConsole(event, getLocalized(\"LA.delete.tooltip\"), actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        onclick={handleOnDelete}\n        data-tooltip={deleteTip}\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection || TooltipDirection.RIGHT}\n        aria-label={getLocalized(\"LA.delete.tooltip\")}\n    ></button>\n{/if}\n</div>","<script lang=\"ts\">\n    // This is effectively only used in `MacroDropBox.svelte`\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n\n    interface SkillTriggerButtonProps\n    {\n        item: any;\n        buttonStyle: Array<string>;\n        buttonTextStyle: Array<string>;\n    }\n\n    const {\n        item,\n        buttonStyle,\n        buttonTextStyle,\n\n        tooltipEnabled,\n        tooltipTheme,\n        logging,\n    } : SkillTriggerButtonProps & TooltipProps & TextLogEventProps = $props();\n</script>\n\n<div class=\"la-skilltrigger la-flexrow -justifyend -widthfull\">\n    <FlowButton\n        style={[...(buttonStyle || [])]}\n        textStyle={[...(buttonTextStyle || [])]}\n        text={item.name}\n        flowClass={FlowClass.Skill}\n        uuid={item.uuid}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={tooltipTheme}\n        tooltipHeader={getLocalized(\"LA.pilot.skillTrigger.label\")}\n        tooltip={item.system.description}\n        logText={item.system.description}\n        logging={logging}\n    />\n    <span class=\"la-skilltrigger__span -bordersround-rtb -small la-brdr-secondary la-bckg-darken-2\">\n        <span class=\"la-skilltrigger__inner -bordersround-rtb -small la-brdr-darken-2 la-text-text -fontsize4 -fontface-stylized -textaligncenter -overflowhidden -padding0-lr\">\n        {#if item.system.curr_rank !== 0}\n            {item.system.curr_rank > 0 ? `+${item.system.curr_rank * 2}` : `-${item.system.curr_rank * 2}`}\n        {:else}\n            &nbsp;0\n        {/if}\n        </span>\n    </span>\n</div>","<script lang=\"ts\">\n    import { onMount } from 'svelte';\n    import { resetTextConsole, sendToTextConsole } from '@/scripts/store/text-log';\n    import { getActorContext } from '@/scripts/context';\n    import type { MacroDropBoxProps } from '@/interfaces/actor/dragdrop/MacroDropBoxProps';\n    import type { TooltipProps } from '@/interfaces/actor/TooltipProps';\n    import type { TextLogEventProps } from '@/interfaces/actor/TextLogEventProps';\n    import { Logger } from \"@/classes/Logger\";\n    import { TooltipFactory } from '@/classes/TooltipFactory';\n    import { ButtonFactory } from '@/classes/ButtonFactory';\n    import { RunMacroBase } from '@/classes/flows/RunMacro';\n    import { SkillTriggerOtherBase } from '@/classes/flows/SkillTriggerOther';\n    import { getCSSDocumentTheme } from '@/scripts/theme';\n    import { CustomFlowClass, FlowClass } from \"@/enums/FlowClass\";\n    import { LADataType } from '@/enums/LADataType';\n    import { SystemButton } from '@/enums/SystemButton';\n    import { TooltipDirection } from '@/enums/TooltipDirection';\n    import { getLocalized } from '@/scripts/helpers';\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import DragDropHandle from '@/svelte/shared/dragdrop/DragDropHandle.svelte';\n    import SkillTriggerButton from '@/svelte/shared/button/SkillTriggerButton.svelte';\n    import { FLOW_BUTTON_STYLE } from '@/svelte/shared/TerminalText.svelte';\n\n    const {\n        uuid,\n        getExes,\n        setExes,\n        hintDropArea,\n        allowDrop,\n\n        iconStyle,\n        buttonStyle,\n        buttonTextStyle,\n        innerStyle,\n\n        tooltipHeader,\n        tooltipClass,\n        tooltipDirection,\n        tooltipEnabled,\n\n        logging,\n    }: MacroDropBoxProps & TooltipProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    interface LocalDropData { type: string; index: number; }\n\n    let component: HTMLElement | null = $state(null);\n    // svelte-ignore state_referenced_locally\n    let executables = $state(getExes);\n\n    const systemTypes = Object.values(SystemButton);\n    const theme = $derived(getCSSDocumentTheme(uuid))\n\n    const tipMain = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.addMacro.tooltip.0\"), tooltipHeader));\n    const tipAlt = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.addMacro.tooltip.1\"), tooltipHeader));\n    const logMain = getLocalized(\"LA.advanced.addMacro.tooltip.0\");\n    const logAlt = getLocalized(\"LA.advanced.addMacro.tooltip.1\");\n    const log = $derived(allowDrop ? logAlt : logMain);\n\n    onMount(() => {\n        if (component)\n        {\n            macroDropHandler.bind(component);\n        }\n    });\n    \n    function isSystemFlow(item: string) \n    {\n        return systemTypes.includes(item as SystemButton);\n    }\n\n    function isSkillTrigger(item: string) \n    {\n        return (fromUuidSync(item) as any)?.type === \"skill\";\n    }\n\n    function handleFlowDrop(\n        _event: DragEvent, \n        dropData: LocalDropData, \n        thisData: LocalDropData)\n    {\n        if (dropData.type === LADataType.Sorting)\n        {\n            const [movedItem] = executables.splice(dropData.index, 1);\n            executables.splice(thisData.index, 0, movedItem);\n            setExes(uuid, executables);\n        }\n    }\n\n    function handleDelete(event: MouseEvent, index: number)\n    {\n        event.stopPropagation();\n        executables.splice(index, 1);\n        setExes(uuid, executables);\n    }\n\n    // Foundry drag and drop handler -------------------------------------------------\n    // Drag and drop handler for Foundry document items\n    const macroDropHandler = new foundry.applications.ux.DragDrop.implementation({\n        dropSelector: \".macro-droppable\",\n        callbacks: {\n            drop: (event) => handleMacroDocumentDrop(event),\n        }\n    });\n\n    function handleMacroDocumentDrop(event: DragEvent)\n    {\n        if (!allowDrop) return;\n        \n        const data = event.dataTransfer?.getData(\"text/plain\");\n        if (!data) return;\n\n        const obj = JSON.parse(data);\n        // TODO: Handle dropping flows\n        switch (obj.type)\n        {\n            case \"Macro\":\n                executables.push(obj.uuid);\n                setExes(uuid, executables);\n                break;\n            case LADataType.Sorting:\n                break;\n            default:\n                Logger.log(\"Unsupported drop type\", obj);\n        }\n    }\n</script>\n<div bind:this={component}\n    class=\"la-flexcol -widthfull\n    {hintDropArea ? '-divider la-prmy-accent' : ''}\"\n>\n{#if hintDropArea}\n    {#if allowDrop}\n        <div role=\"none\"\n            class=\"la-flexrow -justifybetween -widthfull -upper -fontsizesmall -letterspacing0 -padding0-lr\"\n            onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n            onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        >\n            <i class=\"mdi mdi-arrow-down-left\"></i>\n            <span>\n                {getLocalized(\"LA.advanced.addMacro.hint\")}\n            </span>\n            <i class=\"mdi mdi-arrow-down-right\"></i>\n        </div>\n    {:else}\n        <span class=\"la-prmy-transparent -fontsizesmall\">&nbsp;</span>\n    {/if}\n{/if}\n    <div class=\"la-macroflows la-dropshadow la-flexcol -widthfull\n        {innerStyle?.join(' ')}\n        macro-droppable\"\n    >\n    {#if executables.length}\n    <!-- \n    `type` will be a string (e.g \"Overcharge\") if a system flow\n    or a UUID if a macro or skill trigger.  \n    -->\n    {#each executables as type, index}\n        <DragDropHandle\n            index={index}\n            root={component}\n            data={{type: LADataType.Sorting, index}}\n            style={[\"-justifyend\"]}\n            iconStyle={[\"-fontsize4 -padding1-lr\", ...(iconStyle || [])]}\n            onDrop={handleFlowDrop}\n            onDelete={event => handleDelete(event, index)}\n\n            disabled={!allowDrop}\n            deleteDisabled={isSystemFlow(type) || isSkillTrigger(type)}\n\n            logging={logging}\n        >\n        {#if isSkillTrigger(type)}\n            <SkillTriggerButton\n                buttonStyle={[...(buttonStyle || [])]}\n                buttonTextStyle={[FLOW_BUTTON_STYLE, ...(buttonTextStyle || [])]}\n                item={fromUuidSync(type)}\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltipHeader={tooltipHeader}\n                logging={logging}\n            />\n        {:else if isSystemFlow(type)}\n            {#if type === SystemButton.SkillTriggerOther}\n                <div class=\"la-skilltrigger la-flexrow -justifyend -widthfull\">\n                    <FlowButton\n                        style={[...(buttonStyle || [])]}\n                        textStyle={[FLOW_BUTTON_STYLE, ...(buttonTextStyle || [])]}\n                        text={ButtonFactory.getSystemButtonLabel(type)}\n\n                        flowClass={FlowClass.None}\n                        uuid={uuid}\n\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltipHeader={ButtonFactory.getSystemButtonTipHeader(type)}\n                        tooltip={ButtonFactory.getSystemButtonTip(type, uuid)}\n                        logText={ButtonFactory.getSystemButtonTip(type, uuid)}\n                        logging={logging}\n                        \n                        onClick={event => {\n                            event.stopPropagation();\n                            SkillTriggerOtherBase.getInstance()\n                                .startFlow(uuid, {} as any);\n                        }}\n                    />\n                    <span class=\"la-skilltrigger__span -bordersround-rtb -small la-brdr-secondary la-bckg-darken-2\">\n                        <span class=\"la-skilltrigger__inner -bordersround-rtb -small la-brdr-darken-2 la-text-text -fontsize4 -fontface-stylized -textaligncenter -overflowhidden -padding0-lr\">\n                            &nbsp;0\n                        </span>\n                    </span>\n                </div>\n            {:else}\n                <FlowButton\n                    style={[...(buttonStyle || [])]}\n                    textStyle={[FLOW_BUTTON_STYLE, ...(buttonTextStyle || [])]}\n                    text={ButtonFactory.getSystemButtonLabel(type)}\n\n                    flowClass={FlowClass.Standard}\n                    uuid={uuid}\n                    flowType={type}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltipHeader={ButtonFactory.getSystemButtonTipHeader(type)}\n                    tooltip={ButtonFactory.getSystemButtonTip(type, uuid)}\n                    logText={ButtonFactory.getSystemButtonTip(type, uuid)}\n                    logging={logging}\n                />\n            {/if}\n        {:else}\n            <FlowButton\n                style={[...(buttonStyle || [])]}\n                textStyle={[FLOW_BUTTON_STYLE, ...(buttonTextStyle || [])]}\n                text={(fromUuidSync(type)?.name as string) || getLocalized(\"LA.placeholder\")}\n                flowClass={CustomFlowClass.RunMacro}\n                onClick={event => {\n                    event.stopPropagation();\n                    RunMacroBase.getInstance().startFlow(uuid, {uuid: type});\n                }}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                logging={logging}\n            />\n        {/if}\n        </DragDropHandle>\n    {/each}\n    {:else}\n        <details class=\"la-details -widthfull la-flexcol\">\n            <summary class=\"la-details__summary la-flexrow clipped-bot-alt la-bckg-repcap la-text-header -padding1-l -widthfull\"\n                data-tooltip={tooltipEnabled \n                    ? allowDrop ? tipAlt : tipMain \n                    : undefined}\n                data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${theme}`}\n                data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n                onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n                onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n            >\n                <span class=\"la-left la-flexrow\">\n                    {#if allowDrop}\n                    <span class=\"la-name__span -fontsize4\">\n                        {getLocalized(\"LA.advanced.addMacro.subLabel\")}\n                    </span>\n                    {:else}\n                    <i class=\"la-icon mdi mdi-card-off-outline -fontsize4 -margin1-lr\"></i>\n                    <span class=\"la-name__span -fontsize4\">\n                        {getLocalized(\"LA.advanced.addMacro.label\")}\n                    </span>\n                    {/if}\n                </span>\n            </summary>\n        </details>\n    {/if}\n    </div>\n</div>","<script lang=\"ts\">\n    import { id as moduleID } from '@/module.json';\n    import { resetTextConsole, sendToTextConsole } from '@/scripts/store/text-log';\n    import { getActorContext } from '@/scripts/context';\n    import { getLocalized, getVideoMimeType } from \"@/scripts/helpers\";\n    import type { TextLogEventProps } from '@/interfaces/actor/TextLogEventProps';\n    import type { TooltipProps } from '@/interfaces/actor/TooltipProps';\n    import { TooltipDirection } from '@/enums/TooltipDirection';\n    import { TooltipFactory } from '@/classes/TooltipFactory';\n    import type { PointerClickProps } from '@/interfaces/actor/events/PointerClickProps';\n\n    const { \n        actor,\n        editDisabled,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipClass,\n        tooltipTheme,\n        tooltipDirection,\n\n        logText,\n        logging: loggingEnabled,\n\n        onPointerClick,\n    }: {actor: any; editDisabled?: boolean;} & TooltipProps & TextLogEventProps & PointerClickProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    const actorImgVid = $derived(actor.prototypeToken?.texture.src ?? actor.img);\n    const srcImage = $derived(actorImgVid === \"icons/svg/mystery-man.svg\"\n        ? `modules/${moduleID}/assets/nodata.png`\n        : actorImgVid);\n    const tokenVideoMimeType = $derived(getVideoMimeType(actorImgVid));\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.edit.image.token.tooltip\"), tooltipHeader));\n    const tokenErrorTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.edit.image.token.error\")));\n\n    const logging = $derived(loggingEnabled && !editDisabled);\n    const log = $derived(logText || getLocalized(\"LA.edit.image.token.tooltip\"));\n</script>\n\n<div class=\"la-flexrow\">\n{#if tokenVideoMimeType}\n    <video autoplay loop muted\n        class=\"la-actor__img {editDisabled ? '-pointerdisable' : '-pointercursor'}\"\n        data-tooltip={tooltipEnabled \n            ? !editDisabled \n                ? tip\n                : tokenErrorTip\n            : undefined }\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        onclick={editDisabled ? undefined : onPointerClick}\n    >\n        <source src={actorImgVid} type={tokenVideoMimeType}>\n    </video>\n{:else}\n    <button type=\"button\"\n        class=\"{editDisabled ? '-pointerblock' : ''}\"\n        data-tooltip={tooltipEnabled \n            ? !editDisabled \n                ? tip\n                : tokenErrorTip\n            : undefined }\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        onclick={editDisabled ? undefined : onPointerClick}\n    >\n        <img \n            class=\"la-actor__img\" \n            src={srcImage}\n            alt={getLocalized(\"LA.placeholder\")}\n        >\n    </button>\n{/if}\n</div>","export enum CustomFlagContentType\n{\n    Value = \"value\",\n    Fraction = \"fraction\",\n}\n","import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\nimport type { CustomFlag, CustomFlagData } from \"@/interfaces/actor/CustomFlagData\";\n\nexport class CustomFlags implements CustomFlagData\n{\n    [id: string]: CustomFlag;\n\n    static emptyContent(id: string): CustomFlag\n    {\n        return {\n            id,\n            name: \"\",\n            contentType: CustomFlagContentType.Value,\n            content: {\n                min: 0,\n                max: 0,\n                value: 0,\n            },\n            showInSidebar: false,\n            color: \"#ffffff\",\n            icon: \"mdi mdi-abacus\",\n            tooltip: \"\",\n        };\n    }\n}\n","import { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport type { CustomFlagKey } from \"@/enums/CustomFlagKey\";\nimport { CustomFlags } from \"@/classes/CustomFlags\";\nimport type { CustomFlag, CustomFlagContent, CustomFlagData } from \"@/interfaces/actor/CustomFlagData\";\n\nexport function getCustomFlags(actor: any, flagKey: CustomFlagKey): CustomFlagData\n{\n    return actor.getFlag(LancerAlternative.Name, flagKey) ?? new CustomFlags();\n}\n\nexport function setCustomFlags(actor: any, flagKey: CustomFlagKey, data: CustomFlagData): Promise<any>\n{\n    return actor.setFlag(LancerAlternative.Name, flagKey, data);\n}\n\nexport function addCustomFlag(actor: any, flagKey: CustomFlagKey): Promise<any>\n{\n    const data = getCustomFlags(actor, flagKey);\n    const id = foundry.utils.randomID(4);\n    data[id] = CustomFlags.emptyContent(id);\n    return setCustomFlags(actor, flagKey, data);\n}\n\nexport function updateCustomFlag(actor: any, flagKey: CustomFlagKey, id: string, changes: Partial<CustomFlag>): Promise<any>\n{\n    const data = getCustomFlags(actor, flagKey);\n    if (!data[id])\n        return Promise.resolve();\n    data[id] = {\n        ...data[id],\n        ...changes,\n        content: changes.content ? { ...data[id].content, ...changes.content } : data[id].content,\n    };\n    return setCustomFlags(actor, flagKey, data);\n}\n\nexport function handleCustomFlagValueInput(\n    event: Event & { currentTarget: EventTarget & HTMLInputElement; },\n    actor: any,\n    flagKey: CustomFlagKey,\n    flag: CustomFlag\n): Promise<any>\n{\n    event.preventDefault();\n    const inputValue = event.currentTarget.value;\n    let newValue = flag.content.value;\n\n    if (inputValue)\n    {\n        if (inputValue.startsWith('+'))\n            newValue = flag.content.value + Number(inputValue.slice(1));\n        else if (inputValue.startsWith('-'))\n            newValue = flag.content.value - Number(inputValue.slice(1));\n        else\n            newValue = Number(inputValue);\n\n        if (Number.isNaN(newValue))\n            newValue = flag.content.value;\n    }\n\n    event.currentTarget.value = newValue.toString();\n    return updateCustomFlag(actor, flagKey, flag.id, { content: { ...flag.content, value: newValue } });\n}\n\nexport function deleteCustomFlag(actor: any, flagKey: CustomFlagKey, id: string): Promise<any>\n{\n    return actor.update({\n        [`flags.${LancerAlternative.Name}.${flagKey}.-=${id}`]: null,\n    });\n}\n\nexport function reorderCustomFlags(actor: any, flagKey: CustomFlagKey, fromIndex: number, toIndex: number): Promise<any>\n{\n    const entries = Object.entries(getCustomFlags(actor, flagKey));\n    const [moved] = entries.splice(fromIndex, 1);\n    entries.splice(toIndex, 0, moved);\n\n    const reordered: CustomFlagData = {};\n    for (const [id, flag] of entries)\n        reordered[id] = flag;\n\n    return actor.update(\n        { [`flags.${LancerAlternative.Name}.${flagKey}`]: reordered },\n        { recursive: false }\n    );\n}\n\n/**\n * The document-relative dotpath to a custom flag's content field, for use in macros/rolls/enrichers\n * outside this module (paired with the owning actor's UUID, e.g. `getProperty(actor, path)`)\n */\nexport function getCustomFlagPath(flagKey: CustomFlagKey, id: string, field: keyof CustomFlagContent = \"value\"): string\n{\n    return `flags.${LancerAlternative.Name}.${flagKey}.${id}.content.${field}`;\n}\n","export enum CustomFlagKey\n{\n    Mech = \"mech\",\n    Pilot = \"pilot\",\n    NPC = \"npc\",\n    Deployable = \"deployable\",\n}\n","<script lang=\"ts\">\n    import { onMount } from 'svelte';\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import {\n        getCurrentOvercharge,\n        getLocalized,\n        handleEditToken,\n        handleOverchargeDecrease,\n        handleOverchargeIncrease,\n        handleRelativeDataInput,\n        logographicLanguage\n    } from \"@/scripts/helpers\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getAdvancedState } from '@/scripts/store/advanced';\n    import { getThemeKey } from '@/scripts/store/theme';\n    import {\n        getMechSheetTooltipEnabled,\n        getSidebarExecutables,\n        getSidebarRatio,\n        setSidebarExecutables\n    } from \"@/scripts/mech/settings\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from '@/enums/FlowClass';\n\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import StatComboShort from \"@/svelte/shared/StatComboShort.svelte\";\n    import CoreAvailability from \"@/svelte/shared/input/CoreAvailability.svelte\";\n    import MacroDropBox from '@/svelte/shared/dragdrop/MacroDropBox.svelte';\n    import ImageVideo from '@/svelte/shared/ImageVideo.svelte';\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { FLOW_BUTTON_DEFAULT } from '@/svelte/shared/button/FlowButton.svelte';\n    import { getCustomFlagPath, getCustomFlags, handleCustomFlagValueInput } from \"@/scripts/flags\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n\n    const props = $props();\n    const {\n        system,\n        actor,\n    }: MechSheetProps = $derived(props);\n    setActorContext(actor);\n    let component: HTMLElement | null = $state(null);\n    let editingBurn = $state(false);\n    let editingShield = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const themeOverride = $derived(getBrightness(getThemeKey(actor.uuid)) === 'light' ? 'la-text-primary' : 'la-text-text');\n    const sidebarExes = $derived(getSidebarExecutables(actor.uuid));\n    const frame = $derived(system.loadout.frame?.value);\n    const frameName = $derived(frame\n        ? `${frame.system.manufacturer} ${frame.name}`\n        : getLocalized(\"LA.placeholder\"));\n    const frameUUID = $derived(frame ? frame.uuid : \"\");\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Mech));\n    const visibleCustomFlags = $derived(Object.values(customFlags).filter(flag => flag.showInSidebar));\n\n    const sizeTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.size.tooltip\"), `${getLocalized(\"LA.size.label\")} ${system.size}`));\n    const speedTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.speed.tooltip\"), `${getLocalized(\"LA.speed.label\")} ${system.speed}`));\n    const shieldTip = TooltipFactory.buildTooltip(getLocalized('LA.overshield.tooltip'));\n    const burnTip = TooltipFactory.buildTooltip(getLocalized('LA.burn.tooltip'));\n    const overchargePlusTip = TooltipFactory.buildTooltip(getLocalized('LA.overcharge.increase.tooltip'));\n    const overchargeMinusTip = TooltipFactory.buildTooltip(getLocalized('LA.overcharge.decrease.tooltip'));\n\n    // When rendered, adjust the sidebar ratio to whatever was set\n    onMount(() => \n    {\n        if (component)\n        {\n            const ratio = getSidebarRatio(actor.uuid);\n            const sidebar = jQuery(component).closest('.la-root').find('.la-sidebar');\n            if (sidebar)\n                sidebar.css('flex', ratio.toString());\n        }\n    });\n</script>\n\n<!-- Frame Name -->\n<div class=\"la-framename la-dropshadow -overflowhidden\"\n    bind:this={component}\n>\n    <div\n        class=\"la-flow -textalignleft -letterspacing0 la-bckg-primary la-text-header clipped-bot-alt -padding0-tb -margin7-t -margin1-l -fontface-stylized\"\n        data-uuid=\"{frameUUID}\"\n    >\n        <span class=\"la-cmdline la-text-header -fadein -fontface-neutral\">>//:</span><!--\n    --->{frameName}<!--\n    ---><span class=\"la-extension la-text-header -lower -fadein\">--{getLocalized(\"LA.scan.label\")}</span><span class=\"la-cursor la-prmy-header -fadein\"></span>\n    </div>\n</div>\n<div class=\"la-actor la-dropshadow -aligncontentcenter -positionrelative\">\n    <!-- Size, Speed, & Core Availability -->\n    <div class=\"la-flexcol -positionabsolute -left0 -top0 -fontsize19\">\n    {#if system.size < 1}\n        <i class=\"cci cci-size-half {themeOverride} la-outl-shadow\"\n            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n    {:else}\n        <i class=\"cci cci-size-{system.size} {themeOverride} la-outl-shadow\"\n            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n    {/if}\n        <div class=\"la-flexrow -fontsize9\" \n            data-tooltip={tooltipEnabled ? speedTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}>\n            <i class=\"mdi mdi-arrow-right-bold-hexagon-outline {themeOverride} la-outl-shadow\"></i>\n            <span class=\"{themeOverride} la-outl-shadow -bold\">{system.speed}</span>\n        </div>\n        <CoreAvailability {system} \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n    <ImageVideo\n        actor={actor}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.image.token.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n        logText={getLocalized(\"LA.edit.image.token.tooltip\")}\n        logging={true}\n        onPointerClick={event => handleEditToken(event, actor)}\n    />\n</div>\n<!-- Mech Stats 1 -->\n<div class=\"la-stats la-dropshadow la-flexrow -justifyevenly -fontface-stylized\">\n    <StatComboShort\n        icon={\"cci cci-role-defender -alignselfcenter\"}\n        label={getLocalized(\"LA.armor.short\")}\n        value={system.armor}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.armor.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-evasion -alignselfcenter\"}\n        label={getLocalized(\"LA.evasion.short\")}\n        value={system.evasion}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.evasion.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-edef -alignselfcenter\"}\n        label={getLocalized(\"LA.edefense.short\")}\n        value={system.edef}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edefense.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n</div>\n\n<div class=\"la-spacer -medium\"></div>\n\n<!-- Mech Bars -->\n<div class=\"la-damage la-dropshadow -margin0-lr\">\n    <div class=\"la-flexrow -gap2 -fontface-stylized\">\n        <div class=\"la-visuals -flex5\">\n            <!-- HP, SHIELD (BAR) -->\n            <StatusBar\n                name={getLocalized(\"LA.hitpoint.short\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.hp.value\"}\n                currentValue={system.hp.value}\n                maxValue={system.hp.max}\n                barStyle={[\"la-bckg-bar-health\"]}\n                barEditStyle={[\"la-prmy-bar-health\"]}\n                currentValueSecondary={system.overshield.value}\n                maxValueSecondary={system.hp.max}\n                barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n                barEditStyleSecondary={[\"la-prmy-bar-shield\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped\"}\n                editSecondary={editingShield}\n                \n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.hitpoint.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n            />\n            <div class=\"la-spacer -tiny\"></div>\n            <!-- STRUCTURE -->\n            <StatusBar\n                name={getLocalized(\"LA.structure.label\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.structure.value\"}\n                currentValue={system.structure.value}\n                maxValue={system.structure.max}\n                barStyle={[\"la-bckg-bar-structure\"]}\n                barEditStyle={[\"la-prmy-bar-structure\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped-alt\"}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.structure.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n            />\n        </div>\n        <!-- SHIELD (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-shield -flex0 -textaligncenter la-prmy-bar-shield -margin0-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <input type={\"text\"}\n                class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                name={\"system.overshield.value\"}\n                data-dtype={\"Number\"}\n                value={system.overshield.value}\n                onfocus={(event) => {event.currentTarget.select(); editingShield = true;}}\n                onblur={() => {editingShield = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.overshield.value)}\n            >\n            <span\n                class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? shieldTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.overshield.short\")}<!--\n        ---></span>\n        </div>\n    </div>\n\n    <div class=\"la-spacer -large\"></div>\n\n    <div class=\"la-flexrow -gap2 -fontface-stylized\">\n        <div class=\"la-visuals -flex5\">\n            <!-- HEAT, BURN (BAR) -->\n            <StatusBar\n                name={getLocalized(\"LA.heat.label\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.heat.value\"}\n                currentValue={system.heat.value}\n                maxValue={system.heat.max}\n                barStyle={[\"la-bckg-bar-heat\"]}\n                barEditStyle={[\"la-prmy-bar-heat\"]}\n                currentValueSecondary={system.burn}\n                maxValueSecondary={system.heat.max}\n                barStyleSecondary={[\"la-bckg-bar-burn -burn\"]}\n                barEditStyleSecondary={[\"la-prmy-bar-burn\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped\"}\n                editSecondary={editingBurn}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.heat.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n                />\n            <div class=\"la-spacer -tiny\"></div>\n            <!-- STRESS -->\n            <StatusBar\n                name={getLocalized(\"LA.stress.label\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.stress.value\"}\n                currentValue={system.stress.value}\n                maxValue={system.stress.max}\n                barStyle={[\"la-bckg-bar-stress\"]}\n                barEditStyle={[\"la-prmy-bar-stress\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped-alt\"}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.stress.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n                />\n        </div>\n        <!-- BURN (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-burn -flex0 -textaligncenter la-prmy-bar-burn -margin0-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <input type={\"text\"}\n                class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                name={\"system.burn\"}\n                data-dtype={\"Number\"}\n                value={system.burn}\n                onfocus={(event) => {event.currentTarget.select(); editingBurn = true;}}\n                onblur={() => {editingBurn = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.burn)}\n            >\n            <span class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? burnTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.burn.short\")}<!--\n        ---></span>\n        </div>\n    </div>\n</div>\n\n<div class=\"la-spacer -small\"></div>\n\n<!-- Mech Stats 2 -->\n<div class=\"la-stats la-dropshadow la-flexrow -justifyevenly -fontface-stylized\">\n    <StatComboShort\n        icon={\"cci cci-tech-full -alignselfcenter\"}\n        label={getLocalized(\"LA.tattack.short\")}\n        value={system.tech_attack}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tattack.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-save -alignselfcenter\"}\n        label={getLocalized(\"LA.save.short\")}\n        value={system.save}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.save.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-sensor -alignselfcenter\"}\n        label={getLocalized(\"LA.sensor.short\")}\n        value={system.sensor_range}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.sensor.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n</div>\n\n<div class=\"la-spacer -small\"></div>\n\n<!-- Mech Stats 3 -->\n<div class=\"la-stats la-dropshadow la-flexrow -justifyevenly -fontface-stylized\">\n    <div class=\"la-flexrow -alignselfcenter -positionrelative\">\n    {#snippet overchargeContentLeft()}\n        <GlyphButton type=\"button\"\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-chevron-left la-text-secondary la-prmy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n            tooltipEnabled={tooltipEnabled}\n            tooltip={overchargeMinusTip}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.UP}\n            onClick={event => handleOverchargeDecrease(event, actor)}\n        >\n        </GlyphButton>\n    {/snippet}\n    {#snippet overchargeContentRight()}\n        <GlyphButton type=\"button\"\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-chevron-right la-text-secondary la-prmy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n            tooltipEnabled={tooltipEnabled}\n            tooltip={overchargePlusTip}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.UP}\n            onClick={event => handleOverchargeIncrease(event, actor)}\n        >\n        </GlyphButton>\n    {/snippet}\n        <StatComboShort\n            icon={\"cci cci-overcharge -alignselfcenter -width5\"}\n            label={getLocalized(\"LA.overcharge.short\")}\n            value={getCurrentOvercharge(actor)}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.overcharge.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n\n            contentLeft={overchargeContentLeft}\n            contentRight={overchargeContentRight}\n        />\n    </div>\n    <StatComboShort\n        icon={\"cci cci-repair -alignselfcenter\"}\n        label={getLocalized(\"LA.repair.short\")}\n        value={system.repairs.value}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.repair.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n</div>\n\n<!-- Custom Flags -->\n{#if visibleCustomFlags.length}\n<hr class=\"-widthfull\">\n<div class=\"la-flags la-flexcol -gap1 la-dropshadow -margin0-lr -widthfull\">\n{#each visibleCustomFlags as flag (flag.id)}\n    {#snippet createFractionBar(data: CustomFlag)}\n    <div class=\"la-flexcol -widthfull -fontface-stylized\">\n        <div class=\"la-flexrow -widthfull\">\n            <div class=\"-width14\"></div>\n            <div class=\"-flex5\" style=\"--la-flag-custom: {data.color};\">\n                <StatusBar\n                    name={\"\"}\n                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                    dataName={getCustomFlagPath(CustomFlagKey.Mech, data.id, \"value\")}\n                    currentValue={data.content.value}\n                    maxValue={data.content.max}\n                    barStyle={[\"la-bckg-custom\"]}\n                    barEditStyle={[\"la-bckg-custom\"]}\n                    textStyle={[\"la-text-text\"]}\n                    clipPath={\"clipped-alt\"}\n                />\n            </div>\n            <div class=\"-width10\"></div>\n        </div>\n        <span class=\"-fontsizemedium -upper -padding4-l\n                {logographic ? '' : '-bold'}\"\n            data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}\n        >{data.name}</span>\n    </div>\n    {/snippet}\n\n    {#snippet createValueGlyph(data: CustomFlag)}\n    <div class=\"-widthfull\">\n        <div class=\"la-shortstat la-flexrow la-text-text -fontsize6\">\n            <i class=\"{data.icon ? data.icon : \"mdi mdi-abacus\"} -alignselfcenter\"></i>\n            <div class=\"la-flexcol -divider -upper -fontface-stylized -fontsizemedium la-prmy-accent -textaligncenter\n                    {logographic ? '' : '-bold'}\"\n                data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            >\n                <input class=\"la-top__input -widthfull -medium -inset la-text-text -fontface-neutral -height4\"\n                    type=\"text\"\n                    value={data.content.value}\n                    onfocus={event => event.currentTarget.select()}\n                    onchange={event => handleCustomFlagValueInput(event, actor, CustomFlagKey.Mech, data)}\n                >\n                <span class=\"la-bottom__span\">{data.name}</span>\n            </div>\n        </div>\n    </div>\n    {/snippet}\n\n    {#if flag.contentType === CustomFlagContentType.Fraction}\n        {@render createFractionBar(flag)}\n    {:else}\n        {@render createValueGlyph(flag)}\n    {/if}\n{/each}\n</div>\n<hr class=\"-widthfull\">\n{/if}\n\n<!-- Macros/Flows -->\n<MacroDropBox\n    uuid={actor.uuid}\n    getExes={sidebarExes}\n    setExes={setSidebarExecutables}\n    hintDropArea={true}\n    allowDrop={advancedOptions}\n    buttonStyle={[FLOW_BUTTON_DEFAULT(), advancedOptions ? \"-margin7-l\" : \"-margin2-l\"]}\n    tooltipEnabled={tooltipEnabled}\n    logging={true}\n/>","export enum ActionLogCollapsePrefix\n{\n    MechSheet = \"mech\",\n    NPCSheet = \"npc\",\n    PilotSheet = \"pilot\",\n    DeployableSheet = \"deployable\",\n}","import { writable, fromStore } from \"svelte/store\";\n\nconst collapseStates = writable<{\n    [key: string]: boolean\n}>({});\nconst _collapseStatesRune = fromStore(collapseStates);\n\nexport function getCollapseState(id?: string)\n{\n    if (!id)\n        return false;\n    return _collapseStatesRune.current[id];\n}\n\n/**\n * Sets the collapse state for a given element by its ID.\n * Updates the internal collapse state and stores the state.\n *\n * @param id - The unique identifier of the element.\n * @param state - The collapse state to set. `true` for collapsed, `false` for expanded.\n */\nexport function setCollapseState(id: string, state: boolean)\n{\n    collapseStates.update(states =>\n    {\n        states[id] = state;\n        return states;\n    });\n}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import TerminalText from \"@/svelte/shared/TerminalText.svelte\";\n    import { getCollapseState, setCollapseState } from \"@/scripts/store/collapse\";\n    import { getLocalized } from \"@/scripts/helpers\";\n\n    import type { HeaderProps } from \"@/interfaces/actor/header/HeaderProps\";\n    import type { HeaderMainProps } from \"@/interfaces/actor/header/HeaderMainProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n\n    const {\n        children,\n        rootStyle,\n        itemID,\n        uuid,\n        path,\n        acceptTypes,\n        collapseID,\n        startCollapsed,\n        dontSaveCollapse,\n\n        headerContent,\n\n        headerStyle,\n        borderStyle,\n\n        text,\n        textStyle,\n        extensionText,\n        extensionTextFunction,\n    }: HeaderProps & HeaderMainProps & TerminalTextProps = $props();\n    let isCollapsed = $derived(getCollapseState(collapseID) ?? startCollapsed ?? false);\n\n    // (#3) - Since collapsables may not always be collapsable, may want to reset their collapse state \n    // to the default, need to be persistent across rerenders, and still be able to read from derived()\n    // we need to use a state with varying levels of fallbacks, and to properly set the store based on \n    // the derived value.\n    onMount(() => \n    {\n        if (collapseID && (dontSaveCollapse ?? getCollapseState(collapseID) === undefined))\n        {\n            setCollapseState(collapseID, startCollapsed ?? false);\n        }\n    });\n\n    function toggleCollapse(event: MouseEvent) \n    {\n        event.stopPropagation();\n        if (collapseID)\n        {\n            setCollapseState(collapseID, !isCollapsed);\n        }\n    }\n\n    function getExtensionText()\n    {\n        if (extensionTextFunction && extensionTextFunction())\n            return extensionTextFunction();\n        if (extensionText)\n            return extensionText;\n        if (collapseID)\n            return isCollapsed\n                ? `--${getLocalized(\"LA.expand.label\")}`\n                : `--${getLocalized(\"LA.collapse.label\")}`;\n        return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    export const MAIN_HEADER_STYLE: string = \"la-text-header la-prmy-header clipped-top -padding0-tb -padding3-lr\"\n</script>\n\n<div class=\"la-collapsegroup -widthfull {rootStyle?.join(' ')}\n        {acceptTypes ? `ref set drop-settable ${acceptTypes}` : ''}\n        collapse-group\"\n    data-item-id={itemID}\n    data-uuid={uuid}\n    data-path={path}\n    data-accept-types={acceptTypes}\n>\n    <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_noninteractive_element_interactions -->\n    <!-- (#2) - On FireFox for some reason onclick vs on:click does not work properly -->\n    <!-- svelte-ignore event_directive_deprecated -->\n    <span role=\"none\"\n        class=\"la-summary la-flexrow la-dropshadow\n            -justifybetween -widthfull -whitespacenowrap \n            {headerStyle?.join(' ') || MAIN_HEADER_STYLE}\n            {collapseID ? 'collapse-trigger' : ''}\"\n        on:click={(event) => toggleCollapse(event)}\n    >\n        <!-- Header Label -->\n        <TerminalText\n            text={collapseID || !extensionText ? `${text} ` : text}\n            textStyle={textStyle}\n            extensionText={getExtensionText()}\n        />\n        <!-- Header Options -->\n    {#if headerContent}\n        <div class=\"la-flexrow -gap2 -aligncenter\">\n            {@render headerContent()}\n        </div>\n    {/if}\n    </span>\n    <div class=\"la-collapsegroup__wrapper\n            {collapseID ? 'collapse-wrapper' : ''} {isCollapsed ? 'collapsed' : ''}\"\n        data-la-collapse-id={collapseID}\n    >\n        <div class=\"la-collapsecontent \n                -padding0-l -padding0-tb -bordersround-lb -widthfull -heightfull\n                {borderStyle ? borderStyle.join(' ') : 'la-brdr-primary'}\"\n        >\n            {#if children}\n                {@render children()}\n            {/if}\n        </div>\n    </div>\n</div>","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { ActiveEffectsProps } from \"@/interfaces/actor/ActiveEffectsProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        effects,\n        actor,\n        owner,\n\n        tooltipEnabled,\n        logging,\n    }: ActiveEffectsProps & TooltipProps & TextLogEventProps = $props();\n\n    const qualityMode = getExtraEffectsEnabled();\n    const themeOverride = $derived(getThemeKey(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getThemedIcon(effect: any)\n    {\n        let theme = getBrightness(themeOverride);\n        return effect.icon\n            ? (theme === \"dark\" ? effect.icon : effect.icon.replace('/white/', '/'))\n            : (theme === \"dark\" ? \"systems/lancer/assets/icons/white/difficulty.svg\" : \"systems/lancer/assets/icons/difficulty.svg\");\n    }\n\n    function deleteActiveEffect(event: MouseEvent & { currentTarget: EventTarget & HTMLButtonElement })\n    {\n        event.stopPropagation();\n        if (!owner)\n        {\n            Logger.error(\"User is not the owner of this actor.\");\n            return;\n        }\n\n        let id = event.currentTarget.getAttribute('data-uuid');\n        try\n        {\n            actor.deleteEmbeddedDocuments(\"ActiveEffect\", [id], { diff: true, render: true, type: 'ActiveEffect' });\n        } \n        catch (error)\n        {\n            Logger.error(\"Error deleting active effect.\", error);\n        }\n    }\n</script>\n\n<div class=\"la-flexcol -gap0 -widthfull\">\n{#if effects.length}\n{#each effects as effect, index}\n    {#snippet headerOptions()}\n    <GlyphButton\n        style={[\"la-prmy-error -fontsize4 -height4 -lineheight4\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n\n        uuid={effect._id}\n        flowClass={FlowClass.DeleteActiveEffect}\n        onClick={deleteActiveEffect}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        logText={getLocalized(\"LA.delete.tooltip\")}\n        logging={logging}\n    >\n        <i class=\"mdi mdi-close-circle la-text-header-anti\"></i>\n    </GlyphButton>\n    {/snippet}\n    <HeaderMain \n        text={effect.name}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-warning clipped-bot-alt\"]}\n        textStyle={[\"la-text-header-anti la-prmy-header-anti -fontsizemedium -bold\"]}\n        borderStyle={[\"la-bckg-card la-brdr-warning -overflowhidden -padding1-lr\"]}\n        extensionText={`--${getLocalized(\"LA.info.label\")}`}\n        \n        collapseID={`${actor.uuid}.status.activeEffects.${index}`}\n        startCollapsed={true}\n\n        headerContent={headerOptions}\n    >\n        <span class=\"la-activeeffect\">\n            <img \n                class=\"la-activeeffect__img la-dropshadow -float-l -height15 -padding0-r\"\n                src=\"{encodeURI(getThemedIcon(effect))}\" \n                alt=\"Effect Icon\"\n            >\n            <span class=\"la-active-effect__span -fontsizemedium\">{@html effect.description}</span>\n        </span>\n    </HeaderMain>\n{/each}\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.tab.status.effects.none.label\")}\n        subLabel={getLocalized(\"LA.tab.status.effects.none.subLabel\")}\n    />\n{/if}\n</div>","<!-- TODO: refactor into GlyphButton -->\n<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getCollapseState, setCollapseState } from \"@/scripts/store/collapse\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    import type { CollapseAllButtonProps } from \"@/interfaces/actor/button/CollapseAllButtonProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { PointerHoverProps } from \"@/interfaces/actor/events/PointerHoverProps\";\n\n    const {\n        collapseID,\n\n        style,\n        iconStyle,\n        \n        tooltipEnabled,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        logText,\n        logging,\n\n        onPointerEnter,\n        onPointerLeave,\n    }: IconButtonProps & CollapseAllButtonProps & TooltipProps & TextLogEventProps & PointerHoverProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    let isExpanding = $derived(!getCollapseState(collapseID));\n\n    const tip = TooltipFactory.buildTooltip(getLocalized(\"LA.collapseAll.tooltip\"));\n    const log = $derived(logText || getLocalized(\"LA.collapseAll.tooltip\"));\n\n    function handleOnPointerEnter(event: PointerEvent) \n    {\n        if (onPointerEnter)\n            onPointerEnter();\n\n        if (logging)\n            sendToTextConsole(event, log, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function handleOnPointerLeave(event: PointerEvent)\n    {\n        if (onPointerLeave)\n            onPointerLeave();\n\n        if (logging)\n            resetTextConsole(event, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function toggleCollapseAll(event: MouseEvent) \n    {\n        event.stopPropagation();\n        if (!collapseID || event.currentTarget === null)\n            return;\n        \n        const collapseGroup = jQuery(event.currentTarget).closest('.collapse-group');\n        if (collapseGroup)\n        {\n            const triggers = collapseGroup.find('[data-la-collapse-id]');\n            triggers.each((_: number, trigger: HTMLElement) =>\n            {\n                const childId = jQuery(trigger).data('la-collapse-id');\n                if (childId === collapseID)\n                    return;\n                if (childId)\n                    setCollapseState(childId, isExpanding);\n            });\n            setCollapseState(collapseID, isExpanding);\n        }\n    }\n</script>\n<script lang=\"ts\" module>\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const _DEFAULT_BUTTON = () => \" la-prmy-header la-scdy-primary la-text-header -fontsize5 -lineheight4 \" + (getExtraEffectsEnabled() ? \"-glow-scdy-hover -glow-prmy \" : \" \");\n</script>\n\n<button type=\"button\"\n    class=\"{style?.join(' ') || _DEFAULT_BUTTON()}\"\n    data-tooltip={tooltipEnabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n    onpointerenter={ handleOnPointerEnter }\n    onpointerleave={ handleOnPointerLeave }\n    onclick={(event) => toggleCollapseAll(event)}\n    aria-label={getLocalized(\"LA.collapseAll.tooltip\")}\n>\n    <i class=\"mdi {isExpanding ? 'mdi-arrow-collapse-all' : 'mdi-arrow-expand-all'}\n        {iconStyle?.join(' ')}\"\n    ></i>\n</button>","<script lang=\"ts\">\n    import type { HeaderProps } from \"@/interfaces/actor/header/HeaderProps\";\n    import type { HeaderSecondaryProps } from \"@/interfaces/actor/header/HeaderSecondaryProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import type { ContentSidesProps } from \"@/interfaces/actor/decoration/ContentSidesProps\";\n    import { getCollapseState, setCollapseState } from \"@/scripts/store/collapse\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import TerminalText from \"@/svelte/shared/TerminalText.svelte\";\n    import { onMount } from \"svelte\";\n\n    const {\n        children,\n        rootStyle,\n        itemID,\n        uuid,\n        path,\n        acceptTypes,\n        collapseID,\n        startCollapsed,\n        dontSaveCollapse,\n        renderOutsideCollapse,\n\n        headerStyle,\n        borderStyle,\n        \n        text,\n        textStyle,\n        extensionText,\n        extensionTextFunction,\n\n        disableCmdline,\n        disableCursor,\n        disableExtension,\n\n        contentLeft,\n        contentRight,\n    }: HeaderProps & HeaderSecondaryProps & TerminalTextProps & ContentSidesProps = $props();\n    \n    const isCollapsed = $derived(getCollapseState(collapseID) ?? startCollapsed ?? false);\n\n    // (#3)\n    onMount(() => \n    {\n        if (collapseID && (dontSaveCollapse || getCollapseState(collapseID) === undefined))\n        {\n            setCollapseState(collapseID, startCollapsed ?? false);\n        }\n    });\n\n    function toggleCollapse(event: MouseEvent) \n    {\n        event.stopPropagation();\n        if (collapseID)\n        {\n            setCollapseState(collapseID, !isCollapsed);\n        }\n    }\n\n    function getExtensionText()\n    {\n        if (extensionTextFunction && extensionTextFunction())\n            return extensionTextFunction();\n        if (extensionText)\n            return extensionText;\n        if (collapseID)\n            return isCollapsed\n                ? `--${getLocalized(\"LA.expand.label\")}`\n                : `--${getLocalized(\"LA.collapse.label\")}`;\n        return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    export const H2_HEADER_STYLE = \" clipped-bot-alt -padding0-l -padding3-r la-text-header la-prmy-header \";\n    export const H2_ICON_SIZE = \" -fontsize7 \";\n    export const H2_TEXT_SIZE = \" -fontsize3 \";\n</script>\n\n\n<div class=\"la-collapsegroup -widthfull {rootStyle ? rootStyle.join(' ') : ''}\n        {acceptTypes ? `ref set drop-settable ${acceptTypes}` : ''}\n        collapse-group\"\n    data-item-id={itemID}\n    data-uuid={uuid}\n    data-path={path}\n    data-accept-types={acceptTypes}\n    draggable={acceptTypes ? \"true\" : \"false\"}\n>\n    <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_static_element_interactions -->\n    <!-- (#2) -->\n    <!-- svelte-ignore event_directive_deprecated -->\n    <div class=\"la-summary la-flexrow la-dropshadow \n            -justifybetween -widthfull -whitespacenowrap \n            {headerStyle?.join(' ') || H2_HEADER_STYLE}\n            {collapseID ? 'collapse-trigger' : ''}\"\n        on:click={(event) => toggleCollapse(event)}\n    >\n        <!-- Icon, Name -->\n        <div class=\"la-left la-flexrow -justifystart -aligncenter -gap1 -widthfull -overflowhidden\">\n            {#if contentLeft}\n                {@render contentLeft()}\n            {/if}\n            <TerminalText\n                text={collapseID || !extensionText ? `${text} ` : text}\n                textStyle={textStyle}\n                extensionText={getExtensionText()}\n                disableCmdline={disableCmdline || true}\n                disableCursor={disableCursor || false}\n                disableExtension={disableExtension || false}\n            />\n            <!-- <span class=\"la-name__span {headerFontStyle?.join(' ') || \"-fontsize4\"}\">{title}</span> -->\n        </div>\n    {#if contentRight}\n        <!-- Options -->\n        <div class=\"la-right la-flexrow -aligncenter\">\n            {@render contentRight()}\n        </div>\n    {/if}\n    </div>\n    {#if renderOutsideCollapse}\n        {@render renderOutsideCollapse()}\n    {/if}\n    {#if collapseID || children}\n    <div class=\"la-collapsegroup__wrapper\n            {collapseID ? 'collapse-wrapper' : ''} {isCollapsed ? 'collapsed' : ''}\"\n        data-la-collapse-id={collapseID}\n    >\n        <div class=\"la-collapsecontent \n                -padding0-l -padding0-tb -bordersround-lb -widthfull -heightfull\n                {borderStyle ? borderStyle.join(' ') : 'la-brdr-primary'}\"\n        >\n            {#if children}\n                {@render children()}\n            {/if}\n        </div>\n    </div>\n    {/if}\n</div>","// Reimplementation of bare-minimum foundryvtt-lancer functionality (src/module/actor/damage-calc.ts)\nimport type { Damage } from \"../models/bits/damage\";\n\nexport class AppliedDamage\n{\n    public Kinetic: number;\n    public Energy: number;\n    public Explosive: number;\n    public Burn: number;\n    public Heat: number;\n    public Variable: number;\n\n    public constructor(damageData: Damage[])\n    {\n        this.Kinetic = this.sum_damage(damageData, \"Kinetic\");\n        this.Energy = this.sum_damage(damageData, \"Energy\");\n        this.Explosive = this.sum_damage(damageData, \"Explosive\");\n        this.Burn = this.sum_damage(damageData, \"Burn\");\n        this.Heat = this.sum_damage(damageData, \"Heat\");\n        this.Variable = this.sum_damage(damageData, \"Variable\");\n    }\n\n    public sum_damage(damageData: Damage[], damageType: any): number\n    {\n        return damageData.reduce((sum, d) =>\n        {\n            return sum + (d.type === damageType ? parseInt(d.val) : 0);\n        }, 0);\n    }\n}\n","// Reimplementation of bare-minimum foundryvtt-lancer functionality (src/module/models/bits/damage.ts)\n\n// \"Hydrated\" DamageData\nexport class Damage implements Readonly<any>\n{\n    type: any;\n    val: string;\n    constructor(data: any)\n    {\n        this.type = data.type;\n        this.val = data.val;\n    }\n\n    save(): any\n    {\n        return {\n            type: this.type,\n            val: this.val,\n        };\n    }\n\n    copy(): Damage\n    {\n        return new Damage(this.save());\n    }\n\n    // Methods / getters / Various formatting options\n    get icon(): string\n    {\n        return Damage.IconFor(this.type);\n    }\n\n    get text(): string\n    {\n        return `${this.val} ${this.type} Damage`;\n    }\n\n    get discord_emoji(): string\n    {\n        return Damage.DiscordEmojiFor(this.type);\n    }\n\n    get color(): string\n    {\n        return Damage.ColorFor(this.type);\n    }\n\n    // Returns the css font icon corresponding to the provided damage type\n    public static IconFor(dt: any): string\n    {\n        return `cci-${dt.toLowerCase()}`;\n    }\n\n    public static DiscordEmojiFor(dt: any): string\n    {\n        return `:cc_damage_${dt.toLowerCase()}:`;\n    }\n\n    // Returns the css color name corresponding to the provided damage type\n    public static ColorFor(dt: any): string\n    {\n        return `damage--${dt.toLowerCase()}`;\n    }\n\n    // Convert a damage type array to a checklist. If no damage types provided, assume all\n    public static MakeChecklist(damages: any[]): any\n    {\n        let override = damages.length == 0;\n        return {\n            Burn: override || damages.includes(\"Burn\"),\n            Energy: override || damages.includes(\"Energy\"),\n            Explosive: override || damages.includes(\"Explosive\"),\n            Heat: override || damages.includes(\"Heat\"),\n            Kinetic: override || damages.includes(\"Kinetic\"),\n            Variable: override || damages.includes(\"Variable\"),\n        };\n    }\n\n    // Undo the above conversion\n    public static FlattenChecklist(damages: any): any[]\n    {\n        return Object.keys(damages).filter(d => damages[d as keyof any]) as any[];\n    }\n\n    // Combine two arrays of damage. Does not edit originals\n    public static CombineLists(base: Damage[], addition: Damage[]): Damage[]\n    {\n        // Make a copy of a.\n        let result = base.map(d => d.copy());\n\n        // For each b, try to find a matching a and add them together\n        for (let add of addition)\n        {\n            // Get a match on\n            let to_be_modified = result.find(result_d => result_d.type == add.type);\n            if (to_be_modified)\n            {\n                // We found existing damage of that type. Utilize foundry dice parsing to merge terms\n                try\n                {\n                    let base_formula = new Roll(to_be_modified.val);\n                    let add_formula = new Roll(add.val);\n                    for (let add_term of add_formula.terms)\n                    {\n                        let added = false;\n                        for (let base_term of base_formula.terms)\n                        {\n                            // Combine like terms\n                            //@ts-expect-error Appropriately narrow types are unavailable as of right now\n                            if (add_term.number && base_term.number && add_term.faces === base_term.faces)\n                            {\n                                //@ts-expect-error Ditto\n                                base_term.number += add_term.number;\n                                added = true;\n                                break;\n                            }\n                        }\n                        //@ts-expect-error Ditto\n                        if (!added && !add_term.operator)\n                        {\n                            // Create a new roll by appending the formulae\n                            base_formula = new Roll(base_formula.formula + \" + \" + add_term.formula);\n                        }\n                    }\n                    // Write back to string\n                    to_be_modified.val = base_formula.formula;\n                } catch (e)\n                {\n                    // If the above measure fails, do a simple addition\n                    to_be_modified.val += ` + ${add.val}`;\n                }\n            } else\n            {\n                // Did not already have that damage type. Add it\n                result.push(add.copy());\n            }\n        }\n        return result;\n    }\n}","// Rebinds the buttons in ActionLog to the appropriate Lancer system function, since \n// these buttons are dynamically added to the DOM and not part of the original HTML\n// These are semi-rewrites from the base Lancer system\nimport { Logger } from \"@/classes/Logger\";\nimport { getLocalized } from \"@/scripts/helpers\";\nimport { AppliedDamage } from \"./lancer/actor/damage-calc\";\nimport { Damage } from \"./lancer/models/bits/damage\";\n\nexport function rebindButtons(messageData: any, messageContainer: HTMLElement): void\n{\n    const buttons = $(messageContainer).find('.lancer-button').toArray();\n\n    buttons.forEach((buttonElement) =>\n    {\n        const button = $(buttonElement) as JQuery<HTMLButtonElement>;\n\n        if (button.hasClass('lancer-damage-flow'))\n        {\n            handleDamageFlow(messageData, button);\n        }\n        else if (button.hasClass('lancer-damage-apply'))\n        {\n            handleDamageApply(messageData, button);\n        }\n        else if (button.hasClass('lancer-damage-undo'))\n        {\n            handleDamageUndo(messageData, button);\n        }\n        else if (button.hasClass('flow-button'))\n        {\n            const flowType = button.data('flow-type');\n            if (flowType)\n            {\n                if (flowType === \"cascade\")\n                {\n                    handleCascadeFlow(messageData, button);\n                }\n                else if (flowType === \"secondaryStructure\")\n                {\n                    handleSecondaryStructureFlow(messageData, button);\n                }\n                else if (flowType === \"check\")\n                {\n                    handleCheckFlow(messageData, button);\n                }\n                else\n                {\n                    Logger.warn(`Unknown flow button class: ${flowType}. Please report this to Lancer Alternative Sheets author with the action in the chat that caused it. Like for realsies.`, button);\n                }\n            }\n            else\n            {\n                Logger.warn(`Flow button missing [data-flow-type] attribute`);\n            }\n        }\n        else\n        {\n            Logger.warn(`Unknown lancer button class: ${button.attr('class')}. Please report this to Lancer Alternative Sheets author with the action in the chat that caused it. No, really.`, button);\n        }\n    });\n}\n\nfunction handleDamageFlow(messageData: any, button: JQuery<HTMLButtonElement>)\n{\n    async function runDamageFlow(): Promise<void>\n    {\n        // if it wasn't good enough for the system to display to chat, it isn't good enough for us, don't bother with data validation\n        const attackData = messageData?.flags.lancer?.attackData;\n        const actor = await fromUuid(attackData?.attackerUuid) as any;\n        const item = await fromUuid(attackData?.attackerItemUuid) as any;\n        if (!item && !attackData)\n            return;\n\n        const hitResults: Array<any> = attackData?.targets.map(async (target: any) => \n        {\n            if (!target || target.documentName !== \"Token\")\n                return;\n\n            return {\n                target: await fromUuid(target.id),\n                total: target.total,\n                usedLockOn: target.setConditions.lockOn === false ? true : false,\n                hit: target.hit,\n                crit: target.crit,\n            };\n        });\n\n        const damage: any = [];\n        const bonusDamage: any = [];\n        if (attackData?.invade)\n            damage.push({ type: \"Heat\", val: \"2\" });\n\n        const DamageRollFlow = (game.lancer.flows as Map<string, any>).get(\"DamageRollFlow\") as any;\n        const flow = new DamageRollFlow(item?.uuid || attackData?.attackerUuid,\n            {\n                title: `${item?.name || actor?.name}  ${getLocalized(\"LA.damage.label\").toUpperCase()}`,\n                configurable: true,\n                invade: attackData?.invade,\n                hit_results: hitResults,\n                has_normal_hit: hitResults?.some((hr: any) => hr.hit && !hr.crit),\n                has_crit_hit: hitResults?.some((hr: any) => hr.crit),\n                damage: damage,\n                bonus_damage: bonusDamage,\n            });\n\n        flow.begin();\n    }\n\n    button.on('click', async () =>\n    {\n        runDamageFlow();\n    });\n}\n\nfunction handleDamageApply(messageData: any, button: JQuery<HTMLButtonElement>): void\n{\n    async function runApplyDamageFlow(event: JQuery.ClickEvent): Promise<void>\n    {\n        // if it wasn't good enough for the system to display to chat, it isn't good enough for us, don't bother with data validation\n        const buttonGroup = event.currentTarget.closest('.lancer-damage-button-group');\n        const data = buttonGroup?.dataset;\n        const target = await fromUuid(data.target) as any;\n        const actor = target?.actor;\n        if (!data || !actor)\n            return;\n\n        const damageData = messageData?.flags.lancer?.damageData;\n        const hydratedTargets = damageData.targetDamageResults.map((dmgTarget: { target: string; }) => \n        {\n            const target = fromUuidSync(dmgTarget.target) as any;\n            if (!target)\n                return null;\n            else\n                return {\n                    ...dmgTarget,\n                    target: target,\n                };\n        }).filter((t: null) => t !== null);\n        const targetDamage = hydratedTargets.find((dmgTarget: any) =>\n        {\n            return dmgTarget?.target?.uuid === data.target;\n        });\n        const multiple = parseFloat(buttonGroup.querySelector('select')?.value) || 1;\n\n        await actor.damageCalc(\n            new AppliedDamage(targetDamage.damage.map((damage: { type: any; amount: { toString: () => any; }; }) => \n            {\n                return new Damage({\n                    type: damage.type,\n                    val: damage.amount.toString(),\n                });\n            })),\n            {\n                multiple: multiple,\n                addBurn: data.addBurn === \"true\",\n                isCrit: data.isCrit === \"true\",\n                isHit: data.isHit === \"true\",\n                ap: targetDamage.ap,\n                paracausal: targetDamage.paracausal,\n            }\n        );\n    }\n\n    button.on('click', async (event) =>\n    {\n        runApplyDamageFlow(event);\n    });\n}\n\nfunction handleDamageUndo(_messageData: any, button: JQuery<HTMLButtonElement>)\n{\n    // This is not a Flow\n    async function runDamageUndo(event: JQuery.ClickEvent): Promise<void>\n    {\n        const overshieldDelta = parseInt(event.currentTarget.dataset.overshieldDelta);\n        const hpDelta = parseInt(event.currentTarget.dataset.hpDelta);\n        const heatDelta = parseInt(event.currentTarget.dataset.heatDelta);\n        const burnDelta = event.currentTarget.dataset.addBurn === \"true\"\n            ? parseInt(event.currentTarget.dataset.burnDelta)\n            : 0;\n\n        if (!overshieldDelta && !hpDelta && !burnDelta && !heatDelta)\n        {\n            ui.notifications?.error(\"Damage undo button has no damage to undo!\");\n            return;\n        }\n\n        const target = await fromUuid(event.currentTarget.dataset.uuid) as any;\n        if (!target)\n        {\n            ui.notifications?.error(\"Damage undo button has no target\");\n            return;\n        }\n        const updateData: any = {\n            system: {\n                \"overshield.value\": target.system.overshield.value + overshieldDelta,\n                \"hp.value\": target.system.hp.value + hpDelta,\n                burn: target.system.burn - burnDelta,\n            },\n        };\n\n        // This is not a flow\n        if (target.is_mech() || target.is_npc() || target.is_deployable())\n            updateData.system[\"heat.value\"] = target.system.heat.value - heatDelta;\n        await target.update(updateData);\n\n        // It feels a bit superfluous to delete the button as it does in original code, \n        // especially given the context of this being an action log. So don't bother. \n        // If the button was done from chat, it'll be deleted on rerender anyway.\n    }\n\n    button.on('click', async (event) => {\n        runDamageUndo(event);\n    });\n}\n\nfunction handleCascadeFlow(messageData: any, button: JQuery<HTMLButtonElement>): void\n{\n    async function runCascadeFlow(): Promise<void>\n    {\n        const CascadeFlow = (game.lancer.flows as Map<string, any>).get(\"CascadeFlow\") as any;\n        const flow = new CascadeFlow(`Actor.${messageData.speaker.actor}`);\n\n        flow.begin();\n    }\n\n    button.on('click', async () =>\n    {\n        runCascadeFlow();\n    });\n}\n\nfunction handleSecondaryStructureFlow(messageData: any, button: JQuery<HTMLButtonElement>): void\n{\n    async function runSecondaryStructureFlow(): Promise<void>\n    {\n        const SecondaryStructureFlow = (game.lancer.flows as Map<string, any>).get(\"SecondaryStructureFlow\") as any;\n        const flow = new SecondaryStructureFlow(`Actor.${messageData.speaker.actor}`);\n\n        flow.begin();\n    }\n\n    button.on('click', async () =>\n    {\n        runSecondaryStructureFlow();\n    });\n}\n\nfunction handleCheckFlow(messageData: any, button: JQuery<HTMLButtonElement>): void\n{\n    async function runCheckFlow(): Promise<void>\n    {\n        const checkType = button.data('check-type');\n        const StatRollFlow = (game.lancer.flows as Map<string, any>).get(\"StatRollFlow\") as any;\n        const flow = new StatRollFlow(`Actor.${messageData.speaker.actor}`, `system.${checkType}`);\n\n        flow.begin();\n    }\n\n    button.on('click', async () =>\n    {\n        runCheckFlow();\n    });\n}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { rebindButtons } from \"@/scripts/action-log\";\n\n    let {\n        messageData,\n    } = $props();\n\n    let component: HTMLElement | null = null;\n        \n    onMount(() =>\n    {\n        if (component)\n        {\n            rebindButtons(messageData, component);\n        }\n    });\n</script>\n\n<div class=\"-fontsizemedium\"\n    bind:this={component}\n>\n    {@html messageData.content}\n</div>\n","<script lang=\"ts\">\n    import { onDestroy, onMount } from \"svelte\";\n    import { trackHook } from \"@/scripts/store/hooks\";\n    import type { ActionLogProps } from \"@/interfaces/actor/ActionLogProps\";\n    import HeaderSecondary, { H2_HEADER_STYLE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import ActionLogMessage from \"@/svelte/shared/ActionLogMessage.svelte\";\n\n    const {\n        uuid,\n        maxHeight,\n        dontSaveCollapse,\n        startCollapsed,\n        collapsePrefix,\n    }: ActionLogProps = $props();\n\n    //@ts-ignore Foundry native\n    const messages = game.messages as Array<any>;\n    const idParts = $derived(uuid.split('.'));\n\n    let filteredMessages: Array<any> = $state(messages?.filter((m: any) => {\n        const msgActorID = m.speaker.token || m.speaker.actor;\n        return idParts.includes(msgActorID) && m.content?.trim().startsWith('<div c'); // (#9) I hate this check, but nothing can be done until flags are properly used. The system doesn't offer any other way to distinguish between chat and actions and using the DOM api to check HTML content would be slower\n    }) || []);\n    let component: HTMLElement | null = $state(null);\n    let extractedTimes: Array<string> = $state([]);\n    let extractedNames: Array<string> = $state([]);\n    let animationFrame: number;\n\n    onMount(() =>\n    {\n        filteredMessages.forEach((message) => \n        {\n            extractedTimes.push(extractTime(message.timestamp));\n            extractedNames.push(extractName(message.content));\n        });\n\n        trackHook(uuid, Hooks.on(\"createChatMessage\", (message: any) => \n        {\n            const msgActorID = message.speaker.token || message.speaker.actor;\n            if (idParts.includes(msgActorID) && message.content?.trim().startsWith('<div c')) // (#9)\n            {\n                filteredMessages.push(message);\n                extractedTimes.push(extractTime(message.timestamp));\n                extractedNames.push(extractName(message.content));\n            }\n        }), \"createChatMessage\");\n        trackHook(uuid, Hooks.on(\"deleteChatMessage\", (message: any) => \n        {\n            const index = filteredMessages.findIndex((msg) => msg.id === message.id);\n            if (index !== -1) \n            {\n                filteredMessages.splice(index, 1);\n                extractedTimes.splice(index, 1);\n                extractedNames.splice(index, 1);\n            }\n        }), \"deleteChatMessage\");\n\n        function refreshTimes() \n        {\n            extractedTimes = filteredMessages.map((message) => extractTime(message.timestamp));\n            animationFrame = requestAnimationFrame(() => \n            {\n                setTimeout(refreshTimes, 15000); // Update every 15 seconds like Foundry does\n            });\n        }\n        refreshTimes();\n    });\n\n    onDestroy(() => \n    {\n        cancelAnimationFrame(animationFrame);\n    });\n\n    $effect(() => \n    {\n        component?.scrollTo(0, component.scrollHeight);\n    });\n\n    function extractTime(messageTime: number)\n    {\n        const now = Math.floor(Date.now()); // Current time in milliseconds\n        const diff = now - messageTime;\n\n        if (diff < 60000) {\n            const seconds = Math.round(diff / 1000);\n            return `${seconds}s ago`;\n        } else if (diff < 3600000) {\n            const minutes = Math.round(diff / 60000);\n            return `${minutes}m ago`;\n        } else if (diff < 86400000) {\n            const hours = Math.round(diff / 3600000);\n            return `${hours}h ago`;\n        } else {\n            const days = Math.round(diff / 86400000);\n            return `${days}d ago`;\n        }\n    }\n\n    // TODO: write PR so that more information (e.g. name, caller, etc) \n    // gets stored in ChatMessage flags, so we don't have to do this jank\n    // to simply get the name of the item\n    function extractName(content: string) \n    {\n        const element = document.createElement(\"div\");\n        element.innerHTML = content;\n\n        const headerElement = jQuery(element).find('.lancer-header, .lancer-stat-header').get(0) as HTMLElement | null;\n\n        if (!headerElement)\n            return getLocalized(\"LA.placeholder\");\n\n        const headerText = headerElement.firstChild?.textContent?.trim();\n        if (headerText)\n            return headerText;\n\n        const spanElement = jQuery(headerElement).find('span').get(0) as HTMLElement | null;\n        return spanElement?.textContent?.trim() || getLocalized(\"LA.placeholder\");\n    }\n</script>\n\n{#snippet headerSecondaryLeftOptions()}\n    <i class=\"mdi mdi-message-text -fontsizemedium -padding0\"></i>\n{/snippet}\n\n<div\n    class=\"la-actionlog -main la-flexcol -gap0 -widthfull -displayflex -directioncolumnreverse\"\n    style={maxHeight ? `max-height: ${maxHeight}rem;` : \"\"}\n    bind:this={component}\n>\n{#each filteredMessages as message, index}\n{#snippet headerSecondaryRightOptions()}\n    <span class=\"-fontsizesmall\">{extractedTimes[index]}</span>\n{/snippet}\n    <HeaderSecondary\n        text={extractedNames[index]}\n        headerStyle={[H2_HEADER_STYLE, \"la-bckg-header-anti\"]}\n        textStyle={[\"la-text-header la-prmy-header -fontsizemedium -upper\"]}\n        borderStyle={[\"la-brdr-header-anti\"]}\n        \n        itemID={message.id}\n        collapseID={`chat.${collapsePrefix ? collapsePrefix + '.' : ''}${message.id}`}\n        startCollapsed={startCollapsed}\n        dontSaveCollapse={dontSaveCollapse}\n\n        contentLeft={headerSecondaryLeftOptions}\n        contentRight={headerSecondaryRightOptions}\n    >\n        <ActionLogMessage\n            messageData={message}\n        />\n    </HeaderSecondary>\n{/each}\n</div>","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import {\n        formatString,\n        getCurrentOvercharge,\n        getLocalized,\n        handleOverchargeDecrease,\n        handleOverchargeIncrease,\n        logographicLanguage\n    } from \"@/scripts/helpers\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getMechSheetLogActionMainEnabled, getMechSheetLogActionDontSaveCollapse, getMechSheetLogActionStartCollapsed } from \"@/scripts/mech/settings\";\n    import { getMechSheetLogActionMainMaxHeight, getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    import { ActionLogCollapsePrefix } from \"@/enums/ActionLogCollapsePrefix\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import ActiveEffects from \"@/svelte/shared/ActiveEffects.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import ActionLog from \"@/svelte/shared/ActionLog.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n\n    const props: MechSheetProps = $props();\n    const {\n        actor,\n        system,\n        document\n    } = $derived(props);\n    setActorContext(actor);\n    let collapseAllButtonHover = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const actionLogEnabled = getMechSheetLogActionMainEnabled();\n    const actionLogMaxHeight = getMechSheetLogActionMainMaxHeight();\n    const actionLogSaveCollapse = getMechSheetLogActionDontSaveCollapse();\n    const actionLogStartCollapsed = getMechSheetLogActionStartCollapsed();\n    const overchargePlusTip = TooltipFactory.buildTooltip(getLocalized('LA.overcharge.increase.tooltip'));\n    const overchargeMinusTip = TooltipFactory.buildTooltip(getLocalized('LA.overcharge.decrease.tooltip'));\n    const overchargeText = $derived(formatString(getLocalized(\"LA.flow.overcharge.tooltip\"), getCurrentOvercharge(actor)));\n    const collID = $derived(`${actor.uuid}.status.activeEffects`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function updateDocument(event: Event & { currentTarget: EventTarget & HTMLInputElement; }, path: any)\n    {\n        document.update({[path]: event.currentTarget.valueAsNumber});\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={true}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<div class=\"la-status__list la-flexcol -widthfull\">\n    {#if actionLogEnabled}\n    <!-- Action Log -->\n    <HeaderMain\n        text={getLocalized(\"LA.tab.status.actionLog.label\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-bckg-card la-brdr-transparent clipped-bot-alt\"]}\n        extensionTextFunction={() => {      \n            if (collapseAllButtonHover)\n                return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n            return undefined;\n        }}\n\n        collapseID={`${actor.uuid}.status.actionLog`}\n        startCollapsed={false}\n    >\n        <ActionLog\n            uuid={actor.uuid}\n            maxHeight={actionLogMaxHeight}\n            dontSaveCollapse={actionLogSaveCollapse}\n            startCollapsed={actionLogStartCollapsed}\n            collapsePrefix={ActionLogCollapsePrefix.MechSheet}\n        />\n    </HeaderMain>\n    {/if}\n    <!-- Active Effects -->\n    <HeaderMain \n        text={getLocalized(\"LA.tab.status.effects.label\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-bckg-card la-brdr-transparent clipped-bot-alt\"]}\n\n        collapseID={collID}\n        startCollapsed={false}\n\n        headerContent={headerOptions}\n    >\n        <ActiveEffects { ...props }\n            tooltipEnabled={tooltipEnabled}\n            logging={true}\n        />\n    </HeaderMain>\n    <!-- Integrity -->\n    <HeaderMain\n        text={getLocalized(\"LA.tab.status.integrity.label\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-bckg-card la-brdr-transparent clipped-bot-alt\"]}\n\n        collapseID={`${actor.uuid}.status.integrity`}\n        startCollapsed={false}\n    >\n        <div class=\"la-flexcol -widthfull -heightfull -padding0-r -padding1-t -fontface-stylized\">\n            <div class=\"la-flexrow -justifyevenly -wrapwrap -widthfull -heightfull -flex1\">\n                <!-- Structure -->\n                <div class=\"la-flexrow -aligncenter\">\n                    <i class=\"cci cci-structure la-dropshadow -fontsize11 -displayinline\"></i>\n                    <span class=\"la-label__span -fontsizemedium\n                            {logographic ? '-width2ch' : '-writingmode-v'}\"\n                    >{getLocalized(\"LA.structure.label\")}</span>\n                    <div class=\"la-flexcol -divider la-prmy-accent -fontsize6 -textaligncenter\">\n                        <!-- (#11) Lancer base sheets make it currently impossible to use the 'name' property as intended, \n                        forcing it to send it back as an array; so we handle the update in a roundabout way -->\n                        <input class=\"la-top__input -width2ch la-shadow -medium -inset la-text-text\"\n                            type=\"number\" \n                            value={system.structure.value}\n                            onfocus={event => event.currentTarget.select()}\n                            onchange={event => updateDocument(event, \"system.structure.value\")}\n                        /><!--\n                    ---><span class=\"la-bottom__span\">{system.structure.max}</span>\n                    </div>\n                </div>\n                <!-- Repair -->\n                <div class=\"la-flexrow -aligncenter\">\n                    <i class=\"cci cci-repair la-dropshadow -fontsize11\"></i>\n                    <span class=\"la-label__span -fontsizemedium\n                            {logographic ? '-width2ch' : '-writingmode-v'}\"\n                    >{getLocalized(\"LA.flow.repair.label\")}</span>\n                    <div class=\"la-flexcol -divider la-prmy-accent -fontsize6 -textaligncenter\">\n                        <input class=\"la-top__input -width2ch la-shadow -medium -inset la-text-text\"\n                            type=\"number\" \n                            name=\"system.repairs.value\"\n                            data-dtype=\"Number\" value={system.repairs.value}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                        <span class=\"la-bottom__span\">{system.repairs.max}</span>\n                    </div>\n                </div>\n                <!-- Stress -->\n                <div class=\"la-flexrow -aligncenter\">\n                    <i class=\"cci cci-reactor la-dropshadow -fontsize11\"></i>\n                    <span class=\"la-label__span -fontsizemedium\n                            {logographic ? '-width2ch' : '-writingmode-v'}\"\n                    >{getLocalized(\"LA.stress.label\")}</span>\n                    <div class=\"la-flexcol -divider la-prmy-accent -fontsize6 -textaligncenter\">\n                        <!-- (#11) -->\n                        <input class=\"la-top__input -width2ch la-shadow -medium -inset la-text-text\"\n                            type=\"number\" \n                            value={system.stress.value}\n                            onfocus={event => event.currentTarget.select()}\n                            onchange={event => updateDocument(event, \"system.stress.value\")}\n                        />\n                        <span class=\"la-bottom__span\">{system.stress.max}</span>\n                    </div>\n                </div>\n                <!-- Burn -->\n                <div class=\"la-flexrow -aligncenter\">\n                    <i class=\"cci cci-burn la-dropshadow -fontsize11\"></i>\n                    <span class=\"la-label__span -fontsizemedium\n                            {logographic ? '-width2ch' : '-writingmode-v'}\"\n                    >{getLocalized(\"LA.burn.label\")}</span>\n                    <!-- (#11) -->\n                    <input class=\"la-top__input -width2ch la-shadow -fontsize6 -medium -inset la-text-text\"\n                        type=\"number\" \n                        value={system.burn}\n                        onfocus={event => event.currentTarget.select()}\n                        onchange={event => updateDocument(event, \"system.burn\")}\n                    />\n                </div>\n                <!-- Overcharge -->\n                <div class=\"la-flexrow -aligncenter\">\n                    <div class=\"la-flexrow -alignselfcenter -positionrelative\">\n                        <i class=\"cci cci-overcharge la-dropshadow -fontsize11\"></i>\n                        <div class=\"la-flexcol -divider la-prmy-accent -fontsize6 -textaligncenter\">\n                            <span class=\"la-top__span -widthfull\">\n                                <GlyphButton type=\"button\"\n                                    flowClass={FlowClass.None}\n                                    style={[\"mdi mdi-chevron-left la-text-secondary la-prmy-primary -fontsize5 -alignselfcenter\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltip={overchargeMinusTip}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.UP}\n                                    onClick={event => handleOverchargeDecrease(event, actor)}\n                                >\n                                </GlyphButton>\n                                    {getCurrentOvercharge(actor)}\n                                <GlyphButton type=\"button\"\n                                    flowClass={FlowClass.None}\n                                    style={[\"mdi mdi-chevron-right la-text-secondary la-prmy-primary -fontsize5 -alignselfcenter\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltip={overchargePlusTip}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.UP}\n                                    onClick={event => handleOverchargeIncrease(event, actor)}\n                                >\n                                </GlyphButton>\n                            </span>\n                            <span class=\"la-bottom__span -fontsizemedium\">{getLocalized(\"LA.flow.overcharge.label\")}</span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <hr class=\"-widthfull\"/>\n            <div class=\"la-flexrow -gap0 -wrapwrap -justifybetween -widthfull -heightfull -flex0\">\n                <div class=\"la-flexcol -gap0 la-dropshadow -flex1 -widthfull\">\n                    <FlowButton\n                        style={[\"clipped-alt -widthfull la-bckg-tabs -padding0 -lineheight4\"]}\n                        text={getLocalized(\"LA.flow.structureDamage.label\")}\n    \n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"Structure\"}\n    \n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        tooltip={getLocalized(\"LA.flow.structureDamage.tooltip\")}\n                        logText={getLocalized(\"LA.flow.structureDamage.tooltip\")}\n                        logging={true}\n                    />\n                    <FlowButton\n                        style={[\"clipped-alt -widthfull la-bckg-tabs -padding0 -lineheight4\"]}\n                        text={getLocalized(\"LA.flow.reactorStress.label\")}\n    \n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"Overheat\"}\n    \n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltip={getLocalized(\"LA.flow.reactorStress.tooltip\")}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={getLocalized(\"LA.flow.reactorStress.tooltip\")}\n                        logging={true}\n                    />\n                    <FlowButton\n                        style={[\"clipped-alt -widthfull la-bckg-tabs -padding0 -lineheight4\"]}\n                        text={getLocalized(\"LA.flow.fullRepair.label\")}\n    \n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"FullRepair\"}\n    \n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltip={getLocalized(\"LA.flow.fullRepair.tooltip\")}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={getLocalized(\"LA.flow.fullRepair.tooltip\")}\n                        logging={true}\n                    />\n                </div>\n                <div class=\"la-flexcol -gap0 la-dropshadow -flex1\">\n                    <FlowButton \n                        style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                        text={getLocalized(\"LA.flow.overcharge.label\")}\n\n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"Overcharge\"}\n\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltipHeader={getLocalized(\"LA.action.overcharge.label\")}\n                        tooltip={overchargeText}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={overchargeText}\n                        logging={true}\n                    />\n                    <FlowButton\n                        style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                        text={getLocalized(\"LA.flow.overchargeReset.label\")}\n\n                        uuid={actor.uuid}\n                        flowClass={FlowClass.ResetOvercharge}\n\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltip={getLocalized(\"LA.flow.overchargeReset.tooltip\")}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={getLocalized(\"LA.flow.overchargeReset.tooltip\")}\n                        logging={true}\n                    />\n                    <FlowButton\n                        style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                        text={getLocalized(\"LA.flow.stabilize.label\")}\n                        \n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"Stabilize\"}\n    \n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltipHeader={getLocalized(\"LA.action.full.label\")}\n                        tooltip={getLocalized(\"LA.flow.stabilize.tooltip\")}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={getLocalized(\"LA.flow.stabilize.tooltip\")}\n                        logging={true}\n                    />\n                    <FlowButton\n                        style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                        text={getLocalized(\"LA.flow.extinguish.label\")}\n    \n                        uuid={actor.uuid}\n                        flowClass={FlowClass.Standard}\n                        flowType={\"Burn\"}\n    \n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        tooltipHeader={getLocalized(\"LA.action.endofturn.label\")}\n                        tooltip={getLocalized(\"LA.flow.extinguish.tooltip\")}\n                        tooltipDirection={TooltipDirection.LEFT}\n                        logText={getLocalized(\"LA.flow.extinguish.tooltip\")}\n                        logging={true}\n                    />\n                    <!-- TODO: make a flow for partial repair -->\n                </div>\n            </div>\n        </div>\n    </HeaderMain>\n</div>","export enum CounterBoxType\n{\n    Counter = \"counter-hex\",\n    Limited = \"uses-hex\",\n    Loaded = \"la-loaded-hex\", // A dummy type; the system's event handler cannot be used\n    Charged = \"charged-hex\",\n}","export enum ChatCardType\n{\n    Weapon,\n    Gear,\n    Armor,\n    System,\n    Tech,\n    Trait,\n    Reaction,\n    Quick,\n    Full,\n    Protocol,\n    Free,\n    Primary,\n    Secondary,\n}","export const ACTIVATION_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Full\"      : \"LA.action.full.label\",\n    \"Quick\"     : \"LA.action.quick.label\",\n    \"Reaction\"  : \"LA.action.reaction.label\",\n    \"Protocol\"  : \"LA.action.protocol.label\",\n    \"Free\"      : \"LA.action.free.label\",\n    \"Full Tech\" : \"LA.action.fullTech.label\",\n    \"Quick Tech\": \"LA.action.quickTech.label\",\n    \"Invade\"    : \"LA.action.invade.label\",\n}\n\nexport const ACTIVATION_TOOLTIP_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Full\"      : \"LA.action.full.tooltip\",\n    \"Quick\"     : \"LA.action.quick.tooltip\",\n    \"Reaction\"  : \"LA.action.reaction.tooltip\",\n    \"Protocol\"  : \"LA.action.protocol.tooltip\",\n    \"Free\"      : \"LA.action.free.tooltip\",\n    \"Full Tech\" : \"LA.action.fullTech.tooltip\",\n    \"Quick Tech\": \"LA.action.quickTech.tooltip\",\n    \"Invade\"    : \"LA.action.invade.tooltip\",\n}\n\nexport const ACTIVATION_ICON_MAP: { [key: string]: string } = {\n    \"Full\"      : \"cci-activation-full\",\n    \"Quick\"     : \"cci-activation-quick\",\n    \"Reaction\"  : \"cci-reaction\",\n    \"Protocol\"  : \"cci-protocol\",\n    \"Free\"      : \"cci-free-action\",\n    \"Full Tech\" : \"cci-tech-full\",\n    \"Quick Tech\": \"cci-tech-quick\",\n    \"Invade\"    : \"cci-tech-quick\",\n}\n\nexport const ACTIVATION_COLOR_MAP: { [key: string]: string } = {\n    \"Full\"      : \"la-bckg-action--full\",\n    \"Quick\"     : \"la-bckg-action--quick\",\n    \"Reaction\"  : \"la-bckg-npc--reaction\",\n    \"Protocol\"  : \"la-bckg-action--protocol\",\n    \"Free\"      : \"la-bckg-action--free\",\n    \"Full Tech\" : \"la-bckg-action--tech\",\n    \"Quick Tech\": \"la-bckg-action--tech\",\n    \"Invade\"    : \"la-bckg-action--tech\",\n    \"Passive\"   : \"la-bckg-repcap\",\n}\n\nexport const SYSTEM_ICON_MAP: { [key: string]: string } = {\n    \"Deployable\": \"cci-deployable\",\n    \"Drone\"     : \"cci-drone\",\n    \"Mod\"       : \"cci-mod\",\n    \"System\"    : \"cci-system\",\n    \"Tech\"      : \"cci-tech-quick\"\n}\n\nexport const MOUNT_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Main\"      : \"LA.mech.mount.main.label\",\n    \"Heavy\"     : \"LA.mech.mount.heavy.label\",\n    \"Aux/Aux\"   : \"LA.mech.mount.auxAux.label\",\n    \"Aux\"       : \"LA.mech.mount.aux.label\",\n    \"Main/Aux\"  : \"LA.mech.mount.mainAux.label\",\n    \"Flex\"      : \"LA.mech.mount.flex.label\",\n    \"Integrated\": \"LA.mech.mount.integrated.label\",\n    \"Superheavy\": \"LA.mech.mount.superheavy.label\",\n    \"Unknown\"   : \"LA.mech.mount.unknown.label\",\n}\n\nexport const MOUNT_FITTINGS: { [key: string]: Array<string> } = {\n    \"Main\"      : [\"Main\"],\n    \"Heavy\"     : [\"Heavy\"],\n    \"Aux/Aux\"   : [\"Auxiliary\", \"Auxiliary\"],\n    \"Aux\"       : [\"Auxiliary\"],\n    \"Main/Aux\"  : [\"Main\", \"Auxiliary\"],\n    \"Flex\"      : [\"Flex\"],\n    \"Integrated\": [\"Integrated\"],\n    \"Superheavy\": [\"Superheavy\"],\n    \"Unknown\"   : [\"Integrated\"],\n}\n\nexport const SLOT_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Auxiliary\" : \"LA.mech.slot.aux.label\",\n    \"Main\"      : \"LA.mech.slot.main.label\",\n    \"Flex\"      : \"LA.mech.slot.flex.label\",\n    \"Heavy\"     : \"LA.mech.slot.heavy.label\",\n    \"Superheavy\": \"LA.mech.slot.superheavy.label\",\n    \"Integrated\": \"LA.mech.slot.integrated.label\",\n}\n\nexport const SYSTEM_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Deployable\": \"LA.mech.system.deployable.label\",\n    \"Drone\"     : \"LA.mech.system.drone.label\",\n    \"Mod\"       : \"LA.mech.system.mod.label\",\n    \"System\"    : \"LA.mech.system.system.label\",\n    \"Tech\"      : \"LA.mech.system.tech.label\"\n}\n\nexport const RESERVE_LOCALIZE_MAP: { [key: string]: string } = {\n    \"Resources\"     : \"LA.pilot.reserve.resources.label\",\n    \"Tactical\"      : \"LA.pilot.reserve.tactical.label\",\n    \"Mech\"          : \"LA.pilot.reserve.mech.label\",\n    \"Project\"       : \"LA.pilot.reserve.project.label\",\n    \"Organization\"  : \"LA.pilot.reserve.organization.label\",\n    \"Bonus\"         : \"LA.pilot.reserve.bonus.label\",\n}\n\nexport const RESERVE_ICON_MAP: { [key: string]: string } = {\n    \"Resources\"     : \"cci-orbit\",\n    \"Tactical\"      : \"cci-reserve-tac\",\n    \"Mech\"          : \"cci-reserve-mech\",\n    \"Project\"       : \"cci-ship\",\n    \"Organization\"  : \"cci-orbital\",\n    \"Bonus\"         : \"cci-npc-feature\",\n}\n\nimport { ChatCardType } from \"@/enums/ChatCardType\";\n// Since the chat window is outside the scope of the sheets, most \n// of the CSS is unavailable, so we fallback onto the base Lancer system's\nexport const CHAT_CARD_COLOR_MAP: Record<ChatCardType | string, string> = {\n    [ChatCardType.Weapon]: \"lancer-weapon\",\n    [ChatCardType.Gear]: \"lancer-weapon\",\n    [ChatCardType.Armor]: \"lancer-weapon\",\n    [ChatCardType.System]: \"lancer-system\",\n    [ChatCardType.Tech]: \"lancer-tech\",\n    [ChatCardType.Trait]: \"lancer-trait\",\n    [ChatCardType.Reaction]: \"lancer-reaction\",\n    [ChatCardType.Quick]: \"lancer-quick\",\n    [ChatCardType.Full]: \"lancer-full\",\n    [ChatCardType.Protocol]: \"lancer-protocol\",\n    [ChatCardType.Free]: \"lancer-free\",\n    [ChatCardType.Primary]: \"lancer-primary\",\n    [ChatCardType.Secondary]: \"lancer-secondary\",\n};\n\nexport const CHAT_CARD_ACTIVATION_COLOR_MAP: { [key: string]: string } = {\n    \"Full\"      : CHAT_CARD_COLOR_MAP[ChatCardType.Full],\n    \"Quick\"     : CHAT_CARD_COLOR_MAP[ChatCardType.Quick],\n    \"Reaction\"  : CHAT_CARD_COLOR_MAP[ChatCardType.Reaction],\n    \"Protocol\"  : CHAT_CARD_COLOR_MAP[ChatCardType.Protocol],\n    \"Free\"      : CHAT_CARD_COLOR_MAP[ChatCardType.Free],\n    \"Full Tech\" : CHAT_CARD_COLOR_MAP[ChatCardType.Tech],\n    \"Quick Tech\": CHAT_CARD_COLOR_MAP[ChatCardType.Tech],\n    \"Invade\"    : CHAT_CARD_COLOR_MAP[ChatCardType.Tech],\n}","// This file replaces `index.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nimport { urlAlphabet } from './url-alphabet/index.js'\n\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\n\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n  // First, a bitmask is necessary to generate the ID. The bitmask makes bytes\n  // values closer to the alphabet size. The bitmask calculates the closest\n  // `2^31 - 1` number, which exceeds the alphabet size.\n  // For example, the bitmask for the alphabet size 30 is 31 (00011111).\n  // `Math.clz32` is not used, because it is not available in browsers.\n  let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n  // Though, the bitmask solution is not perfect since the bytes exceeding\n  // the alphabet size are refused. Therefore, to reliably generate the ID,\n  // the random bytes redundancy has to be satisfied.\n\n  // Note: every hardware random generator call is performance expensive,\n  // because the system call for entropy collection takes a lot of time.\n  // So, to avoid additional system calls, extra bytes are requested in advance.\n\n  // Next, a step determines how many random bytes to generate.\n  // The number of random bytes gets decided upon the ID size, mask,\n  // alphabet size, and magic number 1.6 (using 1.6 peaks at performance\n  // according to benchmarks).\n\n  // `-~f => Math.ceil(f)` if f is a float\n  // `-~i => i + 1` if i is an integer\n  let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n\n  return (size = defaultSize) => {\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      // A compact alternative for `for (var i = 0; i < step; i++)`.\n      let j = step | 0\n      while (j--) {\n        // Adding `|| ''` refuses a random byte that exceeds the alphabet size.\n        id += alphabet[bytes[j] & mask] || ''\n        if (id.length === size) return id\n      }\n    }\n  }\n}\n\nlet customAlphabet = (alphabet, size = 21) =>\n  customRandom(alphabet, size, random)\n\nlet nanoid = (size = 21) =>\n  crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n    // It is incorrect to use bytes exceeding the alphabet size.\n    // The following mask reduces the random byte in the 0-255 value\n    // range to the 0-63 value range. Therefore, adding hacks, such\n    // as empty string fallback or magic numbers, is unneccessary because\n    // the bitmask trims bytes down to the alphabet size.\n    byte &= 63\n    if (byte < 36) {\n      // `0-9a-z`\n      id += byte.toString(36)\n    } else if (byte < 62) {\n      // `A-Z`\n      id += (byte - 26).toString(36).toUpperCase()\n    } else if (byte > 62) {\n      id += '-'\n    } else {\n      id += '_'\n    }\n    return id\n  }, '')\n\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","// Reimplementation of bare-minimum foundryvtt-lancer functionality (src/module/flows/_render.ts)\nimport { nanoid } from \"nanoid\";\n\nexport async function renderTemplateStep(actor: any, template: string, templateData: any, flags?: any) {\n  templateData._uuid = nanoid();\n\n  const html = await renderTemplate(template, templateData);\n\n  // Schlorp up all the rolls into a mega-roll so DSN sees the stuff to throw\n  // on screen\n  const aggregate: Roll[] = [];\n  if (templateData.roll) {\n    aggregate.push(templateData.roll);\n  }\n  if (templateData.result) {\n    aggregate.push(templateData.result.roll);\n  }\n  if ((templateData.attack_results?.length ?? 0) > 0) {\n    aggregate.push(...templateData.attack_results.map((a: { roll: Roll }) => a.roll));\n  }\n  if ((templateData.crit_damage_results?.length ?? 0) > 0) {\n    aggregate.push(...templateData.crit_damage_results.map((d: { roll: Roll }) => d.roll));\n  } else if ((templateData.damage_results?.length ?? 0) > 0) {\n    aggregate.push(...templateData.damage_results.map((d: { roll: Roll }) => d.roll));\n  }\n  if (templateData.self_heat_result) {\n    aggregate.push(templateData.self_heat_result.roll);\n  }\n  return createChatMessageStep(actor, html, aggregate, flags);\n}\n\nexport async function createChatMessageStep(\n  actor: any,\n  html: HTMLElement | string,\n  rolls?: Roll | Roll[],\n  flags?: any\n) {\n  if (rolls && !Array.isArray(rolls)) rolls = [rolls];\n  let chat_data = {\n    type: 2,\n    rolls,\n    speaker: {\n      actor: actor,\n      token: actor?.token,\n      alias: !!actor?.token ? actor.token.name : null,\n    },\n    content: html,\n    flags: flags ? { lancer: flags } : undefined,\n  };\n  if (!rolls) delete chat_data.rolls;\n\n  //@ts-expect-error haha I sure hope noone looks here\n  const cm = await ChatMessage.implementation.create(chat_data);\n  (cm as any)?.render();\n}","import { CustomFlowClass } from \"@/enums/FlowClass\";\nimport type { FlowState } from \"@/types/lancer\";\nimport type { ChatData } from \"@/interfaces/flows/ChatData\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\nimport { renderTemplateStep } from \"@/scripts/lancer/flows/_render\";\nimport { FlowBase } from \"./FlowBase\";\n\n// Boiler plate mostly and an example of how this module extends flows\nexport class SendUnknownToChatBase extends FlowBase\n{\n    public constructor() { super(); }\n\n    setupFlow()\n    {\n        const SendUnknownToChat = class extends (game.lancer.Flow as any)<any>\n        {\n            static steps = [\"printFeatureCard\"];\n\n            constructor(uuid: string, data: ChatData)\n            {\n                super(uuid, {\n                    title: data.title,\n                    description: data.description,\n                    trigger: data.trigger,\n                    effect: data.effect,\n                    onHit: data.onHit,\n                    onCrit: data.onCrit,\n                    attackBonus: data?.attackBonus, // NPCs only\n                    accuracyBonus: data?.accuracyBonus, // NPCs only\n                    tags: data.tags,\n                    color: data.color,\n                });\n            }\n        }\n\n        // Export the SendUnknownToChat class\n        return SendUnknownToChat;\n    }\n\n    setupFlowSteps(): any[]\n    {\n        return [\n            this.printFeatureCard,\n        ];\n    }\n\n    /**\n     * Starts the flow by creating an instance of the `SendUnknownToChat` class and beginning the flow.\n     *\n     * @param {string} uuid - All flows require a UUID, though not all will make use of it. The matching item will be included in the data when sent.\n     * @param {any} data - The data to pass to the flow\n     */\n    startFlow(uuid: string, data: ChatData): void\n    {\n        const flows = game.lancer.flows as Map<string, any>;\n        // UUID doesn't actually matter here, but flows require it\n        let flow = new (flows.get(CustomFlowClass.SendUnknownToChat))(\n            uuid,\n            data\n        );\n\n        flow.begin();\n    }\n\n    async printFeatureCard(state: FlowState<any>, options?: { template?: string }): Promise<boolean>\n    {\n        if (!state.data) throw new TypeError(`Flow state missing!`);\n        \n        renderTemplateStep(\n            state.actor,\n            options?.template || TEMPLATE_PATHS.featureCard,\n            state.data\n        );\n        \n        return true;\n    }\n}\n","import { enable_legacy_mode_flag } from './index.js';\n\nenable_legacy_mode_flag();\n","<script lang=\"ts\" module>\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    export const CLICKABLE_HOVER = () => \" la-scdy-header \" + (getExtraEffectsEnabled() ? \"-glow-scdy-hover \" : \" \");\n    export const H2_BUTTON_ICON_STYLE = () => \" la-prmy-header -fontsize4 la-scdy-primary \" + (getExtraEffectsEnabled() ? \"-glow-prmy -glow-scdy-hover \" : \" \");\n</script>","<!-- TODO: get rid of hasFlow -->\n<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import type { EffectBoxProps } from \"@/interfaces/actor/EffectBoxProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import { CLICKABLE_HOVER } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        children,\n        name,\n        effect,\n        hasFlow,\n        innerStyle,\n        outerStyle,\n\n        editOption,\n        editPath,\n\n        tooltipEnabled,\n        tooltipTheme,\n\n        logging,\n    }: EffectBoxProps & TooltipProps & TextLogEventProps = $props();\n\n    const qualityMode = getExtraEffectsEnabled();\n    const logographic = logographicLanguage();\n</script>\n<script lang=\"ts\" module>\n    export const EFFECT_BOX_STYLE = ' la-bckg-card la-brdr-repcap -bordersround-ltb ';\n</script>\n\n{#if effect || children}\n<div class=\"la-effectbox -widthfull\n        {logographic ? '-fontsizemedium' : '-fontsizemediumer'}\n        {outerStyle ? outerStyle?.join(' ') : EFFECT_BOX_STYLE}\"\n>\n    <span class=\"la-effectbox__span clipped-bot la-bckg-primary la-text-header -fontface-stylized\n            {logographic ? '-fontsizemediumer' : '-fontsizesmall'}\">\n        {name}<!--\n---><button type=\"button\"\n        class=\"mdi mdi-pencil popout-text-edit-button -padding0-l\n            {qualityMode ? CLICKABLE_HOVER() : ''}\n            {editOption ? '' : '-displaynone'}\"\n        data-path={editPath}\n        aria-label={getLocalized(\"LA.edit.label\")}>\n    </button><!--\n---><!--\n---></span>\n    {#if hasFlow}\n        <FlowButton\n            text={getLocalized(\"LA.use.label\")}\n            flowClass={FlowClass.SendEffectToChat}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={tooltipTheme}\n            logging={logging}\n        />\n    {/if}\n    <span\n        class=\"{innerStyle?.join(' ')}\"\n    >\n        {@html effect}\n    {#if children}\n        {@render children()}\n    {/if}\n    </span>\n</div>\n{/if}","<!-- TODO: This is almost exclusively used for the ActionBox component. When this needs to be reused, (e.g. for Frame Power) refactor this -->\n<script lang=\"ts\">\n    import type { HeaderProps } from \"@/interfaces/actor/header/HeaderProps\";\n    import type { HeaderQuinaryProps } from \"@/interfaces/actor/header/HeaderQuinaryProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import type { ContentSidesProps } from \"@/interfaces/actor/decoration/ContentSidesProps\";\n    import { getCollapseState, setCollapseState } from \"@/scripts/store/collapse\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import TerminalText from \"@/svelte/shared/TerminalText.svelte\";\n    import { onMount } from \"svelte\";\n\n    const {\n        children,\n        rootStyle,\n        itemID,\n        uuid,\n        path,\n        acceptTypes,\n        collapseID,\n        startCollapsed,\n        dontSaveCollapse,\n        renderOutsideCollapse,\n\n        headerStyle,\n        borderStyle,\n        \n        text,\n        textStyle,\n        extensionText,\n        extensionTextFunction,\n\n        contentLeft,\n        contentRight,\n    }: HeaderProps & HeaderQuinaryProps & TerminalTextProps & ContentSidesProps = $props();\n    \n    const isCollapsed = $derived(getCollapseState(collapseID) ?? startCollapsed ?? false);\n    \n    // (#3)\n    onMount(() => \n    {\n        if (collapseID && (dontSaveCollapse ?? getCollapseState(collapseID) === undefined))\n        {\n            setCollapseState(collapseID, startCollapsed ?? false);\n        }\n    });\n\n    function toggleCollapse(event: MouseEvent) \n    {\n        event.stopPropagation();\n        if (collapseID)\n        {\n            setCollapseState(collapseID, !isCollapsed);\n        }\n    }\n\n    function getExtensionText()\n    {\n        if (extensionTextFunction && extensionTextFunction())\n            return extensionTextFunction();\n        if (extensionText)\n            return extensionText;\n        if (collapseID)\n            return isCollapsed\n                ? `--${getLocalized(\"LA.expand.label\")}`\n                : `--${getLocalized(\"LA.collapse.label\")}`;\n        return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    export const H4_ROOT_STYLE = \" la-bckg-card \";\n    export const H4_BORDER_STYLE = \" la-brdr-repcap -bordersround-ltb -bordersround \"\n    export const H4_ICON_LEFT_STYLE = \" -height5 -lineheight5 -fontsize7 \"\n</script>\n\n<div class=\"la-effectbox -largeheader la-collapsegroup la-flexcol -widthfull \n        {rootStyle?.join(' ') || H4_ROOT_STYLE}\n        {borderStyle?.join(' ') || H4_BORDER_STYLE}\n        {acceptTypes ? `ref set drop-settable ${acceptTypes}` : ''}\n        collapse-group\"\n    data-item-id={itemID}\n    data-uuid={uuid}\n    data-path={path}\n    data-accept-types={acceptTypes}\n    draggable={acceptTypes ? \"true\" : \"false\"}\n>\n    <!-- Action Box header -->\n    <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_static_element_interactions -->\n    <!-- (#2) -->\n    <!-- svelte-ignore event_directive_deprecated -->\n    <div class=\"la-actionheader la-summary la-flexrow la-text-header clipped -aligncenter\n            {headerStyle?.join(' ')}\n            {collapseID ? 'collapse-trigger' : ''}\"\n        data-la-collapse-id={collapseID}\n        on:click={(event) => toggleCollapse(event)}\n    >\n        <div class=\"-flexthird -justifystart\">\n            {#if contentLeft}\n                {@render contentLeft()}\n            {/if}\n        </div>\n        <div class=\"-flexthird -justifycenter\">\n            <TerminalText\n                text={text || getLocalized(\"LA.placeholder\")}\n                textStyle={textStyle}\n                extensionText={getExtensionText()}\n            />\n        </div>\n        <div class=\"la-flexrow -flexthird -justifyend -height5\">\n            {#if contentRight}\n                {@render contentRight()}\n            {/if}\n        </div>\n    </div>\n    <!-- Display if collapsable -->\n{#if renderOutsideCollapse}\n    {@render renderOutsideCollapse()}\n{/if}\n    <div class=\"la-collapsegroup__wrapper -widthfull\n            {collapseID ? 'collapse-wrapper' : ''} {isCollapsed ? 'collapsed' : ''}\"\n        data-la-collapse-id={collapseID}\n    >\n        {#if children}\n            {@render children()}\n        {/if}\n    </div>\n</div>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n\n    import { CLICKABLE_HOVER } from \"@/svelte/shared/button/Button.svelte\";\n\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { PointerHoverProps } from \"@/interfaces/actor/events/PointerHoverProps\";\n\n    const {\n        style,\n        iconStyle,\n        iconBackgroundStyle,\n\n        flowClass,\n        disabled,\n        path,\n        uuid,\n        powerIndex,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n        \n        logText,\n        logging,\n\n        onClick,\n        onPointerEnter,\n        onPointerLeave,\n    } : IconButtonProps & ButtonProps & TooltipProps & TextLogEventProps & PointerHoverProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.effect.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.flow.effect.tooltip\"));\n\n    function handleOnPointerEnter(event: PointerEvent) \n    {\n        if (onPointerEnter)\n            onPointerEnter();\n\n        if (logging)\n            sendToTextConsole(event, log, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function handleOnPointerLeave(event: PointerEvent)\n    {\n        if (onPointerLeave)\n            onPointerLeave();\n\n        if (logging)\n            resetTextConsole(event, actorUuid!);\n        else\n            return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    import { H2_ICON_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    const _DEFAULT_BACKGROUND = `${H2_ICON_SIZE} la-text-scrollbar-secondary -padding0-l`\n    const _DEFAULT_FOREGROUND = `${H2_ICON_SIZE}`\n</script>\n\n<button type=\"button\"\n    class=\"-positionrelative\n        {style?.join(' ')}\n        {flowClass || FlowClass.SendEffectToChat}\n        {disabled ? '' : CLICKABLE_HOVER()}\"\n    style=\"z-index: 1;\"\n    data-uuid={uuid}\n    data-path={path}\n    data-power-index={powerIndex}\n    data-tooltip={tooltipEnabled && !disabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n    onpointerenter={ handleOnPointerEnter }\n    onpointerleave={ handleOnPointerLeave }\n    aria-label={tooltip || getLocalized(\"LA.flow.effect.tooltip\")}\n    disabled={disabled || false}\n    onclick={onClick ? (event) => onClick(event) : undefined }\n>\n    <i \n        class=\"\n            {iconStyle?.join(' ') || _DEFAULT_FOREGROUND}\"\n    ></i>\n{#if !disabled}\n    <i class=\"fal fa-dice-d20 -positionabsolute -left0 \n            {iconBackgroundStyle?.join(' ') || _DEFAULT_BACKGROUND}\" \n        style=\"z-index: -1;\"\n    ></i>\n{/if}\n</button>","<script lang=\"ts\">\n    import type { Snippet } from \"svelte\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { \n        ACTIVATION_COLOR_MAP, \n        ACTIVATION_ICON_MAP, \n        ACTIVATION_LOCALIZE_MAP, \n        ACTIVATION_TOOLTIP_LOCALIZE_MAP, \n        CHAT_CARD_ACTIVATION_COLOR_MAP, \n    } from \"@/scripts/constants\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { slugify } from \"@/scripts/lancer/util/lid\";\n\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import HeaderQuinary from \"@/svelte/shared/header/HeaderQuinary.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_ICON_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { Logger } from \"@/classes/Logger\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type ActionBoxProps = {\n        children?: Snippet;\n        flowButton?: Snippet;\n\n        actions: Array<any>;\n        actor?: any; // Not really used but mandatory for Flows (send-to-chat, edit, etc)\n        path?: string;\n        uuid?: string;\n        \n        editable?: boolean;\n        editDetails?: boolean;\n\n        collapseID?: string;\n        startCollapsed?: boolean;\n\n        /**\n         * Optional event handler for when the user clicks on the left button component.\n         * @param event \n         * @returns \n         */\n        onClick?: (event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any) => void;\n\n        /**\n         * Optional parameter to disable the left button component.\n         */\n        disableLeftButton?: boolean;\n    }\n\n    const {\n        children,\n        flowButton,\n\n        actions,\n        actor,\n        path,\n        uuid,\n\n        editable,\n        editDetails,\n        collapseID,\n        startCollapsed,\n\n        onClick,\n        disableLeftButton,\n\n        tooltipEnabled,\n        tooltipTheme,\n        logging,\n    }: ActionBoxProps & TooltipProps & TextLogEventProps = $props();\n\n    let effectButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const isMechSheet = $derived(actor?.type === \"mech\" || false);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const defaultPlaceholder = getLocalized(\"LA.placeholder\");\n    \n    function getActivationClass(activation: string): string \n    {\n        return `activation-${slugify(activation, \"-\")}`;\n    }\n\n    function getActivationName(activation: string): string \n    {\n        return `${getLocalized(\"LA.use.label\")} ${getLocalized(ACTIVATION_LOCALIZE_MAP[activation])}`;\n    }\n\n    function getReactionTooltip(action: any): string \n    {\n        if (action.trigger)\n            return `\n                ${getLocalized(\"LA.trigger.label\")}: ${action.trigger}\n                <br><br>\n                ${getLocalized(\"LA.mech.system.effect.label\")}: ${action.detail}\n                <br><br>\n                ${getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.activation])}`;\n        else\n            return `${action.detail}<br><br>${getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.activation])}`;\n    }\n\n    // Once actor uuids are no longer required in the Lancer to activate flows, refactor this component to stop using it\n    // (literally only pulled in for this)\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && item)\n        {\n            let chatData = null;\n            if (item.trigger)\n            {\n                chatData = {\n                    title: item.name,\n                    trigger: item.trigger,\n                    effect: item.detail,\n                    color: CHAT_CARD_ACTIVATION_COLOR_MAP[item.activation] || '',\n                } as ChatData;\n            }\n            else\n            {\n                chatData = {\n                    title: item.name,\n                    description: item.detail,\n                    color: CHAT_CARD_ACTIVATION_COLOR_MAP[item.activation] || '',\n                } as ChatData;\n            }\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else \n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#if actions.length > 0}\n{#each actions as action, index}\n{#snippet defaultFlowButton()}\n    <FlowButton\n        text={getActivationName(action.activation)}\n        style={[\"clipped-bot\", ACTIVATION_COLOR_MAP[action.activation]]}\n\n        uuid={uuid}\n        path={`${path}.${index}`}\n        flowClass={action && uuid && path \n            ? `${FlowClass.CoreActivation} ${getActivationClass(action.activation)}`\n            : getActivationClass(action.activation)\n        }\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={tooltipTheme}\n        tooltipDirection={undefined}\n        tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[action.activation])}\n        tooltip={getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.activation])}\n        logging={logging}\n    />\n{/snippet}\n{#snippet outerContent()}\n    {#if flowButton}\n        {@render flowButton()}\n    {/if}\n{/snippet}\n{#snippet headerQuinaryRightOptions()}\n    <!-- TODO: test edit actions -->\n    {#if editable}\n        <button type=\"button\"\n            class=\"la-actionheader__button mdi mdi-pencil -fontsize5\" \n            aria-label={getLocalized(\"LA.edit.label\")}>\n        </button>\n        <button \n            class=\"la-actionheader__button mdi mdi-delete -fontsize5\" \n            data-action=\"splice\"\n            data-uuid={uuid}\n            data-path={path}\n            aria-label={getLocalized(\"LA.delete.label\")}\n        >\n        </button>\n    {/if}\n    <!-- Send to chat -->\n    {#if actor}\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"-margin2-r\"]}\n        flowClass={FlowClass.None}\n        uuid={uuid}\n        path={path}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.chat.tooltip\")}\n        logText={getLocalized(\"LA.chat.tooltip\")}\n        logging={true}\n        \n        onClick={event => sendToChat(event, action)}\n        onPointerEnter={() => {messageButtonHover = true;} }\n        onPointerLeave={() => {messageButtonHover = false;} }\n    >\n        <i class=\"mdi mdi-message\"></i>\n    </GlyphButton>\n    {/if}\n{/snippet}\n{#snippet headerQuinaryLeftOptions()}\n    <EffectButton\n        style={[\"-positionabsolute -left0 -top0 -padding0-l\"]}\n        iconStyle={[H2_ICON_SIZE, ACTIVATION_ICON_MAP[action.activation]]}\n        iconBackgroundStyle={[H2_ICON_SIZE, \"-padding0-l la-prmy-secondary\",\n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n\n        flowClass={onClick\n            ? FlowClass.None\n            : action && uuid && path \n                ? `${FlowClass.CoreActivation} ${getActivationClass(action.activation)}`\n                : getActivationClass(action.activation)\n        }\n        uuid={uuid}\n        path={`${path}.${index}`}\n        onClick={onClick ? (event) => onClick(event, action) : undefined }\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={tooltipTheme}\n        tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[action.activation])}\n        tooltip={getReactionTooltip(action)}\n        tooltipDirection={TooltipDirection.LEFT}\n        logging={logging}\n\n        disabled={disableLeftButton}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />    \n{/snippet}\n    <HeaderQuinary\n        text={action.name}\n        headerStyle={[ACTIVATION_COLOR_MAP[action.activation], \"la-text-header la-prmy-header -padding0-l\"]}\n        textStyle={[\"-fontface-stylized\"]}\n        extensionTextFunction={() => {\n            if (effectButtonHover)\n                return `--${getLocalized(\"LA.chat.extension\")}`;\n            if (messageButtonHover)\n                return `--${getLocalized(\"LA.chat.extension\")}`;\n            return undefined;\n        }}\n\n        uuid={uuid}\n        path={`${path}.${index}`}\n        collapseID={`${collapseID}.${index}`}\n        startCollapsed={startCollapsed}\n\n        contentLeft={headerQuinaryLeftOptions}\n        contentRight={headerQuinaryRightOptions}\n        renderOutsideCollapse={outerContent}\n    >    \n    <!-- Action Box Content -->\n    {#if action.trigger}\n        <div class=\"-fontsizemedium\">\n            <div class=\"la-divider-h la-bckg-primary -margin0-tb\"></div>\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <!-- Trigger -->\n                <EffectBox\n                    name={getLocalized(\"LA.trigger.label\")}\n                    outerStyle={[\"-bordersround\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={logging}\n                >\n                {#if !collapseID}\n                    {@render defaultFlowButton()}\n                    <hr class=\"-widthfull\">\n                {/if}\n                    {@html action.trigger || defaultPlaceholder}\n                </EffectBox>\n                <!-- TODO: allow editDetails -->\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    outerStyle={[\"-bordersround\"]}\n\n                    editOption={editDetails}\n                    editPath={`${path}.detail`}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={logging}\n                >\n                    {@html action.detail || defaultPlaceholder}\n                </EffectBox>\n            </div>\n        {#if children}\n            {@render children()}\n        {/if}\n        </div>\n    {:else}\n        <div class=\"-fontsizemedium\">\n            <div class=\"la-divider-h la-bckg-primary -margin0-tb -margin2-b\"></div>\n            {#if !collapseID}\n                {@render defaultFlowButton()}\n                <hr class=\"-widthfull\">\n            {/if}\n            <EffectBox\n                name={getLocalized(ACTIVATION_LOCALIZE_MAP[action.activation])}\n                outerStyle={[\"-bordersround\"]}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={logging}\n            >\n                {@html action.detail || defaultPlaceholder}\n            </EffectBox>\n        {#if children}\n            {@render children()}\n        {/if}\n        </div>\n    {/if}\n    <!-- The original source reference opened the potential for tags to appear here,\n        but official Lancer data does not have tags for IActionData \n    -->\n    </HeaderQuinary>\n{/each}\n{/if}","<script lang=\"ts\">\n    import type { DeployableBoxProps } from \"@/interfaces/actor/DeployableBoxProps\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n\n    import { \n        ACTIVATION_COLOR_MAP, \n        ACTIVATION_LOCALIZE_MAP, \n        ACTIVATION_TOOLTIP_LOCALIZE_MAP, \n        CHAT_CARD_ACTIVATION_COLOR_MAP \n    } from \"@/scripts/constants\";\n\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getBrightness } from \"@/scripts/theme\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        source, \n        lidSource, \n        uuid,\n        sheetUUID,\n\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme,\n        logging,\n    }: DeployableBoxProps & TooltipProps & TextLogEventProps = $props(); // (#4)\n    const actorUuid = getActorContext()?.uuid;\n\n    const qualityMode = getExtraEffectsEnabled();\n    const themeOverride = $derived(getThemeKey(sheetUUID));\n    const globallyOwnedDeployables: any[] = game.actors!.filter(\n        (a: any) => !!(a.is_deployable() && a.system.owner?.value == source)\n    );\n\n    const tip = TooltipFactory.buildTooltip(getLocalized(\"LA.mech.system.deployable.tooltip\"));\n\n    function lidSourceHasDeployable(deployable: any)\n    {\n        return lidSource.deployables?.includes(deployable.system.lid) ?? false;\n    }\n\n    const defaultImages = [\n        \"systems/lancer/assets/icons/deployable.svg\", \n        \"systems/lancer/assets/icons/white/deployable.svg\"\n    ];\n    \n    function getThemeImg(deployable: any)\n    {\n        let theme = getBrightness(themeOverride);\n        // If not assigned an image\n        if (!deployable.img)\n            return theme === \"dark\" \n                ? \"systems/lancer/assets/icons/white/generic_item.svg\" \n                : \"systems/lancer/assets/icons/generic_item.svg\";\n        // If for some reason the assigned deployable is the default image\n        else if (defaultImages.includes(deployable.img))\n            return theme === \"dark\" \n                ? deployable.img.replace('/icons/', '/icons/white/') \n                : deployable.img\n        else\n            return deployable.img;\n    }\n\n    function getDeployableActions(deployable: any)\n    {\n        return [\n            { \n                label: \"LA.mech.system.deployable.activate.label\", \n                tooltip: \"LA.mech.system.deployable.activate.tooltip\",\n                deployableAction: deployable.system.activation \n            },\n            { \n                label: \"LA.mech.system.deployable.deactivate.label\", \n                tooltip: \"LA.mech.system.deployable.deactivate.tooltip\",\n                deployableAction: deployable.system.deactivation \n            },\n            { \n                label: \"LA.mech.system.deployable.recall.label\", \n                tooltip: \"LA.mech.system.deployable.recall.tooltip\",\n                deployableAction: deployable.system.recall \n            },\n            { \n                label: \"LA.mech.system.deployable.redeploy.label\", \n                tooltip: \"LA.mech.system.deployable.redeploy.tooltip\",\n                deployableAction: deployable.system.redeploy \n            },\n        ].filter(a => !!a.deployableAction);\n    }\n\n    // (#4) Temporary until Lancer system implements proper deployable actions\n    function sendActionToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any)\n    {\n        event.stopPropagation();\n        if (uuid && action)\n        {\n            let chatData = {\n                title: action.name, \n                trigger: action.trigger,\n                effect: action.detail,\n                color: CHAT_CARD_ACTIVATION_COLOR_MAP[action.activation],\n            } as ChatData \n            SendUnknownToChatBase.getInstance().startFlow(uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n\n    // (#4) Temporary until Lancer system implements proper deployable actions\n    function sendDeployableActionToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any, deployable: any)\n    {\n        event.stopPropagation();\n        if (uuid && action)\n        {\n            const effect = `\n                <details>\n                    <summary>\n                    ${getLocalized(\"LA.mech.system.effect.label\")}\n                    </summary>\n                    ${deployable.system.detail}\n                </details>\n            `;\n            const description = `\n                <hr>\n                <div \n                    class=\"clipped lancer-header ${CHAT_CARD_ACTIVATION_COLOR_MAP[action.deployableAction]}\"\n                    style=\"\n                        padding: 0.25rem;\n                    \"\n                >\n                    ${getLocalized(ACTIVATION_LOCALIZE_MAP[action.deployableAction])}\n                </div>\n                <div\n                    style=\"\n                        padding-top: 0.25rem;\n                    \"\n                >\n                ${getLocalized(action.tooltip)}\n                </div>\n            `;\n            let chatData = {\n                title: deployable.name, \n                description: deployable.system.detail ? effect + description : description,\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n<!-- TODO: create a flow that would work specifically for deployables eventually? -->\n{#if source && !source.is_deployable() && !source.isToken}\n{#each globallyOwnedDeployables as deployable}\n    {#if lidSourceHasDeployable(deployable)}\n    <!-- Deployable -->\n    <div class=\"la-effectbox la-bckg-card la-brdr-repcap -widthfull -bordersround-ltb\n            ref set\"\n        data-uuid=\"{deployable.uuid}\"\n    >\n        <span class=\"la-effectbox__span clipped-bot la-bckg-primary la-text-header -fontsizesmall\n                click-open -upper\"\n        ><!--\n        --->{deployable.name ? deployable.name : \"\"}<!--\n    ---></span>\n        <!-- Generated Content -->\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n            <div class=\"-fontsizemedium -widthfull\">\n                <!-- Deployable Actions -->\n                <div class=\"la-effectbox-buttons la-flexrow -justifybetween\">\n                    <div class=\"la-flexcol -alignstart\">\n                    <!-- (#4) -->\n                    {#each getDeployableActions(deployable) as action}\n                        <FlowButton\n                            text={getLocalized(action.label)}\n                            style={[\"clipped-bot -widthfull -overflowhidden -lineheight3 \", ACTIVATION_COLOR_MAP[action.deployableAction]]}\n\n                            uuid={deployable.uuid}\n                            path={`deployables.${deployable.system.lid}`}\n                            flowClass={FlowClass.None}\n                            onClick={(event) => sendDeployableActionToChat(event, action, deployable)}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={tooltipTheme}\n                            tooltipDirection={TooltipDirection.LEFT}\n                            tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[action.deployableAction])}\n                            tooltip={`${getLocalized(action.tooltip)}<br><br>${getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.deployableAction])}`}\n                            logging={logging}\n                        />\n                    {/each}\n                    </div>\n                    <img class=\"-height15 click-open la-prmy-secondary la-scdy-primary\n                            {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\"\n                        src={getThemeImg(deployable)}\n                        alt={getLocalized(\"LA.placeholder\")}\n                        data-tooltip={tooltipEnabled ? tip : undefined}\n                        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n                        data-tooltip-direction={TooltipDirection.LEFT}\n                        onpointerenter={ logging ? event => sendToTextConsole(event, getLocalized(\"LA.mech.system.deployable.tooltip\"), actorUuid!) : undefined }\n                        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n                    />\n                </div>\n                <hr>\n                {@html deployable.system.detail}\n            </div>\n            <!-- Actions -->\n            <!-- (#4) Add back in when implemented\n                path={`system.actions`} -->\n        {#if deployable.system.actions.length}\n            <ActionBox\n                actions={deployable.system.actions}\n                collapseID={`${deployable.uuid}.actions`}\n                startCollapsed={false}\n                path={`system.actions`}\n\n                uuid={uuid || deployable.uuid}\n                actor={source}\n                disableLeftButton={!uuid}\n                onClick={uuid ? sendActionToChat : undefined }\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={tooltipTheme}\n                logging={logging}\n            />\n        {/if}\n        </div>\n    </div>\n    {/if}\n{/each}\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getCSSDocumentTheme, getManufacturerColor } from \"@/scripts/theme\";\n    import { slugify } from \"@/scripts/lancer/util/lid\";\n    import { ACTIVATION_COLOR_MAP, ACTIVATION_ICON_MAP, ACTIVATION_LOCALIZE_MAP, ACTIVATION_TOOLTIP_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import HeaderQuinary, { H4_BORDER_STYLE } from \"@/svelte/shared/header/HeaderQuinary.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import { H2_ICON_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    }: MechSheetProps = $props();\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n\n    const frame = $derived(system.loadout.frame!.value);\n    const core = $derived(frame.system.core_system);\n    const collID = $derived(`${actor.uuid}.${frame.id}.activePower`);\n    const actionCollID = $derived(`${actor.uuid}.${frame.id}.activePower.action`);\n    const name = $derived(core.active_actions.length ? core.active_actions[0].name : getLocalized(\"LA.activate.label\"));\n    const activationClass = $derived(`activation-${slugify(core.activation, \"-\")}`);\n    const activationTheme = $derived(system.core_energy\n        ? `${ACTIVATION_COLOR_MAP[core.activation]}`\n        : \"la-bckg-repcap\");\n    const frameColorBckg = $derived(getManufacturerColor(frame.system.manufacturer, \"bckg\"));\n    const frameColorBrdr = $derived(system.core_energy\n        ? getManufacturerColor(frame.system.manufacturer, \"brdr\")\n        : \"la-brdr-repcap\");\n    const tip = $derived(TooltipFactory.buildTooltip(\n        getLocalized([core.active_effect, ACTIVATION_TOOLTIP_LOCALIZE_MAP[core.activation]]),\n        getLocalized(ACTIVATION_LOCALIZE_MAP[core.activation])));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<!-- Frame Active -->\n{#if core.active_effect || core.active_actions.length || core.active_bonuses.length }\n{#snippet headerQuinaryLeftOptions()}\n<EffectButton\n    iconStyle={[H2_ICON_SIZE, \"cci\", ACTIVATION_ICON_MAP[core.activation]]}\n    iconBackgroundStyle={[H2_ICON_SIZE, \"la-prmy-secondary\",\n        qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n    \n    flowClass={FlowClass.None}\n    \n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltipDirection={TooltipDirection.LEFT}\n    tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[core.activation])}\n    logging={true}\n\n    disabled={system.core_energy === 0}\n/>\n{/snippet}\n{#snippet outerContent()}\n<div class=\"la-spacer -medium\"></div>\n<div\n    class=\"la-flexrow -widthfull\n        {system.core_energy && qualityMode ? 'la-prmy-primary -glow-prmy-hover' : ''}\"\n>\n    <button type=\"button\"\n        class=\"la-corepower clipped la-text-header la-flexrow -padding0-tb -fontsize5 -lineheight7 -widthfull\n            {activationTheme} {system.core_energy ? '' : 'la-dropshadow -disabled'}\n            activation-flow {activationClass}\"\n        data-uuid={frame.uuid}\n        data-path={\"system.core_system\"}\n        data-tooltip={tip}\n        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n        data-tooltip-direction={TooltipDirection.LEFT}\n        aria-label={name}\n        disabled={!system.core_energy}\n    >\n        <i class=\"la-corepower__i cci cci-activate la-dropshadow -flexthird -textalignleft -height7 -lineheight7 -fontsize19\"></i>\n        <span class=\"la-corepower__span -upper -flexthird -textwrapnowrap\n            {system.core_energy ? 'la-prmy-header la-scdy-primary' : 'la-dropshadow'}\n            {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\"\n        >\n            {name}\n        </span>\n        <span class=\"-flexthird\">\n        </span>\n    </button>\n</div>\n{/snippet}\n<HeaderQuinary\n    text={core.name}\n    headerStyle={[frameColorBckg, \"la-text-header la-prmy-header -padding0-l\"]}\n    borderStyle={[H4_BORDER_STYLE, frameColorBrdr]}\n    textStyle={[\"-fontface-stylized\"]}\n\n    collapseID={collID}\n\n    renderOutsideCollapse={outerContent}\n    contentLeft={headerQuinaryLeftOptions}\n>\n    <div class=\"la-divider-h la-bckg-primary -margin0-tb -margin2-b\"></div>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(ACTIVATION_LOCALIZE_MAP[core.activation])}\n            effect={core.active_effect}\n\n            tooltipEnabled={tooltipEnabled}\n            logging={true}\n        />\n        <ActionBox\n            uuid={frame.uuid}\n            actions={core.active_actions}\n            actor={actor}\n            path={'system.core_system.active_actions'}\n\n            collapseID={actionCollID}\n            startCollapsed={false}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n        <DeployableBox\n            source={actor}\n            lidSource={core}\n            uuid={frame.uuid}\n            sheetUUID={actor.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n    </div>\n</HeaderQuinary>\n{/if}","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme, getManufacturerColor } from \"@/scripts/theme\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    \n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import HeaderQuinary, { H4_BORDER_STYLE } from \"@/svelte/shared/header/HeaderQuinary.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import { H2_ICON_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    }: MechSheetProps = $props();\n    let effectButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const frame = $derived(system.loadout.frame!.value);\n    const core = $derived(frame.system.core_system);\n    const frameColorBckg = $derived(getManufacturerColor(frame.system.manufacturer, \"bckg\"));\n    const frameColorBrdr = $derived(getManufacturerColor(frame.system.manufacturer, \"brdr\"));\n    const tip = $derived(core.passive_effect || getLocalized(\"LA.chat.tooltip\"));\n    const collID: string = $derived(`${actor.uuid}.${frame.id}.passive`);\n    const actionCollID: string = $derived(`${actor.uuid}.${frame.id}.passive.action`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement })\n    {\n        event.stopPropagation();\n        if (actor?.uuid && core)\n        {\n            let chatData = {\n                title: core.passive_name, \n                effect: core.passive_effect,\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(frame.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#if core.passive_effect || core.passive_actions.length || core.passive_bonuses.length}\n<!-- Frame Passive -->\n{#snippet headerQuinaryLeftOptions()}\n<EffectButton\n    iconStyle={[H2_ICON_SIZE, \"cci cci-corebonus\"]}\n    iconBackgroundStyle={[H2_ICON_SIZE, \"la-prmy-secondary\",\n        qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n    \n    flowClass={FlowClass.None}\n    onClick={sendToChat}\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltipDirection={TooltipDirection.LEFT}\n    tooltip={tip}\n    logging={true}\n\n    onPointerEnter={() => {effectButtonHover = true;}}\n    onPointerLeave={() => {effectButtonHover = false;}}\n/>\n{/snippet}\n<HeaderQuinary\n    text={core.passive_name}\n    headerStyle={[frameColorBckg, \"la-text-header la-prmy-header -padding0-l\"]}\n    borderStyle={[H4_BORDER_STYLE, frameColorBrdr]}\n    textStyle={[\"-fontface-stylized\"]}\n    extensionTextFunction={() => {\n        if (effectButtonHover)\n            return `--${getLocalized(\"LA.use.label\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n\n    contentLeft={headerQuinaryLeftOptions}\n>\n    <div class=\"la-divider-h la-bckg-primary -margin0-tb -margin2-b\"></div>\n{#if core.passive_effect}\n    <EffectBox\n        name={getLocalized(\"LA.mech.core.passive.label\")}\n        effect={core.passive_effect}\n\n        tooltipEnabled={tooltipEnabled}\n        logging={true}\n    />\n{/if}\n    <!-- Generated Content -->\n    <ActionBox\n        uuid={frame.uuid}\n        actions={core.passive_actions}\n        actor={actor}\n        path={'system.core_system.passive_actions'}\n\n        collapseID={actionCollID}\n        startCollapsed={false}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        logging={true}\n    />\n</HeaderQuinary>\n{/if}","<script lang=\"ts\">\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import type { CounterBoxProps } from \"@/interfaces/actor/CounterBoxProps\";\n    import type { PointerClickProps } from \"@/interfaces/actor/events/PointerClickProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        text,\n        type,\n        usesValue,\n        usesMax,\n        path,\n        style,\n        \n        logText,\n        logging,\n\n        onPointerClick,\n    }: CounterBoxProps & TextLogEventProps & PointerClickProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const qualityMode = getExtraEffectsEnabled();\n    const log = $derived(logText || getLocalized(\"LA.counter.tooltip\"));\n\n    function handleOnClick(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, index: number)\n    {\n        event.stopPropagation();\n\n        if (onPointerClick)\n            onPointerClick(event, index);\n    }\n</script>\n<script lang=\"ts\" module>\n    const _COUNTER_STYLE = \"clipped-alt -widthfull la-bckg-header-anti\"\n</script>\n\n{#if usesMax}\n<div \n    class=\"la-counterbox la-flexrow -aligncenter la-text-header -padding1-lr\n        {style?.join(' ') || type === CounterBoxType.Counter ? _COUNTER_STYLE : ''}\"\n>\n{#if text}\n    <span class=\"la-counterbox__span {logographicLanguage() ? '-fontsize3' : '-fontsizemedium'}\">\n        {text}\n    </span>\n{/if}\n{#each {length: usesMax} as _, index}\n    <button type=\"button\"\n        class=\"la-counterbox__button\n            mdi {index < usesValue ? 'mdi-hexagon-slice-6' : 'mdi-hexagon-outline'}\n            la-prmy-header la-scdy-primary -fontsize7\n            {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\n            {type}\"\n        data-available={index < usesValue}\n        data-path={path}\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        onclick={event => handleOnClick(event, index)}\n        aria-label=\"{getLocalized('LA.use.label')} {text}\"\n    ></button>\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import type { BonusBoxProps } from \"@/interfaces/actor/BonusBoxProps\";\n    \n    const {\n        bonuses,\n        bonusPath,\n        editable,\n    }: BonusBoxProps = $props();\n</script>\n\n<!-- TODO: bonus.lid needs a localization map (but it's all over the place??) -->\n{#if bonuses.length}\n<div class=\"la-flexrow -widthfull -gap0\">\n{#each bonuses as bonus, index}\n    <div class=\"la-effectbox la-brdr-repcap la-bckg-card la-flexrow -widthfull {index === bonuses.length - 1 ? \"-bordersround-ltb\" : \"-bordersround\"}\">\n        <span \n            class=\"la-effectbox__span clipped-bot la-bckg-primary la-text-header -upper -fontsizesmall -fontface-stylized\n                {editable ? \"editable\" : \"\"}\" \n            data-path=\"${bonusPath}.${index}\"\n        >\n            {bonus.lid}\n        </span>\n        <div class=\"la-flexrow -fontsize5\">{bonus.val}</div>\n    </div>\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    \n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor,\n        system,\n    }: MechSheetProps = $props();\n    let messageButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const frame = $derived(system.loadout.frame!.value);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getCollapseID(index: number)\n    {\n        return `${actor.uuid}_${frame.id}_trait_${index}`;\n    }\n    function getActionCollapseID(index: number)\n    {\n        return `${actor.uuid}_${frame.id}_trait_${index}_action`;\n    }\n</script>\n\n{#if frame.system.traits.length}\n{#each frame.system.traits as trait, index}\n\n{#snippet headerSecondaryLeftOptions()}\n<i class=\"{H2_ICON_SIZE} cci cci-frame\"></i>\n{/snippet}\n{#snippet headerSecondaryRightOptions()}\n<GlyphButton\n    style={[H2_BUTTON_ICON_STYLE()]}\n    flowClass={FlowClass.SendToChat}\n    uuid={frame.uuid}\n    type={\"trait\"}\n    index={index}\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipDirection={TooltipDirection.UP}\n    tooltipTheme={theme}\n    tooltip={getLocalized(\"LA.chat.tooltip\")}\n    logText={getLocalized(\"LA.chat.tooltip\")}\n    logging={true}\n\n    onPointerEnter={() => {messageButtonHover = true;} }\n    onPointerLeave={() => {messageButtonHover = false;} }\n>\n    <i class=\"mdi mdi-message\"></i>\n</GlyphButton>\n{/snippet}\n\n<!-- Frame Traits -->\n<HeaderSecondary\n    text={trait.name}\n    headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={getCollapseID(index)}\n    startCollapsed={true}\n\n    contentLeft={headerSecondaryLeftOptions}\n    contentRight={headerSecondaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(\"LA.mech.frame.trait.label\")}\n            effect={trait.description}\n\n            tooltipEnabled={tooltipEnabled}\n            logging={true}\n        />\n        <!-- Generated Content -->\n    {#if trait.counters?.length}\n    {#each trait.counters as counter, jndex}\n        <CounterBox\n            text={counter.name}\n            type={CounterBoxType.Counter}\n            usesValue={counter.value}\n            usesMax={counter.max}\n            path=\"system.loadout.frame.value.system.traits.{index}.counters.{jndex}\"\n            \n            logging={true}\n        />\n    {/each}\n    {/if}\n        <BonusBox    \n            bonuses={trait.bonuses}\n            bonusPath={`system.traits.${index}.bonuses`}\n        />\n        <ActionBox\n            uuid={frame.uuid}\n            actions={trait.actions}\n            actor={actor}\n            path={`system.traits.${index}.actions`}\n\n            collapseID={getActionCollapseID(index)}\n            startCollapsed={false}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n        <DeployableBox\n            source={actor}\n            lidSource={trait}\n            uuid={frame.uuid}\n            sheetUUID={actor.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n    </div>\n</HeaderSecondary>\n{/each}\n{/if}","<script lang=\"ts\">\n    import type { TagArrayProps } from \"@/interfaces/actor/TagArrayProps\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n\n    const {\n        tags,\n        justify,\n\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme,\n        tooltipDirection,\n    }: TagArrayProps & TooltipProps = $props();\n\n    function getTooltip(tag: any)\n    {\n        return TooltipFactory.buildTooltip(getTagDescription(tag), getTagName(tag));\n    }\n\n    function getTagDescription(tag: any)\n    {\n        return tag.description.replace(\"{VAL}\", tag.val ?? \"?\") ?? \"\";\n    }\n\n    function getTagName(tag: any)\n    {\n        return tag.name.replace(\"{VAL}\", tag.val ?? \"?\");\n    }\n</script>\n\n{#snippet renderTags(tag: any)}\n    <div\n        class=\"la-flexrow la-bckg-primary la-text-header -bordersround -small -bordersoff -padding0-l -padding1-r -aligncenter -gap0\"\n        data-tooltip={tooltipEnabled ? getTooltip(tag) : \"\"}\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection || TooltipDirection.DOWN}\n    >\n        <i class=\"mdi mdi-label -fontsize2\"></i>\n        <span class=\"-fontsizesmall\">{getTagName(tag)}</span>\n    </div>\n{/snippet}\n\n{#if tags.length > 0}\n<div class=\"la-flexrow -wrapwrap -widthfull -gap0\n        -justify{justify || \"center\"}\"\n>\n{#each tags as tag}\n    {#if !tag.hidden}\n        {@render renderTags(tag)}\n    {/if}\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme, getManufacturerColor } from \"@/scripts/theme\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import FrameActivePower from \"@/svelte/mech/FrameActivePower.svelte\";\n    import FramePassivePower from \"@/svelte/mech/FramePassivePower.svelte\";\n    import FrameTrait from \"@/svelte/mech/FrameTrait.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n\n    const props: MechSheetProps = $props();  \n    const {\n        actor,\n        system,\n    } = $derived(props);\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const frame = $derived(system.loadout.frame?.value);\n    const core = $derived(frame?.system.core_system);\n    const frameName: string = $derived(frame\n        ? `${frame.system.manufacturer} ${frame.name}`\n        : getLocalized(\"LA.placeholder\"));\n    const frameColorBckg: string = $derived(frame\n        ? getManufacturerColor(frame.system.manufacturer, \"bckg\")\n        : \"la-bckg-frame\");\n    const frameColorBrdr: string = $derived(frame\n        ? getManufacturerColor(frame.system.manufacturer, \"brdr\")\n        : \"la-brdr-frame\");\n    const collID = $derived(frame\n        ? `${actor.uuid}.frame.${frame.id}`\n        : `${actor.uuid}.frame.empty`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n{#snippet headerOptions()}\n    <CollapseAllButton\n        collapseID={collID}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        logging={true}\n\n        onPointerEnter={() => {collapseAllButtonHover = true;}}\n        onPointerLeave={() => {collapseAllButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerSecondaryLeftOptions()}\n    <i class=\"{H2_ICON_SIZE} cci cci-corebonus\"></i>\n{/snippet}\n\n<HeaderMain\n    text={frame ? frameName : getLocalized(\"LA.placeholder\")}\n    headerStyle={[MAIN_HEADER_STYLE, frameColorBckg, \"-upper\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[frameColorBrdr]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n{#if frame}\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        {#snippet outerContent()}\n            {#if core.counters?.length}\n            <div class=\"la-flexcol -widthfull -padding2-l\">\n            {#each core.counters as counter, index}\n                <CounterBox\n                    text={counter.name}\n                    type={CounterBoxType.Counter}\n                    usesValue={counter.value}\n                    usesMax={counter.max}\n                    path=\"system.loadout.frame.value.system.core_system.counters.{index}\"\n                    style={[\"clipped-bot-alt -widthfull la-bckg-header-anti\"]}\n                    \n                    logging={true}\n                />\n            {/each}\n            </div>\n            {/if}\n        {/snippet}\n        <!-- FRAME POWER -->\n        <HeaderSecondary\n            text={core.name}\n            headerStyle={[H2_HEADER_STYLE, frameColorBckg]}\n            textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n\n            collapseID={`${collID}.core`}\n            startCollapsed={true}\n\n            renderOutsideCollapse={outerContent}\n            contentLeft={headerSecondaryLeftOptions}\n        >\n            <div class=\"la-flexcol -widthfull -gap0\">\n                <FrameActivePower {...props} />\n                <FramePassivePower {...props} />\n            {#if core.tags?.length}\n                <TagArray\n                    tags={core.tags}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            {/if}\n            </div>\n        </HeaderSecondary>\n        <FrameTrait {...props} />\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.mech.frame.empty.label\")}\n        subLabel={getLocalized(\"LA.mech.frame.empty.subLabel\")}\n    />\n{/if}\n</HeaderMain>","export enum AcceptType\n{\n    MechWeaponMod = \"weapon_mod\",\n    MechWeapon = \"mech_weapon\",\n    MechSystem = \"mech_system\",\n    PilotArmor = \"pilot_armor\",\n    PilotGear = \"pilot_gear\",\n    PilotWeapon = \"pilot_weapon\",\n    Skill = \"skill\",\n    License = \"license\",\n    Reserve = \"reserve\",\n}","<script lang=\"ts\">\n    import type { HeaderProps } from \"@/interfaces/actor/header/HeaderProps\";\n    import type { HeaderTertiaryProps } from \"@/interfaces/actor/header/HeaderTertiaryProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import type { ContentSidesProps } from \"@/interfaces/actor/decoration/ContentSidesProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getCollapseState, setCollapseState } from \"@/scripts/store/collapse\";\n    import TerminalText from \"@/svelte/shared/TerminalText.svelte\";\n    import { onMount } from \"svelte\";\n\n    const {\n        children,\n        rootStyle,\n        itemID,\n        uuid,\n        path,\n        acceptTypes,\n        collapseID,\n        startCollapsed,\n        dontSaveCollapse,\n        \n        renderOutsideCollapse,\n        subText,\n\n        headerStyle,\n        headerFontStyle,\n        subHeaderFontStyle,\n        borderStyle,\n\n        text,\n        extensionText,\n        extensionTextFunction,\n\n        contentLeft,\n        contentRight,\n    }: HeaderProps & HeaderTertiaryProps & TerminalTextProps & ContentSidesProps = $props();\n\n    let isCollapsed = $derived(getCollapseState(collapseID) ?? startCollapsed ?? false);\n    \n    // (#3)\n    onMount(() => \n    {\n        if (collapseID && (dontSaveCollapse ?? getCollapseState(collapseID) === undefined))\n        {\n            setCollapseState(collapseID, startCollapsed ?? false);\n        }\n    });\n\n    function toggleCollapse(event: MouseEvent) \n    {\n        event.stopPropagation();\n        if (collapseID)\n        {\n            setCollapseState(collapseID, !isCollapsed);\n        }\n    }\n\n    function getExtensionText()\n    {\n        if (extensionTextFunction && extensionTextFunction())\n            return extensionTextFunction();\n        if (extensionText)\n            return extensionText;\n        if (collapseID)\n            return isCollapsed\n                ? `--${getLocalized(\"LA.expand.label\")}`\n                : `--${getLocalized(\"LA.collapse.label\")}`;\n        return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    export const H3_ICON_SIZE: string = \"-fontsize9\";\n    export const H3_HEADER_STYLE = \"clipped-bot-alt -padding0-tb la-text-header la-prmy-accent\"\n\n</script>\n\n<div class=\"la-collapsegroup -widthfull {rootStyle ? rootStyle.join(' ') : ''}\n        {acceptTypes ? `ref set drop-settable ${acceptTypes}` : ''}\n        collapse-group\"\n    data-item-id={itemID}\n    data-uuid={uuid}\n    data-path={path}\n    data-accept-types={acceptTypes}\n    draggable={acceptTypes ? \"true\" : \"false\"}\n>\n    <!-- svelte-ignore a11y_click_events_have_key_events, a11y_no_static_element_interactions -->\n    <!-- (#2) \n        onclick bug: https://github.com/sveltejs/svelte/issues/14704\n        related to how event handlers get attached in Lancer sheets: https://github.com/sveltejs/svelte/issues/13213 \n    -->\n    <!-- svelte-ignore event_directive_deprecated -->\n    <div class=\"la-summary la-flexrow la-dropshadow \n            -justifybetween -widthfull\n            {headerStyle?.join(' ') || H3_HEADER_STYLE}\n            {collapseID ? 'collapse-trigger' : ''}\"\n        on:click={(event) => toggleCollapse(event)}\n    >\n        <!-- Icon, Name -->\n        <div class=\"la-left la-flexrow -aligncenter\">\n        {#if contentLeft}\n            {@render contentLeft()}\n        {/if}\n            <div class=\"la-flexcol -alignstart -justifycenter -divider\">\n                <span class=\"la-top__span {headerFontStyle?.join(' ') || '-fontsize5'}\">{text}</span>\n                <TerminalText\n                    text={collapseID || !extensionText ? `${subText} ` : subText}\n                    textStyle={subHeaderFontStyle || [\"-fontsizesmall\"]}\n                    extensionText={getExtensionText()}\n                    disableCmdline={true}\n                />\n            </div>\n        </div>\n        <!-- Options -->\n    {#if contentRight}\n        <div class=\"la-right la-flexrow -aligncenter\">\n            {@render contentRight()}\n        </div>\n    {/if}\n    </div>\n    {#if renderOutsideCollapse}\n        {@render renderOutsideCollapse()}\n    {/if}\n    <div class=\"la-collapsegroup__wrapper\n            {collapseID ? 'collapse-wrapper' : ''} {isCollapsed ? 'collapsed' : ''}\"\n        data-la-collapse-id={collapseID}\n    >\n        <div class=\"la-collapsecontent \n                -padding0-l -padding0-tb -bordersround-lb -widthfull -heightfull\n                {borderStyle ? borderStyle.join(' ') : 'la-brdr-primary'}\"\n        >\n            {#if children}\n                {@render children()}\n            {/if}\n        </div>\n    </div>\n</div>","<!-- @component\nSpecial implementation of the `CounterBox` component for items with the `Limited` tag\n-->\n<script lang=\"ts\">\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import type { PointerClickProps } from \"@/interfaces/actor/events/PointerClickProps\";\n    import type { LimitedBoxProps } from \"@/interfaces/actor/LimitedBoxProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n\n    const {\n        path,\n        usesValue,\n        usesMax,\n        \n        logText,\n        logging,\n\n        onPointerClick,\n    }: LimitedBoxProps & TextLogEventProps & PointerClickProps = $props();\n\n    const log = $derived(logText || getLocalized(\"LA.limited.tooltip\"));\n</script>\n\n<CounterBox\n    text={getLocalized(\"LA.limited.label\")}\n    \n    type={CounterBoxType.Limited}\n    usesValue={usesValue}\n    usesMax={usesMax}\n    path={path}\n\n    logText={log}\n    logging={logging}\n\n    onPointerClick={onPointerClick}\n/>","<script lang=\"ts\">\n    import type { TotalSPProps } from \"@/interfaces/actor/decoration/TotalSPProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const {\n        value,\n        max,\n        style,\n        textStyle,\n        iconStyle,\n\n        logText,\n        logging,\n    }: TotalSPProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const log = $derived(logText || getLocalized(\"LA.mech.system.points.total.tooltip\"));\n</script>\n\n<div role=\"none\"\n    class=\"la-flexrow -aligncenter -height4 {style?.join(' ') || H2_TEXT_SIZE}\"\n    onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n    onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n>\n    <span class=\"{textStyle?.join(' ')}\">\n    {#if max}\n        {value} / {max}\n    {:else}\n        {value}\n    {/if}\n    </span>\n    <i class=\"cci cci-system-point {iconStyle?.join(' ') || H2_ICON_SIZE}\"></i>\n</div>","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n\n    import { SYSTEM_ICON_MAP, SYSTEM_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { formatString, getLocalized, photosensitiveStyling } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderTertiary, { H3_HEADER_STYLE, H3_ICON_SIZE } from \"@/svelte/shared/header/HeaderTertiary.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import TotalSP from \"@/svelte/shared/decoration/TotalSP.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const props: MechSheetProps = $props();  \n    const {\n        actor,\n        system,\n    } = $derived(props);\n    let collapseAllButtonHover = $state(false);\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const systemComponents = $derived(system?.loadout.systems?.filter((item: any) => item !== null));\n    const collID = $derived(systemComponents.length\n        ? `${actor.uuid}.systems`\n        : `${actor.uuid}.systems.empty`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function renderOuter(component: any)\n    {\n        return !isDestroyed(component) && (component.value.system.uses.max)\n    }\n    \n    function getActionCollID(index: number)\n    {\n        return `${actor.uuid}.systems.${index}.action`;\n    }\n\n    function isDestroyed(component: any)\n    {\n        return component.value?.system.destroyed;\n    }\n\n    function getTitleStyle(component: any)\n    {\n        return isDestroyed(component)\n            ? \"la-text-repcap la-prmy-accent -strikethrough\"\n            : \"la-text-header la-prmy-accent\";\n    }\n\n    function getSubtitleStyle(component: any)\n    {\n        return isDestroyed(component)\n            ? `la-text-error la-prmy-error ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(component: any)\n    {\n        let icon = SYSTEM_ICON_MAP[component.value.system.type] || \"cci-system\";\n        return isDestroyed(component)\n            ? `cci ${icon} la-text-repcap`\n            : `cci ${icon} la-prmy-header la-scdy-primary ` + (qualityMode ? \"-glow-prmy -glow-scdy-hover \" : \" \");\n    }\n\n    function getSPStyle(component: any)\n    {\n        return isDestroyed(component)\n            ? \"la-text-repcap\"\n            : \"la-text-header\";\n    }\n\n    function getSubtitle(component: any)\n    {\n        return isDestroyed(component)\n            ? getLocalized(\"LA.mech.system.destroyed.label\")\n            : getLocalized(SYSTEM_LOCALIZE_MAP[component.value.system.type]) || getLocalized(\"LA.mech.system.system.label\");\n    }\n\n    function getComponentPath(index: number)\n    {\n        return `system.loadout.systems.${index}.value`;\n    }\n</script>\n\n{#snippet emptySystems()}\n<EmptyBox\n    label={!system.loadout.sp.value ? getLocalized(\"LA.mech.system.empty.label\") : getLocalized(\"LA.mech.system.undermounted.label\")}\n    subLabel={!system.loadout.sp.value ? getLocalized(\"LA.mech.system.empty.subLabel\") : formatString(getLocalized(\"LA.mech.system.undermounted.subLabel\"), (system.loadout.sp.max - system.loadout.sp.value).toString())}\n    type={AcceptType.MechSystem}\n    path=\"system.loadout.systems.{systemComponents.length}.value\"\n/>\n{/snippet}\n\n{#snippet headerOptions()}\n<TotalSP\n    value={system.loadout.sp.value}\n    max={system.loadout.sp.max}\n    \n    logging={true}\n/>\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={true}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;} }\n    onPointerLeave={() => {collapseAllButtonHover = false;} }\n/>\n{/snippet}\n\n{#if system.loadout.frame}\n<HeaderMain\n    text={getLocalized(\"LA.mech.system.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-system\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-system\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n{#if systemComponents?.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each systemComponents as component, index}\n    {#snippet outerContent()}\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l -fontface-stylized\">\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull\">\n                <!-- Limited -->\n                <LimitedBox\n                    usesValue={component.value?.system.uses.value}\n                    usesMax={component.value?.system.uses.max}\n                    path={getComponentPath(index)}\n\n                    logging={true}\n                />\n            </div>\n        </div>\n    {/snippet}\n    {#snippet headerTertiaryLeftOptions()}\n        <EffectButton\n            iconStyle={[H3_ICON_SIZE, getIconStyle(component)]}\n            iconBackgroundStyle={[\n                \"la-prmy-secondary\",\n                H3_ICON_SIZE,  \n                qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n            ]}\n            \n            flowClass={component.value.system.effect \n                ? FlowClass.SendEffectToChat \n                : FlowClass.SendToChat}\n            path={getComponentPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.LEFT}\n            tooltip={component.value.system.effect}\n            logging={true}\n            \n            disabled={isDestroyed(component)}\n            \n            onPointerEnter={() => {effectButtonHover = true;} }\n            onPointerLeave={() => {effectButtonHover = false;} }\n        />\n    {/snippet}\n    {#snippet headerTertiaryRightOptions()}\n        <TotalSP\n            value={component.value.system.sp}\n            style={[getSPStyle(component), \"-fontface-stylized\"]}\n\n            logText={getLocalized(\"LA.mech.system.points.tooltip\")}\n            logging={true}\n        />\n        <div class=\"la-flexcol -margin3-lr\">\n            <!-- Send to chat -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE()]}\n                flowClass={FlowClass.SendToChat}\n                type={\"system\"}\n                index={index}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.chat.tooltip\")}\n                logText={getLocalized(\"LA.chat.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {messageButtonHover = true;} }\n                onPointerLeave={() => {messageButtonHover = false;} }\n            >\n                <i class=\"mdi mdi-message\"></i>\n            </GlyphButton>\n            <!-- Edit -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE()]}\n                flowClass={FlowClass.ContextMenu}\n                path={getComponentPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {editButtonHover = true;} }\n                onPointerLeave={() => {editButtonHover = false;} }\n            >\n                <i class=\"fas fa-ellipsis-v\"></i>\n            </GlyphButton>\n        </div>\n    {/snippet}\n    {#if component.value}\n        <HeaderTertiary\n            itemID={component.value.id}\n            uuid={component.value.uuid}\n            path={getComponentPath(index)}\n            acceptTypes={\"mech_system\"}\n            collapseID={component.value.uuid}\n            startCollapsed={true}\n\n            text={component.value.name}\n            headerStyle={[H3_HEADER_STYLE, \"la-bckg-pilot\"]}\n            headerFontStyle={[getTitleStyle(component), H2_TEXT_SIZE, \"-fontface-stylized\"]}\n\n            subText={getSubtitle(component)}\n            subHeaderFontStyle={[getSubtitleStyle(component), \"-fontsizesmall -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (effectButtonHover)\n                    return `--${getLocalized(\"LA.use.label\")}`;\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            renderOutsideCollapse={renderOuter(component) ? outerContent : undefined }\n            contentLeft={headerTertiaryLeftOptions}\n            contentRight={headerTertiaryRightOptions}\n        >\n        {#if !isDestroyed(component)}\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n            {#if component.value.system.counters?.length}\n                <div class=\"la-flexcol -gap0 -widthfull -padding1-l\">\n                {#each component.value.system.counters as counter, jndex}\n                    <CounterBox\n                        text={counter.name}\n                        type={CounterBoxType.Counter}\n                        usesValue={counter.value}\n                        usesMax={counter.max}\n                        path=\"{getComponentPath(index)}.system.counters.{jndex}\"\n            \n                        logging={true}\n                    />\n                {/each}\n                </div>\n            {/if}\n                <BonusBox\n                    bonuses={component.value.system.bonuses}\n                    bonusPath={`${getComponentPath(index)}.system.bonuses`}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    effect={component.value.system.effect}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n                <ActionBox\n                    uuid={component.value.uuid}\n                    actions={component.value.system.actions}\n                    actor={actor}\n                    path={`system.actions`}\n\n                    collapseID={getActionCollID(index)}\n                    startCollapsed={false}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <DeployableBox\n                    source={actor}\n                    lidSource={component.value.system}\n                    uuid={component.value.uuid}\n                    sheetUUID={actor.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <TagArray\n                    tags={component.value.system.tags}\n                    justify={\"start\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </div>\n        {/if}\n        </HeaderTertiary>\n    {/if}\n    {/each}\n    {#if system.loadout.sp.value < system.loadout.sp.max}\n        {@render emptySystems()}\n    {/if}\n    </div>\n{:else}\n    {@render emptySystems()}\n{/if}\n</HeaderMain>\n{/if}","<!-- @component\nSpecial implementation of the `CounterBox` component for items with the `Loading` tag\n-->\n<script lang=\"ts\">\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import type { PointerClickProps } from \"@/interfaces/actor/events/PointerClickProps\";\n    import type { LoadedBoxProps } from \"@/interfaces/actor/LoadedBoxProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized, isLoading } from \"@/scripts/helpers\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n\n    const {\n        item,\n        path,\n        style,\n        \n        logText,\n        logging,\n\n        onPointerClick,\n    }: LoadedBoxProps & TextLogEventProps & PointerClickProps = $props();\n\n    const loaded = $derived(item.system.loaded);\n    const log = $derived(logText || getLocalized(\"LA.loaded.tooltip\"));\n    \n    // Reimplementation of Lancer's `handleLoadedInteraction` function for this module\n    export function handleLoadedInteraction(event: MouseEvent, index: number)\n    {\n        item.update({\n            \"system.loaded\": !loaded,\n        });\n\n        if (onPointerClick && event.currentTarget instanceof HTMLElement)\n            onPointerClick(event as MouseEvent & { currentTarget: EventTarget & HTMLElement }, index);\n    }\n</script>\n\n{#if isLoading(item) \n    && (item.type === \"mech_weapon\" \n    || item.type === \"pilot_weapon\"\n    || item.type === \"npc_feature\")}\n    <CounterBox\n        text={getLocalized(\"LA.loaded.label\")}\n\n        type={CounterBoxType.Loaded}\n        usesValue={loaded ? 1 : 0}\n        usesMax={1}\n        path={path}\n        style={style}\n\n        logText={log}\n        logging={logging}\n\n        onPointerClick={handleLoadedInteraction}\n    />\n{/if}","<script lang=\"ts\">\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type DamageArrayProps =\n    {\n        damages: any[],\n\n        style?: string[];\n    }\n\n    const {\n        damages,\n        style,\n    }: DamageArrayProps = $props();\n\n    const qualityMode = getExtraEffectsEnabled();\n</script>\n\n{#if damages.length}\n<span class=\"la-damage la-flexrow -justifycenter -aligncenter -lineheight3 -widthfull -flex1 -fontface-stylized\n    {style?.join(' ')}\"\n>\n    {#each damages as damage}\n        <span class=\"la-number-weapon__span\n                {qualityMode ? '-glow-' + damage.type.toLowerCase() : ''}\"\n        >{damage.val.replace(/\\s/g, \"\")}</span><!--\n    ---><i class=\"cci {damage.icon}\n                {qualityMode ? '-glow-' + damage.type.toLowerCase() : ''}\"\n        ></i>\n    {/each}\n</span>\n{/if}","<script lang=\"ts\">\n    const {\n        ranges,\n        style,\n    }: any = $props();\n</script>\n\n{#if ranges.length}\n<span \n    class=\"la-range la-flexrow -justifycenter -aligncenter -lineheight3 -widthfull -flex1 -fontface-stylized\n        {style?.join(' ')}\"\n>\n    {#each ranges as range}\n        <span class=\"la-number-weapon__span\">{range.val}</span>\n        <i class=\"cci {range.icon}\"></i>\n    {/each}\n</span>\n{/if}","<!-- TODO: refactor into GlyphButton -->\n<script lang=\"ts\">\n\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { WeaponProps } from \"@/interfaces/actor/button/WeaponProps\";\n    import type { PointerHoverProps } from \"@/interfaces/actor/events/PointerHoverProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n\n    import DamageArray from \"@/svelte/shared/DamageArray.svelte\";\n    import RangeArray from \"@/svelte/shared/RangeArray.svelte\";\n    import { CLICKABLE_HOVER } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        damage,\n        range,\n\n        style,\n        iconStyle,\n        iconBackgroundStyle,\n\n        flowClass,\n        disabled,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n        \n        logText,\n        logging,\n\n        onPointerEnter,\n        onPointerLeave,\n    }: WeaponProps & IconButtonProps & ButtonProps & TooltipProps & TextLogEventProps & PointerHoverProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.rollDamage.tooltip\"), tooltipHeader));\n    const hasAllWeaponProperties = $derived(damage?.length && range?.length);\n    const rollable = $derived(!disabled && (damage?.length > 0));\n    const log = $derived(logText || getLocalized(\"LA.flow.rollDamage.tooltip\"));\n\n    function handleOnPointerEnter(event: PointerEvent) \n    {\n        if (onPointerEnter)\n            onPointerEnter();\n\n        if (logging)\n            sendToTextConsole(event, log, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function handleOnPointerLeave(event: PointerEvent)\n    {\n        if (onPointerLeave)\n            onPointerLeave();\n\n        if (logging)\n            resetTextConsole(event, actorUuid!);\n        else\n            return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    const _DEFAULT_I_BACKGROUND = `-fontsize11 la-text-scrollbar-secondary`;\n</script>\n\n<button type=\"button\"\n    class=\"\n        la-properties la-flexcol -fontsize5 la-prmy-accent -justifycenter -positionrelative\n        {hasAllWeaponProperties ? '-divider' : ''}\n        {style?.join(' ')}\n        {flowClass || FlowClass.RollDamage}\n        {disabled ? '' : CLICKABLE_HOVER()}\"\n    data-tooltip={tooltipEnabled && rollable ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n    onpointerenter={ handleOnPointerEnter }\n    onpointerleave={ handleOnPointerLeave }\n    aria-label={tooltip || getLocalized(\"LA.flow.rollDamage.tooltip\")}\n    disabled={!rollable}\n>\n    <!-- Generated Range -->\n{#if range}\n    <RangeArray\n        ranges={range}\n        style={iconStyle}\n    />\n{/if}\n    <!-- Generated Damage -->\n{#if damage}\n    <DamageArray\n        damages={damage}\n        style={(iconStyle || [])\n        }\n    />\n{/if}\n{#if !disabled && damage?.length}\n    <i \n        class=\"fal fa-dice-d20 -positionabsolute \n            {iconBackgroundStyle?.join(' ') || _DEFAULT_I_BACKGROUND}\" \n        style=\"z-index: -1;\"\n    ></i>\n{/if}\n</button>","<!-- TODO: refactor into GlyphButton -->\n<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    \n    import { CLICKABLE_HOVER } from \"@/svelte/shared/button/Button.svelte\";\n\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { PointerHoverProps } from \"@/interfaces/actor/events/PointerHoverProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n\n    const {\n        style,\n        iconStyle,\n        iconBackgroundStyle,\n        \n        flowClass,\n        disabled,\n        \n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        logText,\n        logging,\n\n        onPointerEnter,\n        onPointerLeave,\n    }: IconButtonProps & ButtonProps & TooltipProps & TextLogEventProps & PointerHoverProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.rollAttack.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.flow.rollAttack.tooltip\"));\n\n    function handleOnPointerEnter(event: PointerEvent) \n    {\n        if (onPointerEnter)\n            onPointerEnter();\n\n        if (logging)\n            sendToTextConsole(event, log, actorUuid!);\n        else\n            return undefined;\n    }\n\n    function handleOnPointerLeave(event: PointerEvent)\n    {\n        if (onPointerLeave)\n            onPointerLeave();\n\n        if (logging)\n            resetTextConsole(event, actorUuid!);\n        else\n            return undefined;\n    }\n</script>\n<script lang=\"ts\" module>\n    import { H3_ICON_SIZE } from \"@/svelte/shared/header/HeaderTertiary.svelte\";\n    \n    const _DEFAULT_I_BACKGROUND = `${H3_ICON_SIZE} la-text-scrollbar-secondary`;\n    const _DEFAULT_I_FOREGROUND = `${H3_ICON_SIZE}`;\n</script>\n\n<button type=\"button\" \n    class=\"-positionrelative\n        {disabled ? '' : CLICKABLE_HOVER()}\n        {style?.join(' ')}\n        {flowClass || FlowClass.RollAttack}\"\n    data-tooltip={tooltipEnabled && !disabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.LEFT}\n    onpointerenter={ handleOnPointerEnter }\n    onpointerleave={ handleOnPointerLeave }\n    aria-label={tooltip || getLocalized(\"LA.flow.rollAttack.tooltip\")}\n    disabled={disabled || false}\n>\n    <i \n        class=\"\n            {iconStyle?.join(' ') || _DEFAULT_I_FOREGROUND}\"\n    ></i>\n{#if !disabled}\n    <i \n        class=\"fal fa-dice-d20 -positionabsolute -left0 \n            {iconBackgroundStyle?.join(' ') || _DEFAULT_I_BACKGROUND}\" \n        style=\"z-index: -1;\"\n    ></i>\n{/if}\n</button>","<script lang=\"ts\">\n    import type { WeaponModProps } from \"@/interfaces/mech/WeaponModProps\";\n\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import RangeArray from \"@/svelte/shared/RangeArray.svelte\";\n    import DamageArray from \"@/svelte/shared/DamageArray.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import TotalSP from \"@/svelte/shared/decoration/TotalSP.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        mod,\n        path,\n    }: WeaponModProps = $props();\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(mod ? `${mod.uuid}.action` : \"empty\");\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n{#if mod}\n    {#snippet headerSecondaryLeftOptions()}\n    <EffectButton\n        iconStyle={[\"cci cci-weaponmod -fontsize7\"]}\n        iconBackgroundStyle={[\n            \"-fontsize7 la-prmy-secondary\", \n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n        ]}\n\n        flowClass={FlowClass.SendEffectToChat}\n        path={path}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.LEFT}\n        tooltip={mod.system.effect || getLocalized(\"LA.mech.mod.effect.tooltip\")}\n        logText={getLocalized(\"LA.mech.mod.effect.tooltip\")}\n        logging={true}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />\n    {/snippet}\n\n    {#snippet headerSecondaryRightOptions()}\n    <TotalSP\n        value={mod.system.sp}\n        style={[\"-fontsize4\", \"-margin1-r -fontface-stylized\"]}\n\n        logText={getLocalized(\"LA.mech.system.points.tooltip\")}\n        logging={true}\n    />\n    <!-- Edit -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE()]}\n        flowClass={FlowClass.ContextMenu}\n        path={path}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.tooltip\")}\n        logText={getLocalized(\"LA.edit.tooltip\")}\n        logging={true}\n\n        onPointerEnter={() => {editButtonHover = true;} }\n        onPointerLeave={() => {editButtonHover = false;} }\n    >\n        <i class=\"fas fa-ellipsis-v\"></i>\n    </GlyphButton>\n    {/snippet}\n\n    {#snippet outerContent()}\n        {#if !!(mod.system.uses.max || mod.system.counters.length)}\n            <div class=\"la-flexcol -gap0 -widthfull\">\n            <!-- Limited Use -->\n            {#if mod.system.uses.max}\n                <div class=\"la-flexrow clipped-alt la-bckg-header-anti -widthfull -margin2-l\">\n                    <LimitedBox\n                        usesValue={mod.system.uses.value}\n                        usesMax={mod.system.uses.max}\n                        path={path}\n                        \n                        logging={true}\n                    />\n                </div>\n            {/if}\n            <!-- Counters -->\n            {#if mod.system.counters.length}\n            {#each mod.system.counters as counter, index}\n                <CounterBox\n                    text={counter.name}\n                    type={CounterBoxType.Counter}\n                    usesValue={counter.value}\n                    usesMax={counter.max}\n                    path=\"{path}.system.counters.{index}\"\n            \n                    logging={true}\n                />\n            {/each}\n            {/if}\n            </div>\n        {/if}\n    {/snippet}\n\n    <HeaderSecondary\n        uuid={mod.uuid}\n        path={path}\n        acceptTypes={\"weapon_mod\"}\n\n        text={mod.name}\n        headerStyle={[H2_HEADER_STYLE, \"la-bckg-header-anti\"]}\n        textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n        borderStyle={[\"la-brdr-weapon-mod\"]}\n        extensionTextFunction={() => {\n            if (effectButtonHover)\n                return `--${getLocalized(\"LA.use.label\")}`;\n            if (editButtonHover)\n                return `--${getLocalized(\"LA.edit.extension\")}`;\n            return undefined;\n        }}\n        \n        collapseID={mod.uuid}\n        startCollapsed={true}\n\n        renderOutsideCollapse={outerContent}\n        contentLeft={headerSecondaryLeftOptions}\n        contentRight={headerSecondaryRightOptions}\n    >\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <!-- Generated Content -->\n        {#if mod.system.added_range.length || mod.system.added_damage.length}\n            <div class=\"la-flexrow -widthfull\">\n            {#if mod.system.added_range.length}\n                <EffectBox\n                    name={getLocalized(\"LA.mech.mod.range.label\")}\n                    innerStyle={[\"-fontsize5\"]}\n                    outerStyle={mod.system.added_range.length && mod.system.added_damage.length ? [\"-bordersround\"] : []}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                >\n                    <RangeArray\n                        ranges={mod.system.added_range}\n                    />\n                </EffectBox>\n            {/if}\n            {#if mod.system.added_damage.length}\n                <EffectBox\n                    name={getLocalized(\"LA.mech.mod.damage.label\")}\n                    innerStyle={[\"-fontsize5\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                >\n                    <DamageArray\n                        damages={mod.system.added_damage}\n                    />\n                </EffectBox>\n            {/if}\n            </div>\n        {/if}\n            <BonusBox\n                bonuses={mod.system.bonuses}\n                bonusPath={`${path}.system.bonuses`}\n            />\n        {#if mod.system.added_tags.length || mod.system.tags.length}\n            <EffectBox\n                name={getLocalized(\"LA.mech.mod.tags.label\")}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            >\n                <TagArray\n                    tags={mod.system.added_tags}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n                <TagArray\n                    tags={mod.system.tags}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </EffectBox>\n        {/if}\n            <EffectBox\n                name={getLocalized(\"LA.mech.mod.effect.label\")}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            >\n                <FlowButton\n                    style={[\"clipped-bot la-bckg-secondary\"]}\n                    text={getLocalized(\"LA.use.label\")}\n\n                    flowClass={FlowClass.SendEffectToChat}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <hr>\n                {@html mod.system.effect}\n            </EffectBox>\n            <ActionBox\n                actions={mod.system.actions}\n                actor={actor}\n                uuid={mod.uuid}\n                path={`system.actions`}\n\n                collapseID={collID}\n                startCollapsed={false}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                logging={true}\n            />\n        </div>\n    </HeaderSecondary>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.mech.mod.empty.label\")}\n        subLabel={getLocalized(\"LA.mech.mod.empty.subLabel\")}\n        type={AcceptType.MechWeaponMod}\n        path={path}\n    />\n{/if}","<script lang=\"ts\">\n    import type { ProfileBoxProps } from \"@/interfaces/actor/ProfileBoxProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        profiles,\n        weapon,\n        path,\n        style,\n\n        logText,\n        logging,\n    }: ProfileBoxProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const qualityMode = getExtraEffectsEnabled();\n    const log = $derived(logText || getLocalized(\"LA.profile.tooltip\"));\n</script>\n<script lang=\"ts\" module>\n    const _STYLE = \" la-text-header la-bckg-pilot clipped -flex1 \";\n</script>\n\n{#if profiles.length > 1}\n<div class=\"la-limited la-flexrow {style?.join(' ') || _STYLE}\">\n{#each profiles as profile, index}\n    <button type=\"button\" \n        class=\"la-prmy-primary -height7\n            {qualityMode ? '-glow-prmy-hover -pulse-glow-prmy' : ''}\n            gen-control {index === weapon.system.selected_profile_index ? 'la-prmy-header la-bckg-secondary selected-profile -pointerdisable' : ''}\"\n        data-action=\"set\" \n        data-action-value=\"(int){index}\"\n        data-path={path}\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        aria-label={getLocalized(\"LA.use.label\")}\n    >\n        <span class=\"-padding1-lr -fontsizemedium -upper\n            {qualityMode ? '-pulse-glow-prmy' : ''}\n            {index === weapon.system.selected_profile_index ? 'la-prmy-header -bold' : ''}\"\n        >{profile.name}</span>\n    </button>\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import type { MountSlotProps } from \"@/interfaces/mech/MountSlotProps\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n\n    import {formatString, getLocalized, isLoading, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { CHAT_CARD_COLOR_MAP, SLOT_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n\n    import HeaderTertiary, { H3_HEADER_STYLE, H3_ICON_SIZE } from \"@/svelte/shared/header/HeaderTertiary.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import DamageButton from \"@/svelte/shared/button/DamageButton.svelte\";\n    import AttackButton from \"@/svelte/shared/button/AttackButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import WeaponMod from \"@/svelte/mech/WeaponMod.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import ProfileBox from \"@/svelte/shared/ProfileBox.svelte\";\n    import SpCostArray from \"@/svelte/shared/SPCostArray.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const {\n        actor,\n        mount,\n        mountIndex,\n    }: MountSlotProps = $props();\n    let attackButtonHover = $state(false);\n    let damageButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let editButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getSlotSize(size: string)\n    {\n        return size === \"Flex\"\n            ? `${getLocalized(SLOT_LOCALIZE_MAP['Main'])} || 2x ${getLocalized(SLOT_LOCALIZE_MAP['Auxiliary'])}`\n            : getLocalized(SLOT_LOCALIZE_MAP[size]) || \"any\";\n    }\n\n    function isDestroyed(weapon: any)\n    {\n        return weapon.system.destroyed;\n    }\n\n    function getHeaderStyle(weapon: any)\n    {\n        return isDestroyed(weapon)\n            ? \"la-text-repcap -strikethrough\"\n            : \"la-text-header\";\n    }\n\n    function getSubtitle(weapon: any)\n    {\n        if (isDestroyed(weapon))\n            return getLocalized(\"LA.mech.slot.destroyed.label\")\n        if (weapon.system.size && weapon.system.active_profile.type)\n            return `${weapon.system.size} ${weapon.system.active_profile.type}`\n        else\n            return getLocalized(\"LA.placeholder\");\n    }\n\n    function getSubtitleStyle(weapon:any)\n    {\n        return isDestroyed(weapon)\n            ? `la-text-error la-prmy-error -upper ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header -upper\";\n    }\n\n    function getIconStyle(weapon: any)\n    {\n        return isDestroyed(weapon)\n            ? \"la-text-repcap\"\n            : \"la-prmy-header la-scdy-primary \" + (qualityMode ? \"-glow-prmy -glow-scdy-hover \" : \" \");\n    }\n\n    function getWeaponPath(index: number)\n    {\n        return `system.loadout.weapon_mounts.${mountIndex}.slots.${index}.weapon.value`\n    }\n\n    function getModPath(index: number)\n    {\n        return `system.loadout.weapon_mounts.${mountIndex}.slots.${index}.mod.value`\n    }\n    \n    function getActionCollapseID(index: number, profileIndex?: number)\n    {\n        return profileIndex !== undefined\n            ? `${mount.uuid}.action.${index}.profile.${profileIndex}` \n            : `${mount.uuid}.action.${index}`;\n    }\n\n    function renderOuter(weapon: any)\n    {\n        return (\n            weapon.system.sp || \n            isLoading(weapon) || \n            weapon.isLimited() || \n            weapon.system.mod ||\n            weapon.system.profiles.length > 1\n        );\n    }\n\n    function getRollWeaponTip(weapon: any)\n    {\n        return formatString(\n            getLocalized(\"LA.flow.rollAttack.template.tooltip\"), \n            weapon.name);\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, weapon: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && weapon)\n        {\n            let range = \"\";\n            weapon.system.active_profile.all_range.map((rng: any) => {\n                range += `<div class=\"la-flexrow\">${rng.val}<i class=\"cci cci-${rng.type.toLowerCase()} -fontsize6\"></i></div>`\n            });\n            let damage = \"\";\n            weapon.system.active_profile.all_damage.map((dmg: any) => {\n                damage += `<div class=\"la-flexrow\">${dmg.val}<i class=\"cci cci-${dmg.type.toLowerCase()} -fontsize6\"></i></div>`;\n            });\n            const description = `\n                <div>\n                    ${weapon.system.active_profile.description}\n                </div>\n                <hr>\n                <div \n                    class=\"la-flexrow -justifyevenly clipped-alt -fontsize5 -padding0-tb -padding1-lr\"\n                    style=\"\n                        background-color: var(--weapon-color);\n                        color: var(--light-text);\n                        align-items: baseline;\n                    \"\n                >\n                    ${range}\n                    ${damage}\n                </div>\n            `;\n            let chatData = {\n                title: weapon.name,\n                description: description,\n                effect: weapon.system.active_profile.effect,\n                onAttack: weapon.system.active_profile.on_attack,\n                onHit: weapon.system.active_profile.on_hit,\n                onCrit: weapon.system.active_profile.on_crit,\n                tags: weapon.system.active_profile.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Weapon],\n            } as ChatData;\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#each mount.slots as slot, index}\n{#if slot.weapon?.value}\n{@const weapon = slot.weapon.value}\n<!-- Snippets -->\n{#snippet outerContent()}\n    <div class=\"la-flexcol -gap0 -widthfull -padding2-l -fontface-stylized\">\n    {#if slot.size !== \"Integrated\" && weapon.system.mod}\n        <WeaponMod\n            actor={actor}\n            mod={weapon.system.mod}\n            path={`${getModPath(index)}`}\n        />\n    {/if}\n    {#if isLoading(weapon) || weapon.isLimited() || weapon.system.sp}\n        <div class=\"la-flexrow clipped-alt la-bckg-header-anti -widthfull\">\n            <!-- Loading -->\n            <LoadedBox\n                item={weapon}\n                path={getWeaponPath(index)}\n                \n                logging={true}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={weapon.system.uses.value}\n                usesMax={weapon.system.uses.max}\n                path={getWeaponPath(index)}\n\n                logging={true}\n            />\n            <SpCostArray\n                cost={weapon.system.sp}\n            />\n        </div>\n    {/if}\n        <ProfileBox\n            profiles={weapon.system.profiles}\n            weapon={weapon}\n            path={`${getWeaponPath(index)}.system.selected_profile_index`}\n            style={[\"-widthfull la-bckg-header-anti la-text-header clipped-alt\"]}\n\n            logging={true}\n        />\n    </div>\n{/snippet}\n{#snippet headerTertiaryLeftOptions()}\n    <AttackButton\n        iconStyle={[H3_ICON_SIZE, getIconStyle(weapon), \"cci cci-weapon\"]}\n        iconBackgroundStyle={[\n            \"la-prmy-secondary\", \n            H3_ICON_SIZE, \n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n        ]}\n\n        flowClass={FlowClass.RollAttack}\n        path={`system.loadout.weapon_mounts.${index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.LEFT}\n        tooltip={getRollWeaponTip(weapon)}\n        logText={getRollWeaponTip(weapon)}\n        logging={true}\n\n        disabled={isDestroyed(weapon)}\n\n        onPointerEnter={() => {attackButtonHover = true;} }\n        onPointerLeave={() => {attackButtonHover = false;} }\n    />\n{/snippet}\n{#snippet headerTertiaryRightOptions()}\n    <DamageButton\n        iconStyle={isDestroyed(weapon) ? [\"la-text-repcap\"] : undefined }\n        iconBackgroundStyle={[\n            \"-fontsize9 la-prmy-secondary\", \n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n        ]}\n        \n        flowClass={FlowClass.RollDamage}\n        range={weapon.system.active_profile.all_range}\n        damage={weapon.system.active_profile.all_damage}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        logging={true}\n\n        disabled={isDestroyed(weapon)}\n\n        onPointerEnter={() => {damageButtonHover = true;} }\n        onPointerLeave={() => {damageButtonHover = false;} }\n    />\n    <div class=\"la-flexcol -margin3-lr\">\n        <!-- Overriding default flow behaviour -->\n        <!-- Send to chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE()]}\n            flowClass={FlowClass.None}\n            index={index}\n            uuid={weapon.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onClick={event => sendToChat(event, weapon)}\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE()]}\n            flowClass={FlowClass.ContextMenu}\n            path={getWeaponPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n    </div>\n{/snippet}\n<!-- /Snippets -->\n    <!-- Weapon -->\n    <HeaderTertiary\n        itemID={weapon.id}\n        uuid={weapon.uuid}\n        path={getWeaponPath(index)}\n        acceptTypes={\"mech_weapon\"}\n        collapseID={weapon.uuid}\n        startCollapsed={true}\n\n        text={weapon.name}\n        headerStyle={[H3_HEADER_STYLE, \"la-bckg-pilot\"]}\n        headerFontStyle={[getHeaderStyle(weapon), H2_TEXT_SIZE, \"-fontface-stylized\"]}\n\n        subText={getSubtitle(weapon)}\n        subHeaderFontStyle={[getSubtitleStyle(weapon), \"-fontsizesmall -fontface-stylized\"]}\n        borderStyle={[\"-bordersoff\"]}\n        extensionTextFunction={() => {\n            if (attackButtonHover)\n                return `--${getLocalized(\"LA.flow.rollAttack.extension\")}`;\n            if (damageButtonHover)\n                return `--${getLocalized(\"LA.flow.rollDamage.extension\")}`;\n            if (messageButtonHover)\n                return `--${getLocalized(\"LA.chat.extension\")}`;\n            if (editButtonHover)\n                return `--${getLocalized(\"LA.edit.extension\")}`;\n            return undefined;\n        }}\n        \n        renderOutsideCollapse={renderOuter(weapon) ? outerContent : undefined }\n        contentLeft={headerTertiaryLeftOptions}\n        contentRight={headerTertiaryRightOptions}\n    >\n    {#if !weapon.system.destroyed}\n        {@const profile = weapon.system.active_profile}\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n            <!-- Generated Content -->\n            <EffectBox\n                name={getLocalized(\"LA.mech.system.effect.label\")}\n                effect={profile.effect}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            />\n            <EffectBox\n                name={getLocalized(\"LA.effect.attack.label\")}\n                effect={profile.on_attack}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            />\n            <EffectBox\n                name={getLocalized(\"LA.effect.hit.label\")}\n                effect={profile.on_hit}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            />\n            <EffectBox\n                name={getLocalized(\"LA.effect.crit.label\")}\n                effect={profile.on_crit}\n\n                tooltipEnabled={tooltipEnabled}\n                logging={true}\n            />\n            <ActionBox\n                actions={weapon.system.actions}\n                actor={actor}\n                uuid={weapon.uuid}\n                path={`system.actions`}\n\n                collapseID={getActionCollapseID(index)}\n                startCollapsed={false}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                logging={true}\n            />\n            <ActionBox\n                actions={profile.actions}\n                actor={actor}\n                uuid={weapon.uuid}\n                path={`system.active_profile.actions`}\n\n                collapseID={getActionCollapseID(index, weapon.system.selected_profile_index)}\n                startCollapsed={false}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                logging={true}\n            />\n        {#if slot.size !== \"Integrated\" && !weapon.system.mod}\n        <!-- RAW integrated weapons can't have weapon mods but whatever -->\n            <WeaponMod\n                actor={actor}\n                mod={weapon.system.mod}\n                path={`${getModPath(index)}`}\n            />\n        {/if}\n            <TagArray\n                tags={profile.all_tags}\n                justify={\"start\"}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n            />\n        </div>\n    {/if}\n    </HeaderTertiary>\n{:else}\n<!-- Empty Weapon -->\n<!-- svelte-ignore block_empty -->\n{#if index === 1 && mount.slots[0].size === \"Flex\" &&\n    (mount.slots[0].weapon?.value.system.size !== \"Auxiliary\")}\n{:else}\n<EmptyBox\n    label={getLocalized(\"LA.mech.mount.empty.label\")}\n    subLabel={getSlotSize(mount.slots[0].size)}\n    type={AcceptType.MechWeapon}\n    path={getWeaponPath(index)}\n/>\n{/if}\n{/if}\n{/each}","<script lang=\"ts\">\n    import type { MountNamesProps } from \"@/interfaces/actor/decoration/MountNamesProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    const {\n        mountNames,\n        style,\n        textStyle,\n\n        logText,\n        logging,\n    }: MountNamesProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const log = $derived(logText || getLocalized(\"LA.flow.rollAttack.tooltip\"));\n</script>\n\n{#if mountNames.length}\n<div role=\"none\"\n    class=\"la-flexcol la-text-header -gap0 -aligncenter -fontsizesmall -height5 -lineheight2 {style?.join(' ')}\"\n    onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n    onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n>\n{#each mountNames as mountName}\n    <span class=\"-widthfull -textalignright {textStyle?.join(' ')}\">{mountName}</span>\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { MOUNT_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import Weapon from \"@/svelte/mech/Weapon.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import MountNames from \"@/svelte/shared/decoration/MountNames.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n\n    const props: MechSheetProps = $props();  \n    const {\n        actor,\n        system,\n    } = $derived(props);\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const weaponMounts = $derived(system.loadout.weapon_mounts);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    \n    function getCollapseID(index: number)\n    {\n        return `${actor.uuid}.mount.${index}`;\n    }\n\n    function aggregateMountWeaponNames(mount: any)\n    {\n        let names = mount.slots.map((slot: any) => slot.weapon?.value?.name);\n        return names.filter((name: any) => name !== undefined);\n    }\n</script>\n\n{#if system.loadout.frame && weaponMounts.length}\n{#each weaponMounts as mount, index}\n    {#snippet headerOptions()}\n    <MountNames\n        mountNames={aggregateMountWeaponNames(mount)}\n\n        logText={getLocalized(\"LA.mech.mount.preview.tooltip\")}\n        logging={true}\n    />\n    <CollapseAllButton\n        collapseID={getCollapseID(index)}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        logging={true}\n\n        onPointerEnter={() => {collapseAllButtonHover = true;}}\n        onPointerLeave={() => {collapseAllButtonHover = false;}}\n    />\n    {/snippet}\n    <HeaderMain \n        text={getLocalized(MOUNT_LOCALIZE_MAP[mount.type])}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-brdr-primary\"]}\n        extensionTextFunction={() => {\n            if (collapseAllButtonHover)\n                return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n            return undefined;\n        }}\n\n        collapseID={getCollapseID(index)}\n        startCollapsed={true}\n\n        headerContent={headerOptions}\n    >\n    {#if mount.bracing}\n        <EmptyBox\n            label={getLocalized(\"LA.mech.mount.locked.label\")}\n            subLabel={getLocalized(\"LA.mech.mount.locked.subLabel\")}\n        />\n    {:else}\n        <div class=\"la-flexcol -gap0 -widthfull\">\n            <Weapon\n                actor={actor}\n                mount={mount}\n                mountIndex={index}\n            />\n        </div>\n    {/if}\n    </HeaderMain>\n{/each}\n{/if}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { Logger } from \"@/classes/Logger\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { trackHook } from \"@/scripts/store/hooks\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor, // Source data (e.g. pilot)\n        sheetActor, // Presenting actor (e.g. mech | pilot)\n    } : {actor: any; sheetActor: any} = $props();\n    let collapseAllButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let editButtonHover = $state(false);\n\n    const isMechSheet = $derived(sheetActor?.type === \"mech\" || false);\n    const tooltipEnabled = $derived(isMechSheet ? getMechSheetTooltipEnabled() : getPilotSheetTooltipEnabled());\n    const coreBonuses = $derived(actor.itemTypes.core_bonus);\n    const collID = $derived(`${sheetActor.uuid}.coreBonus`);\n    const theme = $derived(getCSSDocumentTheme(sheetActor.uuid));\n    \n    onMount(() => {\n        if (isMechSheet)\n            trackHook(sheetActor.uuid, Hooks.on(\"updateItem\", (item: any, _caller: any, _options: any) => \n            {\n                if (item.type !== \"core_bonus\" || item.parent.uuid !== actor.uuid)\n                    return;\n                \n                // (#6)\n                // Also for some reason, this calls twice when updating an Items document\n                Hooks.call(\"laForceRerender\", sheetActor.uuid);\n            }), \"updateItem\");\n    });\n\n    function getActionCollID(index: number)\n    {\n        return `${collID}.${index}.action`;\n    }\n\n    // (#4) Not a deployable but same idea\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && action)\n        {\n            let chatData = {\n                title: action.name, \n                trigger: action.trigger,\n                effect: action.detail\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n\n    function getCoreBonusPath(index: number)\n    {\n        return isMechSheet \n            ? `system.pilot.value.itemTypes.core_bonus.${index}`\n            : `itemTypes.core_bonus.${index}`\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={isMechSheet}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if coreBonuses.length}\n<HeaderMain\n    text={getLocalized(\"LA.pilot.coreBonus.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--downtime\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--downtime\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each coreBonuses as coreBonus, index}\n        {#snippet outerContent()}\n            {#if coreBonus.system.counters.length}\n            <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -padding2-l -fontface-stylized\">\n            {#each coreBonus.system.counters as counter, jndex}\n                <CounterBox\n                    text={counter.name}\n                    type={CounterBoxType.Counter}\n                    usesValue={counter.value}\n                    usesMax={counter.max}\n                    path={isMechSheet\n                        ? `system.pilot.value.itemTypes.core_bonus.${index}.system.counters.${jndex}`\n                        : `itemTypes.core_bonus.${index}.system.counters.${jndex}`}\n                    style={[\"clipped-bot-alt -widthfull la-bckg-header-anti\"]}\n\n                    logging={true}\n                />\n            {/each}\n            </div>\n            {/if}\n        {/snippet}\n        {#snippet headerSecondaryLeftOptions()}\n            <i class=\"{H2_ICON_SIZE} cci cci-corebonus\"></i>\n        {/snippet}\n        {#snippet headerSecondaryRightOptions()}\n            <!-- Edit -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexcol\"]}\n                flowClass={FlowClass.ContextMenu}\n                path={getCoreBonusPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {editButtonHover = true;} }\n                onPointerLeave={() => {editButtonHover = false;} }\n            >\n                <i class=\"fas fa-ellipsis-v\"></i>\n            </GlyphButton>\n            <!-- Send to chat -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n                flowClass={FlowClass.SendToChat}\n                index={index}\n                uuid={coreBonus.uuid}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.chat.tooltip\")}\n                logText={getLocalized(\"LA.chat.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {messageButtonHover = true;} }\n                onPointerLeave={() => {messageButtonHover = false;} }\n            >\n                <i class=\"mdi mdi-message\"></i>\n            </GlyphButton>\n        {/snippet}\n        <HeaderSecondary\n            text={coreBonus.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n            \n            rootStyle={[\"ref set\"]}\n            uuid={coreBonus.uuid}\n            path={ isMechSheet \n                ? `system.pilot.value.itemTypes.core_bonus.${index}`\n                : `itemTypes.core_bonus.${index}`\n            }\n            collapseID={`${collID}.${index}`}\n            startCollapsed={true}\n\n            renderOutsideCollapse={outerContent}\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <BonusBox\n                    bonuses={coreBonus.system.bonuses}\n                    bonusPath={`itemTypes.core_bonus.${index}.system.bonuses`}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    effect={coreBonus.system.effect}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n                <ActionBox\n                    actions={coreBonus.system.actions}\n                    actor={actor}\n                    uuid={coreBonus.uuid}\n                    path={ isMechSheet \n                        ? `system.pilot.value.itemTypes.core_bonus.${index}.system.actions`\n                        : `itemTypes.core_bonus.${index}.system.actions`\n                    }\n                    collapseID={getActionCollID(index)}\n\n                    startCollapsed={false}\n                    onClick={sendToChat}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <DeployableBox\n                    source={actor}\n                    lidSource={coreBonus.system}\n                    uuid={actor.uuid}\n                    sheetUUID={sheetActor?.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n</HeaderMain>\n{/if}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n\n    import { trackHook } from \"@/scripts/store/hooks\";\n    import { getCollapseState } from \"@/scripts/store/collapse\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor, // Source data (e.g. pilot)\n        sheetActor, // Presenting actor (e.g. mech | pilot)\n    } : {actor: any; sheetActor: any} = $props();\n    let collapseAllButtonHoverTalent = $state(false);\n    let collapseAllButtonHoverRank = $state(false);\n    let messageButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    \n    const isMechSheet = $derived(sheetActor?.type === \"mech\" || false);\n    const tooltipEnabled = $derived(isMechSheet ? getMechSheetTooltipEnabled() : getPilotSheetTooltipEnabled());\n    const talents = $derived(actor.itemTypes.talent);\n    const collID = $derived(`${sheetActor.uuid}.talents`);\n    const theme = $derived(getCSSDocumentTheme(sheetActor.uuid));\n\n    onMount(() => {\n        // TODO: try replacing with actor.updateEmbeddedDocuments; this was used to be able to update talent counters like Gunslinger\n        if (isMechSheet)\n            trackHook(sheetActor.uuid, Hooks.on(\"updateItem\", (item: any, _caller: any, _options: any) => \n            {\n                if (item.type !== \"talent\" || item.parent.uuid !== actor.uuid)\n                    return;\n                \n                // (#6)\n                // Also for some reason, this calls twice when updating an Items document\n                Hooks.call(\"laForceRerender\", sheetActor.uuid);\n            }), \"updateItem\");\n    });\n\n    function getTalentCollID(talentIndex: number)\n    {\n        return `${collID}.${talentIndex}`;\n    }\n\n    function getRankCollID(talentIndex: number, rankIndex: number)\n    {\n        return `${collID}.${talentIndex}.ranks.${rankIndex}`;\n    }\n    \n    function getActionCollID(talentIndex: number, rankIndex: number)\n    {\n        return `${collID}.${talentIndex}.ranks.${rankIndex}.action`;\n    }\n\n    function getTalentPath(index: number)\n    {\n        return isMechSheet\n            ? `system.pilot.value.itemTypes.talent.${index}`\n            : `itemTypes.talent.${index}`\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={isMechSheet}\n\n    onPointerEnter={() => {collapseAllButtonHoverTalent = true;}}\n    onPointerLeave={() => {collapseAllButtonHoverTalent = false;}}\n/>\n{/snippet}\n\n{#if talents.length}\n<HeaderMain\n    text={getLocalized(\"LA.pilot.talent.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--downtime\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--downtime\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHoverTalent)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each talents as talent, index}\n    {#snippet headerSecondaryTalentLeftOptions()}\n        <i class=\"{H2_ICON_SIZE} cci cci-compendium\"></i>\n    {/snippet}\n    {#snippet headerSecondaryTalentRightOptions()}\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexrow -margin0-lr\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getTalentPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <CollapseAllButton\n            collapseID={getTalentCollID(index)}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n\n            onPointerEnter={() => {collapseAllButtonHoverRank = true;}}\n            onPointerLeave={() => {collapseAllButtonHoverRank = false;}}\n        />\n    {/snippet}\n        <HeaderSecondary\n            text={`${talent.name} ${talent.system.curr_rank}`}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (collapseAllButtonHoverRank)\n                    return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n            \n            rootStyle={[\"ref set lancer-talent submajor\"]}\n            uuid={talent.uuid}\n            path={ isMechSheet\n                ? `system.pilot.value.itemTypes.talent.${index}`\n                : `itemTypes.talent.${index}`\n            }\n\n            collapseID={getTalentCollID(index)}\n            startCollapsed={true}\n\n            contentLeft={headerSecondaryTalentLeftOptions}\n            contentRight={headerSecondaryTalentRightOptions}\n        >\n            <div class=\"la-flexcol -gap0 -widthfull\">\n            {#each talent.system.ranks as rank, jndex}\n            {#if jndex < talent.system.curr_rank}\n                {#snippet outerContent()}\n                    {#if rank.counters.length}\n                    <div class=\"la-flexcol -widthfull -padding2-l -fontface-stylized\n                        {getCollapseState(getRankCollID(index, jndex)) ? 'la-brdr-transparent -borders-l' : 'la-brdr-trait -borders-l -collapse-fade-out'}\"\n                    >\n                    {#each rank.counters as counter, kndex}\n                        <CounterBox\n                            text={counter.name}\n                            type={CounterBoxType.Counter}\n                            usesValue={counter.value}\n                            usesMax={counter.max}\n                            path={ isMechSheet\n                                ? `system.pilot.value.itemTypes.talent.${index}.system.ranks.${jndex}.counters.${kndex}`\n                                : `itemTypes.talent.${index}.system.ranks.${jndex}.counters.${kndex}`\n                            }\n                            style={[\"clipped-bot-alt -widthfull la-bckg-header-anti\"]}\n                            \n                            logging={true}\n                        />\n                    {/each}\n                    </div>\n                    {/if}\n                {/snippet}\n                {#snippet headerSecondaryRankLeftOptions()}\n                    <i class=\"{H2_ICON_SIZE} cci cci-talent\"></i>\n                {/snippet}\n                    {#snippet headerSecondaryRankRightOptions()}\n                    <GlyphButton\n                        style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n                        flowClass={FlowClass.SendToChat}\n                        rank={jndex}\n                        uuid={talent.uuid}\n\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipDirection={TooltipDirection.UP}\n                        tooltipTheme={theme}\n                        tooltip={getLocalized(\"LA.chat.tooltip\")}\n                        logText={getLocalized(\"LA.chat.tooltip\")}\n                        logging={true}\n\n                        onPointerEnter={() => {messageButtonHover = true;} }\n                        onPointerLeave={() => {messageButtonHover = false;} }\n                    >\n                        <i class=\"mdi mdi-message\"></i>\n                    </GlyphButton>\n                {/snippet}\n                <HeaderSecondary\n                    text={rank.name}\n                    headerStyle={[H2_HEADER_STYLE, \"la-bckg-header-anti\"]}\n                    textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n                    borderStyle={[\"la-brdr-trait\"]}\n                    extensionTextFunction={() => {\n                        if (messageButtonHover)\n                            return `--${getLocalized(\"LA.chat.extension\")}`;\n                        return undefined;\n                    }}\n\n                    rootStyle={[\"ref set\"]}\n                    uuid={talent.uuid}\n                    collapseID={getRankCollID(index, jndex)}\n                    startCollapsed={false}\n                    \n                    renderOutsideCollapse={outerContent}\n                    contentLeft={headerSecondaryRankLeftOptions}\n                    contentRight={headerSecondaryRankRightOptions}\n                >\n                    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                        <BonusBox\n                            bonuses={rank.bonuses}\n                            bonusPath={ isMechSheet\n                                ? `system.pilot.value.itemTypes.talent.${index}.system.ranks.${jndex}.bonuses`\n                                : `itemTypes.talent.${index}.system.ranks.${jndex}.bonuses`\n                            }\n                        />\n                        <EffectBox\n                            name={getLocalized(\"LA.pilot.trait.label\")}\n                            effect={rank.description}\n\n                            tooltipEnabled={tooltipEnabled}\n                            logging={true}\n                        />\n                        <ActionBox\n                            actions={rank.actions}\n                            actor={sheetActor}\n                            uuid={talent.uuid}\n                            path={`system.ranks.${jndex}.actions`}\n\n                            collapseID={getActionCollID(index, jndex)}\n                            startCollapsed={false}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            logging={true}\n                        />\n                    </div>\n                </HeaderSecondary>\n            {/if}\n            {/each}\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n</HeaderMain>\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import Frame from \"@/svelte/mech/Frame.svelte\";\n    import Systems from \"@/svelte/mech/Systems.svelte\";\n    import Mounts from \"@/svelte/mech/Mounts.svelte\";\n    import CoreBonus from \"@/svelte/pilot/CoreBonus.svelte\";\n    import Talents from \"@/svelte/pilot/Talents.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props: MechSheetProps = $props();\n    setActorContext(props.actor);\n</script>\n\n<div class=\"la-mount__list la-flexcol -widthfull\">\n    <Frame {...props} />\n    <Mounts {...props} />\n    <Systems {...props} />\n    \n{#if props.pilot &&\n    props.pilot.system.active_mech?.value.uuid === props.actor.uuid}\n    <CoreBonus\n        actor={props.pilot}\n        sheetActor={props.actor}\n    />\n    <Talents\n        actor={props.pilot}\n        sheetActor={props.actor}\n    />\n{/if}\n</div>","import { Logger } from \"@/classes/Logger\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport type { CustomFlagKey } from \"@/enums/CustomFlagKey\";\nimport type { CustomFlagContent } from \"@/interfaces/actor/CustomFlagData\";\nimport { getCustomFlagPath } from \"@/scripts/flags\";\n\nconst CUSTOM_FLAG_PATTERN = new RegExp(`@${LancerAlternative.EnricherTag}\\\\[([^\\\\]]+)\\\\]{([^}]+)}`, \"g\");\n\nasync function enrichCustomFlag(match: RegExpMatchArray): Promise<HTMLElement | null>\n{\n    const [, uuid, path] = match;\n\n    const actor = await fromUuid(uuid);\n    if (!actor)\n    {\n        Logger.warn(`${LancerAlternative.EnricherTag} enricher could not resolve actor UUID`, uuid);\n        return null;\n    }\n\n    const value = foundry.utils.getProperty(actor, path);\n\n    const anchor = document.createElement(\"a\");\n    anchor.classList.add(\"content-link\", \"la-custom-flag-link\");\n    anchor.dataset.tooltip = path;\n    anchor.append(document.createTextNode(`${value}`));\n    return anchor;\n}\n\nexport function registerCustomFlagEnricher()\n{\n    CONFIG.TextEditor.enrichers.push({\n        pattern: CUSTOM_FLAG_PATTERN,\n        enricher: enrichCustomFlag,\n    });\n}\n\n/**\n * A copyable `@AltSheetCustom[...]{...}` tag that live-resolves to a custom flag's content field\n * wherever Foundry enriches text (journals, chat, item descriptions, etc.)\n */\nexport function getEnricher(actorUuid: string, flagKey: CustomFlagKey, id: string, field: keyof CustomFlagContent = \"value\"): string\n{\n    return `@${LancerAlternative.EnricherTag}[${actorUuid}]{${getCustomFlagPath(flagKey, id, field)}}`;\n}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { setActorContext } from \"@/scripts/context\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { LADataType } from \"@/enums/LADataType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { addCustomFlag, deleteCustomFlag, getCustomFlagPath, getCustomFlags, reorderCustomFlags, updateCustomFlag } from \"@/scripts/flags\";\n    import { getEnricher } from \"@/scripts/enrichers\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getCustomFlagsSortable, setCustomFlagsSortable } from \"@/scripts/store/advanced\";\n    import DragDropHandle from \"@/svelte/shared/dragdrop/DragDropHandle.svelte\";\n\n    const {\n        actor,\n    }: MechSheetProps = $props();\n    setActorContext(actor);\n\n    let component: HTMLElement | null = $state(null);\n    let deleteButtonHover = $state(false);\n    let addButtonHover = $state(false);\n    let sortButtonHover = $state(false);\n\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Mech));\n    const flagEntries = $derived(Object.entries(customFlags));\n    const sortable = $derived(getCustomFlagsSortable(actor.uuid));\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const refCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.ref.tooltip\"));\n    const enrichCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"));\n\n    function handleAddCustomFlag(_event: Event, actor: any)\n    {\n        addCustomFlag(actor, CustomFlagKey.Mech);\n    }\n\n    function handleDeleteCustomFlag(event: Event, actor: any, id: string)\n    {\n        event.stopPropagation();\n        deleteCustomFlag(actor, CustomFlagKey.Mech, id);\n    }\n\n    function handleUpdateCustomFlag(actor: any, id: string, changes: Partial<CustomFlag>)\n    {\n        updateCustomFlag(actor, CustomFlagKey.Mech, id, changes);\n    }\n\n    function handleReorderCustomFlag(_event: DragEvent, dropData: { type: string, index: number }, thisData: { type: string, index: number })\n    {\n        if (dropData.type !== LADataType.Sorting)\n            return;\n        reorderCustomFlags(actor, CustomFlagKey.Mech, dropData.index, thisData.index);\n    }\n\n    function getTypeIcon(type: string)\n    {\n        return type == CustomFlagContentType.Fraction ? 'mdi-fraction-one-half' : 'mdi-numeric'\n    }\n</script>\n\n{#snippet headerOptions()}\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\",\n                sortable ? \" mdi mdi-sort-variant-lock-open \" : \" mdi mdi-sort-variant-lock \"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logging={true}\n\n        onClick={() => setCustomFlagsSortable(actor.uuid, !sortable)}\n        onPointerEnter={() => {sortButtonHover = true;} }\n        onPointerLeave={() => {sortButtonHover = false;} }\n    ></GlyphButton>\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-plus-thick la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logging={true}\n\n        onClick={event => handleAddCustomFlag(event, actor)}\n        onPointerEnter={() => {addButtonHover = true;} }\n        onPointerLeave={() => {addButtonHover = false;} }\n    ></GlyphButton>\n{/snippet}\n\n{#snippet headerSecondaryInnerLeftOptions()}\n    <i\n        class=\"mdi mdi-code-json -padding0-lr\"\n    ></i>\n{/snippet}\n\n<div class=\"la-custom__list la-flexcol -widthfull\">\n    <HeaderMain\n        text={getLocalized(\"LA.tab.custom.subLabel\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-brdr-transparent clipped-bot-alt\"]}\n        extensionTextFunction={() => {\n            if (addButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.add.extension\")}`;\n            if (sortButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.sort.extension\")}`;\n            return undefined;\n        }}\n\n        headerContent={headerOptions}\n    >\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\"\n            bind:this={component}\n        >\n        {#each flagEntries as [id, flag], index (id)}\n            {#snippet headerSecondaryLeftOptions()}\n                <i\n                    class=\"mdi -padding0-lr\n                {getTypeIcon(flag.contentType)}\"\n                ></i>\n            {/snippet}\n\n            {#snippet headerSecondaryRightOptions()}\n                <GlyphButton type=\"button\"\n                    flowClass={FlowClass.None}\n                    style={[\"mdi mdi-close-thick la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                    qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logText={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logging={true}\n\n                    onClick={event => handleDeleteCustomFlag(event, actor, id)}\n                    onPointerEnter={() => {deleteButtonHover = true;} }\n                    onPointerLeave={() => {deleteButtonHover = false;} }\n                ></GlyphButton>\n            {/snippet}\n\n            <DragDropHandle\n                style={[sortable ? \"-padding5-l\" : \"\"]}\n                iconStyle={[sortable ? \"\" : \"-displaynone\"]}\n                index={index}\n                root={component}\n                data={{ type: LADataType.Sorting, index }}\n                onDrop={handleReorderCustomFlag}\n                deleteDisabled={true}\n                logging={false}\n                disabled={!sortable}\n            >\n            <HeaderSecondary\n                text={flag.name || getLocalized(\"LA.tab.custom.flag.name.label\")}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                borderStyle={[\"la-brdr-pilot\"]}\n                extensionTextFunction={() => {\n                    if (deleteButtonHover)\n                        return `--${getLocalized(\"LA.tab.custom.delete.extension\")}`;\n                    return undefined;\n                }}\n\n                collapseID={`custom.${id}`}\n                startCollapsed={false}\n\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n                <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.name.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.name}\n                            placeholder={getLocalized(\"LA.namePlaceholder\")}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { name: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.contentType.label\")}\n                    >\n                        <select\n                            class=\"la-customvalue__select la-text-text -bordersround -small la-brdr-repcap -padding0-lr -widthfull\"\n                            onchange={event => handleUpdateCustomFlag(actor, id, { contentType: (event.target as HTMLSelectElement).value as CustomFlagContentType })}\n                        >\n                            <option value={CustomFlagContentType.Value}\n                                selected={flag.contentType === CustomFlagContentType.Value}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.value.label\")}</option>\n                            <option value={CustomFlagContentType.Fraction}\n                                selected={flag.contentType === CustomFlagContentType.Fraction}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.fraction.label\")}</option>\n                        </select>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.content.label\")}\n                    >\n                        <div class=\"la-flexrow -gap1\">\n                            <div class=\"la-flexcol -gap0\">\n                                <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                <input type=\"number\"\n                                    class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                    value={flag.content.value}\n                                    onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, value: Number((event.target as HTMLInputElement).value) } })}\n                                    onfocus={event => event.currentTarget.select()}\n                                />\n                            </div>\n                            {#if flag.contentType === CustomFlagContentType.Fraction}\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.max}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, max: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.min}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, min: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                            {/if}\n                        </div>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.sidebarToggle.label\")}\n                    >\n                        <input type=\"checkbox\"\n                            class=\"-widthfull\"\n                            checked={flag.showInSidebar}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { showInSidebar: (event.target as HTMLInputElement).checked })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.color.label\")}\n                    >\n                        <input type=\"color\"\n                            class=\"la-customvalue__input -widthfull\"\n                            value={flag.color}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { color: (event.target as HTMLInputElement).value })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.icon.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.icon}\n                            placeholder={\"mdi mdi-abacus\"}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { icon: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.tooltip.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.tooltip}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { tooltip: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <HeaderSecondary\n                        text={getLocalized(\"LA.tab.custom.flag.assist.label\")}\n                        headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                        textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                        borderStyle={[\"la-brdr-pilot\"]}\n\n                        collapseID={`custom.${id}.assist`}\n                        startCollapsed={false}\n\n                        contentLeft={headerSecondaryInnerLeftOptions}\n                    >\n                        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.ref.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getCustomFlagPath(CustomFlagKey.Mech, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Mech, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Mech, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.enricher.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getEnricher(actor.uuid, CustomFlagKey.Mech, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Mech, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Mech, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                        </div>\n                    </HeaderSecondary>\n                </div>\n            </HeaderSecondary>\n            </DragDropHandle>\n        {/each}\n        </div>\n    </HeaderMain>\n</div>\n","<!--\n(#14) - Basically hijacking the statically mounted nav element in the `.hbs` file to be able to hide/display\nthe given element reactively. Expected to be removed in an update to the Lancer system that will migrate sheets to AppV2\n-->\n<script lang=\"ts\">\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n\n    type CustomToggleProps = {\n        actor: any;\n        button: HTMLElement;\n    };\n\n    const {\n        actor, button\n    } : CustomToggleProps = $props();\n\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n\n    $effect(() => {\n        button?.classList.toggle('-displaynone', !advancedOptions);\n    });\n</script>\n","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import type { ButtonProps } from \"@/interfaces/actor/button/ButtonProps\";\n    import type { TerminalTextProps } from \"@/interfaces/actor/TerminalTextProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n\n    type HexButtonProps = {\n        /**\n         * The number value of the property name.\n         */\n        value: number;\n        \n        /**\n         * Whether the value should be displayed as a signed number.\n         */\n        sign?: boolean;\n\n        /**\n         * Optional array of style class names to apply to the text that hovers above the value.\n         * Use `anim` prefixed color classes to apply the `--la-primary-color` CSS attribute.\n         */\n        outerTextStyle?: Array<string>;\n        \n        /**\n         * Optional array of style class names to apply to the button's value text.\n         * Use `anim` prefixed color classes to apply the `--la-primary-color` CSS attribute.\n         */\n        innerTextStyle?: Array<string>;\n        \n        /**\n         * Optional array of style class names to apply to the wrapper the entire element.\n         */\n        outerStyle?: Array<string>;\n\n        /**\n         * Optional array of style class names to apply to the wrapper of the button and outer text span.\n         */\n        innerStyle?: Array<string>;\n        \n        /**\n         * Optional array of style class names to apply to the button itself.\n         */\n        buttonStyle?: Array<string>;\n    }\n\n    const {\n        text,\n        value,\n        \n        flowType,\n        flowArgs,\n        flowClass,\n        uuid,\n        path,\n        sign,\n\n        tooltipEnabled,\n        tooltipHeader,\n        tooltip,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n\n        outerStyle,\n        innerStyle,\n        outerTextStyle,\n        innerTextStyle,\n        buttonStyle,\n        \n        logText,\n        logging,\n    }: HexButtonProps & ButtonProps & TooltipProps & TerminalTextProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.flow.tooltip\"));\n    const parsedValue = $derived(value\n        ? sign\n            ? (value > 0 ? `+${value}` : value)\n            : value\n        : value);\n\n</script>\n<div class=\"la-attribute la-text-secondary mdi mdi-hexagon {outerStyle?.join(' ')}\">\n    <div class=\"la-flexcol {innerStyle?.join(' ')}\">\n        <span class=\"la-label__span {outerTextStyle?.join(' ')}\">\n            {text}\n        </span>\n        <button type=\"button\" \n            class=\"la-value__button {buttonStyle?.join(' ')}\n                {flowClass || ''}\" \n            data-uuid={uuid} \n            data-flow-type={flowType}\n            data-flow-args={flowArgs}\n            data-path={path}\n            data-tooltip={tooltipEnabled ? tip : undefined }\n            data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n            data-tooltip-direction={tooltipDirection}\n            onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n            onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n            aria-label={text}\n        >\n            <span class=\"la-value__span {innerTextStyle?.join(' ')}\"><!--\n            --->{parsedValue}<!--\n        ---></span>\n        </button>\n    </div>\n</div>","<script lang=\"ts\">\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getActiveTab } from \"@/scripts/store/advanced\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { ActiveTab } from \"@/enums/ActiveTab\";\n    import HexButton from \"@/svelte/shared/button/HexButton.svelte\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const {\n        pilot,\n        actor,\n        system,\n\n        tooltipEnabled,\n        tooltipDirection,\n\n        logging,\n    }: {pilot: any; actor: any; system: any} & TooltipProps & TextLogEventProps = $props();\n    setActorContext(actor);\n\n    const logographic = logographicLanguage();\n    const qualityMode = getExtraEffectsEnabled();\n    const activeTab = $derived(getActiveTab(actor.uuid, ActiveTab.Secondary) || \"statistics\");\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<!-- HASE Stats -->\n{#if actor.type === \"pilot\" || \n    actor.type === \"mech\" && pilot?.system.active_mech?.value.uuid === actor.uuid}\n<div class=\"la-hasegroup -positionabsolute -widthnone\n        {activeTab === 'statistics' ? '' : '-displaynone'}\"\n>\n    <div class=\"la-hase la-flexcol -justifybetween -heightnone\">\n        <div class=\"la-flexrow -aligncenter\">\n            <HexButton\n                text={getLocalized(\"LA.grit.short\")}\n                value={system.grit}\n                \n                tooltipEnabled={tooltipEnabled}\n                tooltip={getLocalized(\"LA.grit.tooltip\")}\n                tooltipDirection={tooltipDirection || TooltipDirection.LEFT}\n                tooltipTheme={theme}\n                logText={getLocalized(\"LA.grit.tooltip\")}\n                logging={logging}\n\n                uuid={actor.uuid}\n                flowClass={FlowClass.RollStat}\n                path={\"system.grit\"}\n                sign={true}\n                \n                outerStyle={[\"-grit\"]}\n                innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                buttonStyle={[\"-widthfull -heightfull -positionabsolute\",\n                    qualityMode ? \"la-prmy-primary -glow-prmy-hover\" : \"\"]}\n                outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemedium\" : \"-fontsizesmall\"]}\n                innerTextStyle={[\"-fontsize6 -lineheight15\",\n                    qualityMode ? \"-pulse-glow-prmy la-prmy-header\" : \"\"]}\n            />\n        </div>\n        <div class=\"la-flexrow -aligncenter\">\n            <HexButton\n                text={getLocalized(\"LA.hull.short\")}\n                value={system.hull}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltip={getLocalized(\"LA.hull.tooltip\")}\n                tooltipDirection={tooltipDirection || TooltipDirection.LEFT}\n                tooltipTheme={theme}\n                logText={getLocalized(\"LA.hull.tooltip\")}\n                logging={logging}\n\n                uuid={actor.uuid}\n                flowClass={FlowClass.RollHASE}\n                path={\"system.hull\"}\n\n                outerStyle={[\"-hull\"]}\n                innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                buttonStyle={[\"-widthfull -heightfull -positionabsolute\",\n                    qualityMode ? \"la-prmy-primary -glow-prmy-hover\" : \"\"]}\n                outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmaller\"]}\n                innerTextStyle={[\"-fontsize5 -lineheight13\",\n                    qualityMode ? \"-pulse-glow-prmy la-prmy-header\" : \"\"]}\n            />\n            <HexButton\n                text={getLocalized(\"LA.agility.short\")}\n                value={system.agi}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltip={getLocalized(\"LA.agility.tooltip\")}\n                tooltipDirection={tooltipDirection || TooltipDirection.LEFT}\n                tooltipTheme={theme}\n                logText={getLocalized(\"LA.agility.tooltip\")}\n                logging={logging}\n\n                uuid={actor.uuid}\n                flowClass={FlowClass.RollHASE}\n                path={\"system.agi\"}\n\n                outerStyle={[\"-agi\"]}\n                innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                buttonStyle={[\"-widthfull -heightfull -positionabsolute\",\n                    qualityMode ? \"la-prmy-primary -glow-prmy-hover\" : \"\"]}\n                outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmaller\"]}\n                innerTextStyle={[\"-fontsize5 -lineheight13\",\n                    qualityMode ? \"-pulse-glow-prmy la-prmy-header\" : \"\"]}\n            />\n        </div>\n        <div class=\"la-flexrow -aligncenter\">\n            <HexButton\n                text={getLocalized(\"LA.systems.short\")}\n                value={system.sys}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltip={getLocalized(\"LA.systems.tooltip\")}\n                tooltipDirection={tooltipDirection || TooltipDirection.LEFT}\n                tooltipTheme={theme}\n                logText={getLocalized(\"LA.systems.tooltip\")}\n                logging={logging}\n\n                uuid={actor.uuid}\n                flowClass={FlowClass.RollHASE}\n                path={\"system.sys\"}\n\n                outerStyle={[\"-sys\"]}\n                innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                buttonStyle={[\"-widthfull -heightfull -positionabsolute\",\n                    qualityMode ? \"la-prmy-primary -glow-prmy-hover\" : \"\"]}\n                outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmaller\"]}\n                innerTextStyle={[\"-fontsize5 -lineheight13\",\n                    qualityMode ? \"-pulse-glow-prmy la-prmy-header\" : \"\"]}\n            />\n        </div>\n        <div class=\"la-flexrow -aligncenter\">\n            <div class=\"-eng -pointerdisable\">&nbsp;</div>\n            <HexButton\n                text={getLocalized(\"LA.engineering.short\")}\n                value={system.eng}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltip={getLocalized(\"LA.engineering.tooltip\")}\n                tooltipDirection={tooltipDirection || TooltipDirection.LEFT}\n                tooltipTheme={theme}\n                logText={getLocalized(\"LA.engineering.tooltip\")}\n                logging={logging}\n\n                uuid={actor.uuid}\n                flowClass={FlowClass.RollHASE}\n                path={\"system.eng\"}\n\n                outerStyle={[\"-eng\"]}\n                innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                buttonStyle={[\"-widthfull -heightfull -positionabsolute\",\n                    qualityMode ? \"la-prmy-primary -glow-prmy-hover\" : \"\"]}\n                outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmaller\"]}\n                innerTextStyle={[\"-fontsize5 -lineheight13\",\n                    qualityMode ? \"-pulse-glow-prmy la-prmy-header\" : \"\"]}\n            />\n        </div>\n    </div>\n</div>\n{/if}","import { Logger } from \"@/classes/Logger\";\nimport { MOUNT_FITTINGS, MOUNT_LOCALIZE_MAP } from \"@/scripts/constants\";\nimport { array_path_edit_changes, drilldownDocument, parse_control_val } from \"@/scripts/lancer/helpers/common\";\nimport type { EmbeddedRef } from \"@/types/lancer\";\n\n// Reimplementation of Lancer's mount change handler\nexport function handleMountChange(\n    currentMount: any,\n    mountPath: string,\n    selectionIndex: number,\n    bracing: boolean,\n    document: any,\n    callback?: (morph: string) => void\n)\n{\n    const mountTypes = Object.keys(MOUNT_FITTINGS);\n\n    // Construct new slots for selected mount\n    let newSlots: {\n        loadout: {\n            weapon_mounts: Array<{\n                slots: Array<{\n                    weapon: EmbeddedRef | null;\n                    mod: EmbeddedRef | null;\n                    size: string;\n                }>;\n                type: string;\n                bracing: boolean;\n            }>\n        }\n    } = {\n        loadout: {\n            weapon_mounts: [{\n                slots: [{\n                    weapon: null,\n                    mod: null,\n                    size: MOUNT_FITTINGS[\"Unknown\"][0]\n                }],\n                type: \"Unknown\",\n                bracing: false\n            }]\n        }\n    };\n\n    let newSlotFittings = MOUNT_FITTINGS[mountTypes[selectionIndex]];\n    for (let i = 0; i < newSlotFittings.length; i++)\n    {\n        if (currentMount.slots[i]?.weapon?.value)\n        {\n            newSlots.loadout.weapon_mounts[0].slots[i] = {\n                weapon: currentMount.slots[i].weapon?.value?.id ?? null,\n                mod: currentMount.slots[i].mod?.value?.id ?? null,\n                size: newSlotFittings[i],\n            };\n        }\n        else\n        {\n            newSlots.loadout.weapon_mounts[0].slots[i] = {\n                weapon: null,\n                mod: null,\n                size: newSlotFittings[i],\n            };\n        }\n    }\n    document.update({\n        [`${mountPath}.type`]: mountTypes[selectionIndex],\n        [`${mountPath}.bracing`]: bracing,\n        [`${mountPath}.slots`]: newSlots.loadout.weapon_mounts[0].slots,\n    });\n\n    callback?.(MOUNT_LOCALIZE_MAP[mountTypes[selectionIndex]]);\n}\n\n// Reimplementation of Lancer's `.gen-control` handler for deleting objects\nexport async function handleMountDelete(\n    button: HTMLButtonElement,\n    doc: any,\n    callback?: (button: JQuery<HTMLButtonElement>) => void\n)\n{\n    let raw_val = button.dataset.actionValue;\n\n    // @ts-ignore\n    let val: any = undefined;\n    if (raw_val)\n    {\n        let result = await parse_control_val(raw_val);\n        if (!result.success)\n        {\n            Logger.error(`bad data-action-value from gen control ${raw_val}`);\n            return; // Bad arg - no effect\n        }\n        else\n        {\n            val = result.val;\n        }\n    }\n\n    // Construct our ctx\n    let path = button.dataset.path!;\n    let docOverride: any | null = null;\n    let dd: ReturnType<typeof drilldownDocument>;\n    if (button.dataset.uuid)\n    {\n        docOverride = (await fromUuid(button.dataset.uuid)) as any;\n        if (!docOverride)\n        {\n            ui.notifications?.error(\"Bad uuid: \" + button.dataset.uuid);\n            return;\n        }\n        dd = drilldownDocument(docOverride, path);\n    }\n    else\n    {\n        dd = drilldownDocument(doc, path);\n    }\n\n    // Splice out the value at path dest, then writeback\n    let changes = array_path_edit_changes(dd.sub_doc, dd.sub_path, null, \"delete\");\n    await dd.sub_doc.update({ [changes.path]: changes.new_val });\n\n    callback?.($(button));\n}","<script lang=\"ts\">\n    import { MOUNT_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { handleMountChange } from \"@/scripts/mech/mount-helpers\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actorSheet,\n        mount,\n        mountIndex,\n        mountNames,\n    } = $props();\n\n    let bracing = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n\n    function swapMount(event: MouseEvent, mountIndex: number, morphIndex: number)\n    {\n        event.stopPropagation();\n        let mountPath = `system.loadout.weapon_mounts.${mountIndex}`;\n        handleMountChange(\n            mount, \n            mountPath, \n            morphIndex, \n            bracing, \n            actorSheet,\n            callback\n        );\n    }\n\n    function callback(localizationString: string)\n    {\n        mountNames[mountIndex] = localizationString;\n    }\n</script>\n\n<div class=\"la-bckg-primary -fontsize4 -upper -padding0\"\n>\n    {getLocalized(MOUNT_LOCALIZE_MAP[mount.type])}<i class=\"mdi mdi-arrow-down-right\"></i>\n</div>\n<div class=\"la-flexcol -widthfull -gap0 -padding0\">\n{#each Object.keys(MOUNT_LOCALIZE_MAP) as mountType, morphIndex}\n    <!-- (#5*) \n    * Normally (#2) would apply here, \n    but because we're not concerned with event bubbling issues \n    because of (#5), we use the non-depreciated way of applying \n    the event. If this is changed, the issue turns to (#2) -->\n    <button type=\"button\"\n        class=\"la-bckg-scrollbar-secondary la-text-header -fontsizemedium -letterspacing0 la-prmy-secondary la-scdy-accent -widthfull\n            {qualityMode ? '-glow-prmy-hover -glow-scdy-focus' : ''}\"\n        onclick={event => swapMount(event, mountIndex, morphIndex)}\n    >\n        {getLocalized(MOUNT_LOCALIZE_MAP[mountType])}\n    </button>\n{/each}\n    <div\n        class=\"la-flexrow\"\n    >\n        <input type=\"checkbox\" \n            bind:checked={bracing}\n        />\n        <span\n            class=\"-lineheight6\"\n        >\n            {getLocalized(\"LA.mech.mount.locked.subLabel\")}\n        </span>\n    </div>\n</div>","<script lang=\"ts\">\n    import { MOUNT_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { handleMountDelete } from \"@/scripts/mech/mount-helpers\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actorSheet,\n        mount,\n        mountIndex, // depends on mountIndices which changes, do not assume it's always the true index for path\n        mountIndices,\n    } = $props();\n\n    const qualityMode = getExtraEffectsEnabled();\n\n    function deleteMount(event: MouseEvent)\n    {\n        event.stopPropagation();\n        handleMountDelete(\n            event.currentTarget as HTMLButtonElement, \n            actorSheet,\n            callback\n        );\n    }\n\n    function callback(button: JQuery<HTMLButtonElement>)\n    {\n        // Deletion is handled by Lancer system, but buttons here are outside the sheet,\n        // so delete and shift `data-path` attributes down by 1\n        const parent = button.parent();\n        if (parent.length)\n        {\n            const buttons = parent.find('button');\n            const index = buttons.index(button);\n            for (let i = index; i < buttons.length; i++) \n            {\n                mountIndices[i] = mountIndices[i] - 1;   \n            }\n            button.css('display', 'none');\n        }\n    }\n</script>\n\n<!-- (#5*) -->\n<button type=\"button\"\n    class=\"la-bckg-scrollbar-secondary la-text-header -fontsizemedium -letterspacing0 la-prmy-secondary la-scdy-accent -widthfull\n        {qualityMode ? '-glow-prmy-hover -glow-scdy-focus' : ''}\n        gen-control\"\n    data-action={\"splice\"}\n    data-path={`system.loadout.weapon_mounts.${mountIndex}`}\n    onclick={event => deleteMount(event)}\n>\n    {getLocalized(MOUNT_LOCALIZE_MAP[mount.type])}\n    <i class=\"mdi mdi-close-circle-outline -positionabsolute -left2 -fontsize4\"></i>\n</button>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { SETTINGS_BUTTON_STYLE } from \"@/svelte/mech/settings/AdvancedSettings.svelte\";\n\n    const {\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme\n    }: TooltipProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const tip = TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.mount.add.tooltip\"));\n    function addMount(event: MouseEvent)\n    {\n        event.stopPropagation();\n        TooltipFactory.unrenderTooltips();\n    }\n</script>\n\n<button type=\"button\"\n    class=\"{SETTINGS_BUTTON_STYLE()}\n        gen-control\"\n    data-path={\"system.loadout.weapon_mounts\"}\n    data-action={\"append\"}\n    data-action-value=\"(struct)wep_mount\"\n    data-tooltip={tooltipEnabled ? tip : undefined}\n    data-tooltip-direction={TooltipDirection.RIGHT}\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n    onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.advanced.mount.add.tooltip\"), actorUuid!) }\n    onpointerleave={ event => resetTextConsole(event, actorUuid!) }\n    onclick={ event => addMount(event) }\n    aria-label={getLocalized(\"LA.advanced.mount.add.tooltip\")}\n>\n    <i class=\"mdi mdi-plus-box -verticalaligntop\"></i>\n</button>","<script lang=\"ts\">\n    import type { Snippet } from \"svelte\";\n    import { getActiveTab, getAdvancedState } from \"@/scripts/store/advanced\";\n    import { MOUNT_LOCALIZE_MAP } from \"@/scripts/constants\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import MountOptions from \"@/svelte/mech/settings/MountOptions.svelte\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/mech/settings/AdvancedSettings.svelte\";\n    import MountDelete from \"@/svelte/mech/settings/MountDelete.svelte\";\n    import MountAdd from \"@/svelte/mech/settings/MountAdd.svelte\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { ActiveTab } from \"@/enums/ActiveTab\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props: MechSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n    \n    let advancedOptions = $derived(getAdvancedState(actor.uuid));\n    let active = $derived(getActiveTab(actor.uuid, ActiveTab.Primary) || \"loadout\");// This is set to match the initial tab on the sheet setup\n    // svelte-ignore state_referenced_locally\n    let toggles = $state(new Array(system.loadout.weapon_mounts.length).fill(false));\n    // svelte-ignore state_referenced_locally\n    let tooltipElements = new Array(system.loadout.weapon_mounts.length).fill(null);\n    let removeToggle = $state(false);\n    let editToggle = $state(false);\n    let removeElement: HTMLElement | null = null;\n    let editElement: HTMLElement | null = null;\n    // (#8*) This looks redundant but it's necessary since tooltips aren't updated when the actor sheet does a rerender\n    // svelte-ignore state_referenced_locally\n    let mountNames = $state(system.loadout.weapon_mounts.map((mount: any) => MOUNT_LOCALIZE_MAP[mount.type] || \"\"));\n    // (#8*)\n    // svelte-ignore state_referenced_locally\n    let mountIndices = $state(system.loadout.weapon_mounts.map((_mount: any, index: number) => index));\n\n    const weaponMounts = $derived(system.loadout.weapon_mounts);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const removeTip = TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.mount.remove.tooltip\"));\n    const editTip = TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.mount.edit.tooltip\"));\n\n    // (#8) When the user modifies the mounts, the sheet is rerendered, so \n    // these tooltips lose their event handlers. A possible solution could \n    // be to close the tooltip on rerender/use, but that feels bad UX-wise \n\n    function handleSelection(event: MouseEvent, snippet: Snippet, index: number)\n    {\n        event.stopPropagation();\n\n        function clearOtherToggles() \n        {\n            toggles.forEach((toggle, jndex) => {\n                if (toggle && jndex !== index) \n                {\n                    TooltipFactory.unrenderTooltip(tooltipElements[jndex]);\n                    tooltipElements[jndex] = null;\n                    toggles[jndex] = false;\n                }\n            });\n        }\n        function clearToggles() \n        {\n            TooltipFactory.unrenderTooltip(tooltipElements[index]);\n            tooltipElements[index] = null;\n        }\n\n        clearOtherToggles()\n        if (toggles[index])\n        {\n            clearToggles()\n        }\n        else\n        {\n            tooltipElements[index] = TooltipFactory.renderTooltipSvelte(\n                event, \n                { content: snippet },\n                {\n                    direction: TooltipDirection.UP, \n                    cssClass: `la-tooltip -widthfull ${theme}`,\n                    locked: true,\n                }\n            )\n        }\n\n        toggles[index] = !toggles[index];\n    }\n\n    function handleRemove(event: MouseEvent, snippet: Snippet) \n    {\n        handleToggle(event, snippet, 'remove');\n    }\n\n    function handleEdit(event: MouseEvent, snippet: Snippet) \n    {\n        handleToggle(event, snippet, 'edit');\n    }\n\n    function handleToggle(event: MouseEvent, snippet: Snippet, type: 'remove' | 'edit' | 'select') \n    {\n        event.stopPropagation();\n\n        function clearOtherToggles() \n        {\n            toggles.forEach((toggle, index) => {\n                if (toggle) \n                {\n                    TooltipFactory.unrenderTooltip(tooltipElements[index]);\n                    tooltipElements[index] = null;\n                    toggles[index] = false;\n                }\n            });\n            TooltipFactory.unrenderTooltip(removeElement);\n            removeElement = null;\n            removeToggle = false;\n            TooltipFactory.unrenderTooltip(editElement);\n            editElement = null;\n            editToggle = false;\n        }\n\n        function clearToggles() \n        {\n            if (type === 'remove') \n            {\n                TooltipFactory.unrenderTooltip(removeElement);\n                removeElement = null;\n            }\n            else \n            {\n                toggles.forEach((toggle, index) => {\n                    if (toggle) \n                    {\n                        TooltipFactory.unrenderTooltip(tooltipElements[index]);\n                        tooltipElements[index] = null;\n                        toggles[index] = false;\n                    }\n                });\n                TooltipFactory.unrenderTooltip(editElement);\n                editElement = null;\n            }\n        }\n\n        clearOtherToggles();\n        if ((type === 'remove' && removeToggle) || \n            (type === 'edit' && editToggle)) \n        {\n            clearToggles();\n        }\n        else \n        {\n            const element = TooltipFactory.renderTooltipSvelte(\n                event,\n                {\n                    content: snippet,\n                    unrenderCallback: clearToggles,\n                },\n                {\n                    direction: TooltipDirection.RIGHT,\n                    cssClass: `la-tooltip -widthfull ${theme}`,\n                    locked: true,\n                }\n            );\n            if (type === 'remove') \n                removeElement = element;\n            else \n                editElement = element;\n        }\n\n        if (type === 'remove') \n            removeToggle = !removeToggle;\n        else \n            editToggle = !editToggle;\n    }\n</script>\n\n<!-- Remove mount snippet -->\n{#snippet removeMount()}\n    <div class=\"la-bckg-primary -fontsize4 -upper -padding0\">\n        {getLocalized(\"LA.advanced.mount.remove.label\")}<i class=\"mdi mdi-arrow-down-right\"></i>\n    </div>\n    <div class=\"la-flexcol -widthfull -heightfull -gap0 -padding0\">\n    {#each weaponMounts as mount, index}\n        <MountDelete\n            actorSheet={document._sheet.actor}\n            mount={mount}\n            mountIndex={mountIndices[index]}\n            mountIndices={mountIndices}\n        />\n    {/each}\n    </div>\n{/snippet}\n\n<!-- Edit mount snippet -->\n{#snippet editMount()}\n    <div class=\"la-bckg-primary -fontsize4 -upper -padding0\">\n        {getLocalized(\"LA.advanced.mount.edit.label\")}<i class=\"mdi mdi-arrow-down-right\"></i>\n    </div>\n    <div class=\"la-flexcol -widthfull -heightfull -gap0 -padding0\">\n    {#each weaponMounts as mount, index}\n        {#snippet dropdownContent()}\n            <MountOptions\n                actorSheet={document._sheet.actor}\n                mount={mount}\n                mountIndex={index}\n                mountNames={mountNames}\n            />\n        {/snippet}\n\n        <!-- (#5*) -->\n        <button type=\"button\"\n            class=\"la-bckg-scrollbar-secondary la-text-header -fontsizemedium -letterspacing0 la-prmy-secondary la-scdy-accent -widthfull\n                {qualityMode ? '-glow-prmy-hover -glow-scdy-focus' : ''}\"\n            onclick={(event) => handleSelection(event, dropdownContent, index)}\n        >\n            {getLocalized(mountNames[index])}\n            <!-- {getLocalized(MOUNT_LOCALIZE_MAP[mount.type])} -->\n        {#if toggles[index]}\n            <i class=\"mdi mdi-arrow-up-drop-circle-outline -positionabsolute -left2 -fontsize4\"></i>\n        {:else}\n            <i class=\"mdi mdi-arrow-right-drop-circle-outline -positionabsolute -left2 -fontsize4\"></i>\n        {/if}\n        </button>\n    {/each}\n    </div>\n{/snippet}\n\n<!-- Component -->\n<div class=\"-heightfull\n    {advancedOptions && active === 'loadout' ? 'la-flexrow' : '-displaynone'}\"\n>    \n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend\">\n        {getLocalized(\"LA.advanced.mount.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding0-b -heightfull\">\n        <MountAdd\n            tooltipEnabled={getMechSheetTooltipEnabled()}\n            tooltipTheme={theme}\n        />\n        <button type=\"button\" \n            class=\"{SETTINGS_BUTTON_STYLE()}\"\n            data-tooltip={tooltipEnabled ? removeTip : undefined}\n            data-tooltip-direction={TooltipDirection.RIGHT}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.advanced.mount.remove.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n            onclick={event => handleRemove(event, removeMount)}\n            aria-label={getLocalized(\"LA.advanced.mount.remove.tooltip\")}\n        >\n            <i class=\"mdi mdi-minus-box -verticalaligntop\"></i>\n        </button>\n        <!-- (#5*) -->\n        <!-- svelte-ignore event_directive_deprecated -->\n        <button type=\"button\" \n            class={SETTINGS_BUTTON_STYLE()}\n            data-tooltip={tooltipEnabled ? editTip : undefined}\n            data-tooltip-direction={TooltipDirection.RIGHT}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.advanced.mount.edit.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n            onclick={event => handleEdit(event, editMount)}\n            aria-label={getLocalized(\"LA.advanced.mount.edit.tooltip\")}\n        >\n            <i class=\"mdi mdi-list-box -verticalaligntop\"></i>\n        </button>\n    </div>\n</div>","<script lang=\"ts\">\n    import { ActiveTab } from \"@/enums/ActiveTab\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getActiveTab, getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getMechSheetTooltipEnabled } from \"@/scripts/mech/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    // import InventoryButton from \"@/svelte/shared/button/InventoryButton.svelte\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/mech/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    \n    const props: MechSheetProps = $props();\n    const {\n        actor,\n    } = $derived(props);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const active = $derived(getActiveTab(actor.uuid, ActiveTab.Primary) || \"loadout\");// This is set to match the initial tab on the sheet setup\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions && active === 'loadout' ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend\">\n        {getLocalized(\"LA.advanced.inventory.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding0-b -heightfull\">\n        <!-- This div is what actually triggers the inventory event from the Lancer system -->\n        <div class=\"inventory\">\n            <GlyphButton\n                style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-archive -widthfull -heightfull\"]}\n                \n                flowClass={FlowClass.Inventory}\n                \n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.advanced.inventory.open.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n                logging={true}\n            ></GlyphButton>\n        </div>\n    </div>\n</div>","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import MountSettings from \"@/svelte/mech/settings/MountSettings.svelte\";\n    import InventorySettings from \"@/svelte/mech/settings/InventorySettings.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props: MechSheetProps = $props();\n    const {\n    } = $derived(props);\n    setActorContext(props.actor);\n</script>\n<script lang=\"ts\" module>\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { logographicLanguage } from \"@/scripts/helpers\";\n\n    export const SETTINGS_BUTTON_STYLE = () => \" la-text-secondary la-prmy-primary -fontsize5 -height4 \" + (getExtraEffectsEnabled() ? \"-glow-prmy-hover \" : \" \");\n    export const SETTINGS_HEADER_STYLE = () => \" la-bckg-primary la-text-header clipped-top -width7 -padding0-b -padding1-t -fontface-stylized \" + (logographicLanguage() ? \"-fontsizemedium -padding0-lr\" : \"-fontsizemediumer -writingmode-v\");\n</script>\n\n<InventorySettings\n    {...props}\n/>\n<MountSettings\n    {...props}\n/>\n","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { SidebarRatioSliderProps } from \"@/interfaces/actor/button/SidebarRatioSliderProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props = $props();\n    const { \n        uuid,\n        ratioGetter,\n        ratioSetter,\n        \n        style,\n\n        tooltipEnabled,\n        tooltipClass,\n        tooltipTheme,\n\n        logText,\n        logging,\n    }: SidebarRatioSliderProps & TooltipProps & TextLogEventProps = $derived(props)\n    const actorUuid = getActorContext()?.uuid;\n\n    // svelte-ignore state_referenced_locally\n    let ratio = $state(ratioGetter(uuid));\n    let component: HTMLElement | null = $state(null);\n    let sidebar: JQuery<HTMLElement> | null = null;\n\n    const qualityMode = getExtraEffectsEnabled();\n    const advancedOptions = $derived(getAdvancedState(uuid));\n    const log = $derived(logText || getLocalized(\"LA.advanced.sidebarRatio.tooltip\"));\n\n    const tip = TooltipFactory.buildTooltip(getLocalized(\"LA.advanced.sidebarRatio.tooltip\"));\n\n    // Force the sidebar to update its flex value based on the changes we make to ratio\n    onMount(() => \n    {\n        if (component)\n        {\n            sidebar = jQuery(component).closest('.la-root').find('.la-sidebar');\n        }\n    });\n\n    function handleOnInput(event: Event)\n    {\n        const target = event.target as HTMLInputElement;\n        const value = parseFloat(target.value);\n        ratio = value;\n        if (sidebar)\n            sidebar.css('flex', value.toString());\n    }\n\n    function handleOnRelease(event: Event)\n    {\n        const target = event.target as HTMLInputElement;\n        const value = parseFloat(target.value);\n        ratio = value;\n        ratioSetter(uuid, value);\n    }\n    \n</script>\n<!-- Ratio Slider -->\n<div class=\"la-range {style?.join(' ')}\n        {advancedOptions ? '-displayblock' : '-displaynone'}\"\n    bind:this={component}\n>\n    <input type=\"range\"\n        class=\"la-prmy-primary\n            {qualityMode ? '-glow-prmy-hover' : ''}\"\n        min={0.5}\n        max={2}\n        value={ratio}\n        step={0.1}\n        data-tooltip={tooltipEnabled ? tip : undefined }\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={TooltipDirection.UP}\n        oninput={event => handleOnInput(event)}\n        onpointerup={event => handleOnRelease(event)}\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        aria-label={getLocalized(\"LA.advanced.sidebarRatio.tooltip\")}\n    />\n</div>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme, getCSSSystemTheme, getThemeName, convertToCSSTheme } from \"@/scripts/theme\";\n    import { ThemeKey } from \"@/enums/ThemeKey\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { ThemeOverrideButtonProps } from \"@/interfaces/actor/button/ThemeOverrideButtonProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { IconButtonProps } from \"@/interfaces/actor/button/IconButtonProps\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n\n    const {\n        uuid,\n        disabled,\n        setOverride,\n        style,\n        iconStyle,\n\n        tooltipEnabled,\n        tooltip,\n        tooltipHeader,\n        tooltipClass,\n        tooltipDirection,\n        \n        logText,\n        logging,\n    }: ThemeOverrideButtonProps & IconButtonProps & TooltipProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n    let toggle = $state(false);\n    let optionElement: HTMLElement | null = null;\n\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.advanced.themeOverride.tooltip\"), tooltipHeader));\n    const log = $derived(logText || getLocalized(\"LA.advanced.themeOverride.tooltip\"));\n    const theme = $derived(getCSSDocumentTheme(uuid));\n    \n    function handleOnClick(event: MouseEvent & { currentTarget: EventTarget & HTMLElement })\n    {\n        event.stopPropagation();\n        if (toggle)\n        {\n            TooltipFactory.unrenderTooltip(optionElement);\n            optionElement = null;\n        }\n        else\n        {\n            optionElement = TooltipFactory.renderTooltipSvelte(\n                event,\n                {\n                    content: themeOverride,\n                    unrenderCallback: () => { toggle = false; },\n                },\n                {\n                    direction: TooltipDirection.DOWN,\n                    cssClass: `la-tooltip -widthfull ${theme}`,\n                    locked: true,\n                }\n            );\n        }\n\n        toggle = !toggle;\n    }\n\n    function handleThemeOverride(event: MouseEvent, theme: string)\n    {\n        event.stopPropagation();\n        const selectedTheme = theme === \"default\" ? \"\" : theme;\n        if (optionElement)\n        {\n            optionElement.classList.remove(getCSSDocumentTheme(uuid));\n            if (selectedTheme)\n                optionElement.classList.add(convertToCSSTheme(selectedTheme));\n            else\n                optionElement.classList.add(getCSSSystemTheme());\n        }\n\n        setOverride(uuid, selectedTheme);\n    }\n</script>\n\n{#snippet themeOverride()}\n    <div class=\"la-bckg-primary -fontsize4 -upper -padding0\">\n        {getLocalized(\"LA.advanced.themeOverride.tooltip\")}<i class=\"mdi mdi-arrow-down-right\"></i>\n    </div>\n    <div class=\"la-flexcol -widthfull -gap0 -padding0\">\n    {#each Object.values(ThemeKey) as theme}\n        <button type=\"button\"\n            class=\"la-bckg-scrollbar-secondary la-text-header -fontsizemedium -letterspacing0 la-prmy-secondary -glow-prmy-hover -widthfull\"\n            onclick={event => handleThemeOverride(event, theme)}\n        >\n            {getThemeName(theme)}\n        </button>\n    {/each}\n        <button type=\"button\"\n            class=\"la-bckg-scrollbar-secondary la-text-header -fontsizemedium -letterspacing0 la-prmy-secondary -glow-prmy-hover la-scdy-accent -glow-scdy-focus -widthfull\"\n            onclick={event => handleThemeOverride(event, \"default\")}\n        >\n            {getLocalized(\"LA.advanced.theme.default.label\")}\n        </button>\n    </div>\n{/snippet}\n\n{#if !disabled}\n<button type=\"button\"\n    class=\"{style?.join(' ')} la-prmy-primary -glow-prmy-hover\"\n    data-tooltip={tooltipEnabled ? tip : undefined }\n    data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${theme}`}\n    data-tooltip-direction={tooltipDirection || TooltipDirection.UP}\n    onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n    onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n    onclick={event => handleOnClick(event)}\n    aria-label={getLocalized(\"LA.advanced.themeOverride.tooltip\")}\n>\n    <i class=\"mdi mdi-notebook-edit {iconStyle?.join(' ') || 'la-text-header -fontsize5'}\"></i>\n</button>\n{/if}","<script lang=\"ts\">\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getMechSheetTooltipEnabled, getSidebarRatio, setSidebarRatio, setThemeOverride } from \"@/scripts/mech/settings\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import SidebarRatioSlider from \"@/svelte/shared/input/SidebarRatioSlider.svelte\";\n    import ThemeOverrideButton from \"@/svelte/shared/button/ThemeOverrideButton.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n    }: MechSheetProps = $derived(props)\n    setActorContext(actor);\n\n    const tooltipEnabled = getMechSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<SidebarRatioSlider\n    uuid={actor.uuid}\n    ratioGetter={getSidebarRatio}\n    ratioSetter={setSidebarRatio}\n    style={[\"-aligncontentcenter\"]}\n    \n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={true}\n/>\n\n<ThemeOverrideButton\n    disabled={!advancedOptions}\n    uuid={actor.uuid}\n    style={[\"-alignselfstart\"]}\n    \n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    setOverride={setThemeOverride}\n\n    logging={true}\n/>","<script lang=\"ts\">\n    import { ActionLogCollapsePrefix } from \"@/enums/ActionLogCollapsePrefix\";\n    import type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\n    import { getMechSheetLogActionDontSaveCollapse, getMechSheetLogActionStartCollapsed } from \"@/scripts/mech/settings\";\n    import ActionLog from \"@/svelte/shared/ActionLog.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor\n    }: MechSheetProps = $derived(props);\n    setActorContext(actor);\n    const actionLogSaveCollapse = getMechSheetLogActionDontSaveCollapse();\n    const actionLogStartCollapsed = getMechSheetLogActionStartCollapsed();\n</script>\n\n<div class=\"-margin7-t\">\n    <ActionLog\n        uuid={actor.uuid}\n        dontSaveCollapse={actionLogSaveCollapse}\n        startCollapsed={actionLogStartCollapsed}\n        collapsePrefix={ActionLogCollapsePrefix.MechSheet}\n    />\n</div>","import { mount } from \"svelte\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\nimport { applyThemeTo, getCSSSystemTheme } from \"@/scripts/theme\";\nimport { getSelectedTokenImage, setActiveTab, setSelectedTokenImage } from \"@/scripts/store/advanced\";\nimport { dataMap, getLocalized, isValidImageContainer } from \"@/scripts/helpers\";\nimport { getActorTokenSync, getMechSheetTooltipEnabled, getThemeOverride } from \"@/scripts/mech/settings\";\nimport { unregisterTrackedHooks } from \"@/scripts/store/hooks\";\nimport { setIntroRun } from \"@/scripts/store/text-log\";\nimport { getThemeKey, setThemeKey } from \"@/scripts/store/theme\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { ActiveTab } from \"@/enums/ActiveTab\";\nimport type { MechSheetProps } from \"@/interfaces/mech/MechSheetProps\";\nimport Header from \"@/svelte/mech/Header.svelte\";\nimport Sidebar from \"@/svelte/mech/Sidebar.svelte\";\nimport Status from \"@/svelte/mech/Status.svelte\";\nimport Loadout from \"@/svelte/mech/Loadout.svelte\";\nimport Custom from \"@/svelte/mech/Custom.svelte\";\nimport CustomToggle from \"@/svelte/mech/CustomToggle.svelte\";\nimport HaseDisplay from \"@/svelte/shared/HaseArray.svelte\";\nimport AdvancedSettings from \"@/svelte/mech/settings/AdvancedSettings.svelte\";\nimport AdvancedSettingsNav from \"@/svelte/mech/settings/AdvancedSettingsNav.svelte\";\nimport Activity from \"@/svelte/mech/Activity.svelte\";\n\nexport class MechSheetBase\n{\n    static get mergeOptions()\n    {\n        return {\n            classes: [\n                \"la-common la-override__header clipped-alt\",\n                \"lancer sheet actor mech\", getCSSSystemTheme()\n            ],\n            template: TEMPLATE_PATHS.mechSheetSvelte,\n            width: 900,\n            height: 800,\n            tabs: [\n                {\n                    navSelector: \".la-tabs\",\n                    contentSelector: \".la-content\",\n                    initial: \"loadout\"\n                },\n                {\n                    navSelector: \".la-tabs-secondary\",\n                    contentSelector: \".la-content-secondary\",\n                    initial: \"statistics\"\n                }\n            ],\n            scrollY: [\".la-status\", \".la-loadout\", \".la-custom\", \".la-sidebar__statistics\", \".la-sidebar__activity\"],\n        }\n    }\n\n    static setupSheet()\n    {\n        // Unfortunately, since we are mounting from a Foundry class, and more specifically,\n        // from Lancer's extension of a ActorSheet, we have to essentially run setup 'twice'\n        //\n        // Hopefully since the 'first time' should end in an early leaf node, it won't be too bad\n        const LAMechSheet = class extends ((game.lancer.applications as any).LancerMechSheet as typeof foundry.appv1.sheets.ActorSheet)\n        {\n            constructor(...args: [any])\n            {\n                super(...args);\n\n                Hooks.on(\"laOverrideTheme\", (uuid: string, theme: string) =>\n                {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    \n                    setThemeKey(this.actor.uuid!, theme);\n                    this.render();\n                })\n\n                // (#6)\n                Hooks.on(\"laForceRerender\", (uuid: string, callback?: () => void) => {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    this.render();\n                    if (callback)\n                        callback();\n                });\n                \n                Hooks.on(\"updateActor\", (document: any, changes: any) => {\n                    if (document.uuid === this.actor.uuid! && \n                        changes.prototypeToken?.texture?.src && \n                        getActorTokenSync(this.actor.uuid!) // Actor-token image sync enabled\n                    )\n                    {\n                        setSelectedTokenImage(this.actor.uuid!, changes.prototypeToken.texture.src);\n                        if (isValidImageContainer(changes.prototypeToken.texture.src))\n                            this.actor.update({\"img\": changes.prototypeToken.texture.src});\n                    }\n                });\n\n                // TODO: Write a PR. Until a Lancer settings/theme hook is available, \n                // this blasts on every single time the settings close\n                Hooks.on(\"closeSettingsConfig\", () =>\n                {\n                    this.render();\n                    setIntroRun(this.actor.uuid!, false);\n                });\n            }\n\n            static override get defaultOptions()\n            {\n                return foundry.utils.mergeObject(super.defaultOptions, MechSheetBase.mergeOptions);\n            }\n\n            override activateListeners(html: JQuery<HTMLElement>)\n            {\n                super.activateListeners(html);\n\n                this.applyTabListener(html);\n            }\n\n            override async getData(): Promise<MechSheetProps>\n            {\n                let data = await super.getData() as any;\n                return data as MechSheetProps;\n            }\n\n            \n            /** (#10) - As of V12, there's a section of code in the Lancer system that bugs out actor/token image assignment in the AppV1 LancerActorSheet\n             * ...\n             * // Update token image if it matches the old actor image - keep in sync\n             * if (this.actor.img === token.texture.src && this.actor.img !== formData[\"img\"]) {\n             *   formData[\"prototypeToken.texture.src\"] = formData[\"img\"];\n             * }\n             * ...\n             * \n             * We need to ensure prototypeToken.texture.src exists to be set by Foundry\n             */\n            // @ts-expect-error We're overriding a function in LancerActorSheet\n            override _propagateData(formData: any)\n            {\n                // @ts-expect-error We're overriding a function in LancerActorSheet\n                super._propagateData(formData);\n                \n                delete formData[\"prototypeToken.texture.src\"]; // GO AWAY MYSTERY MAN AAAAAAA\n                const updateToken = getSelectedTokenImage(this.actor.uuid!); // (#12)\n                if (updateToken)\n                {\n                    formData[\"prototypeToken.texture.src\"] = updateToken;\n                }\n            }\n\n            override async _injectHTML(html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._injectHTML(html);\n\n                setThemeKey(this.actor.uuid!, getThemeOverride(this.actor.uuid!));\n                applyThemeTo(this.element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n            }\n\n            override async _replaceHTML(element: JQuery<HTMLElement>, html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._replaceHTML(element, html);\n                applyThemeTo(element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n                \n                // Saving and restoring scroll positions calls before rerender, so \n                // restore the scroll positions after the rerender\n                this._restoreScrollPositions(html);\n            }\n\n            mountComponents(html: JQuery<HTMLElement>, data: any)\n            {\n                unregisterTrackedHooks(this.actor.uuid!); // Untrack all hooks that were registered from Svelte components\n                mount(Header, {\n                    target: html.find(\".la-SVELTE-HEADER\")[0],\n                    props: data,\n                });\n                mount(AdvancedSettingsNav, {\n                    target: html.find(\".la-SVELTE-ADVANCEDNAV\")[0],\n                    props: data,\n                });\n                mount(Sidebar, {\n                    target: html.find(\".la-SVELTE-SIDEBARSTATISTICS\")[0],\n                    props: data,\n                });\n                mount(Activity, {\n                    target: html.find(\".la-SVELTE-SIDEBARACTIVITY\")[0],\n                    props: data,\n                })\n                mount(Status, {\n                    target: html.find(\".la-SVELTE-STATUS\")[0],\n                    props: data,\n                });\n                mount(AdvancedSettings, {\n                    target: html.find(\".la-SVELTE-ADVANCED\")[0],\n                    props: data,\n                });\n                mount(Loadout, {\n                    target: html.find(\".la-SVELTE-LOADOUT\")[0],\n                    props: data,\n                });\n                mount(Custom, {\n                    target: html.find(\".la-SVELTE-CUSTOM\")[0],\n                    props: data,\n                });\n                mount(CustomToggle, { // (#14)\n                    target: html.find(\".la-tabs\")[0],\n                    props: {\n                        actor: data.actor,\n                        button: html.find('.la-tabs>[data-tab=\"custom\"]')[0],\n                    },\n                });\n                mount(HaseDisplay, {\n                    target: html.find(\".la-SVELTE-HASE\")[0],\n                    props: {\n                        pilot: data.pilot,\n                        actor: data.actor,\n                        system: data.system,\n                        tooltipEnabled: getMechSheetTooltipEnabled(),\n                        logging: true,\n                    },\n                });\n            }\n\n            applyTabListener(html: JQuery<HTMLElement>)\n            {\n                html.find('.la-nav__island>.la-tabs>.la-tab').each((_, button) =>\n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Primary, tab);\n                    });\n                });\n\n                html.find('.la-nav-secondary__island>.la-tabs-secondary>.la-tab').each((_, button) => \n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Secondary, tab);\n                    });\n                });\n            }\n        }\n\n        foundry.documents.collections.Actors.registerSheet(LancerAlternative.Name, LAMechSheet, {\n            types: [\"mech\"] as any[], // Lancer system actor subtype (registered by the system at runtime)\n            label: getLocalized(\"LA.SHEET.mech.label\"),\n            makeDefault: false\n        });\n    }\n}","<!-- @component\nSpecial implementation of the `CounterBox` component for npc features that can be recharged\n-->\n<script lang=\"ts\">\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import type { PointerClickProps } from \"@/interfaces/actor/events/PointerClickProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import type { ChargedBoxProps } from \"@/interfaces/npc/ChargedBoxProps\";\n    import { getLocalized, isRecharge } from \"@/scripts/helpers\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n\n    const {\n        item,\n        path,\n        style,\n        \n        logText,\n        logging,\n\n        onPointerClick,\n    }: ChargedBoxProps & TextLogEventProps & PointerClickProps = $props();\n    \n    const charged = $derived(item.system.charged);\n    const log = $derived(logText || getLocalized(\"LA.npc.charged.tooltip\"));\n</script>\n\n{#if isRecharge(item)}\n<CounterBox\n    text={getLocalized(\"LA.npc.charged.label\")}\n    \n    type={CounterBoxType.Charged}\n    usesValue={charged ? 1 : 0}\n    usesMax={1}\n    path={path}\n    style={style}\n\n    logText={log}\n    logging={logging}\n\n    onPointerClick={onPointerClick}\n/>\n{/if}","<script lang=\"ts\">\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import {formatString, getLocalized, isLoading, isRecharge, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { CHAT_CARD_COLOR_MAP } from \"@/scripts/constants\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n\n    import HeaderTertiary, { H3_HEADER_STYLE, H3_ICON_SIZE } from \"@/svelte/shared/header/HeaderTertiary.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import DamageButton from \"@/svelte/shared/button/DamageButton.svelte\";\n    import AttackButton from \"@/svelte/shared/button/AttackButton.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import ChargedBox from \"@/svelte/npc/ChargedBox.svelte\";\n    import { H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    type WeaponItemProps = {\n        actor: any;\n        tier: number;\n        weapon: any;\n        index: number;\n    };\n\n    const {\n        actor,\n        tier,\n        weapon,\n        index,\n    }: WeaponItemProps = $props();\n    let attackButtonHover = $state(false);\n    let damageButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let editButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const accuracyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.accuracy.tooltip\"));\n    const attackTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.attackBonus.tooltip\"));\n\n    function renderOuter(item: any)\n    {\n        return !isDestroyed(item) && (isRecharge(item) || item.system.uses.max || isLoading(item) || hasAccuracyBonus(item) || hasAttackBonus(item));\n    }\n\n    function hasAccuracyBonus(item: any)\n    {\n        return item.system.accuracy.some((accuracy: number) => accuracy !== 0);\n    }\n\n    function hasAttackBonus(item: any)\n    {\n        return item.system.attack_bonus.some((bonus: number) => bonus !== 0);\n    }\n\n    function isDestroyed(item: any)\n    {\n        return item.system.destroyed;\n    }\n\n    function getTitleStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? \"la-text-repcap -strikethrough\"\n            : \"la-text-header\";\n    }\n\n    function getSubtitleStyle(item:any)\n    {\n        return isDestroyed(item)\n            ? `la-text-error la-prmy-error ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? \"la-text-repcap\"\n            : \"la-text-header la-prmy-header la-scdy-primary \" + (qualityMode ? \"-glow-prmy -glow-scdy-hover \" : \" \");\n    }\n\n    function getRollWeaponTip(item: any)\n    {\n        return formatString(\n            getLocalized(\"LA.flow.rollAttack.template.tooltip\"), \n            item.name);\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && item)\n        {\n            let accuracy = \"\";\n            if (item.system.accuracy[tier - 1] > 0)\n                accuracy = `<div class=\"la-flexrow\">${item.system.accuracy[tier - 1]}<i class=\"cci cci-accuracy -fontsize6\"></i></div>`\n            let attackBonus = \"\";\n            if (item.system.attack_bonus[tier - 1] > 0)\n                attackBonus = `<div class=\"la-flexrow\" style=\"align-items: anchor-center;\">${item.system.attack_bonus[tier - 1]}<i class=\"cci cci-reticule -fontsize4 -padding0\"></i></div>`\n            let range = \"\";\n            item.system.range.map((rng: any) => {\n                range += `<div class=\"la-flexrow\">${rng.val}<i class=\"cci cci-${rng.type.toLowerCase()} -fontsize6\"></i></div>`\n            });\n            let damage = \"\";\n            item.system.damage[tier - 1].map((dmg: any) => {\n                damage += `<div class=\"la-flexrow\">${dmg.val}<i class=\"cci cci-${dmg.type.toLowerCase()} -fontsize6\"></i></div>`;\n            });\n            const description = `\n                <div \n                    class=\"la-flexrow -justifyevenly clipped-alt -fontsize5 -padding0-tb -padding1-lr\"\n                    style=\"\n                        background-color: var(--weapon-color);\n                        color: var(--light-text);\n                        align-items: baseline;\n                    \"\n                >\n                    ${accuracy}\n                    ${attackBonus}\n                    ${range}\n                    ${damage}\n                </div>\n            `;\n            let chatData = {\n                title: item.name, \n                description: (accuracy || attackBonus || range || damage) ? description : '',\n                trigger: item.system.trigger,\n                effect: item.system.effect,\n                onHit: item.system.on_hit,\n                tags: item.system.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Weapon],\n            } as ChatData;\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#snippet outerContent()}\n    <div class=\"-widthfull -padding2-l\">\n        <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -fontface-stylized\">\n        {#if hasAccuracyBonus(weapon)}\n            <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr\"\n                data-tooltip={tooltipEnabled ? accuracyTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.DOWN}\n            >\n                {weapon.system.accuracy[tier - 1]}\n                <i class=\"cci cci-accuracy -fontsize6\"></i>\n            </span>\n        {/if}\n        {#if hasAttackBonus(weapon)}\n            <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr\"\n                data-tooltip={tooltipEnabled ? attackTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.DOWN}\n            >\n                {weapon.system.attack_bonus[tier - 1]}\n                <i class=\"cci cci-reticule -fontsize4\"></i>\n            </span>\n        {/if}\n            <!-- Rechargeable -->\n            <ChargedBox\n                item={weapon}\n                path={`itemTypes.npc_feature.${weapon.index}.system.charged`}\n            />\n            <!-- Loading -->\n            <LoadedBox\n                item={weapon}\n                path={`itemTypes.npc_feature.${weapon.index}.system.loaded`}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={weapon.system.uses.value}\n                usesMax={weapon.system.uses.max}\n                path={`itemTypes.npc_feature.${weapon.index}.system.uses`}\n            />\n        </div>\n    </div>\n{/snippet}\n{#snippet headerTertiaryLeftOptions()}\n    <AttackButton\n        iconStyle={[H3_ICON_SIZE, getIconStyle(weapon), \"cci cci-weapon\"]}\n        iconBackgroundStyle={[\n            \"la-prmy-secondary\", \n            H3_ICON_SIZE, \n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n        ]}\n\n        flowClass={FlowClass.RollAttack}\n        path={`system.loadout.weapon_mounts.${index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        tooltip={ weapon.system.effect\n            ? `${getRollWeaponTip(weapon)}<br><br>${weapon.system.effect}` \n            : getRollWeaponTip(weapon)}\n\n        disabled={isDestroyed(weapon)}\n\n        onPointerEnter={() => {attackButtonHover = true;}}\n        onPointerLeave={() => {attackButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerTertiaryRightOptions()}\n    <DamageButton\n        iconStyle={isDestroyed(weapon) ? [\"la-text-repcap\"] : undefined }\n        iconBackgroundStyle={[\n            \"-fontsize9 la-prmy-secondary\",\n            qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n        ]}\n        \n        flowClass={FlowClass.RollDamage}\n        range={weapon.system.range}\n        damage={weapon.system.damage[tier - 1]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n\n        disabled={isDestroyed(weapon)}\n\n        onPointerEnter={() => {damageButtonHover = true;}}\n        onPointerLeave={() => {damageButtonHover = false;}}\n    />\n    <div class=\"la-flexcol -margin3-lr\">\n        <!-- Send to Chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE()]}\n            flowClass={FlowClass.None}\n            uuid={weapon.uuid}\n            index={weapon.index}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n\n            onClick={event => sendToChat(event, weapon)}\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={`itemTypes.npc_feature.${weapon.index}`}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n    </div>\n{/snippet}\n<HeaderTertiary\n    itemID={weapon.id}\n    uuid={weapon.uuid}\n    path={`itemTypes.npc_feature.${weapon.index}`}\n    acceptTypes={\"npc_feature\"}\n    collapseID={weapon.uuid}\n    startCollapsed={true}\n\n    text={weapon.name}\n    headerStyle={[H3_HEADER_STYLE, \"la-bckg-pilot\"]}\n    headerFontStyle={[H2_TEXT_SIZE, getTitleStyle(weapon), \"-fontface-stylized\"]}\n\n    subText={isDestroyed(weapon) ? getLocalized(\"LA.mech.slot.destroyed.label\") : weapon.system.weapon_type}\n    subHeaderFontStyle={[getSubtitleStyle(weapon), \"-fontsizesmall -fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (attackButtonHover)\n            return `--${getLocalized(\"LA.flow.rollAttack.extension\")}`;\n        if (damageButtonHover)\n            return `--${getLocalized(\"LA.flow.rollDamage.extension\")}`;\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        return undefined;\n    }}\n\n    renderOutsideCollapse={renderOuter(weapon) ? outerContent : undefined }\n    contentLeft={headerTertiaryLeftOptions}\n    contentRight={headerTertiaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n            effect={weapon.system.effect}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <EffectBox\n            name={getLocalized(\"LA.effect.hit.label\")}\n            effect={weapon.system.on_hit}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <TagArray\n            tags={weapon.system.tags}\n            justify={\"end\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n</HeaderTertiary>","<script lang=\"ts\">\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import WeaponItem from \"@/svelte/npc/WeaponItem.svelte\";\n\n    const {\n        actor,\n        system,\n        weapons,\n    }: NPCSheetProps & {weapons : Array<any>} = $props();\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const tier = $derived(system.tier);\n    const collID = $derived(`${actor.uuid}.weapons`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if weapons.length}\n<HeaderMain\n    text={getLocalized(\"LA.weapons.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon -gap0\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each weapons as weapon, index}\n        <WeaponItem\n            actor={actor}\n            tier={tier}\n            weapon={weapon}\n            index={index}\n        ></WeaponItem>\n    {/each}\n    </div>\n</HeaderMain>\n{/if}","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import {getLocalized, isLoading, isRecharge, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import HeaderSecondary, { H2_HEADER_STYLE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import ChargedBox from \"@/svelte/npc/ChargedBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type SystemItemProps = {\n        actor: any;\n        system: any;\n        component: any;\n        pinned: boolean;\n    }\n\n    const {\n        actor,\n        system,\n        component,\n        pinned,\n    }: SystemItemProps = $props();\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let pinButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const tier = $derived(system.tier);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function renderOuter(item: any)\n    {\n        return !isDestroyed(item) && (isLoading(item) || isRecharge(item) || item.system.uses.max);\n    }\n\n    function hasAccuracyBonus(item: any)\n    {\n        return item.system.accuracy.some((accuracy: number) => accuracy !== 0);\n    }\n\n    function hasAttackBonus(item: any)\n    {\n        return item.system.attack_bonus.some((bonus: number) => bonus !== 0);\n    } \n\n    function isDestroyed(item: any)\n    {\n        return item.system.destroyed;\n    }\n\n    function getHeaderStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? `la-text-error la-prmy-error -strikethrough ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? \"la-text-repcap\"\n            : \"la-text-header\";\n    }\n\n    async function pinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried pinning an NPC system that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTraits || [];\n        const newPinned = Array.from(new Set([...currentPinned, item.system.lid]));\n        NPCStore.set(actor.uuid, { pinnedSystems: newPinned });\n    }\n\n    async function unpinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried unpinning an NPC system that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTraits || [];\n        const newPinned = currentPinned.filter((lid: string) => lid !== item.system.lid);\n        NPCStore.set(actor.uuid, { pinnedSystems: newPinned });\n    }\n</script>\n\n{#snippet outerContent()}\n    <div class=\"-widthfull -padding2-l\">\n        <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -fontface-stylized\">\n            <!-- Rechargeable -->\n            <ChargedBox\n                item={component}\n                path={`itemTypes.npc_feature.${component.index}.system.charged`}\n            />\n            <!-- Loading -->\n            <LoadedBox\n                item={component}\n                path={`itemTypes.npc_feature.${component.index}.system.loaded`}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={component.system.uses.value}\n                usesMax={component.system.uses.max}\n                path={`itemTypes.npc_feature.${component.index}.system.uses`}\n            />\n        </div>\n    </div>\n{/snippet}\n{#snippet headerSecondaryLeftOptions()}\n    <EffectButton\n        iconStyle={[getIconStyle(component), \"cci cci-system -fontsize7\"]}\n        iconBackgroundStyle={[\"-fontsize7 la-prmy-secondary\", qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n\n        flowClass={FlowClass.SendEffectToChat}\n        path={`itemTypes.npc_feature.${component.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        tooltip={component.system.effect || getLocalized(\"LA.mech.mod.effect.tooltip\")}\n\n        disabled={isDestroyed(component)}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerSecondaryRightOptions()}\n    <!-- Pin -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.None}\n        path={`itemTypes.npc_feature.${component.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(pinned ? \"LA.pin.unpinned.tooltip\" : \"LA.pin.pinned.tooltip\")}\n\n        onClick={(event) => {pinned ? unpinItem(event, component) : pinItem(event, component)}}\n        onPointerEnter={() => {pinButtonHover = true;} }\n        onPointerLeave={() => {pinButtonHover = false;} }\n    >\n    {#if pinned}\n        <i class=\"mdi mdi-star la-text-warning\"></i>\n    {:else}\n        <i class=\"mdi mdi-star\"></i>\n    {/if}\n    </GlyphButton>\n    <!-- Edit -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.ContextMenu}\n        path={`itemTypes.npc_feature.${component.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.tooltip\")}\n\n        onPointerEnter={() => {editButtonHover = true;} }\n        onPointerLeave={() => {editButtonHover = false;} }\n    >\n        <i class=\"fas fa-ellipsis-v\"></i>\n    </GlyphButton>\n    <!-- Send to Chat -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n        flowClass={FlowClass.SendEffectToChat}\n        type={\"system\"}\n        index={component.index}\n        uuid={component.uuid}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.chat.tooltip\")}\n\n        onPointerEnter={() => {messageButtonHover = true;} }\n        onPointerLeave={() => {messageButtonHover = false;} }\n    >\n        <i class=\"mdi mdi-message\"></i>\n    </GlyphButton>\n{/snippet}\n\n<HeaderSecondary\n    text={component.name}\n    headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[getHeaderStyle(component), \"-fontsizemedium -overflowhidden -fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (effectButtonHover)\n            return `--${getLocalized(\"LA.use.label\")}`;\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        if (pinButtonHover)\n            return `--${getLocalized(pinned ? \"LA.pin.unpinned.extension\" : \"LA.pin.pinned.extension\")}`;\n        return undefined;\n    }}\n\n    itemID={component.id}\n    uuid={component.uuid}\n    path={`itemTypes.npc_feature.${component.index}`}\n    acceptTypes={\"npc_feature\"}\n    \n    collapseID={component.uuid}\n    startCollapsed={true}\n    renderOutsideCollapse={renderOuter(component) ? outerContent : undefined }\n\n    contentLeft={headerSecondaryLeftOptions}\n    contentRight={headerSecondaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n    {#if hasAttackBonus(component) || hasAccuracyBonus(component)}\n        <div class=\"la-flexrow -gap0 -widthfull\">\n            <EffectBox\n                name={getLocalized(\"LA.npc.attackBonus.label\")}\n                outerStyle={[hasAccuracyBonus(component) ? \"-bordersround\" : \"-bordersround-ltb\"]}\n\n                tooltipEnabled={tooltipEnabled}\n            >\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -height3\">\n                    {component.system.attack_bonus[tier - 1]}\n                    <i class=\"cci cci-reticule -fontsize4\"></i>\n                </span>\n            </EffectBox>\n            <EffectBox\n                name={getLocalized(\"LA.npc.accuracy.label\")}\n\n                tooltipEnabled={tooltipEnabled}\n            >\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -height3\">\n                    {component.system.accuracy[tier - 1]}\n                    <i class=\"cci cci-accuracy -fontsize6\"></i>\n                </span>\n            </EffectBox>\n        </div>\n    {/if}\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n\n            tooltipEnabled={tooltipEnabled}\n        >\n            {@html component.system.effect}\n        </EffectBox>\n        <EffectBox\n            name={getLocalized(\"LA.effect.hit.label\")}\n            effect={component.system.on_hit}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <TagArray\n            tags={component.system.tags}\n            justify={\"end\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n</HeaderSecondary>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import SystemItem from \"./SystemItem.svelte\";\n    import HeaderSecondary from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const {\n        actor,\n        system, // The `system` object in the NPC object\n        systems, // The actual NPC systems (the gameplay mechanic)\n    }: NPCSheetProps & {systems : Array<any>} = $props();\n    let collapseAllButtonHover = $state(false);\n    \n    const tooltipEnabled = getNPCSheetTooltipEnabled(); \n    const collID = $derived(`${actor.uuid}.systems`);\n    const pinCollID = $derived(`${actor.uuid}.systems.pins`);\n    const nonpinCollID = $derived(`${actor.uuid}.systems.nonpins`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    // Stable container refs; items are moved into these via placeItem rather than\n    // re-rendered, so Foundry's directly-bound event listeners survive pin/unpin.\n    const pinnedSet = $derived(new Set<string>(NPCStore.get(actor.uuid).pinnedSystems ?? []));\n    const pinnedSystems = $derived(systems.filter((s: any) => pinnedSet.has(s.system.lid)));\n    const hasPinned = $derived(pinnedSystems.length > 0);\n\n    let pinnedContainer = $state<HTMLElement | undefined>();\n    let unpinnedContainer = $state<HTMLElement | undefined>();\n    let noSectionsContainer = $state<HTMLElement | undefined>();\n\n    function placeItem(node: HTMLElement, container: HTMLElement | undefined) {\n        container?.appendChild(node);\n        return {\n            update(newContainer: HTMLElement | undefined) {\n                newContainer?.appendChild(node);\n            },\n            destroy() {\n                node.remove();\n            }\n        };\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if systems.length}\n<HeaderMain\n    text={getLocalized(\"LA.systems.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-system\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden -upper\"]}\n    borderStyle={[\"la-brdr-system -gap0\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n        <!-- No pins -->\n        <div bind:this={noSectionsContainer}\n            class=\"la-flexcol -gap0 -widthfull\n                {hasPinned ? '-displaynone' : ''}\"\n        ></div>\n        <!-- Pin/Unpinned -->\n        <div class=\"-widthfull\n                {hasPinned ? '' : '-displaynone'}\"\n        >\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.pinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-primary -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium -fontface-stylized\"]}\n                collapseID={pinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={pinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n            <div></div>\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.unpinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-weapon -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={nonpinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={unpinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n        </div>\n        <!-- Staging area\n            Items rendered here then immediately moved into the correct container above. -->\n        <div\n            class=\"-displaynone\"\n            aria-hidden=\"true\"\n        >\n        {#each systems as component (component.uuid)}\n            {@const container = hasPinned\n                ? (pinnedSet.has(component.system.lid) ? pinnedContainer : unpinnedContainer)\n                : noSectionsContainer}\n            <div use:placeItem={container}\n                class=\"-widthfull\"\n            >\n                <SystemItem\n                    actor={actor}\n                    system={system}\n                    component={component}\n                    pinned={pinnedSet.has(component.system.lid)}\n                />\n            </div>\n        {/each}\n        </div>\n    </div>\n</HeaderMain>\n{/if}\n","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import {getLocalized, isLoading, isRecharge, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import HeaderSecondary, { H2_HEADER_STYLE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import ChargedBox from \"@/svelte/npc/ChargedBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type TraitItemProps = {\n        actor: any;\n        trait: any;\n        pinned: boolean;\n    }\n\n    const {\n        actor,\n        trait,\n        pinned,\n    } : TraitItemProps = $props();\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let pinButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function renderOuter(item: any)\n    {\n        return !isDestroyed(item) && (item.system.uses.max || isLoading(item) || isRecharge(item));\n    }\n\n    function getHeaderStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? `la-text-error la-prmy-error -strikethrough ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? \"la-text-repcap\"\n            : \"la-text-header\";\n    }\n\n    function isDestroyed(item: any)\n    {\n        return item.system.destroyed;\n    }\n\n    async function pinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried pinning an NPC trait that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTraits || [];\n        const newPinned = Array.from(new Set([...currentPinned, item.system.lid]));\n        NPCStore.set(actor.uuid, { pinnedTraits: newPinned });\n    }\n\n    async function unpinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried unpinning an NPC trait that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTraits || [];\n        const newPinned = currentPinned.filter((lid: string) => lid !== item.system.lid);\n        NPCStore.set(actor.uuid, { pinnedTraits: newPinned });\n    }\n</script>\n\n{#snippet outerContent()}\n    <div class=\"-widthfull -padding2-l\">\n        <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -fontface-stylized\">\n            <!-- Rechargeable -->\n            <ChargedBox\n                item={trait}\n                path={`itemTypes.npc_feature.${trait.index}.system.charged`}\n            />\n            <!-- Loading -->\n            <LoadedBox\n                item={trait}\n                path={`itemTypes.npc_feature.${trait.index}.system.loaded`}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={trait.system.uses.value}\n                usesMax={trait.system.uses.max}\n                path={`itemTypes.npc_feature.${trait.index}.system.uses`}\n            />\n        </div>\n    </div>\n{/snippet}\n{#snippet headerSecondaryLeftOptions()}\n    <EffectButton\n        iconStyle={[getIconStyle(trait), \"cci cci-trait -fontsize7\"]}\n        iconBackgroundStyle={[\"-fontsize7 la-prmy-secondary\", qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n\n        flowClass={FlowClass.SendEffectToChat}\n        path={`itemTypes.npc_feature.${trait.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        tooltip={trait.system.effect || getLocalized(\"LA.mech.mod.effect.tooltip\")}\n\n        disabled={isDestroyed(trait)}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerSecondaryRightOptions()}\n    <!-- Pin -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.None}\n        path={`itemTypes.npc_feature.${trait.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(pinned ? \"LA.pin.unpinned.tooltip\" : \"LA.pin.pinned.tooltip\")}\n\n        onClick={(event) => {pinned ? unpinItem(event, trait) : pinItem(event, trait)}}\n        onPointerEnter={() => {pinButtonHover = true;} }\n        onPointerLeave={() => {pinButtonHover = false;} }\n    >\n    {#if pinned}\n        <i class=\"mdi mdi-star la-text-warning\"></i>\n    {:else}\n        <i class=\"mdi mdi-star\"></i>\n    {/if}\n    </GlyphButton>\n    <!-- Edit -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.ContextMenu}\n        path={`itemTypes.npc_feature.${trait.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.tooltip\")}\n\n        onPointerEnter={() => {editButtonHover = true;} }\n        onPointerLeave={() => {editButtonHover = false;} }\n    >\n        <i class=\"fas fa-ellipsis-v\"></i>\n    </GlyphButton>\n    <!-- Send to Chat -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n        flowClass={FlowClass.SendEffectToChat}\n        type={\"trait\"}\n        index={trait.index}\n        uuid={trait.uuid}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.chat.tooltip\")}\n\n        onPointerEnter={() => {messageButtonHover = true;} }\n        onPointerLeave={() => {messageButtonHover = false;} }\n    >\n        <i class=\"mdi mdi-message\"></i>\n    </GlyphButton>\n{/snippet}\n\n<HeaderSecondary\n    text={trait.name}\n    headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[getHeaderStyle(trait), \"-fontsizemedium -overflowhidden -fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (effectButtonHover)\n            return `--${getLocalized(\"LA.use.label\")}`;\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        if (pinButtonHover)\n            return `--${getLocalized(pinned ? \"LA.pin.unpinned.extension\" : \"LA.pin.pinned.extension\")}`;\n        return undefined;\n    }}\n\n    itemID={trait.system.lid}\n    uuid={trait.uuid}\n    path={`itemTypes.npc_feature.${trait.index}`}\n    acceptTypes={\"npc_feature\"}\n    \n    collapseID={trait.uuid}\n    startCollapsed={true}\n    renderOutsideCollapse={renderOuter(trait) ? outerContent : undefined }\n\n    contentLeft={headerSecondaryLeftOptions}\n    contentRight={headerSecondaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n\n            tooltipEnabled={tooltipEnabled}\n        >\n            {@html trait.system.effect}\n        </EffectBox>\n        <EffectBox\n            name={getLocalized(\"LA.effect.hit.label\")}\n            effect={trait.system.on_hit}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <TagArray\n            tags={trait.system.tags}\n            justify={\"end\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n</HeaderSecondary>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import TraitItem from \"@/svelte/npc/TraitItem.svelte\";\n    import HeaderSecondary from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const {\n        actor,\n        traits,\n    }: NPCSheetProps & {traits : Array<any>} = $props();\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.traits`);\n    const pinCollID = $derived(`${actor.uuid}.traits.pins`);\n    const nonpinCollID = $derived(`${actor.uuid}.traits.nonpins`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const pinnedSet = $derived(new Set<string>(NPCStore.get(actor.uuid).pinnedTraits ?? []));\n    const pinnedTraits = $derived(traits.filter((t: any) => pinnedSet.has(t.system.lid)));\n    const hasPinned = $derived(pinnedTraits.length > 0);\n\n    // Stable container refs; items are moved into these via placeItem rather than\n    // re-rendered, so Foundry's directly-bound event listeners survive pin/unpin.\n    let pinnedContainer = $state<HTMLElement | undefined>();\n    let unpinnedContainer = $state<HTMLElement | undefined>();\n    let noSectionsContainer = $state<HTMLElement | undefined>();\n\n    function placeItem(node: HTMLElement, container: HTMLElement | undefined) {\n        container?.appendChild(node);\n        return {\n            update(newContainer: HTMLElement | undefined) {\n                newContainer?.appendChild(node);\n            },\n            destroy() {\n                node.remove();\n            }\n        };\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if traits.length}\n<HeaderMain\n    text={getLocalized(\"LA.npc.traits.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--downtime\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--downtime\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n        <!-- No pins -->\n        <div bind:this={noSectionsContainer}\n            class=\"la-flexcol -gap0 -widthfull\n                {hasPinned ? '-displaynone' : ''}\"\n        ></div>\n        <!-- Pin/Unpinned -->\n        <div class=\"-widthfull \n                {hasPinned ? '' : '-displaynone'}\"\n        >\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.pinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-primary -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={pinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={pinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n            <div></div>\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.unpinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-weapon -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={nonpinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={unpinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n        </div>\n        <!-- Staging area\n            Items rendered here then immediately moved into the correct container above. -->\n        <div\n            class=\"-displaynone\"\n            aria-hidden=\"true\"\n        >\n        {#each traits as trait (trait.uuid)}\n            {@const container = hasPinned\n                ? (pinnedSet.has(trait.system.lid) ? pinnedContainer : unpinnedContainer)\n                : noSectionsContainer}\n            <div use:placeItem={container}\n                class=\"-widthfull\"\n            >\n                <TraitItem\n                    actor={actor}\n                    trait={trait}\n                    pinned={pinnedSet.has(trait.system.lid)}\n                />\n            </div>\n        {/each}\n        </div>\n    </div>\n</HeaderMain>\n{/if}\n","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import {getLocalized, isLoading, isRecharge, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { CHAT_CARD_COLOR_MAP } from \"@/scripts/constants\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n\n    import HeaderSecondary, { H2_HEADER_STYLE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import ChargedBox from \"@/svelte/npc/ChargedBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type ReactionItemProps = {\n        actor: any;\n        system: any;\n        reaction: any;\n        pinned: boolean;\n    }\n\n    const {\n        actor,\n        system,\n        reaction,\n        pinned,\n    }: ReactionItemProps = $props();\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let pinButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const tier = $derived(system.tier);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getReactionTooltip(item: any): string \n    {\n        if (item.system.effect)\n            return `\n                ${getLocalized(\"LA.trigger.label\")}: ${item.system.trigger}\n                <br><br>\n                ${getLocalized(\"LA.mech.system.effect.label\")}: ${item.system.effect}\n                <br><br>\n                ${getLocalized(\"LA.action.reaction.tooltip\")}`;\n        else\n            return getLocalized(\"LA.action.reaction.tooltip\");\n    }\n\n    function renderOuter(item: any)\n    {\n        return !isDestroyed(item) && (isLoading(item) || isRecharge(item) || item.system.uses.max);\n    }\n\n    function hasAccuracyBonus(item: any)\n    {\n        return item.system.accuracy.some((accuracy: number) => accuracy !== 0);\n    }\n\n    function hasAttackBonus(item: any)\n    {\n        return item.system.attack_bonus.some((bonus: number) => bonus !== 0);\n    } \n\n    function isDestroyed(item: any)\n    {\n        return item.system.destroyed;\n    }\n\n    function getHeaderStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? `la-text-error la-prmy-error -strikethrough ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(item: any)\n    {\n        return isDestroyed(item)\n            ? \"la-text-repcap\"\n            : \"la-text-header\";\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && item)\n        {\n            let chatData = {\n                title: item.name, \n                trigger: item.system.trigger,\n                effect: item.system.effect,\n                tags: item.system.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Reaction],\n            } as ChatData;\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n\n    async function pinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried pinning an NPC system that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedReactions || [];\n        const newPinned = Array.from(new Set([...currentPinned, item.system.lid]));\n        NPCStore.set(actor.uuid, { pinnedReactions: newPinned });\n    }\n\n    async function unpinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried unpinning an NPC system that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedReactions || [];\n        const newPinned = currentPinned.filter((lid: string) => lid !== item.system.lid);\n        NPCStore.set(actor.uuid, { pinnedReactions: newPinned });\n    }\n</script>\n\n{#snippet outerContent()}\n    <div class=\"-widthfull -padding2-l\">\n        <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -padding2-l -fontface-stylized\">\n            <!-- Rechargeable -->\n            <ChargedBox\n                item={reaction}\n                path={`itemTypes.npc_feature.${reaction.index}.system.charged`}\n            />\n            <!-- Loading -->\n            <LoadedBox\n                item={reaction}\n                path={`itemTypes.npc_feature.${reaction.index}.system.loaded`}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={reaction.system.uses.value}\n                usesMax={reaction.system.uses.max}\n                path={`itemTypes.npc_feature.${reaction.index}.system.uses`}\n            />\n        </div>\n    </div>\n{/snippet}\n{#snippet headerSecondaryLeftOptions()}\n    <EffectButton\n        iconStyle={[getIconStyle(reaction), \"cci cci-reaction -fontsize7\"]}\n        iconBackgroundStyle={[\n            \"-fontsize7 la-prmy-secondary\", \n            qualityMode ? '-pulse-prmy' : 'la-text-scrollbar-secondary'\n        ]}\n\n        flowClass={FlowClass.SendEffectToChat}\n        path={`itemTypes.npc_feature.${reaction.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipHeader={getLocalized(\"LA.action.reaction.label\")}\n        tooltip={getReactionTooltip(reaction)}\n\n        disabled={isDestroyed(reaction)}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerSecondaryRightOptions()}\n    <!-- Pin -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.None}\n        path={`itemTypes.npc_feature.${reaction.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(pinned ? \"LA.pin.unpinned.tooltip\" : \"LA.pin.pinned.tooltip\")}\n\n        onClick={(event) => {pinned ? unpinItem(event, reaction) : pinItem(event, reaction)}}\n        onPointerEnter={() => {pinButtonHover = true;} }\n        onPointerLeave={() => {pinButtonHover = false;} }\n    >\n    {#if pinned}\n        <i class=\"mdi mdi-star la-text-warning\"></i>\n    {:else}\n        <i class=\"mdi mdi-star\"></i>\n    {/if}\n    </GlyphButton>\n    <!-- Edit -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.ContextMenu}\n        path={`itemTypes.npc_feature.${reaction.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.tooltip\")}\n\n        onPointerEnter={() => {editButtonHover = true;} }\n        onPointerLeave={() => {editButtonHover = false;} }\n    >\n        <i class=\"fas fa-ellipsis-v\"></i>\n    </GlyphButton>\n    <!-- Send to chat -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n        flowClass={FlowClass.None}\n        uuid={reaction.uuid}\n        index={reaction.index}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.chat.tooltip\")}\n\n        onClick={event => sendToChat(event, reaction)}\n        onPointerEnter={() => {messageButtonHover = true;} }\n        onPointerLeave={() => {messageButtonHover = false;} }\n    >\n        <i class=\"mdi mdi-message\"></i>\n    </GlyphButton>\n{/snippet}\n<HeaderSecondary\n    text={reaction.name}\n    headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[getHeaderStyle(reaction), \"-fontsizemedium -overflowhidden -fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (effectButtonHover)\n            return `--${getLocalized(\"LA.use.label\")}`;\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        if (pinButtonHover)\n            return `--${getLocalized(pinned ? \"LA.pin.unpinned.extension\" : \"LA.pin.pinned.extension\")}`;\n        return undefined;\n    }}\n\n    itemID={reaction.id}\n    uuid={reaction.uuid}\n    path={`itemTypes.npc_feature.${reaction.index}`}\n    acceptTypes={\"npc_feature\"}\n    \n    collapseID={reaction.uuid}\n    startCollapsed={true}\n    renderOutsideCollapse={renderOuter(reaction) ? outerContent : undefined }\n\n    contentLeft={headerSecondaryLeftOptions}\n    contentRight={headerSecondaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n    {#if hasAttackBonus(reaction) || hasAccuracyBonus(reaction)}\n        <div class=\"la-flexrow -gap0 -widthfull\">\n            <EffectBox\n                name={getLocalized(\"LA.npc.attackBonus.label\")}\n                outerStyle={[\n                    hasAccuracyBonus(reaction) ? \"-bordersround\" : \"-bordersround-ltb\",\n                ]}\n\n                tooltipEnabled={tooltipEnabled}\n            >\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -height3\">\n                    {reaction.system.attack_bonus[tier - 1]}\n                    <i class=\"cci cci-reticule -fontsize4\"></i>\n                </span>\n            </EffectBox>\n            <EffectBox\n                name={getLocalized(\"LA.npc.accuracy.label\")}\n\n                tooltipEnabled={tooltipEnabled}\n            >\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -height3\">\n                    {reaction.system.accuracy[tier - 1]}\n                    <i class=\"cci cci-accuracy -fontsize6\"></i>\n                </span>\n            </EffectBox>\n        </div>\n    {/if}\n        <EffectBox\n            name={getLocalized(\"LA.trigger.label\")}\n\n            tooltipEnabled={tooltipEnabled}\n        >\n            {@html reaction.system.trigger}\n        </EffectBox>\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n            effect={reaction.system.effect}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <EffectBox\n            name={getLocalized(\"LA.effect.hit.label\")}\n            effect={reaction.system.on_hit}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <TagArray\n            tags={reaction.system.tags}\n            justify={\"end\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n</HeaderSecondary>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import ReactionItem from \"@/svelte/npc/ReactionItem.svelte\";\n\n    const {\n        actor,\n        system,\n        reactions,\n    }: NPCSheetProps & {reactions : Array<any>} = $props();\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.reactions`);\n    const pinCollID = $derived(`${actor.uuid}.reactions.pins`);\n    const nonpinCollID = $derived(`${actor.uuid}.reactions.nonpins`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    // Stable container refs; items are moved into these via placeItem rather than\n    // re-rendered, so Foundry's directly-bound event listeners survive pin/unpin.\n    const pinnedSet = $derived(new Set<string>(NPCStore.get(actor.uuid).pinnedReactions ?? []));\n    const pinnedReactions = $derived(reactions.filter((r: any) => pinnedSet.has(r.system.lid)));\n    const hasPinned = $derived(pinnedReactions.length > 0);\n\n    let pinnedContainer = $state<HTMLElement | undefined>();\n    let unpinnedContainer = $state<HTMLElement | undefined>();\n    let noSectionsContainer = $state<HTMLElement | undefined>();\n\n    function placeItem(node: HTMLElement, container: HTMLElement | undefined) {\n        container?.appendChild(node);\n        return {\n            update(newContainer: HTMLElement | undefined) {\n                newContainer?.appendChild(node);\n            },\n            destroy() {\n                node.remove();\n            }\n        };\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if reactions.length}\n<HeaderMain\n    text={getLocalized(\"LA.npc.reactions.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--reaction\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--reaction -gap0\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n        <!-- No pins -->\n        <div bind:this={noSectionsContainer}\n            class=\"la-flexcol -gap0 -widthfull\n                {hasPinned ? '-displaynone' : ''}\"\n        ></div>\n        <!-- Pin/Unpinned -->\n        <div class=\"-widthfull\n                {hasPinned ? '' : '-displaynone'}\"\n        >\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.pinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-primary -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={pinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={pinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n            <div></div>\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.unpinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-weapon -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={nonpinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={unpinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n        </div>\n        <!-- Staging area\n            Items rendered here then immediately moved into the correct container above. -->\n        <div\n            class=\"-displaynone\"\n            aria-hidden=\"true\"\n        >\n        {#each reactions as reaction (reaction.uuid)}\n            {@const container = hasPinned\n                ? (pinnedSet.has(reaction.system.lid) ? pinnedContainer : unpinnedContainer)\n                : noSectionsContainer}\n            <div use:placeItem={container}\n                class=\"-widthfull\">\n                <ReactionItem\n                    actor={actor}\n                    system={system}\n                    reaction={reaction}\n                    pinned={pinnedSet.has(reaction.system.lid)}\n                />\n            </div>\n        {/each}\n        </div>\n    </div>\n</HeaderMain>\n{/if}\n","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import {getLocalized, isLoading, isRecharge, photosensitiveStyling} from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { CHAT_CARD_COLOR_MAP } from \"@/scripts/constants\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n    \n    import HeaderSecondary, { H2_HEADER_STYLE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import ChargedBox from \"@/svelte/npc/ChargedBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    type TechAttackItem = {\n        actor: any;\n        system: any;\n        tech: any;\n        pinned: boolean;\n    }\n\n    const {\n        actor,\n        system,\n        tech,\n        pinned,\n    }: TechAttackItem = $props();\n    let effectButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let pinButtonHover = $state(false);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const tier = $derived(system.tier);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const accuracyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.accuracy.tooltip\"));\n    const attackTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.attackBonus.tooltip\"));\n\n    function getTechIcon(tech: any)\n    {\n        return tech.system.tech_type === \"Full\" ? \"cci-tech-full\" : \"cci-tech-quick\";\n    }\n\n    function getTechTipHeader(tech: any)\n    {\n        return tech.system.tech_type === \"Full\"\n            ? getLocalized(\"LA.action.fullTech.label\")\n            : getLocalized(\"LA.action.quickTech.label\");\n    }\n\n    function renderOuter(tech: any)\n    {\n        return !isDestroyed(tech) && (hasAccuracyBonus(tech) || hasAttackBonus(tech) || isLoading(tech) || isRecharge(tech) || tech.system.uses.max)\n    }\n\n    function hasAccuracyBonus(tech: any)\n    {\n        return tech.system.accuracy.some((accuracy: number) => accuracy !== 0);\n    }\n\n    function hasAttackBonus(tech: any)\n    {\n        return tech.system.attack_bonus.some((bonus: number) => bonus !== 0);\n    } \n\n    function isDestroyed(tech: any)\n    {\n        return tech.system.destroyed;\n    }\n\n    function getHeaderStyle(tech: any)\n    {\n        return isDestroyed(tech)\n            ? `la-text-error la-prmy-error ${photosensitiveStyling('horus--very--subtle')}`\n            : \"la-text-header la-prmy-header\";\n    }\n\n    function getIconStyle(tech: any)\n    {\n        return isDestroyed(tech)\n            ? \"la-text-repcap\"\n            : \"la-text-header\";\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && item)\n        {\n            let accuracy = \"\";\n            if (item.system.accuracy[tier - 1] > 0)\n                accuracy = `<div class=\"la-flexrow\">${item.system.accuracy[tier - 1]}<i class=\"cci cci-accuracy -fontsize6\"></i></div>`\n            let attackBonus = \"\";\n            if (item.system.attack_bonus[tier - 1] > 0)\n                attackBonus = `<div class=\"la-flexrow\" style=\"align-items: anchor-center;\">${item.system.attack_bonus[tier - 1]}<i class=\"cci cci-reticule -fontsize4 -padding0\"></i></div>`\n            const description = `\n                <div \n                    class=\"la-flexrow -justifyevenly clipped-alt -fontsize5 -padding0-tb -padding1-lr\"\n                    style=\"\n                        background-color: var(--weapon-color);\n                        color: var(--light-text);\n                        align-items: baseline;\n                    \"\n                >\n                    ${accuracy}\n                    ${attackBonus}\n                </div>\n            `;\n            let chatData = {\n                title: item.name, \n                description: (accuracy || attackBonus) ? description : '',\n                trigger: item.system.trigger,\n                effect: item.system.effect,\n                onHit: item.system.on_hit,\n                tags: item.system.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Tech],\n            } as ChatData;\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n\n    async function pinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried pinning an NPC tech attack that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTechs || [];\n        const newPinned = Array.from(new Set([...currentPinned, item.system.lid]));\n        NPCStore.set(actor.uuid, { pinnedTechs: newPinned });\n    }\n\n    async function unpinItem(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, item: any)\n    {\n        event.stopPropagation();\n        if (!item.system.lid)\n        {\n            Logger.error(\"Tried unpinning an NPC tech attack that had no LID\");\n            return;\n        }\n        const currentPinned = NPCStore.get(actor.uuid).pinnedTechs || [];\n        const newPinned = currentPinned.filter((lid: string) => lid !== item.system.lid);\n        NPCStore.set(actor.uuid, { pinnedTechs: newPinned });\n    }\n</script>\n\n{#snippet outerContent()}\n    <div class=\"-widthfull -padding2-l\">\n        <div class=\"la-flexrow clipped-bot-alt la-text-header la-bckg-header-anti -widthfull -fontface-stylized\">\n            {#if hasAccuracyBonus(tech)}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr\"\n                    data-tooltip={accuracyTip}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={\"DOWN\"}\n                >\n                    {tech.system.accuracy[tier - 1]}\n                    <i class=\"cci cci-accuracy -fontsize6\"></i>\n                </span>\n            {/if}\n            {#if hasAttackBonus(tech)}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr\"\n                    data-tooltip={attackTip}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={\"DOWN\"}\n                >\n                    {tech.system.attack_bonus[tier - 1]}\n                    <i class=\"cci cci-reticule -fontsize4\"></i>\n                </span>\n            {/if}\n            <!-- Rechargeable -->\n            <ChargedBox\n                item={tech}\n                path={`itemTypes.npc_feature.${tech.index}.system.charged`}\n            />\n            <!-- Loading -->\n            <LoadedBox\n                item={tech}\n                path={`itemTypes.npc_feature.${tech.index}.system.loaded`}\n            />\n            <!-- Limited -->\n            <LimitedBox\n                usesValue={tech.system.uses.value}\n                usesMax={tech.system.uses.max}\n                path={`itemTypes.npc_feature.${tech.index}.system.uses`}\n            />\n        </div>\n    </div>\n{/snippet}\n{#snippet headerSecondaryLeftOptions()}\n    <!-- Only 'tech attacks' need to pull up the tech attack flow, just 'use' otherwise -->\n    <EffectButton\n        iconStyle={[\"cci -fontsize7\", getIconStyle(tech), getTechIcon(tech)]}\n        iconBackgroundStyle={[\"-fontsize7 la-prmy-secondary\", qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"]}\n\n        flowClass={tech.system.attack_bonus.every((bonus: number) => bonus === 0) ? FlowClass.SendEffectToChat : FlowClass.RollTech}\n        path={`itemTypes.npc_feature.${tech.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipHeader={getTechTipHeader(tech)}\n        tooltip={tech.system.effect || getLocalized(\"LA.mech.mod.effect.tooltip\")}\n\n        disabled={isDestroyed(tech)}\n\n        onPointerEnter={() => {effectButtonHover = true;}}\n        onPointerLeave={() => {effectButtonHover = false;}}\n    />\n{/snippet}\n{#snippet headerSecondaryRightOptions()}\n    <!-- Pin -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.None}\n        path={`itemTypes.npc_feature.${tech.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(pinned ? \"LA.pin.unpinned.tooltip\" : \"LA.pin.pinned.tooltip\")}\n\n        onClick={(event) => {pinned ? unpinItem(event, tech) : pinItem(event, tech)}}\n        onPointerEnter={() => {pinButtonHover = true;} }\n        onPointerLeave={() => {pinButtonHover = false;} }\n    >\n    {#if pinned}\n        <i class=\"mdi mdi-star la-text-warning\"></i>\n    {:else}\n        <i class=\"mdi mdi-star\"></i>\n    {/if}\n    </GlyphButton>\n    <!-- Edit -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"la-flexcol -padding0-lr\"]}\n        flowClass={FlowClass.ContextMenu}\n        path={`itemTypes.npc_feature.${tech.index}`}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.tooltip\")}\n\n        onPointerEnter={() => {editButtonHover = true;} }\n        onPointerLeave={() => {editButtonHover = false;} }\n    >\n        <i class=\"fas fa-ellipsis-v\"></i>\n    </GlyphButton>\n    <!-- Send to Chat -->\n    <GlyphButton\n        style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n        flowClass={FlowClass.None}\n        index={tech.index}\n        uuid={tech.uuid}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.chat.tooltip\")}\n\n        onClick={event => sendToChat(event, tech)}\n        onPointerEnter={() => {messageButtonHover = true;} }\n        onPointerLeave={() => {messageButtonHover = false;} }\n    >\n        <i class=\"mdi mdi-message\"></i>\n    </GlyphButton>\n{/snippet}\n<HeaderSecondary\n    text={tech.name}\n    headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[getHeaderStyle(tech), \"-fontsizemedium -overflowhidden -fontface-stylized\"]}\n    borderStyle={[\"-bordersoff\"]}\n    extensionTextFunction={() => {\n        if (effectButtonHover)\n            return `--${getLocalized(\"LA.use.label\")}`;\n        if (messageButtonHover)\n            return `--${getLocalized(\"LA.chat.extension\")}`;\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        if (pinButtonHover)\n            return `--${getLocalized(pinned ? \"LA.pin.unpinned.extension\" : \"LA.pin.pinned.extension\")}`;\n        return undefined;\n    }}\n\n    itemID={tech.id}\n    uuid={tech.uuid}\n    path={`itemTypes.npc_feature.${tech.index}`}\n    acceptTypes={\"npc_feature\"}\n    \n    collapseID={tech.uuid}\n    startCollapsed={true}\n    renderOutsideCollapse={renderOuter(tech) ? outerContent : undefined }\n\n    contentLeft={headerSecondaryLeftOptions}\n    contentRight={headerSecondaryRightOptions}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n\n            tooltipEnabled={tooltipEnabled}\n        >\n            {@html tech.system.effect}\n        </EffectBox>\n        <EffectBox\n            name={getLocalized(\"LA.effect.hit.label\")}\n            effect={tech.system.on_hit}\n\n            tooltipEnabled={tooltipEnabled}\n        />\n        <TagArray\n            tags={tech.system.tags}\n            justify={\"end\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n        />\n    </div>\n</HeaderSecondary>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import { NPCStore } from \"@/scripts/store/module-store\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import TechAttackItem from \"@/svelte/npc/TechAttackItem.svelte\";\n\n    const {\n        actor,\n        system,\n        techs,\n    }: NPCSheetProps & {techs : Array<any>} = $props();\n    let collapseAllButtonHover = $state(false);\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.techs`);\n    const pinCollID = $derived(`${actor.uuid}.techs.pins`);\n    const nonpinCollID = $derived(`${actor.uuid}.techs.nonpins`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    // Stable container refs; items are moved into these via placeItem rather than\n    // re-rendered, so Foundry's directly-bound event listeners survive pin/unpin.\n    const pinnedSet = $derived(new Set<string>(NPCStore.get(actor.uuid).pinnedTechs ?? []));\n    const pinnedTechs = $derived(techs.filter((t: any) => pinnedSet.has(t.system.lid)));\n    const hasPinned = $derived(pinnedTechs.length > 0);\n\n    let pinnedContainer = $state<HTMLElement | undefined>();\n    let unpinnedContainer = $state<HTMLElement | undefined>();\n    let noSectionsContainer = $state<HTMLElement | undefined>();\n\n    function placeItem(node: HTMLElement, container: HTMLElement | undefined) {\n        container?.appendChild(node);\n        return {\n            update(newContainer: HTMLElement | undefined) {\n                newContainer?.appendChild(node);\n            },\n            destroy() {\n                node.remove();\n            }\n        };\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n{#if techs.length}\n<HeaderMain\n    text={getLocalized(\"LA.npc.techAttacks.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--tech\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--tech -gap0\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n        <!-- No pins -->\n        <div bind:this={noSectionsContainer}\n            class=\"la-flexcol -gap0 -widthfull\n                {hasPinned ? '-displaynone' : ''}\"\n        ></div>\n        <!-- Pin/Unpinned -->\n        <div class=\"-widthfull\n                {hasPinned ? '' : '-displaynone'}\"\n        >\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.pinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-primary -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={pinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={pinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n            <div></div>\n            <HeaderSecondary\n                text={getLocalized(\"LA.pin.unpinned.label\")}\n                headerStyle={[\"clipped-bot-alt la-bckg-weapon -letterspacing0 la-text-header la-prmy-header -padding2-l -padding0-tb -fontsizemedium\"]}\n                collapseID={nonpinCollID}\n                startCollapsed={false}\n            >\n                <div bind:this={unpinnedContainer}\n                    class=\"la-flexcol -gap0 -widthfull\"\n                ></div>\n            </HeaderSecondary>\n        </div>\n        <!-- Staging area\n            Items rendered here then immediately moved into the correct container above. -->\n        <div\n            class=\"-displaynone\"\n            aria-hidden=\"true\"\n        >\n        {#each techs as tech (tech.uuid)}\n            {@const container = hasPinned\n                ? (pinnedSet.has(tech.system.lid) ? pinnedContainer : unpinnedContainer)\n                : noSectionsContainer}\n            <div use:placeItem={container}\n                class=\"-widthfull\"\n            >\n                <TechAttackItem\n                    actor={actor}\n                    system={system}\n                    tech={tech}\n                    pinned={pinnedSet.has(tech.system.lid)}\n                />\n            </div>\n        {/each}\n        </div>\n    </div>\n</HeaderMain>\n{/if}\n","<script lang=\"ts\">\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import Weapons from \"@/svelte/npc/Weapons.svelte\";\n    import Systems from \"@/svelte/npc/Systems.svelte\";\n    import Traits from \"@/svelte/npc/Traits.svelte\";\n    import Reactions from \"@/svelte/npc/Reactions.svelte\";\n    import TechAttack from \"@/svelte/npc/TechAttack.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        system,\n        itemTypes,\n    }: NPCSheetProps = $derived(props);\n    setActorContext(props.actor);\n\n    const traits: Array<any> = [];\n    const systems: Array<any> = [];\n    const reactions: Array<any> = [];\n    const weapons: Array<any> = [];\n    const techs: Array<any> = [];\n\n    // svelte-ignore state_referenced_locally\n    itemTypes.npc_feature.forEach((feature: { system: { type: any; }; }, index: number) => {\n        // @ts-expect-error Add index to the npc feature so that it can be used to resolve the correct path\n        feature.index = index;\n        switch (feature.system.type) {\n            case \"Trait\":\n                traits.push(feature);\n                break;\n            case \"System\":\n                systems.push(feature);\n                break;\n            case \"Reaction\":\n                reactions.push(feature);\n                break;\n            case \"Weapon\":\n                weapons.push(feature);\n                break;\n            case \"Tech\":\n                techs.push(feature);\n                break;\n        }\n    });\n</script>\n\n{#if !system.class}\n<EmptyBox\n    label={getLocalized(\"LA.npc.empty.label\")}\n    subLabel={getLocalized(\"LA.npc.empty.subLabel\")}\n/>\n{/if}\n{#if itemTypes.npc_feature.length}\n<div class=\"la-flexcol -widthfull\">\n    <Weapons \n        weapons={weapons}\n        {...props}\n    />\n    <TechAttack\n        techs={techs}\n        {...props}\n    />\n    <Reactions\n        reactions={reactions}\n        {...props}\n    />\n    <Systems \n        systems={systems}\n        {...props}\n    />\n    <Traits\n        traits={traits}\n        {...props}\n    />\n</div>\n{/if}","<script lang=\"ts\">\n    import type { TemplateProps } from \"@/interfaces/npc/TemplateProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import type { TooltipProps } from \"@/interfaces/actor/TooltipProps\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { CLICKABLE_HOVER } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        uuid,\n        name,\n        path,\n        editOption,\n\n        tooltipEnabled,\n        tooltipHeader,\n        tooltip,\n        tooltipDirection,\n        tooltipClass,\n        tooltipTheme,\n    }: TemplateProps & TooltipProps = $props();\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tip = $derived(TooltipFactory.buildTooltip(tooltip || getLocalized(\"LA.flow.tooltip\"), tooltipHeader));\n</script>\n\n<div class=\"\n        click-open ref set\"\n    data-uuid={uuid}\n>\n    <span class=\"-upper -fontsize4\">{name}</span>\n    <button type=\"button\" \n        class=\"mdi mdi-pencil -fontsize3 -positionabsolute\n            {editOption ? '' : '-displaynone'}\n            {qualityMode ? CLICKABLE_HOVER() : ''}\n            lancer-context-menu\"\n        data-path={path}\n        data-tooltip={tooltipEnabled ? tip : undefined }\n        data-tooltip-class={`${tooltipClass || \"clipped-bot la-tooltip\"} ${tooltipTheme}`}\n        data-tooltip-direction={tooltipDirection || 'DOWN'}\n\n        aria-label={getLocalized(\"LA.edit.label\")}\n    ></button>\n</div>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import HexButton from \"@/svelte/shared/button/HexButton.svelte\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    }: NPCSheetProps = $props();\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<!-- Floating HASE -->\n<div class=\"la-haseposition -positionrelative\">\n    <div class=\"la-hasegroup -positionabsolute -widthnone\">\n        <div class=\"la-hase la-flexcol -justifybetween -heightnone\">\n            <div class=\"la-flexrow -aligncenter\">\n                <HexButton\n                    text={getLocalized(\"LA.hull.short\")}\n                    value={system.hull}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.hull.tooltip\")}\n                    logText={getLocalized(\"LA.hull.tooltip\")}\n                    logging={true}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.RollStat}\n                    path={\"system.hull\"}\n\n                    outerStyle={[\"-hull\"]}\n                    innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                    buttonStyle={[\"-widthfull -heightfull -positionabsolute la-prmy-primary\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                    outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmall\"]}\n                    innerTextStyle={[\"-fontsize5 -lineheight13 la-prmy-header\", qualityMode ? \"-glow-prmy\" : \"\"]}\n                />\n            </div>\n            <div class=\"la-flexrow -aligncenter -pointerdisable\">\n                <div class=\"-agi\">&nbsp;</div>\n                <HexButton\n                    text={getLocalized(\"LA.agility.short\")}\n                    value={system.agi}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.agility.tooltip\")}\n                    logText={getLocalized(\"LA.agility.tooltip\")}\n                    logging={true}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.RollStat}\n                    path={\"system.agi\"}\n\n                    outerStyle={[\"-agi\"]}\n                    innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                    buttonStyle={[\"-widthfull -heightfull -positionabsolute la-prmy-primary\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                    outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmall\"]}\n                    innerTextStyle={[\"-fontsize5 -lineheight13 la-prmy-header\", qualityMode ? \"-glow-prmy\" : \"\"]}\n                />\n            </div>\n            <div class=\"la-flexrow -aligncenter\">\n                <HexButton\n                    text={getLocalized(\"LA.systems.short\")}\n                    value={system.sys}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.systems.tooltip\")}\n                    logText={getLocalized(\"LA.systems.tooltip\")}\n                    logging={true}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.RollStat}\n                    path={\"system.sys\"}\n\n                    outerStyle={[\"-sys\"]}\n                    innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                    buttonStyle={[\"-widthfull -heightfull -positionabsolute la-prmy-primary\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                    outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmall\"]}\n                    innerTextStyle={[\"-fontsize5 -lineheight13 la-prmy-header\", qualityMode ? \"-glow-prmy\" : \"\"]}\n                />\n            </div>\n            <div class=\"la-flexrow -aligncenter -pointerdisable\">\n                <div class=\"-eng\">&nbsp;</div>\n                <HexButton\n                    text={getLocalized(\"LA.engineering.short\")}\n                    value={system.eng}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.engineering.tooltip\")}\n                    logText={getLocalized(\"LA.engineering.tooltip\")}\n                    logging={true}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.RollStat}\n                    path={\"system.eng\"}\n\n                    outerStyle={[\"-eng\"]}\n                    innerStyle={[\"la-text-header -positionabsolute -divider -thickness1 la-prmy-header\"]}\n                    buttonStyle={[\"-widthfull -heightfull -positionabsolute la-prmy-primary\", qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                    outerTextStyle={[\"-widthfull -textaligncenter -fontface-stylized\", logographic ? \"-fontsizemediumer\" : \"-fontsizesmall\"]}\n                    innerTextStyle={[\"-fontsize5 -lineheight13 la-prmy-header\", qualityMode ? \"-glow-prmy\" : \"\"]}\n                />\n            </div>\n        </div>\n    </div>\n</div>","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import {\n        browseActorImage,\n        browseActorImageSync,\n        browseTokenImage,\n        getLocalized,\n        handleRelativeDataInput, logographicLanguage\n    } from \"@/scripts/helpers\";\n    import { getActorTokenSync, setActorTokenSync, setThemeOverride } from \"@/scripts/npc/settings\";\n    import { getAdvancedState, getTokenImageLock, setTokenImageLock } from \"@/scripts/store/advanced\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import StatComboShort from \"@/svelte/shared/StatComboShort.svelte\";\n    import HaseDisplay from \"@/svelte/npc/HaseDisplay.svelte\";\n    import AdvancedButton from \"@/svelte/shared/button/AdvancedButton.svelte\";\n    import ThemeOverrideButton from \"@/svelte/shared/button/ThemeOverrideButton.svelte\";\n    import ImageVideo from \"@/svelte/shared/ImageVideo.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LockImageButton from \"@/svelte/shared/button/LockImageButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n    }: NPCSheetProps = $derived(props);\n    let editingBurn = $state(false);\n    let editingShield = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const isInstanced = $derived(actor.parent && actor.type === \"npc\");\n    const themeOverride = $derived(getBrightness(getThemeKey(actor.uuid)) === 'light' ? 'la-text-primary' : 'la-text-text');\n    const tokenImageLocked = $derived(getTokenImageLock(actor.uuid));\n\n    const sizeTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.size.tooltip\"), `${getLocalized(\"LA.size.label\")} ${system.size}`));\n    const speedTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.speed.tooltip\"), `${getLocalized(\"LA.speed.label\")} ${system.speed}`));\n    const activateTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.activate.tooltip\"), `Activations ${system.activations}`));\n    const tierTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.npc.tier.tooltip\"), `Tier ${system.tier}`));\n    const setTierTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.tier.set.tooltip\"))\n    const rechargeTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.recharge.tooltip\"), getLocalized(\"LA.action.startofturn.label\"));\n    const notesEditTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.notes.edit.tooltip\"));\n    const notesTip = TooltipFactory.buildTooltip(getLocalized(\"LA.npc.notes.tooltip\"));\n    const notesContent = $derived(TooltipFactory.buildTooltip(system.notes, getLocalized(\"LA.npc.notes.label\")));\n    const shieldTip = TooltipFactory.buildTooltip(getLocalized(\"LA.overshield.tooltip\"));\n    const burnTip = TooltipFactory.buildTooltip(getLocalized(\"LA.burn.tooltip\"));\n    const tokenErrorTip = TooltipFactory.buildTooltip(getLocalized(\"LA.edit.image.token.error\"));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    onMount(() => {\n        setTokenImageLock(actor.uuid, getActorTokenSync(actor.uuid));\n    });\n    \n    function handleShowNotes(event: MouseEvent & { currentTarget: EventTarget & HTMLElement })\n    {\n        event.stopPropagation();\n        TooltipFactory.renderTooltip(\n            event, \n            { \n                html: notesContent,\n                direction: TooltipDirection.RIGHT,\n                locked: true,\n            } \n        );\n    }\n\n    function handleEditToken(event: MouseEvent & { currentTarget: EventTarget & HTMLElement })\n    {\n        event.stopPropagation();\n        \n        if (tokenImageLocked)\n            browseActorImageSync(event, actor);\n        else\n            browseTokenImage(event, actor);\n    }\n</script>\n\n<div class=\"la-bckg-background la-shadow -medium -inset -widthfull -heightfull\n        {qualityMode ? 'la-bg-scroll' : 'la-bg'}\"\n>\n    <div class=\"la-flexrow la-dropshadow -justifyevenly\">\n    <!-- Left Side -->\n        <div class=\"la-flexcol -gap1\">\n            <!-- Tier Options -->\n            <div class=\"la-flexrow -height4 \">\n                <div class=\"\">\n                    <button type=\"button\"\n                        class=\"la-bckg-secondary -width4\n                            clicker-minus-button input-update\"\n                        data-tooltip={tooltipEnabled ? setTierTip : undefined}\n                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                        data-tooltip-direction={\"UP\"}\n                        aria-label={getLocalized(\"LA.subtract.label\")}\n                    >-</button><!--\n                ---><input\n                        class=\"-height4 la-shadow -medium -inset la-text-text\n                            lancer-stat minor\"\n                        type={\"number\"}\n                        data-dtype={\"Number\"}\n                        value={`${system.tier}`}\n                        name={`system.tier`}\n                        data-tooltip={tooltipEnabled ? setTierTip : undefined}\n                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                        data-tooltip-direction={\"UP\"}\n                    /><!--\n                ---><button type=\"button\"\n                        class=\"la-bckg-secondary -width4\n                            clicker-plus-button input-update\"\n                        data-tooltip={tooltipEnabled ? setTierTip : undefined}\n                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                        data-tooltip-direction={\"UP\"}\n                        aria-label={getLocalized(\"LA.add.label\")}\n                    >+</button>\n                </div>\n            </div>\n            <div class=\"la-flexrow -widthfull -heightfull\">\n                <!-- Left Side Floating Stats -->\n                <div class=\"la-stat__island -positionrelative la-dropshadow\">\n                    <div class=\"la-flexcol -positionabsolute -top0 -left0 -fontsize11\">\n                        <i class=\"cci cci-npc-tier-{system.tier} {themeOverride} la-outl-shadow\"\n                            data-tooltip={tooltipEnabled ? tierTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n                    {#if system.size < 1}\n                        <i class=\"cci cci-size-half {themeOverride} la-outl-shadow\"\n                            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n                    {:else}\n                        <i class=\"cci cci-size-{system.size} {themeOverride} la-outl-shadow\"\n                            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n                    {/if}\n                        <div class=\"la-flexrow\" \n                            data-tooltip={tooltipEnabled ? speedTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.RIGHT}>\n                            <i class=\"mdi mdi-arrow-right-bold-hexagon-outline {themeOverride} la-outl-shadow -fontsize8\"></i>\n                            <span class=\"{themeOverride} la-outl-shadow -fontsize7 -bold\">{system.speed}</span>\n                        </div>\n                        <div class=\"la-flexrow -aligncenter\" \n                            data-tooltip={tooltipEnabled ? activateTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.RIGHT}>\n                            <i class=\"cci cci-activate {themeOverride} la-outl-shadow -fontsize8\"></i>\n                            <span class=\"{themeOverride} la-outl-shadow -fontsize7 -bold\">{system.activations}</span>\n                        </div>\n                        <div class=\"la-recharge -lineheight5 -width8 -height8 la-prmy-primary\n                                {qualityMode ? '-glow-prmy-hover' : ''}\"\n                        >\n                            <button type=\"button\"\n                                class=\"mdi mdi-refresh-circle la-text-secondary -fontsize8\n                                    charge-macro\"\n                                data-tooltip={tooltipEnabled ? rechargeTip : undefined}\n                                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                data-tooltip-direction={TooltipDirection.RIGHT}\n                                aria-label={getLocalized(\"LA.npc.recharge.tooltip\")}\n                            >\n                            </button>\n                        </div>\n                    </div>\n                </div>\n                <!-- Actor Image -->\n                <div class=\"la-npc__img -aligncontentcenter\n                        ref set\"\n                    data-uuid={actor.uuid}\n                >\n                    <ImageVideo\n                        actor={actor}\n                        editDisabled={isInstanced}\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        onPointerClick={handleEditToken}\n                    />\n                </div>\n                <HaseDisplay {...props} />\n            </div>\n        </div>\n        <!-- Right Side -->\n        <div class=\"la-flexrow -padding1-r -fontface-stylized\">\n            <div class=\"la-flexcol -gap1\">\n                <div class=\"la-flexrow -height4 -justifybetween -widthfull\">\n                    <!-- Advanced options, theme override, notes, etc -->\n                    <div class=\"la-flexrow -gap1\">\n                        <AdvancedButton\n                            uuid={actor.uuid}\n                            style={[\"-lineheight5 la-prmy-primary\",\n                                qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                            iconStyle={[\"-fontsize7\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                        />\n                    {#if advancedOptions && !isInstanced}\n                        <LockImageButton\n                            style=\"-fontsize4 la-text-text la-prmy-primary\n                                {qualityMode ? '-glow-prmy-hover' : ''}\"\n                            actor={actor}\n                            setState={setActorTokenSync}\n                            tooltipEnabled={tooltipEnabled}\n                        />\n                    {/if}\n                    {#if !isInstanced}\n                        {#if !tokenImageLocked}\n                            <GlyphButton\n                                flowClass={FlowClass.None}\n                                style={[\"mdi mdi-image-edit -fontsize4 la-text-text la-prmy-primary\",\n                                    qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                                onClick={event => browseActorImage(event, actor)}\n                                tooltipEnabled={tooltipEnabled}\n                                tooltipTheme={theme}\n                                tooltip={getLocalized(\"LA.edit.image.actor.tooltip\")}\n                                tooltipDirection={TooltipDirection.UP}\n                            />\n                        {/if}\n                    {:else}\n                        <i class=\"mdi mdi-creation la-text-text -fontsize4 la-prmy-warning\n                                {qualityMode ? '-glow-prmy' : ''}\"\n                            data-tooltip={tooltipEnabled ? tokenErrorTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.DOWN}></i>\n                    {/if}\n                    {#if advancedOptions}\n                        <ThemeOverrideButton\n                            uuid={actor.uuid}\n                            style={[\"-lineheight5\"]}\n                            iconStyle={[\"-fontsize4\"]}\n                            setOverride={setThemeOverride}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                        />\n                    {/if}\n                    </div>\n                    <!-- Notes -->\n                    <div class=\"la-flexrow -gap1\">\n                        <button type=\"button\"\n                            class=\"mdi mdi-note-edit -fontsize4 la-prmy-primary\n                                {qualityMode ? '-glow-prmy-hover' : ''}\n                                {advancedOptions ? '' : '-visibilityhidden'}\n                                popout-text-edit-button\"\n                            data-tooltip={notesEditTip}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.UP}\n                            aria-label={getLocalized(\"LA.npc.notes.tooltip\")}\n                            data-path={`system.notes`}\n                        >\n                        </button>\n                        <button type=\"button\"\n                            class=\"mdi mdi-information -fontsize4 la-prmy-primary\n                                {qualityMode ? '-glow-prmy-hover' : ''}\"\n                            data-tooltip={notesTip}\n                            data-tooltip-class=\"clipped-bot la-tooltip -scrollbar {theme}\"\n                            data-tooltip-direction={TooltipDirection.UP}\n                            aria-label={getLocalized(\"LA.npc.notes.label\")}\n                            onclick={(event) => handleShowNotes(event)}\n                        >\n                        </button>\n                    </div>\n                </div>\n                <div class=\"-flex1\">\n                    <!-- Mech Stats 1 -->\n                    <div class=\"la-stats la-flexrow -justifyevenly\">\n                        <StatComboShort\n                            icon={\"cci cci-role-defender\"}\n                            label={getLocalized(\"LA.armor.short\")}\n                            value={system.armor}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.armor.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n                            />\n                        <StatComboShort\n                            icon={\"cci cci-evasion\"}\n                            label={getLocalized(\"LA.evasion.short\")}\n                            value={system.evasion}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.evasion.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-edef\"}\n                            label={getLocalized(\"LA.edefense.short\")}\n                            value={system.edef}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.edefense.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n                        />\n                    </div>\n                    <!-- Mech Bars -->\n                    <div class=\"la-damage -margin0-lr -margin2-tb\">\n                        <div class=\"la-flexrow -gap2\">\n                            <div class=\"la-visuals -flex5\">\n                                <!-- HP, SHIELD (BAR) -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.hitpoint.short\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.hp.value\"\n                                    currentValue={system.hp.value}\n                                    maxValue={system.hp.max}\n                                    barStyle={[\"la-bckg-bar-health\"]}\n                                    barEditStyle={[\"la-prmy-bar-health\"]}\n                                    currentValueSecondary={system.overshield.value}\n                                    maxValueSecondary={system.hp.max}\n                                    barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n                                    barEditStyleSecondary={[\"la-prmy-bar-shield\"]}\n                                    textStyle={[\"la-text-text\"]}\n                                    clipPath={\"clipped\"}\n                                    editSecondary={editingShield}\n                                    \n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.hitpoint.tooltip\")}\n                                />\n                                <div class=\"la-spacer -tiny\"></div>\n                                <!-- STRUCTURE -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.structure.label\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.structure.value\"\n                                    currentValue={system.structure.value}\n                                    maxValue={system.structure.max}\n                                    textStyle={[\"la-text-text\"]}\n                                    barStyle={[\"la-bckg-bar-structure\"]}\n                                    barEditStyle={[\"la-prmy-bar-structure\"]}\n                                    clipPath={\"clipped-alt\"}\n\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.structure.tooltip\")}\n                                />\n                            </div>\n                            <!-- SHIELD (VALUE) -->\n                            <div class=\"la-flexcol -divider la-prmy-bar-shield -flex0 -textaligncenter la-prmy-bar-shield\n                                {qualityMode ? '-glow-prmy' : ''}\n                                {logographic ? '-width4ch' : '-width3ch'}\"\n                            >\n                                <input type=\"text\"\n                                    class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                                    name=\"system.overshield.value\"\n                                    data-dtype=\"Number\"\n                                    value=\"{system.overshield.value}\"\n                                    onfocus={(event) => {event.currentTarget.select(); editingShield = true;}}\n                                    onblur={() => {editingShield = false;}}\n                                    onchange={(event) => handleRelativeDataInput(event, system.overshield.value)}\n                                >\n                                <span class=\"la-damage__span -fontsizesmall -heightfull -lineheight3\n                                        {logographic ? '-fontsizemedium' : ''}\"\n                                    data-tooltip={tooltipEnabled ? shieldTip : undefined}\n                                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                    data-tooltip-direction=\"LEFT\"\n                                ><!--\n                                --->{getLocalized(\"LA.overshield.short\")}<!--\n                            ---></span>\n                            </div>\n                        </div>\n\n                        <div class=\"la-spacer -large\"></div>\n\n                        <div class=\"la-flexrow -gap2\">\n                            <div class=\"la-visuals -flex5\">\n                                <!-- HEAT -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.heat.label\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.heat.value\"\n                                    currentValue={system.heat.value}\n                                    maxValue={system.heat.max}\n                                    barStyle={[\"la-bckg-bar-heat\"]}\n                                    barEditStyle={[\"la-prmy-bar-heat\"]}\n                                    currentValueSecondary={system.burn}\n                                    maxValueSecondary={system.heat.max}\n                                    barStyleSecondary={[\"la-bckg-bar-burn -burn\"]}\n                                    barEditStyleSecondary={[\"la-prmy-bar-burn\"]}\n                                    textStyle={[\"la-text-text\"]}\n                                    clipPath={\"clipped\"}\n                                    editSecondary={editingBurn}\n\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.heat.tooltip\")}\n                                />\n                                <div class=\"la-spacer -tiny\"></div>\n                                <!-- STRESS, BURN (BAR) -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.stress.label\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.stress.value\"\n                                    currentValue={system.stress.value}\n                                    maxValue={system.stress.max}\n                                    textStyle={[\"la-text-text\"]}\n                                    barStyle={[\"la-bckg-bar-stress\"]}\n                                    barEditStyle={[\"la-prmy-bar-stress\"]}\n                                    clipPath={\"clipped-alt\"}\n\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.stress.tooltip\")}\n                                />\n                            </div>\n                            <!-- BURN (VALUE) -->\n                            <div class=\"la-flexcol -divider la-prmy-bar-burn -flex0 -textaligncenter la-prmy-bar-burn\n                                    {qualityMode ? '-glow-prmy' : ''}\n                                    {logographic ? '-width4ch' : '-width3ch'}\"\n                            >\n                                <input type=\"text\"\n                                    class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                                    name=\"system.burn\"\n                                    data-dtype=\"Number\"\n                                    value=\"{system.burn}\"\n                                    onfocus={(event) => {event.currentTarget.select(); editingBurn = true;}}\n                                    onblur={() => {editingBurn = false;}}\n                                    onchange={(event) => handleRelativeDataInput(event, system.burn)}\n                                >\n                                <span class=\"la-damage__span -heightfull -lineheight3\n                                        {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                                    data-tooltip={tooltipEnabled ? burnTip : undefined}\n                                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                    data-tooltip-direction=\"LEFT\"\n                                ><!--\n                                --->{getLocalized(\"LA.burn.short\")}<!--\n                            ---></span>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- Mech Stats 2 -->\n                    <div class=\"la-stats la-flexrow -justifyevenly\">\n                        <StatComboShort\n                            icon={\"cci cci-tech-full\"}\n                            label={getLocalized(\"LA.tattack.short\")}\n                            value={system.sys}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized([\"LA.tattack.tooltip\", \"LA.tattack.append.tooltip.npc\"])}\n                            tooltipDirection={TooltipDirection.LEFT}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-save\"}\n                            label={getLocalized(\"LA.save.short\")}\n                            value={system.save}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.save.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-sensor\"}\n                            label={getLocalized(\"LA.sensor.short\")}\n                            value={system.sensor_range}\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.sensor.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n                        />\n                    </div>\n                    <div class=\"la-spacer -large\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import Template from \"@/svelte/npc/Template.svelte\";\n    import Stats from \"@/svelte/npc/Stats.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n        itemTypes,\n    }: NPCSheetProps = $derived(props);\n    setActorContext(actor);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const templates = $derived(itemTypes.npc_template);\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<div class=\"la-flexcol -widthfull -heightfull\">\n    <!-- Name & Templates -->\n    <div class=\"la-bckg-primary -widthfull -height15\n            {qualityMode ? 'la-bg-scroll-alt' : 'la-bg-alt'}\"\n    >\n        <div class=\"la-flexcol -widthfull -heightfull -padding1-lr\">\n            <input type=\"text\" \n                class=\"la-actorname__input la-text-header -upper -fontsize6 -textaligncenter -heightfull\"\n                name=\"name\" \n                value=\"{actor.name}\" \n                placeholder={getLocalized(\"LA.namePlaceholder\")}\n            />\n            <div class=\"la-flexrow -gap5 la-text-header -widthfull -textaligncenter -padding0-tb -fontface-stylized\">\n            {#if templates.length}\n            {#each templates as template, index}\n                <Template\n                    name={template.name}\n                    uuid={template.uuid}\n                    path={`itemTypes.npc_template.${index}`}\n                    editOption={advancedOptions}\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.edit.tooltip\")}\n                />\n            {/each}\n            {/if}\n            {#if system.class}\n                <Template\n                    name={system.class.name}\n                    uuid={system.class.uuid}\n                    path={`system.class`}\n                    editOption={advancedOptions}\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.edit.tooltip\")}\n                />\n            {/if}\n            </div>\n        </div>\n    </div>\n\n    <Stats {...props} />\n</div>","<script lang=\"ts\">\n    import { ActionLogCollapsePrefix } from \"@/enums/ActionLogCollapsePrefix\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import { getNPCSheetLogActionDontSaveCollapse, getNPCSheetLogActionStartCollapsed } from \"@/scripts/npc/settings\";\n    import ActionLog from \"@/svelte/shared/ActionLog.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n    }: NPCSheetProps = $derived(props);\n    setActorContext(actor);\n\n    const actionLogSaveCollapse = getNPCSheetLogActionDontSaveCollapse();\n    const actionLogStartCollapsed = getNPCSheetLogActionStartCollapsed();\n</script>\n\n<ActionLog\n    uuid={actor.uuid}\n    dontSaveCollapse={actionLogSaveCollapse}\n    startCollapsed={actionLogStartCollapsed}\n    collapsePrefix={ActionLogCollapsePrefix.NPCSheet}\n/>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { formatString, getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled, getSidebarExecutables, setSidebarExecutables } from \"@/scripts/npc/settings\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import ActiveEffects from \"@/svelte/shared/ActiveEffects.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import FlowButton, { FLOW_BUTTON_DEFAULT } from \"@/svelte/shared/button/FlowButton.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import MacroDropBox from '@/svelte/shared/dragdrop/MacroDropBox.svelte';\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n    import { getCustomFlagPath, getCustomFlags, handleCustomFlagValueInput } from \"@/scripts/flags\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n\n    const props = $props();\n    const {\n        actor,\n    }: NPCSheetProps = $derived(props);\n    setActorContext(actor);\n    let collapseAllButtonHover = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const sidebarExes = $derived(getSidebarExecutables(actor.uuid));\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const activeEffectsCollID = $derived(`${actor.uuid}.status.activeEffects`);\n    const utilitiesCollID = $derived(`${actor.uuid}.status.utilities`);\n    const macrosCollID = $derived(`${actor.uuid}.status.macros`);\n    const customFlagsCollID = $derived(`${actor.uuid}.status.customFlags`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlagsEmptyTipMain = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.empty.tooltip.0\")));\n    const customFlagsEmptyTipAlt = $derived(TooltipFactory.buildTooltip(formatString(getLocalized(\"LA.tab.custom.empty.tooltip.1\"), getLocalized(\"LA.tab.custom.flag.sidebarToggle.npc.label\"))));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.NPC));\n    const visibleCustomFlags = $derived(Object.values(customFlags).filter(flag => flag.showInSidebar));\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={activeEffectsCollID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n<HeaderMain \n    text={getLocalized(\"LA.tab.status.effects.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-pilot\"]}\n\n    collapseID={activeEffectsCollID}\n    startCollapsed={false}\n\n    headerContent={headerOptions}\n>\n    <ActiveEffects { ...props }\n        tooltipEnabled={tooltipEnabled}\n        logging={true}\n    />\n</HeaderMain>\n\n<HeaderMain \n    text={getLocalized(\"LA.npc.utilities.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-pilot\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={utilitiesCollID}\n    startCollapsed={false}\n>\n    <div class=\"la-flexcol -gap0 -widthfull\">\n        <FlowButton \n            style={[\"clipped-alt la-bckg-header-anti -padding0 -widthfull -overflowhidden -lineheight3\"]}\n            text={getLocalized(\"LA.npc.recharge.label\")}\n            \n            flowClass={FlowClass.RechargeFeatures}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.UP}\n            tooltip={getLocalized(\"LA.npc.recharge.tooltip\")}\n            tooltipHeader={getLocalized(\"LA.action.startofturn.label\")}\n        />\n        <div class=\"la-flexrow -wrapwrap -widthfull -gap0\">\n            <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                <FlowButton \n                    style={[\"clipped-alt la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                    text={getLocalized(\"LA.flow.rollAttack.label\")}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.Standard}\n                    flowType={\"BasicAttack\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltip={getLocalized(\"LA.flow.rollAttack.tooltip\")}\n                />\n                <FlowButton \n                    style={[\"clipped-alt la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                    text={getLocalized(\"LA.flow.rollDamage.label\")}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.Standard}\n                    flowType={\"Damage\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltip={getLocalized(\"LA.flow.rollDamage.tooltip\")}\n                />\n            </div>\n            <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                <FlowButton \n                    style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                    text={getLocalized(\"LA.flow.rollTechAttack.label\")}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.Standard}\n                    flowType={\"TechAttack\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltip={getLocalized(\"LA.flow.rollTechAttack.tooltip\")}\n                />\n                <FlowButton\n                    style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                    text={getLocalized(\"LA.flow.extinguish.label\")}\n\n                    uuid={actor.uuid}\n                    flowClass={FlowClass.Standard}\n                    flowType={\"Burn\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltipHeader={getLocalized(\"LA.action.endofturn.label\")}\n                    tooltip={getLocalized(\"LA.flow.extinguish.tooltip\")}\n                />\n            </div>\n        </div>\n    </div>\n</HeaderMain>\n\n<HeaderMain\n    text={getLocalized(\"LA.tab.custom.subLabel\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-pilot\"]}\n\n    collapseID={customFlagsCollID}\n    startCollapsed={false}\n>\n    {#if visibleCustomFlags.length}\n    <div class=\"la-flags la-flexcol -gap1 -widthfull\">\n    {#snippet createFractionBar(data: CustomFlag)}\n    <div class=\"la-flexcol -widthfull -fontface-stylized\">\n        <div class=\"la-flexrow -widthfull\">\n            <div class=\"-width10\"></div>\n            <div class=\"-flex5\" style=\"--la-flag-custom: {data.color};\">\n                <StatusBar\n                    name={\"\"}\n                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                    dataName={getCustomFlagPath(CustomFlagKey.NPC, data.id, \"value\")}\n                    currentValue={data.content.value}\n                    maxValue={data.content.max}\n                    barStyle={[\"la-bckg-custom\"]}\n                    barEditStyle={[\"la-bckg-custom\"]}\n                    textStyle={[\"la-text-text\"]}\n                    clipPath={\"clipped-alt\"}\n                />\n            </div>\n            <div class=\"-width10\"></div>\n        </div>\n        <span class=\"-fontsizemedium -upper\n                {logographic ? '' : '-bold'}\"\n            data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.UP}\n        >{data.name}</span>\n    </div>\n    {/snippet}\n\n    {#snippet createValueGlyph(data: CustomFlag)}\n    <div class=\"-widthfull\">\n        <div class=\"la-shortstat la-flexrow la-text-text -fontsize6\">\n            <i class=\"{data.icon ? data.icon : \"mdi mdi-abacus\"} -alignselfcenter\"></i>\n            <div class=\"la-flexcol -divider -upper -fontface-stylized -fontsizemedium la-prmy-accent -textaligncenter\n                    {logographic ? '' : '-bold'}\"\n                data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.UP}\n            >\n                <input class=\"la-top__input -widthfull -medium -inset la-text-text -fontface-neutral -height4\"\n                    type=\"text\"\n                    value={data.content.value}\n                    onfocus={event => event.currentTarget.select()}\n                    onchange={event => handleCustomFlagValueInput(event, actor, CustomFlagKey.NPC, data)}\n                >\n                <span class=\"la-bottom__span\">{data.name}</span>\n            </div>\n        </div>\n    </div>\n    {/snippet}\n\n    {#each visibleCustomFlags as flag (flag.id)}\n        {#if flag.contentType === CustomFlagContentType.Fraction}\n            {@render createFractionBar(flag)}\n        {:else}\n            {@render createValueGlyph(flag)}\n        {/if}\n    {/each}\n    </div>\n    {:else}\n    <details class=\"la-details -widthfull la-flexcol\">\n        <summary class=\"la-details__summary la-flexrow clipped-bot-alt la-bckg-repcap la-text-header -padding1-l -widthfull\"\n            data-tooltip={tooltipEnabled\n                ? advancedOptions ? customFlagsEmptyTipAlt : customFlagsEmptyTipMain\n                : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.UP}\n        >\n            <span class=\"la-left la-flexrow\">\n                <i class=\"la-icon mdi mdi-card-off-outline -fontsize4 -margin1-lr\"></i>\n                <span class=\"la-name__span -fontsize4\">\n                    {getLocalized(\"LA.tab.custom.empty.label\")}\n                </span>\n            </span>\n        </summary>\n    </details>\n    {/if}\n</HeaderMain>\n\n<HeaderMain\n    text={getLocalized(\"LA.npc.macros.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-pilot\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-pilot\"]}\n\n    collapseID={macrosCollID}\n    startCollapsed={false}\n>\n    <MacroDropBox\n        uuid={actor.uuid}\n        getExes={sidebarExes}\n        setExes={setSidebarExecutables}\n        hintDropArea={false}\n        allowDrop={advancedOptions}\n        buttonStyle={[FLOW_BUTTON_DEFAULT(), advancedOptions ? \"-margin8-l\" : \"\"]}\n        innerStyle={[\"-gap0\"]}\n        tooltipEnabled={tooltipEnabled}\n    />\n</HeaderMain>","<script lang=\"ts\">\n    import type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\n    import { setActorContext } from \"@/scripts/context\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { LADataType } from \"@/enums/LADataType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { addCustomFlag, deleteCustomFlag, getCustomFlagPath, getCustomFlags, reorderCustomFlags, updateCustomFlag } from \"@/scripts/flags\";\n    import { getEnricher } from \"@/scripts/enrichers\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getCustomFlagsSortable, setCustomFlagsSortable } from \"@/scripts/store/advanced\";\n    import DragDropHandle from \"@/svelte/shared/dragdrop/DragDropHandle.svelte\";\n\n    const {\n        actor,\n    }: NPCSheetProps = $props();\n    setActorContext(actor);\n\n    let component: HTMLElement | null = $state(null);\n    let deleteButtonHover = $state(false);\n    let addButtonHover = $state(false);\n    let sortButtonHover = $state(false);\n\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.NPC));\n    const flagEntries = $derived(Object.entries(customFlags));\n    const sortable = $derived(getCustomFlagsSortable(actor.uuid));\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const refCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.ref.tooltip\"));\n    const enrichCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"));\n\n    function handleAddCustomFlag(_event: Event, actor: any)\n    {\n        addCustomFlag(actor, CustomFlagKey.NPC);\n    }\n\n    function handleDeleteCustomFlag(event: Event, actor: any, id: string)\n    {\n        event.stopPropagation();\n        deleteCustomFlag(actor, CustomFlagKey.NPC, id);\n    }\n\n    function handleUpdateCustomFlag(actor: any, id: string, changes: Partial<CustomFlag>)\n    {\n        updateCustomFlag(actor, CustomFlagKey.NPC, id, changes);\n    }\n\n    function handleReorderCustomFlag(_event: DragEvent, dropData: { type: string, index: number }, thisData: { type: string, index: number })\n    {\n        if (dropData.type !== LADataType.Sorting)\n            return;\n        reorderCustomFlags(actor, CustomFlagKey.NPC, dropData.index, thisData.index);\n    }\n\n    function getTypeIcon(type: string)\n    {\n        return type == CustomFlagContentType.Fraction ? 'mdi-fraction-one-half' : 'mdi-numeric'\n    }\n</script>\n\n{#snippet headerOptions()}\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\",\n                sortable ? \" mdi mdi-sort-variant-lock-open \" : \" mdi mdi-sort-variant-lock \"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logging={true}\n\n        onClick={() => setCustomFlagsSortable(actor.uuid, !sortable)}\n        onPointerEnter={() => {sortButtonHover = true;} }\n        onPointerLeave={() => {sortButtonHover = false;} }\n    ></GlyphButton>\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-plus-thick la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logging={true}\n\n        onClick={event => handleAddCustomFlag(event, actor)}\n        onPointerEnter={() => {addButtonHover = true;} }\n        onPointerLeave={() => {addButtonHover = false;} }\n    ></GlyphButton>\n{/snippet}\n\n{#snippet headerSecondaryInnerLeftOptions()}\n    <i\n        class=\"mdi mdi-code-json -padding0-lr\"\n    ></i>\n{/snippet}\n\n<div class=\"la-custom__list la-flexcol -widthfull\">\n    <HeaderMain\n        text={getLocalized(\"LA.tab.custom.subLabel\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-brdr-transparent clipped-bot-alt\"]}\n        extensionTextFunction={() => {\n            if (addButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.add.extension\")}`;\n            if (sortButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.sort.extension\")}`;\n            return undefined;\n        }}\n\n        headerContent={headerOptions}\n    >\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\"\n            bind:this={component}\n        >\n        {#each flagEntries as [id, flag], index (id)}\n            {#snippet headerSecondaryLeftOptions()}\n                <i\n                    class=\"mdi -padding0-lr\n                {getTypeIcon(flag.contentType)}\"\n                ></i>\n            {/snippet}\n\n            {#snippet headerSecondaryRightOptions()}\n                <GlyphButton type=\"button\"\n                    flowClass={FlowClass.None}\n                    style={[\"mdi mdi-close-thick la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                    qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logText={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logging={true}\n\n                    onClick={event => handleDeleteCustomFlag(event, actor, id)}\n                    onPointerEnter={() => {deleteButtonHover = true;} }\n                    onPointerLeave={() => {deleteButtonHover = false;} }\n                ></GlyphButton>\n            {/snippet}\n\n            <DragDropHandle\n                style={[sortable ? \"-padding5-l\" : \"\"]}\n                iconStyle={[sortable ? \"\" : \"-displaynone\"]}\n                index={index}\n                root={component}\n                data={{ type: LADataType.Sorting, index }}\n                onDrop={handleReorderCustomFlag}\n                deleteDisabled={true}\n                logging={false}\n                disabled={!sortable}\n            >\n            <HeaderSecondary\n                text={flag.name || getLocalized(\"LA.tab.custom.flag.name.label\")}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                borderStyle={[\"la-brdr-pilot\"]}\n                extensionTextFunction={() => {\n                    if (deleteButtonHover)\n                        return `--${getLocalized(\"LA.tab.custom.delete.extension\")}`;\n                    return undefined;\n                }}\n\n                collapseID={`custom.${id}`}\n                startCollapsed={false}\n\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n                <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.name.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.name}\n                            placeholder={getLocalized(\"LA.namePlaceholder\")}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { name: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.contentType.label\")}\n                    >\n                        <select\n                            class=\"la-customvalue__select la-text-text -bordersround -small la-brdr-repcap -padding0-lr -widthfull\"\n                            onchange={event => handleUpdateCustomFlag(actor, id, { contentType: (event.target as HTMLSelectElement).value as CustomFlagContentType })}\n                        >\n                            <option value={CustomFlagContentType.Value}\n                                selected={flag.contentType === CustomFlagContentType.Value}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.value.label\")}</option>\n                            <option value={CustomFlagContentType.Fraction}\n                                selected={flag.contentType === CustomFlagContentType.Fraction}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.fraction.label\")}</option>\n                        </select>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.content.label\")}\n                    >\n                        <div class=\"la-flexrow -gap1\">\n                            <div class=\"la-flexcol -gap0\">\n                                <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                <input type=\"number\"\n                                    class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                    value={flag.content.value}\n                                    onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, value: Number((event.target as HTMLInputElement).value) } })}\n                                    onfocus={event => event.currentTarget.select()}\n                                />\n                            </div>\n                            {#if flag.contentType === CustomFlagContentType.Fraction}\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.max}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, max: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.min}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, min: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                            {/if}\n                        </div>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.sidebarToggle.npc.label\")}\n                    >\n                        <input type=\"checkbox\"\n                            class=\"-widthfull\"\n                            checked={flag.showInSidebar}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { showInSidebar: (event.target as HTMLInputElement).checked })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.color.label\")}\n                    >\n                        <input type=\"color\"\n                            class=\"la-customvalue__input -widthfull\"\n                            value={flag.color}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { color: (event.target as HTMLInputElement).value })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.icon.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.icon}\n                            placeholder={\"mdi mdi-abacus\"}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { icon: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.tooltip.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.tooltip}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { tooltip: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <HeaderSecondary\n                        text={getLocalized(\"LA.tab.custom.flag.assist.label\")}\n                        headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                        textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                        borderStyle={[\"la-brdr-pilot\"]}\n\n                        collapseID={`custom.${id}.assist`}\n                        startCollapsed={false}\n\n                        contentLeft={headerSecondaryInnerLeftOptions}\n                    >\n                        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.ref.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getCustomFlagPath(CustomFlagKey.NPC, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.NPC, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.NPC, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.enricher.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getEnricher(actor.uuid, CustomFlagKey.NPC, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.NPC, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.NPC, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                        </div>\n                    </HeaderSecondary>\n                </div>\n            </HeaderSecondary>\n            </DragDropHandle>\n        {/each}\n        </div>\n    </HeaderMain>\n</div>\n","<!--\n(#14) - Basically hijacking the statically mounted nav element in the `.hbs` file to be able to hide/display\nthe given element reactively. Expected to be removed in an update to the Lancer system that will migrate sheets to AppV2\n-->\n<script lang=\"ts\">\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n\n    type CustomToggleProps = {\n        actor: any;\n        button: HTMLElement;\n    };\n\n    const {\n        actor, button\n    } : CustomToggleProps = $props();\n\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n\n    $effect(() => {\n        button?.classList.toggle('-displaynone', !advancedOptions);\n    });\n</script>\n","import { mount, flushSync } from \"svelte\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport type { NPCSheetProps } from \"@/interfaces/npc/NPCSheetProps\";\nimport { dataMap, getLocalized, isValidImageContainer } from \"@/scripts/helpers\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\nimport { getActorTokenSync, getNPCSheetHeight, getNPCSheetWidth } from \"@/scripts/npc/settings\";\nimport { applyThemeTo, getCSSSystemTheme } from \"@/scripts/theme\";\nimport { getThemeOverride } from '@/scripts/npc/settings';\nimport { unregisterTrackedHooks } from '@/scripts/store/hooks';\nimport { getSelectedTokenImage, setSelectedTokenImage } from \"@/scripts/store/advanced\";\nimport { getThemeKey, setThemeKey } from \"@/scripts/store/theme\";\nimport Loadout from \"@/svelte/npc/Loadout.svelte\";\nimport Header from \"@/svelte/npc/Header.svelte\";\nimport Activity from '@/svelte/npc/Activity.svelte';\nimport Status from \"@/svelte/npc/Status.svelte\";\nimport Custom from \"@/svelte/npc/Custom.svelte\";\nimport CustomToggle from \"@/svelte/npc/CustomToggle.svelte\";\n\nexport class NPCSheetBase\n{\n    static get mergeOptions()\n    {\n        return {\n            classes: [\n                \"la-common la-override__header clipped-alt\",\n                \"lancer sheet actor npc\", getCSSSystemTheme()\n            ],\n            template: TEMPLATE_PATHS.npcSheetSvelte,\n            width: getNPCSheetWidth() || 500,\n            height: getNPCSheetHeight() || 800,\n            tabs: [\n                {\n                    navSelector: \".la-tabs\",\n                    contentSelector: \".la-content\",\n                    initial: \"loadout\"\n                },\n            ],\n            scrollY: [\".la-SVELTE-LOADOUT\", \".la-SVELTE-STATUS\", \".la-SVELTE-CUSTOM\", \".la-SVELTE-ACTIVITY\"],\n        }\n    }\n\n    static setupSheet()\n    {\n        const LANPCSheet = class extends ((game.lancer.applications as any).LancerNPCSheet as typeof  foundry.appv1.sheets.ActorSheet)\n        {\n            constructor(...args: [any])\n            {\n                super(...args);\n                \n                Hooks.on(\"laOverrideTheme\", (uuid: string, theme: string) =>\n                {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    setThemeKey(this.actor.uuid!, theme);\n                    this.render();\n                })\n                \n                Hooks.on(\"updateActor\", (document: any, changes: any) => {\n                    if (document.uuid === this.actor.uuid! && \n                        changes.prototypeToken?.texture?.src && \n                        getActorTokenSync(this.actor.uuid!) // Actor-token image sync enabled\n                    )\n                    {\n                        setSelectedTokenImage(this.actor.uuid!, changes.prototypeToken.texture.src);\n                        if (isValidImageContainer(changes.prototypeToken.texture.src))\n                            this.actor.update({\"img\": changes.prototypeToken.texture.src});\n                    }\n                });\n\n                // TODO: Until a Lancer settings/theme hook is available, \n                // this blasts on every single time the settings close\n                Hooks.on(\"closeSettingsConfig\", () =>\n                {\n                    this.render();\n                });\n            }\n\n            static override get defaultOptions(): ActorSheet.Options\n            {\n                return foundry.utils.mergeObject(super.defaultOptions, NPCSheetBase.mergeOptions);\n            }\n\n            override async getData(): Promise<NPCSheetProps>\n            {\n                let data = await super.getData() as any;\n                return data as NPCSheetProps;\n            }\n\n            // (#10)\n            // @ts-expect-error We're overriding a function in LancerActorSheet\n            override _propagateData(formData: any)\n            {\n                // @ts-expect-error We're overriding a function in LancerActorSheet\n                super._propagateData(formData);\n                \n                delete formData[\"prototypeToken.texture.src\"]; // GO AWAY MYSTERY MAN AAAAAAA\n                const updateToken = getSelectedTokenImage(this.actor.uuid!); // (#12)\n                if (updateToken)\n                {\n                    formData[\"prototypeToken.texture.src\"] = updateToken;\n                }\n            }\n\n            override async _injectHTML(html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._injectHTML(html);\n                setThemeKey(this.actor.uuid!, getThemeOverride(this.actor.uuid!));\n                applyThemeTo(this.element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n            }\n\n            override async _replaceHTML(element: JQuery<HTMLElement>, html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._replaceHTML(element, html);\n                applyThemeTo(element, getThemeKey(this.actor.uuid!));\n\n                // (#15) - flushSync ensures mounted content is fully laid out before Foundry's built-in scroll restore runs\n                // afterward, in _render(). No other sheet has this issue and only what is effectively a debounce is an\n                // alternative to fixing it.\n                flushSync(() => this.mountComponents(html, dataMap[this.actor.uuid!]));\n            }\n\n            mountComponents(html: JQuery<HTMLElement>, data: any)\n            {\n                unregisterTrackedHooks(this.actor.uuid!); // Untrack all hooks that were registered from Svelte components\n                mount(Header,\n                    {\n                        target: html.find(\".la-SVELTE-HEADER\")[0],\n                        props: data,\n                    });\n                mount(Loadout,\n                    {\n                        target: html.find(\".la-SVELTE-LOADOUT\")[0],\n                        props: data,\n                    });\n                mount(Status,\n                    {\n                        target: html.find(\".la-SVELTE-STATUS\")[0],\n                        props: data,\n                    });\n                mount(Activity,\n                    {\n                        target: html.find(\".la-SVELTE-ACTIVITY\")[0],\n                        props: data,\n                    });\n                mount(Custom, {\n                    target: html.find(\".la-SVELTE-CUSTOM\")[0],\n                    props: data,\n                });\n                mount(CustomToggle, { // (#14)\n                    target: html.find(\".la-tabs\")[0],\n                    props: {\n                        actor: data.actor,\n                        button: html.find('.la-tabs>[data-tab=\"custom\"]')[0],\n                    },\n                });\n            }\n        }\n\n        foundry.documents.collections.Actors.registerSheet(LancerAlternative.Name, LANPCSheet, {\n            types: [\"npc\"] as any[], // Lancer system actor subtype (registered by the system at runtime)\n            label: getLocalized(\"LA.SHEET.npc.label\"),\n            makeDefault: false\n        });\n    }\n}","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n\n    import { TextConsoleHook } from \"@/enums/TextConsoleHook\";\n    import { TextLogHook } from \"@/enums/TextLogHook\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n\n    import { browseActorImage, getLocalized, logographicLanguage, photosensitiveStyling } from \"@/scripts/helpers\";\n    import {\n        getActorTokenSync,\n        getImageOffsetX,\n        getImageOffsetY,\n        getImageWidth,\n        getPilotSheetTooltipEnabled,\n        setActorTokenSync,\n        setImageBatched,\n        setImageOffsetXY,\n        setImageWidth,\n    } from \"@/scripts/pilot/settings\";\n    import {\n        getAdvancedState,\n        getTokenImageLock,\n        setTokenImageLock,\n    } from \"@/scripts/store/advanced\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    import AdvancedButton from \"@/svelte/shared/button/AdvancedButton.svelte\";\n    import BoundImage from \"@/svelte/shared/BoundImage.svelte\";\n    import TextLog from \"@/svelte/shared/TextLog.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LockImageButton from \"@/svelte/shared/button/LockImageButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n        owner,\n    } : PilotSheetProps = $derived(props);\n    setActorContext(actor);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const tokenImageLocked = $derived(getTokenImageLock(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    let imageComponent: BoundImage;\n\n    function resetImageSettings(uuid: string, imageComponent: BoundImage)\n    {\n        imageComponent.resetLocalState();\n        setImageBatched(uuid, 0, 0, 0);\n    }\n\n    onMount(() => {\n        setTokenImageLock(actor.uuid, getActorTokenSync(actor.uuid));\n    });\n</script>\n\n<!-- Advanced Options Toggle -->\n{#snippet advancedOptionsToggle()}\n<div\n    class=\"la-settings__island la-flexcol -alignend -padding1-r -positionabsolute -right0 -top0\"\n    style=\"z-index: 2;\"\n>\n    <div\n        class=\"la-flexrow -alignend\"\n    >\n    {#if advancedOptions}\n        <i\n            class=\"mdi mdi-mouse-move-vertical -fontsize6 la-text-header la-prmy-primary\n                {qualityMode ? '-glow-prmy' : ''}\"\n            data-tooltip={TooltipFactory.buildTooltip(getLocalized([\"LA.advanced.imageOffset.tooltip\", \"LA.advanced.imageSize.tooltip\"]))}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.LEFT}\n        ></i>\n        <GlyphButton\n            flowClass={FlowClass.None}\n            style={[\"mdi mdi-image-sync -fontsize6 la-text-header -width7 la-prmy-primary la-scdy-header\",\n                qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n            onClick={() => resetImageSettings(actor.uuid, imageComponent)}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.image.reset.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n            logText={getLocalized(\"LA.edit.image.reset.tooltip\")}\n            logging={true}\n        />\n    {/if}\n        <AdvancedButton\n            style={[\"-fontsize5 la-prmy-primary la-scdy-header\",\n                qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n            uuid={actor.uuid}\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            logging={true}\n        />\n    </div>\n{#if advancedOptions}\n    <LockImageButton\n        style=\"-fontsize7 la-text-header la-prmy-primary la-scdy-header\n            {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\"\n        actor={actor}\n        setState={setActorTokenSync}\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.LEFT}\n        logging={true}\n    />\n    {#if !tokenImageLocked}\n    <GlyphButton\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-image-edit -fontsize6 la-text-header -width7 la-prmy-primary la-scdy-header\",\n            qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n        onClick={event => browseActorImage(event, actor)}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.image.actor.tooltip\")}\n        tooltipDirection={TooltipDirection.LEFT}\n        logText={getLocalized(\"LA.edit.image.actor.tooltip\")}\n        logging={true}\n    />\n    {/if}\n{/if}\n</div>\n{/snippet}\n\n<!-- Name, Callsign, Background -->\n{#snippet identificationMain()}\n<div class=\"la-actorname la-flexcol -padding3-l -padding3-t -widthfull\">\n    <div class=\"la-flexrow -widthfull\">\n        <input type=\"text\"\n            class=\"la-actorname__input la-pilotname la-text-header -fontsize6 -upper -letterspacing1 -textalignleft -textoverflowellipsis\n                charname\"\n            name={\"name\"}\n            value={actor.name}\n            placeholder={getLocalized(\"LA.namePlaceholder\")}\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.alias.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        />\n        <span class=\"-fontsizesmall la-text-darken-4 -fontface-stylized\">\n            {getLocalized(\"LA.pilot.alias.label\")}\n        </span>\n    </div>\n</div>\n{/snippet}\n\n{#snippet identificationSecondary()}\n<div class=\"la-actorname la-flexcol -padding3-l -widthfull\">\n    <div class=\"la-flexrow -widthfull\">\n        <input type=\"text\"\n            class=\"la-actorname__input la-callsign la-text-header -upper -fontsize4 -letterspacing0 -textalignleft -fontface-stylized\n                charname\"\n            name={\"system.callsign\"}\n            value={system.callsign}\n            placeholder={getLocalized(\"LA.placeholder\")}\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.callsign.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        />\n        <span class=\"-fontsizesmall la-text-darken-4 -fontface-stylized\">\n            {getLocalized(\"LA.pilot.callsign.label\")}\n        </span>\n    </div>\n    <div class=\"la-flexrow -widthfull\">\n        <input type=\"text\"\n            class=\"la-actorname__input la-pilotbackground la-text-header -upper -fontsizemedium -letterspacing0 -textalignleft -fontface-stylized\n            charname\"\n            name={\"system.background\"}\n            value={system.background}\n            placeholder={getLocalized(\"LA.placeholder\")}\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.background.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        />\n        <span class=\"-fontsizesmall la-text-darken-4 -fontface-stylized\">\n            {getLocalized(\"LA.pilot.background.label\")}\n        </span>\n    </div>\n</div>\n{/snippet}\n\n{#snippet actorImage()}\n<BoundImage bind:this={imageComponent}\n    image={actor.img}\n    uuid={actor.uuid}\n    yGetter={getImageOffsetY}\n    xGetter={getImageOffsetX}\n    xySetter={setImageOffsetXY}\n    widthGetter={getImageWidth}\n    widthSetter={setImageWidth}\n></BoundImage>\n{/snippet}\n\n{#snippet actorImageFluff()}\n<div\n    class=\"la-pilotfluff la-flexrow -positionabsolute la-flexcol -padding0-lr -pointerdisable\"\n>\n    <span class=\"la-text-darken-2 -textalignjustify -flex1\">\n        {getLocalized(\"LA.pilot.fluff.1\")} {getLocalized(\"LA.pilot.fluff.1\")} {getLocalized(\"LA.pilot.fluff.1\")}\n    </span>\n</div>\n<div class=\"-positionrelative\">\n    <div\n        class=\"la-flexcol -positionabsolute -padding3-t -padding1-lr la-text-lighten-7\"\n    >\n        <div\n            class=\"la-flexrow -justifystart -widthfull\"\n        >\n            <i class=\"mdi mdi-fingerprint -fontsize6\"></i>\n            <span\n                class=\"-aligncontentcenter -fontface-stylized\n                    {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n            >\n                {getLocalized(\"LA.pilot.fluff.2\")}\n            </span>\n        </div>\n        <div\n            class=\"la-flexrow -justifystart -widthfull\"\n        >\n            {#if owner}\n                <i class=\"mdi mdi-cable-data -fontsize6\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.isOwner.label\")}\n            </span>\n            {:else}\n                <i class=\"mdi mdi-cable-data -fontsize6 {photosensitiveStyling('horus--subtle')}\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized {photosensitiveStyling('horus--subtle')}\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                    {getLocalized(\"LA.pilot.isLimited.label\")}\n                </span>\n            {/if}\n        </div>\n        <div\n            class=\"la-flexrow -justifystart -widthfull\"\n        >\n            {#if system.hp.value >= system.hp.max}\n                <i class=\"mdi mdi-heart-pulse -fontsize6\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.1.label\")}\n            </span>\n            {:else if system.hp.value <= system.hp.max && system.hp.value > system.hp.max * 0.75}\n                <i class=\"mdi mdi-heart-pulse -fontsize6\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.2.label\")}\n            </span>\n            {:else if system.hp.value <= system.hp.max * 0.75 && system.hp.value > system.hp.max * 0.5}\n                <i class=\"mdi mdi-heart-pulse -fontsize6 {photosensitiveStyling('horus--very--subtle')}\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {photosensitiveStyling('horus--very--subtle')}\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.3.label\")}\n            </span>\n            {:else if system.hp.value <= system.hp.max * 0.5 && system.hp.value > system.hp.max * 0.25}\n                <i class=\"mdi mdi-heart-pulse -fontsize6 {photosensitiveStyling('horus--very--subtle')}\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {photosensitiveStyling('horus--very--subtle')}\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.4.label\")}\n            </span>\n            {:else if system.hp.value <= system.hp.max * 0.25 && system.hp.value > 0}\n                <i class=\"mdi mdi-heart-pulse -fontsize6 {photosensitiveStyling('horus--subtle')}\"></i>\n                <span\n                    class=\"-aligncontentcenter -fontface-stylized\n                        {photosensitiveStyling('horus--subtle')}\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.5.label\")}\n            </span>\n            {:else}\n                <i class=\"mdi mdi-heart-pulse -fontsize6 {photosensitiveStyling('horus--subtle')}\"></i>\n                <span class=\"-aligncontentcenter -fontface-stylized\n                        {photosensitiveStyling('horus--subtle')}\n                        {logographic ? '-fontsize3' : '-fontsizesmall'}\"\n                >\n                {getLocalized(\"LA.pilot.activity.6.label\")}\n            </span>\n            {/if}\n        </div>\n    </div>\n</div>\n{/snippet}\n\n<!-- Text Log -->\n{#snippet textLog()}\n<span\n    class=\"la-textlog__wrapper -left0 -positionabsolute -padding1\n        -pointerdisable\"\n>\n    <TextLog\n        style={[\"-widthfull -heightfull -fontface-stylized\", logographic ? \"-fontsize3\" : \"-fontsizemediumer\"]}\n        uuid={actor.uuid}\n        hookID={TextConsoleHook.PilotHeader}\n        hookResetID={TextConsoleHook.PilotHeaderReset}\n        logHookID={TextLogHook.PilotLog}\n        logHookResetID={TextLogHook.PilotLogReset}\n        runIntro={false}\n    />\n</span>\n{/snippet}\n\n<!-- Header -->\n<div\n    class=\"la-header-content -positionrelative -heightfull -overflowhidden -aligncontentstart\"\n    style=\"display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto auto;\"\n>\n    {@render advancedOptionsToggle()}\n    <div\n        class=\"-positionrelative -alignstart -overflowhidden\"\n        style=\"grid-area: 1 / 1; z-index: 0;\"\n    >\n        {@render identificationMain()}\n    </div>\n\n    <hr\n        class=\"la-divider-h -spacemedium -padding0-b la-bckg-header\"\n        style=\"grid-area: 2 / 1 / 2 / -1; z-index: 1;\"\n    />\n\n    <div\n        class=\"-positionrelative -overflowhidden\"\n        style=\"grid-area: 3 / 1; z-index: 0;\"\n    >\n        {@render identificationSecondary()}\n    </div>\n\n    <div\n        class=\"-positionabsolute -widthhalf -right0 -top0\"\n        style=\"z-index: 0;\"\n    >\n        {@render actorImageFluff()}\n    </div>\n    <div\n        class=\"-positionabsolute -widthhalf -right0 -top0\"\n        style=\"z-index: 1;\"\n    >\n        {@render actorImage()}\n    </div>\n\n    {@render textLog()}\n</div>","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized, handleEditToken, handleRelativeDataInput, logographicLanguage } from \"@/scripts/helpers\";\n    import { \n        getPilotSheetSensorsEnabled, \n        getPilotSheetTechAttackEnabled, \n        getPilotSheetTooltipEnabled, \n        getSidebarExecutables, \n        getSidebarRatio, \n        setSidebarExecutables \n    } from \"@/scripts/pilot/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getAdvancedState } from '@/scripts/store/advanced';\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import StatComboShort from \"@/svelte/shared/StatComboShort.svelte\";\n    import MacroDropBox from '@/svelte/shared/dragdrop/MacroDropBox.svelte';\n    import ImageVideo from \"@/svelte/shared/ImageVideo.svelte\";\n    import { FLOW_BUTTON_DEFAULT } from \"@/svelte/shared/button/FlowButton.svelte\";\n    import { getCustomFlagPath, getCustomFlags, handleCustomFlagValueInput } from \"@/scripts/flags\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n\n\n    const props = $props();\n    const {\n        system,\n        actor,\n        itemTypes\n    }: PilotSheetProps = $derived(props);\n    setActorContext(actor);\n    let advancedOptions = $derived(getAdvancedState(actor.uuid));\n    let component: HTMLElement | null = $state(null);\n    let editingBurn = $state(false);\n    let editingShield = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const showSensors = getPilotSheetSensorsEnabled();\n    const showTechAttack = getPilotSheetTechAttackEnabled();\n    const themeOverride = $derived(getBrightness(getThemeKey(actor.uuid)) === 'light' ? 'la-text-primary' : 'la-text-text');\n    const sidebarExes = $derived(getSidebarExecutables(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Pilot));\n    const visibleCustomFlags = $derived(Object.values(customFlags).filter(flag => flag.showInSidebar));\n\n    const sizeTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.size.tooltip\"), `${getLocalized(\"LA.size.label\")} ${system.size}`));\n    const speedTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.speed.tooltip\"), `${getLocalized(\"LA.speed.label\")} ${system.speed}`));\n    const shieldTip = TooltipFactory.buildTooltip(getLocalized('LA.overshield.tooltip'));\n    const burnTip = TooltipFactory.buildTooltip(getLocalized('LA.burn.tooltip'));\n\n    // When rendered, adjust the sidebar ratio to whatever was set\n    onMount(() => \n    {\n        if (component)\n        {\n            const ratio = getSidebarRatio(actor.uuid);\n            const sidebar = jQuery(component).closest('.la-root').find('.la-sidebar');\n            if (sidebar)\n                sidebar.css('flex', ratio.toString());\n        }\n    });\n\n    // Insert missing skill trigger UUIDs into the sidebar executables, if any \n    function checkExecutables()\n    {\n        const newUuids = itemTypes.skill\n            .map((skill: any) => skill.uuid)\n            .filter((uuid: any) => !sidebarExes.includes(uuid));\n        sidebarExes.unshift(...newUuids);\n\n        return sidebarExes;\n    }\n</script>\n\n<!-- License Level -->\n<div class=\"la-licenselevel la-dropshadow -overflowhidden\"\n    bind:this={component}\n>\n    <div \n        class=\"la-flow -textalignleft -letterspacing0 la-bckg-primary la-text-header clipped-bot-alt -padding0-tb -margin7-t -margin1-l -fontface-stylized\"\n    >\n        <span class=\"la-cmdline la-text-header -fadein -fontface-neutral\">>//:</span><!--\n    ---><span class=\"\">LL{system.level} &mdash; {actor.system.callsign}</span><!--\n    ---><span class=\"la-extension la-text-header -lower -fadein\">--{getLocalized(\"LA.scan.label\")}</span><span class=\"la-cursor la-prmy-header -fadein\"></span>\n    </div>\n</div>\n<div class=\"la-pilot__sidebar la-dropshadow -aligncontentcenter -positionrelative\">\n    <!-- Size, Speed, & Core Availability -->\n    <div class=\"la-flexcol -positionabsolute -left0 -top0 -fontsize19\">\n    {#if system.size < 1}\n        <i class=\"cci cci-size-half {themeOverride} la-outl-shadow\"\n            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n    {:else}\n        <i class=\"cci cci-size-{system.size} {themeOverride} la-outl-shadow\"\n            data-tooltip={tooltipEnabled ? sizeTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}></i>\n    {/if}\n        <div class=\"la-flexrow -fontsize9\"\n            data-tooltip={tooltipEnabled ? speedTip : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}>\n            <i class=\"mdi mdi-arrow-right-bold-hexagon-outline {themeOverride} la-outl-shadow\"></i>\n            <span class=\"{themeOverride} la-outl-shadow -bold\">{system.speed}</span>\n        </div>\n    </div>\n    <!-- Pilot Image -->\n    <ImageVideo\n        actor={actor}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edit.image.token.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n        logText={getLocalized(\"LA.edit.image.token.tooltip\")}\n        logging={true}\n        onPointerClick={event => handleEditToken(event, actor)}\n    />\n</div>\n<!-- Pilot Stats 1 -->\n<div class=\"la-stats la-dropshadow la-flexrow -justifyevenly -fontface-stylized\">\n    <StatComboShort\n        icon={\"cci cci-role-defender -alignselfcenter\"}\n        label={getLocalized(\"LA.armor.short\")}\n        value={system.armor}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.armor.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-evasion -alignselfcenter\"}\n        label={getLocalized(\"LA.evasion.short\")}\n        value={system.evasion}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.evasion.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n    <StatComboShort\n        icon={\"cci cci-edef -alignselfcenter\"}\n        label={getLocalized(\"LA.edefense.short\")}\n        value={system.edef}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.edefense.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n</div>\n<!-- Pilot Bars -->\n<div class=\"la-damage la-dropshadow -margin0-lr -margin0-t\">\n<!-- No KTB -->\n{#if !system.bond}\n    <div class=\"la-flexrow -gap2 -fontface-stylized\">\n        <div class=\"la-visuals -flex5\">\n            <!-- HP, SHIELD (BAR), BURN (BAR) -->\n            <StatusBar\n                name={getLocalized(\"LA.hitpoint.short\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.hp.value\"}\n                currentValue={system.hp.value}\n                maxValue={system.hp.max}\n                currentValueSecondary={system.overshield.value}\n                maxValueSecondary={system.hp.max}\n                currentValueTertiary={system.bond ? undefined : system.burn}\n                maxValueTertiary={system.bond ? undefined : system.hp.max}\n                barStyle={[\"la-bckg-bar-health\"]}\n                barEditStyle={[\"la-prmy-bar-health\"]}\n                barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n                barEditStyleSecondary={[\"la-prmy-bar-shield\"]}\n                barStyleTertiary={[\"la-bckg-bar-burn -burn\"]}\n                barEditStyleTertiary={[\"la-prmy-bar-burn\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped\"}\n                editSecondary={editingShield}\n                editTertiary={editingBurn}\n                \n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.hitpoint.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n            />\n        </div>\n        <!-- SHIELD (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-shield -flex0 -textaligncenter la-prmy-bar-shield -margin0-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <input class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                type={\"text\"}\n                name={\"system.overshield.value\"}\n                data-dtype={\"Number\"}\n                value={system.overshield.value}\n                onfocus={(event) => {event.currentTarget.select(); editingShield = true;}}\n                onblur={() => {editingShield = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.overshield.value)}\n            >\n            <span class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? shieldTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.overshield.short\")}<!--\n        ---></span>\n        </div>\n        <!-- BURN (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-burn -flex0 -textaligncenter la-prmy-bar-burn -margin1-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <input class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                type={\"text\"}\n                name={\"system.burn\"}\n                data-dtype={\"Number\"}\n                value={system.burn}\n                onfocus={(event) => {event.currentTarget.select(); editingBurn = true;}}\n                onblur={() => {editingBurn = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.burn)}\n            >\n            <span class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? burnTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.burn.short\")}<!--\n        ---></span>\n        </div>\n    </div>\n<!-- KTB -->\n{:else}\n    <div class=\"la-flexrow -gap2 -alignend -fontface-stylized\">\n        <div class=\"la-visuals -flex5\">\n            <!-- HP, SHIELD (BAR) -->\n            <StatusBar\n                name={getLocalized(\"LA.hitpoint.short\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.hp.value\"}\n                currentValue={system.hp.value}\n                maxValue={system.hp.max}\n                currentValueSecondary={system.overshield.value}\n                maxValueSecondary={system.hp.max}\n                currentValueTertiary={system.bond ? undefined : system.burn}\n                maxValueTertiary={system.bond ? undefined : system.hp.max}\n                barStyle={[\"la-bckg-bar-health\"]}\n                barEditStyle={[\"la-prmy-bar-health\"]}\n                barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n                barEditStyleSecondary={[\"la-prmy-bar-shield\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped\"}\n                editSecondary={editingShield}\n                \n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.hitpoint.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n            />\n        </div>\n        <!-- SHIELD (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-shield -flex0 -textaligncenter la-prmy-bar-shield -margin1-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <span\n                class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? shieldTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.overshield.short\")}<!--\n        ---></span>\n            <input class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrb -small -bordersoff\"\n                type={\"text\"}\n                name={\"system.overshield.value\"}\n                data-dtype={\"Number\"}\n                value={system.overshield.value}\n                onfocus={(event) => {event.currentTarget.select(); editingShield = true;}}\n                onblur={() => {editingShield = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.overshield.value)}\n            >\n        </div>\n    </div>\n    <div class=\"la-spacer -tiny\"></div>\n    <div class=\"la-flexrow -gap2 -fontface-stylized\">\n        <div class=\"la-visuals -flex5\">\n            <div class=\"la-spacer -tiny\"></div>\n            <!-- STRESS, BURN (BAR) -->\n            <StatusBar\n                name={getLocalized(\"LA.stress.label\")}\n                nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                dataName={\"system.bond_state.stress.value\"}\n                currentValue={system.bond_state.stress.value}\n                maxValue={system.bond_state.stress.max}\n                currentValueSecondary={system.burn}\n                maxValueSecondary={system.bond_state.stress.max}\n                barStyle={[\"la-bckg-bar-heat\"]}\n                barEditStyle={[\"la-prmy-bar-heat\"]}\n                barStyleSecondary={[\"la-bckg-bar-burn -burn\"]}\n                barEditStyleSecondary={[\"la-prmy-bar-burn\"]}\n                textStyle={[\"la-text-text\"]}\n                clipPath={\"clipped\"}\n                editSecondary={editingBurn}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.stress.tooltip\")}\n                tooltipDirection={TooltipDirection.RIGHT}\n            />\n        </div>\n        <!-- BURN (VALUE) -->\n        <div class=\"la-flexcol -divider la-prmy-bar-burn -flex0 -textaligncenter la-prmy-bar-burn -margin1-r\n                {qualityMode ? '-glow-prmy' : ''}\n                {logographic ? '-width4ch' : '-width3ch'}\"\n        >\n            <input class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                type={\"text\"}\n                name={\"system.burn\"}\n                data-dtype={\"Number\"}\n                value={system.burn}\n                onfocus={(event) => {event.currentTarget.select(); editingBurn = true;}}\n                onblur={() => {editingBurn = false;}}\n                onchange={(event) => handleRelativeDataInput(event, system.burn)}\n            >\n            <span\n                class=\"la-damage__span -heightfull -lineheight3\n                    {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                data-tooltip={tooltipEnabled ? burnTip : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            ><!--\n            --->{getLocalized(\"LA.burn.short\")}<!--\n        ---></span>\n        </div>\n    </div>\n{/if}\n</div>\n<div class=\"la-dropshadow la-flexrow -justifyevenly\">\n</div>\n<!-- Pilot Stats 2 -->\n<div class=\"la-stats la-dropshadow la-flexrow -justifyevenly -fontface-stylized\">\n{#if showTechAttack}\n    <StatComboShort\n        icon={\"cci cci-tech-full -alignselfcenter\"}\n        label={getLocalized(\"LA.tattack.short\")}\n        value={system.tech_attack}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tattack.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n{/if}\n    <StatComboShort\n        icon={\"cci cci-save -alignselfcenter\"}\n        label={getLocalized(\"LA.save.short\")}\n        value={system.save}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.save.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n{#if showSensors}\n    <StatComboShort\n        icon={\"cci cci-sensor -alignselfcenter\"}\n        label={getLocalized(\"LA.sensor.short\")}\n        value={system.sensor_range}\n        outerStyle={[\"la-text-text -fontsize7\"]}\n        innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.sensor.tooltip\")}\n        tooltipDirection={TooltipDirection.RIGHT}\n    />\n{/if}\n</div>\n\n<!-- Custom Flags -->\n{#if visibleCustomFlags.length}\n<hr class=\"-widthfull\">\n<div class=\"la-flags la-flexcol -gap1 la-dropshadow -margin0-lr -widthfull\">\n{#each visibleCustomFlags as flag (flag.id)}\n    {#snippet createFractionBar(data: CustomFlag)}\n    <div class=\"la-flexcol -widthfull -fontface-stylized\">\n        <div class=\"la-flexrow -widthfull\">\n            <div class=\"-width14\"></div>\n            <div class=\"-flex5\" style=\"--la-flag-custom: {data.color};\">\n                <StatusBar\n                    name={\"\"}\n                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                    dataName={getCustomFlagPath(CustomFlagKey.Pilot, data.id, \"value\")}\n                    currentValue={data.content.value}\n                    maxValue={data.content.max}\n                    barStyle={[\"la-bckg-custom\"]}\n                    barEditStyle={[\"la-bckg-custom\"]}\n                    textStyle={[\"la-text-text\"]}\n                    clipPath={\"clipped-alt\"}\n                />\n            </div>\n            <div class=\"-width11\"></div>\n        </div>\n        <span class=\"-fontsizemedium -upper -padding4-l\n                {logographic ? '' : '-bold'}\"\n            data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.RIGHT}\n        >{data.name}</span>\n    </div>\n    {/snippet}\n    {#snippet createValueGlyph(data: CustomFlag)}\n    <div class=\"-widthfull\">\n        <div class=\"la-shortstat la-flexrow la-text-text -fontsize6\">\n            <i class=\"{data.icon ? data.icon : \"mdi mdi-abacus\"} -alignselfcenter\"></i>\n            <div class=\"la-flexcol -divider -upper -fontface-stylized -fontsizemedium la-prmy-accent -textaligncenter\n                    {logographic ? '' : '-bold'}\"\n                data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.RIGHT}\n            >\n                <input class=\"la-top__input -widthfull -medium -inset la-text-text -fontface-neutral -height4\"\n                    type=\"text\"\n                    value={data.content.value}\n                    onfocus={event => event.currentTarget.select()}\n                    onchange={event => handleCustomFlagValueInput(event, actor, CustomFlagKey.Pilot, data)}\n                >\n                <span class=\"la-bottom__span\">{data.name}</span>\n            </div>\n        </div>\n    </div>\n    {/snippet}\n\n    {#if flag.contentType === CustomFlagContentType.Fraction}\n        {@render createFractionBar(flag)}\n    {:else}\n        {@render createValueGlyph(flag)}\n    {/if}\n{/each}\n</div>\n<hr class=\"-widthfull\">\n{/if}\n\n{#if itemTypes.skill.length}\n<MacroDropBox\n    uuid={actor.uuid}\n    getExes={checkExecutables()}\n    setExes={setSidebarExecutables}\n    hintDropArea={true}\n    allowDrop={advancedOptions}\n    buttonStyle={[FLOW_BUTTON_DEFAULT(), advancedOptions ? \"-margin7-l\"  : \"-margin2-l\"]}\n    tooltipEnabled={tooltipEnabled}\n    logging={true}\n/>\n{/if}","<script lang=\"ts\">\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import { formatString, getLocalized, isLoading } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { CHAT_CARD_COLOR_MAP } from \"@/scripts/constants\";\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderTertiary, { H3_HEADER_STYLE, H3_ICON_SIZE } from \"@/svelte/shared/header/HeaderTertiary.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import AttackButton from \"@/svelte/shared/button/AttackButton.svelte\";\n    import DamageButton from \"@/svelte/shared/button/DamageButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LoadedBox from \"@/svelte/shared/counter/LoadedBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import SpCostArray from \"@/svelte/shared/SPCostArray.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n\n    const {\n        actor,\n        weapons\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let attackButtonHover = $state(false);\n    let damageButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    \n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.weapons`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    \n    function getWeaponPath(index: number)\n    {\n        return `system.loadout.weapons.${index}.value`\n    }\n    \n    function getRollWeaponTip(weapon: any)\n    {\n        return formatString(\n            getLocalized(\"LA.flow.rollAttack.template.tooltip\"), \n            weapon.name);\n    }\n\n    function renderOuter(weapon: any)\n    {\n        return (\n            weapon.system.sp || \n            isLoading(weapon) || \n            weapon.isLimited() ||\n            weapon.system.counters.length\n        );\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, weapon: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && weapon)\n        {\n            let range = \"\";\n            weapon.system.range.map((rng: any) => {\n                range += `<div class=\"la-flexrow\">${rng.val}<i class=\"cci cci-${rng.type.toLowerCase()} -fontsize6\"></i></div>`\n            });\n            let damage = \"\";\n            weapon.system.damage.map((dmg: any) => {\n                damage += `<div class=\"la-flexrow\">${dmg.val}<i class=\"cci cci-${dmg.type.toLowerCase()} -fontsize6\"></i></div>`;\n            });\n            const description = `\n                <div>\n                    ${weapon.system.description}\n                </div>\n                <hr>\n                <div \n                    class=\"la-flexrow -justifyevenly clipped-alt -fontsize5 -padding0-tb -padding1-lr\"\n                    style=\"\n                        background-color: var(--weapon-color);\n                        color: var(--light-text);\n                        align-items: baseline;\n                    \"\n                >\n                    ${range}\n                    ${damage}\n                </div>\n            `;\n            let chatData = {\n                title: weapon.name, \n                description: description,\n                trigger: weapon.system.trigger,\n                effect: weapon.system.effect,\n                onHit: weapon.system.on_hit,\n                tags: weapon.system.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Weapon],\n            } as ChatData;\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else \n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#snippet headerOptions()}\n    <CollapseAllButton\n        collapseID={collID}\n        tooltipEnabled={tooltipEnabled}\n        tooltipTheme={theme}\n        logging={true}\n\n        onPointerEnter={() => {collapseAllButtonHover = true;}}\n        onPointerLeave={() => {collapseAllButtonHover = false;}}\n    />\n{/snippet}\n<HeaderMain\n    text={getLocalized(\"LA.weapons.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-primary\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n\n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerOptions}\n>\n{#if weapons.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each weapons as weapon, index}\n    {#snippet outerContent()}\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l\">\n        {#if isLoading(weapon) || weapon.isLimited() || weapon.system.sp}\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull\">\n                <!-- Loading -->\n                <LoadedBox\n                    item={weapon}\n                    path={getWeaponPath(index)}\n                    \n                    logging={true}\n                />\n                <!-- Limited -->\n                <LimitedBox\n                    usesValue={weapon.system.uses.value}\n                    usesMax={weapon.system.uses.max}\n                    path={getWeaponPath(index)}\n\n                    logging={true}\n                />\n                <SpCostArray\n                    cost={weapon.system.sp}\n                />\n            </div>\n        {/if}\n        <!-- Counters -->\n        {#if weapon.system.counters.length}\n        {#each weapon.system.counters as counter, jndex}\n            <CounterBox\n                text={counter.name}\n                type={CounterBoxType.Counter}\n                usesValue={counter.value}\n                usesMax={counter.max}\n                path=\"{getWeaponPath(index)}.system.counters.{jndex}\"\n        \n                logging={true}\n            />\n        {/each}\n        {/if}\n        </div>\n    {/snippet}\n        {#snippet headerTertiaryLeftOptions()}\n            <AttackButton\n                iconStyle={[H3_ICON_SIZE, \"la-text-header cci cci-weapon\"]}\n                iconBackgroundStyle={[\n                    \"la-prmy-secondary\", \n                    H3_ICON_SIZE, \n                    qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n                ]}\n\n                flowClass={FlowClass.RollAttack}\n                path={getWeaponPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltipDirection={TooltipDirection.LEFT}\n                tooltip={getRollWeaponTip(weapon)}\n                logText={getRollWeaponTip(weapon)}\n                logging={true}\n\n                onPointerEnter={() => {attackButtonHover = true;} }\n                onPointerLeave={() => {attackButtonHover = false;} }\n            />\n        {/snippet}\n        {#snippet headerTertiaryRightOptions()}\n        <DamageButton\n            iconBackgroundStyle={[\n                \"-fontsize9 la-prmy-secondary\", \n                qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n            ]}\n            \n            flowClass={FlowClass.RollDamage}\n            range={weapon.system.range}\n            damage={weapon.system.damage}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            logging={true}\n\n            onPointerEnter={() => {damageButtonHover = true;} }\n            onPointerLeave={() => {damageButtonHover = false;} }\n        />\n        <div class=\"la-flexcol -margin3-lr\">\n            <!-- Send to chat -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE()]}\n                flowClass={FlowClass.None}\n                uuid={weapon.uuid}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.chat.tooltip\")}\n                logText={getLocalized(\"LA.chat.tooltip\")}\n                logging={true}\n\n                onClick={(event) => sendToChat(event, weapon)}\n                onPointerEnter={() => {messageButtonHover = true;} }\n                onPointerLeave={() => {messageButtonHover = false;} }\n            >\n                <i class=\"mdi mdi-message\"></i>\n            </GlyphButton>\n            <!-- Edit -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexrow -margin0-lr\"]}\n                flowClass={FlowClass.ContextMenu}\n                path={getWeaponPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {editButtonHover = true;} }\n                onPointerLeave={() => {editButtonHover = false;} }\n            >\n                <i class=\"fas fa-ellipsis-v\"></i>\n            </GlyphButton>\n        </div>\n        {/snippet}\n        <HeaderTertiary\n            text={weapon.name}\n            subText={getLocalized(\"LA.weapons.label\")}\n            subHeaderFontStyle={[\"la-text-header la-prmy-header -fontsizesmall -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (attackButtonHover)\n                    return `--${getLocalized(\"LA.flow.rollAttack.extension\")}`;\n                if (damageButtonHover)\n                    return `--${getLocalized(\"LA.flow.rollDamage.extension\")}`;\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n            headerStyle={[H3_HEADER_STYLE, \"la-bckg-pilot\"]}\n            headerFontStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n\n            itemID={weapon.id}\n            uuid={weapon.uuid}\n            path={getWeaponPath(index)}\n            acceptTypes={\"pilot_weapon\"}\n\n            collapseID={weapon.uuid}\n            startCollapsed={true}\n\n            renderOutsideCollapse={renderOuter(weapon) ? outerContent : undefined}\n            contentLeft={headerTertiaryLeftOptions}\n            contentRight={headerTertiaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <BonusBox\n                    bonuses={weapon.system.bonuses}\n                    bonusPath={`${getWeaponPath(index)}.system.bonuses`}\n                />\n                <DeployableBox\n                    source={actor}\n                    lidSource={weapon.system}\n                    uuid={actor.uuid}\n                    sheetUUID={actor.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <ActionBox\n                    actions={weapon.system.actions}\n                    actor={actor}\n                    uuid={weapon.uuid}\n                    path={`system.actions`}\n\n                    collapseID={`${weapon.uuid}.actions`}\n                    startCollapsed={true}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={weapon.system.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {#if weapon.system.effect}\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    effect={weapon.system.effect}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {/if}\n                <TagArray\n                    tags={weapon.system.tags}\n                    justify={\"start\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </div>\n        </HeaderTertiary>\n    {/each}\n    </div>\n    {:else}\n        <EmptyBox\n            label={getLocalized(\"LA.pilot.weapon.empty.label\")}\n            subLabel={getLocalized(\"LA.pilot.weapon.empty.subLabel\")}\n            type={AcceptType.PilotWeapon}\n            path=\"system.loadout.weapons.{weapons.length}.value\"\n        />\n    {/if}\n</HeaderMain>","<script lang=\"ts\">\n    import { ChatCardType } from \"@/enums/ChatCardType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { CHAT_CARD_COLOR_MAP } from \"@/scripts/constants\";\n    import { Logger } from \"@/classes/Logger\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n\n    const {\n        actor,\n        armors\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    const [armorBonuses, otherBonuses] = $derived.by(() => armors.map((armor: any) => {\n        // Separate bonuses into armor-related and other-related categories\n        return armor.system.bonuses.reduce(\n            (bonusCategories: { armorBonuses: { [key: string]: any }; otherBonuses: { [key: string]: any } }, bonus: { lid: string; val: any }) => {\n                const isArmorBonus = [\"pilot_hp\", \"pilot_armor\", \"pilot_evasion\", \"pilot_edef\", \"pilot_speed\"].includes(bonus.lid);\n                const categoryKey = isArmorBonus ? \"armorBonuses\" : \"otherBonuses\";\n                bonusCategories[categoryKey][bonus.lid] = bonus.val;\n                return bonusCategories;\n            },\n            { armorBonuses: {}, otherBonuses: {} }\n        );\n    }).reduce(\n        (\n            [armorBns, otherBns]: [{ [key: string]: number }[], { [key: string]: number }[]],\n            { armorBonuses, otherBonuses }: { armorBonuses: { [_key: string]: number }; otherBonuses: { [_key: string]: number } }\n        ) => {\n            // Accumulate armor-related and other-related bonuses\n            if (Object.keys(armorBonuses).length > 0)\n                armorBns.push(armorBonuses);\n            if (Object.keys(otherBonuses).length > 0)\n                otherBns.push(otherBonuses);\n            return [armorBns, otherBns];\n        },\n        [[], []]\n    ));\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.armors`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const healthTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.hardsuit.health.tooltip\"));\n    const evasionTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.hardsuit.evasion.tooltip\"));\n    const edefenseTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.hardsuit.edefense.tooltip\"));\n    const speedTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.hardsuit.speed.tooltip\"));\n    const armorTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.hardsuit.armor.tooltip\"));\n\n    function getArmorPath(index: number)\n    {\n        return `itemTypes.pilot_armor.${index}`;\n    }\n    \n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, armor: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && armor)\n        {\n            const description = `\n                ${armor.system.description}\n                <hr>\n                <div \n                    class=\"la-flexrow -justifyevenly clipped-alt -fontsize5 -padding0-tb -padding1-lr\" \n                    style=\"\n                        background-color: var(--weapon-color);\n                        color: var(--light-text);\n                        align-items: baseline;\n                    \"\n                >\n                    <div>${armor.system.bonuses[0].val}<i class=\"mdi mdi-heart-half-full\" style=\"padding-left: 2px; padding-right: 2px;\"></i></div>\n                    <div class=\"la-flexrow\">${armor.system.bonuses[1].val}<i class=\"cci cci-role-defender -fontsize6\"></i></div>\n                    <div class=\"la-flexrow\">${armor.system.bonuses[2].val}<i class=\"cci cci-evasion -fontsize6\"></i></div>\n                    <div class=\"la-flexrow\">${armor.system.bonuses[3].val}<i class=\"cci cci-edef -fontsize6\"></i></div>\n                    <div>${armor.system.bonuses[4].val}<i class=\"mdi mdi-arrow-right-bold-hexagon-outline\" style=\"padding-left: 2px; padding-right: 2px;\"></i></div>\n                </div>\n            `\n            let chatData = {\n                title: armor.name, \n                description: description,\n                tags: armor.system.tags,\n                color: CHAT_CARD_COLOR_MAP[ChatCardType.Armor],\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(armor.uuid, chatData);        \n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.armor.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if armors.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each armors as armor, index}\n    {#snippet outerContent()}\n    {#if Object.keys(armorBonuses[index]).length}\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l -fontface-stylized\">\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull -justifyevenly\">\n                {#if armorBonuses[index].pilot_hp}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr -padding0-tb la-text-header -gap0\"\n                    data-tooltip={tooltipEnabled ? healthTip : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.DOWN}\n                >\n                    {armorBonuses[index].pilot_hp}\n                    <i class=\"mdi mdi-heart-half-full -fontsize5\"></i>\n                </span>\n                {/if}\n                {#if armorBonuses[index].pilot_armor}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr la-text-header\"\n                    data-tooltip={tooltipEnabled ? armorTip : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.DOWN}\n                >\n                    {armorBonuses[index].pilot_armor}\n                    <i class=\"cci cci-role-defender -fontsize6\"></i>\n                </span>\n                {/if}\n                {#if armorBonuses[index].pilot_evasion}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr la-text-header\"\n                    data-tooltip={tooltipEnabled ? evasionTip : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.DOWN}\n                >\n                    {armorBonuses[index].pilot_evasion}\n                    <i class=\"cci cci-evasion -fontsize6\"></i>\n                </span>\n                {/if}\n                {#if armorBonuses[index].pilot_edef}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr la-text-header\"\n                    data-tooltip={tooltipEnabled ? edefenseTip : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.DOWN}\n                >\n                    {armorBonuses[index].pilot_edef}\n                    <i class=\"cci cci-edef -fontsize6\"></i>\n                </span>\n                {/if}\n                {#if armorBonuses[index].pilot_speed}\n                <span class=\"la-flexrow -justifycenter -aligncenter -fontsize5 -padding0-lr la-text-header\"\n                    data-tooltip={tooltipEnabled ? speedTip : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.DOWN}\n                >\n                    {armorBonuses[index].pilot_speed}\n                    <i class=\"mdi mdi-arrow-right-bold-hexagon-outline -fontsize5\"></i>\n                </span>\n                {/if}\n            </div>\n        {#if armor.system.counters.length}\n        {#each armor.system.counters as counter, jndex}\n            <CounterBox\n                text={counter.name}\n                type={CounterBoxType.Counter}\n                usesValue={counter.value}\n                usesMax={counter.max}\n                path=\"{getArmorPath(index)}.system.counters.{jndex}\"\n        \n                logging={true}\n            />\n        {/each}\n        {/if}\n        </div>\n    {/if}\n    {/snippet}\n    {#snippet headerSecondaryLeftOptions()}\n        <i class=\"{H2_ICON_SIZE} cci cci-pilot\"></i>\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getArmorPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <!-- Send to Chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.None}\n            index={index}\n            uuid={armor.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onClick={event => sendToChat(event, armor)}\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={armor.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={armor.id}\n            uuid={armor.uuid}\n            path={getArmorPath(index)}\n            acceptTypes={\"pilot_armor\"}\n            \n            collapseID={armor.uuid}\n            startCollapsed={true}\n\n            renderOutsideCollapse={outerContent}\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n            {#if otherBonuses.length}\n                <BonusBox\n                    bonuses={otherBonuses}\n                    bonusPath={`${getArmorPath(index)}.system.bonuses`}\n                />\n            {/if}\n                <DeployableBox\n                    source={actor}\n                    lidSource={armor.system}\n                    uuid={actor.uuid}\n                    sheetUUID={actor.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <ActionBox\n                    actions={armor.system.actions}\n                    actor={actor}\n                    uuid={armor.uuid}\n                    path={`system.actions`}\n\n                    collapseID={`${armor.uuid}.actions`}\n                    startCollapsed={true}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={armor.system.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {#if armor.system.effect}\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    effect={armor.system.effect}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {/if}\n                <TagArray\n                    tags={armor.system.tags}\n                    justify={\"start\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.hardsuit.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.hardsuit.empty.subLabel\")}\n        type={AcceptType.PilotArmor}\n        path=\"system.loadout.armor.{armors.length}.value\"\n    />\n{/if}\n</HeaderMain>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor,\n        gears\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.gears`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getGearPath(index: number)\n    {\n        return `system.loadout.gear.${index}.value`;\n    }\n\n    function renderOuter(gear: any)\n    {\n        return gear.system.uses.max || gear.system.counters.length;\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.gear.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-system\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-system\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if gears.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each gears as gear, index}\n    {#snippet outerContent()}\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l -fontface-stylized\">\n        {#if gear.system.uses.max}\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull\">\n                <!-- Limited -->\n                <LimitedBox\n                    usesValue={gear.system.uses.value}\n                    usesMax={gear.system.uses.max}\n                    path={getGearPath(index)}\n        \n                    logging={true}\n                />\n            </div>\n        {/if}\n        <!-- Counters -->\n        {#if gear.system.counters.length}\n        {#each gear.system.counters as counter, jndex}\n            <CounterBox\n                text={counter.name}\n                type={CounterBoxType.Counter}\n                usesValue={counter.value}\n                usesMax={counter.max}\n                path=\"{getGearPath(index)}.system.counters.{jndex}\"\n        \n                logging={true}\n            />\n        {/each}\n        {/if}\n        </div>\n    {/snippet}\n    {#snippet headerSecondaryLeftOptions()}\n        <i class=\"{H2_ICON_SIZE} cci cci-system\"></i>\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getGearPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <!-- Send to chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.SendToChat}\n            index={index}\n            uuid={gear.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={gear.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={gear.lid}\n            uuid={gear.uuid}\n            path={getGearPath(index)}\n            acceptTypes={\"pilot_gear\"}\n            \n            collapseID={gear.uuid}\n            startCollapsed={true}\n\n            renderOutsideCollapse={renderOuter(gear) ? outerContent : undefined}\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <BonusBox\n                    bonuses={gear.system.bonuses}\n                    bonusPath={`${getGearPath(index)}.system.bonuses`}\n                />\n                <DeployableBox\n                    source={actor}\n                    lidSource={gear.system}\n                    uuid={actor.uuid}\n                    sheetUUID={actor.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <ActionBox\n                    actions={gear.system.actions}\n                    actor={actor}\n                    uuid={gear.uuid}\n                    path={`system.actions`}\n\n                    collapseID={`${gear.uuid}.actions`}\n                    startCollapsed={true}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={gear.system.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {#if gear.system.effect}\n                <EffectBox\n                    name={getLocalized(\"LA.mech.system.effect.label\")}\n                    effect={gear.system.effect}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            {/if}\n                <TagArray\n                    tags={gear.system.tags}\n                    justify={\"start\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.gear.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.gear.empty.subLabel\")}\n        type={AcceptType.PilotGear}\n        path=\"system.loadout.gear.{gears.length}.value\"\n    />\n{/if}\n</HeaderMain>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { RESERVE_ICON_MAP } from \"@/scripts/constants\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import TagArray from \"@/svelte/shared/TagArray.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import DeployableBox from \"@/svelte/shared/DeployableBox.svelte\";\n    import BonusBox from \"@/svelte/shared/BonusBox.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import LimitedBox from \"@/svelte/shared/counter/LimitedBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor,\n        reserves\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.reserves`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getReservePath(index: number)\n    {\n        return `itemTypes.reserve.${index}`;\n    }\n\n    function updateReserveUses(reserve: any)\n    {\n        reserve.system.used = !reserve.system.used;\n        actor.updateEmbeddedDocuments(\"Item\", reserve);\n    }\n    \n    function getHeaderStyle(reserve: any)\n    {\n        return reserve.system.used\n            ? \"la-text-repcap -strikethrough\"\n            : \"la-text-header\";\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.reserve.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-action--downtime\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-action--downtime\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if reserves.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each reserves as reserve, index}\n    {#snippet outerContent()}\n    {#if reserve.system.counters.length || reserve.system.consumable }\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l\">\n        {#if reserve.system.consumable}\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull\">\n                <LimitedBox\n                    usesValue={reserve.system.used ? 0 : 1}\n                    usesMax={1}\n                    path=\"{getReservePath(index)}.system.used\"\n                    onPointerClick={updateReserveUses}\n\n                    logging={true}\n                />\n            </div>\n        {/if}\n        {#each reserve.system.counters as counter, jndex}\n            <CounterBox\n                text={counter.name}\n                type={CounterBoxType.Counter}\n                usesValue={counter.value}\n                usesMax={counter.max}\n                path=\"{getReservePath(index)}.system.counters.{jndex}\"\n        \n                logging={true}\n            />\n        {/each}\n        </div>\n    {/if}\n    {/snippet}\n    {#snippet headerSecondaryLeftOptions()}\n        <i class=\"{H2_ICON_SIZE} cci {RESERVE_ICON_MAP[reserve.system.type]}\"></i>\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexrow\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getReservePath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <!-- Send to chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.SendToChat}\n            index={index}\n            uuid={reserves.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={reserve.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, getHeaderStyle(reserve), \"-fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={reserve.lid}\n            uuid={reserve.uuid}\n            path={getReservePath(index)}\n            acceptTypes={\"reserve\"}\n            \n            collapseID={reserve.uuid}\n            startCollapsed={true}\n\n            renderOutsideCollapse={outerContent}\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <BonusBox\n                    bonuses={reserve.system.bonuses}\n                    bonusPath={`${getReservePath(index)}.system.bonuses`}\n                />\n                <DeployableBox\n                    source={actor}\n                    lidSource={reserve.system}\n                    uuid={actor.uuid}\n                    sheetUUID={actor.uuid}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <ActionBox\n                    actions={reserve.system.actions}\n                    actor={actor}\n                    uuid={reserve.uuid}\n                    path={`system.actions`}\n\n                    collapseID={`${reserve.uuid}.actions`}\n                    startCollapsed={true}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    logging={true}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={reserve.system.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n                <TagArray\n                    tags={reserve.system.tags}\n                    justify={\"start\"}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.reserve.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.reserve.empty.subLabel\")}\n        type={AcceptType.Reserve}\n        path=\"itemTypes.reserve.{reserves.length}\"\n    />\n{/if}\n</HeaderMain>","<script lang=\"ts\">\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import Weapon from \"@/svelte/pilot/Weapon.svelte\";\n    import Armor from \"@/svelte/pilot/Armor.svelte\";\n    import Gear from \"@/svelte/pilot/Gear.svelte\";\n    import Reserve from \"@/svelte/pilot/Reserve.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n        itemTypes\n    } : PilotSheetProps = $derived(props);\n    setActorContext(actor);\n</script>\n\n<Weapon\n    actor={actor}\n    weapons={itemTypes.pilot_weapon}\n/>\n<Armor\n    actor={actor}\n    armors={itemTypes.pilot_armor}\n/>\n<Gear\n    actor={actor}\n    gears={itemTypes.pilot_gear}\n/>\n<Reserve\n    actor={actor}\n    reserves={itemTypes.reserve}\n/>","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    \n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    let editButtonHover = $state(false);\n    let addButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.burdens`);\n    const burdens = $derived(system.bond_state.burdens);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const addBurdenTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.bond.burden.add.tooltip\"))\n    \n    function getBurdenPath(index: number)\n    {\n        return `system.bond_state.burdens.${index}`;\n    }\n</script>\n\n{#if system.bond}\n{#snippet headerContent()}\n<GlyphButton\n    style={[\"mdi mdi-plus-circle-outline -fontsize5 -height4 -lineheight4 la-prmy-header la-scdy-primary\",\n        qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n\n    flowClass={FlowClass.GeneralControl}\n    path=\"system.bond_state.burdens\"\n    action=\"append\"\n    actionValue=\"(struct)counter\"\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltip={addBurdenTip}\n    tooltipDirection={TooltipDirection.UP}\n    logText={getLocalized(\"LA.pilot.bond.burden.add.tooltip\")}\n    logging={true}\n\n    disabled={system.bond === null}\n\n    onPointerEnter={() => {addButtonHover = true;}}\n    onPointerLeave={() => {addButtonHover = false;}}\n/>\n{/snippet}\n<HeaderMain\n    text={getLocalized(\"LA.pilot.bond.burden.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (addButtonHover)\n            return `--${getLocalized(\"LA.add.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerContent}\n>\n{#if burdens.length}\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n    {#each burdens as burden, index}\n        <div class=\"la-flexcol -widthfull -fontface-stylized\">\n        {#snippet outerContent()}\n            <div class=\"-padding2-l\">\n                <CounterBox\n                    type={CounterBoxType.Counter}\n                    usesValue={burden.value}\n                    usesMax={burden.max}\n                    path=\"system.bond_state.burdens.{index}\"\n                    style={[\"clipped-bot-alt -widthfull la-bckg-header-anti\"]}\n                    \n                    logging={true}\n                />\n            </div>\n        {/snippet}\n        {#snippet headerSecondaryLeftOptions()}\n            <i class=\"mdi mdi-weather-night -fontsize5 -padding0-lr\"></i>\n        {/snippet}\n        {#snippet headerSecondaryRightOptions()}\n            <!-- Edit -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n                flowClass={FlowClass.ContextMenu}\n                path={getBurdenPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {editButtonHover = true;} }\n                onPointerLeave={() => {editButtonHover = false;} }\n            >\n                <i class=\"fas fa-ellipsis-v\"></i>\n            </GlyphButton>\n        {/snippet}\n            <HeaderSecondary\n                text={burden.name}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n                borderStyle={[\"-bordersoff\"]}\n                extensionTextFunction={() => {\n                    if (editButtonHover)\n                        return `--${getLocalized(\"LA.edit.extension\")}`;\n                    return undefined;\n                }}\n\n                itemID={burden.lid}\n                uuid={burden.uuid}\n\n                renderOutsideCollapse={outerContent}\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n            </HeaderSecondary>\n        </div>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.bond.burden.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.bond.burden.empty.subLabel\")}\n    />\n{/if}\n</HeaderMain>\n{/if}","<script lang=\"ts\">\n    import type { LimitedBondBoxProps } from \"@/interfaces/pilot/LimitedBondBoxProps\";\n    import type { TextLogEventProps } from \"@/interfaces/actor/TextLogEventProps\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getActorContext } from \"@/scripts/context\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        usesValue,\n        usesMax,\n        uuid,\n        power,\n\n        logText,\n        logging,\n    }: LimitedBondBoxProps & TextLogEventProps = $props();\n    const actorUuid = getActorContext()?.uuid;\n\n    const qualityMode = getExtraEffectsEnabled();\n    const log = $derived(logText || getLocalized(\"LA.limited.tooltip\"));\n</script>\n\n{#if usesMax}\n<div class=\"la-limited la-flexrow la-text-header \n        -aligncenter -padding1-lr\">\n    <span class=\"la-hexarray__span -fontsizemedium\">\n        {getLocalized(\"LA.limited.label\")}\n    </span>\n{#each {length: usesMax} as _, index}\n    <button type=\"button\" \n        class=\"la-prmy-header la-scdy-primary -fontsize7\n            {qualityMode ? '-glow-prmy -glow-scdy-hover' : ''}\"\n        onpointerenter={ logging ? event => sendToTextConsole(event, log, actorUuid!) : undefined }\n        onpointerleave={ logging ? event => resetTextConsole(event, actorUuid!) : undefined }\n        aria-label={getLocalized(\"LA.use.label\")}\n    >\n        <i class=\"mdi {index < usesValue ? 'mdi-hexagon-slice-6' : 'mdi-hexagon-outline'}\n                power-uses-hex\" \n            data-available=\"{index < usesValue}\"\n            data-uuid={uuid}\n            data-power-index={power}\n            data-path={`system.bond.system.powers.${power}`}\n        ></i>\n    </button>\n{/each}\n</div>\n{/if}","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import LimitedBondBox from \"@/svelte/pilot/LimitedBondBox.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { Logger } from \"@/classes/Logger\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let effectButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const unlockedPowers = $derived(system.bond?.system.powers\n        .map((power: any, index: number) => ({ ...power, index }))\n        .filter((power: any) => power.unlocked) || []);\n    const bondUUID = $derived(system.bond?.uuid);\n    const collID = $derived(`${actor.uuid}.powers`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    \n    function getPowerCollapseID(index: number)\n    {\n        return `${actor.uuid}.powers.${index}`;\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, power: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && power)\n        {\n            let chatData = {\n                title: power.name, \n                description: power.description\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#if system.bond}\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n<HeaderMain\n    text={getLocalized(\"LA.pilot.bond.power.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-primary\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if unlockedPowers.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each unlockedPowers as power}\n    {#snippet outerContent()}\n        {#if power.uses || power.frequency}\n        <div class=\"la-flexcol -gap0 -widthfull -padding2-l -fontface-stylized\">\n            <div class=\"la-flexrow clipped-bot-alt la-bckg-header-anti -widthfull\">\n            {#if power.uses}\n                <LimitedBondBox\n                    usesValue={power.uses.value}\n                    usesMax={power.uses.max}\n                    uuid={bondUUID}\n                    power={power.index}\n                />\n            {/if}\n            {#if power.frequency}\n                <span class=\"la-text-header -aligncontentcenter -fontsizesmall -upper\">\n                    {power.frequency}\n                </span>\n            {/if}\n            </div>\n        </div>\n        {/if}\n    {/snippet}\n    {#snippet headerSecondaryLeftOptions()}\n        <EffectButton\n            iconStyle={[\"la-text-header -fontsize6 mdi mdi-weather-sunny\"]}\n            iconBackgroundStyle={[\n                \"-fontsize7 la-prmy-secondary\", \n                qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n            ]}\n            \n            flowClass={FlowClass.BondPower}\n            uuid={bondUUID}\n            powerIndex={power.index}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.LEFT}\n            tooltip={power.description}\n            tooltipHeader={getLocalized(\"LA.pilot.bond.power.subLabel\")}\n            logging={true}\n                        \n            onPointerEnter={() => {effectButtonHover = true;} }\n            onPointerLeave={() => {effectButtonHover = false;} }\n        />\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <span class=\"la-flexrow -gap0 -padding2-r\">\n            {#if power.veteran}\n            <span class=\"-fontsizesmall -letterspacing0\">\n                {getLocalized(\"LA.pilot.bond.power.veteran.label\")}\n            </span>\n            {/if}\n            {#if power.master}\n            <span class=\"-fontsizesmall -letterspacing0\">\n                {getLocalized(\"LA.pilot.bond.power.master.label\")}\n            </span>\n            {/if}\n        </span>\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.None}\n            index={power.index}\n            uuid={power.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onClick={event => sendToChat(event, power)}\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={power.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (effectButtonHover)\n                    return `--${getLocalized(\"LA.use.label\")}`;\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={power.lid}\n            uuid={power.uuid}\n            \n            collapseID={getPowerCollapseID(power.index)}\n            startCollapsed={true}\n\n            renderOutsideCollapse={outerContent}\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={power.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.bond.power.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.bond.power.empty.subLabel\")}\n    />\n{/if}\n</HeaderMain>\n{/if}","<script lang=\"ts\">\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { CounterBoxType } from \"@/enums/CounterBoxType\";\n    \n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import CounterBox from \"@/svelte/shared/counter/CounterBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    let editButtonHover = $state(false);\n    let addButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const addClockTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.bond.clock.add.tooltip\"));\n    const collID = $derived(`${actor.uuid}.clocks`);\n    const clocks = $derived(system.bond_state.clocks);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    \n    function getClockPath(index: number)\n    {\n        return `system.bond_state.clocks.${index}`;\n    }\n</script>\n\n{#snippet headerContent()}\n<GlyphButton\n    style={[\"mdi mdi-plus-circle-outline -fontsize5 -height4 -lineheight4 la-prmy-header la-scdy-primary\",\n        qualityMode ? \"-glow-prmy -glow-scdy-hover\" : \"\"]}\n\n    flowClass={FlowClass.GeneralControl}\n    path=\"system.bond_state.clocks\"\n    action=\"append\"\n    actionValue=\"(struct)counter\"\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltip={addClockTip}\n    tooltipDirection={TooltipDirection.UP}\n    logText={getLocalized(\"LA.pilot.bond.clock.add.tooltip\")}\n    logging={true}\n\n    onPointerEnter={() => {addButtonHover = true;}}\n    onPointerLeave={() => {addButtonHover = false;}}\n/>\n{/snippet}\n<HeaderMain\n    text={getLocalized(\"LA.pilot.bond.clock.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (addButtonHover)\n            return `--${getLocalized(\"LA.add.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n\n    headerContent={headerContent}\n>\n{#if clocks.length}\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n    {#each clocks as clock, index}\n        <div class=\"la-flexcol -widthfull -fontface-stylized\">\n        {#snippet outerContent()}\n            <div class=\"-padding2-l\">\n                <CounterBox\n                    type={CounterBoxType.Counter}\n                    usesValue={clock.value}\n                    usesMax={clock.max}\n                    path=\"system.bond_state.clocks.{index}\"\n                    style={[\"clipped-bot-alt -widthfull la-bckg-header-anti\"]}\n                    \n                    logging={true}\n                />\n            </div>\n        {/snippet}\n        {#snippet headerSecondaryLeftOptions()}\n            <i class=\"mdi mdi-progress-clock -fontsize5 -padding0-lr\"></i>\n        {/snippet}\n        {#snippet headerSecondaryRightOptions()}\n            <!-- Edit -->\n            <GlyphButton\n                style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n                flowClass={FlowClass.ContextMenu}\n                path={getClockPath(index)}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipDirection={TooltipDirection.UP}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n\n                onPointerEnter={() => {editButtonHover = true;} }\n                onPointerLeave={() => {editButtonHover = false;} }\n            >\n                <i class=\"fas fa-ellipsis-v\"></i>\n            </GlyphButton>\n        {/snippet}\n            <HeaderSecondary\n                text={clock.name}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                borderStyle={[\"-bordersoff\"]}\n                extensionTextFunction={() => {\n                    if (editButtonHover)\n                        return `--${getLocalized(\"LA.edit.extension\")}`;\n                    return undefined;\n                }}\n\n                itemID={clock.lid}\n                uuid={clock.uuid}\n\n                renderOutsideCollapse={outerContent}\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n            </HeaderSecondary>\n        </div>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.bond.clock.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.bond.clock.empty.subLabel\")}\n    />\n{/if}\n</HeaderMain>","import { PilotStore } from \"./module-store\";\n\nexport function getBondQNAMode(uuid: string): boolean\n{\n    return PilotStore.get(uuid).bondQNAMode;\n}\n\nexport function setBondQNAMode(uuid: string, enabled: boolean)\n{\n    PilotStore.set(uuid, { bondQNAMode: enabled });\n}","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getBondQNAMode, setBondQNAMode } from \"@/scripts/store/bond\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getBondImageSrc, getPilotSheetTooltipEnabled, setBondImageSrc } from \"@/scripts/pilot/settings\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    // svelte-ignore state_referenced_locally\n    let bondImageSrc = $state(getBondImageSrc(actor.uuid));\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const questionAnswer = $derived(getBondQNAMode(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const darkTheme = $derived(getBrightness(getThemeKey(actor.uuid)) === \"dark\");\n\n    function getGlowColor()\n    {\n        return darkTheme ? \"la-prmy-text\" : \"la-prmy-primary\";\n    }\n\n    function browseImage()\n    {\n        const fp = new FilePicker({\n            current: bondImageSrc,\n            type: \"image\",\n            callback: (path) => {\n                setBondImageSrc(actor.uuid, path);\n                bondImageSrc = path;\n            },\n        });\n\n        fp.render(true);\n    }\n\n    function tallyAndUpdate(event: Event)\n    {\n        event.stopPropagation();\n\n        let expTotal = 0;\n\n        // Tally XP from the checklist\n        const updatedMajorIdeals = system.bond_state.xp_checklist.major_ideals.map((major: boolean) => \n        {\n            if (major === true) expTotal++;\n            return false;\n        });\n        if (system.bond_state.xp_checklist.minor_ideal === true)\n            expTotal++;\n        if (system.bond_state.xp_checklist.veteran_power === true)\n            expTotal++;\n\n        // Update XP and set their checked state to false\n        if (expTotal > 0)\n            actor.update({\n                [\"system.bond_state.xp.value\"]: system.bond_state.xp.value + expTotal,\n                [\"system.bond_state.xp_checklist\"]: {\n                    major_ideals: updatedMajorIdeals,\n                    minor_ideal: false,\n                    veteran_power: false,\n                },\n            });\n    }\n</script>\n\n{#if system.bond}\n<div class=\"la-flexcol -widthfull -margin1-b -padding1-tb la-reveal-hover\n        {qualityMode ? 'la-bg-scroll-alt' : 'la-bg-alt'}\"\n>\n    <!-- Bond Name -->\n    <span class=\"-fontsize6 -letterspacing1 -upper\">\n        {system.bond.name}\n    </span>\n    <!-- Bond XP -->\n    <div class=\"-widthhalf -padding0-tb -fontface-stylized\">\n        <StatusBar\n            dataName={\"system.bond_state.xp.value\"}\n            nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n            currentValue={system.bond_state.xp.value}\n            maxValue={system.bond_state.xp.max}\n            barStyle={[\"la-bckg-bar-health\"]}\n            barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n            barStyleTertiary={[\"la-bckg-bar-burn -burn\"]}\n            textStyle={[\"la-text-text\"]}\n            clipPath={\"clipped\"}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltip={getLocalized(\"LA.hitpoint.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n        />\n    </div>\n    <div\n        class=\"la-flexrow -positionrelative -widthfull -aligncenter\n            {qualityMode ? 'la-bond-card-spin' : 'la-bond-card'}\"\n    >\n        <!-- Bond Image -->\n        <div class=\"la-bond-card__img-anchor -margin7-tb\"\n        >\n            <img\n                class=\"la-bond-card__img\"\n                src={bondImageSrc}\n                alt={getLocalized(\"LA.placeholder\")}\n            />\n        </div>\n    {#if !questionAnswer}\n        <div class=\"la-bond-card__content la-flexcol -positionabsolute -margin0-tb -heightfull -justifyevenly la-reveal\">\n            <!-- Major Ideals -->\n            <div class=\"la-bond-major la-flexcol -alignstart clipped -widthfull -padding0 -padding1-r\n                    {darkTheme ? 'la-bckg-darken-1' : 'la-bckg-lighten-5' }\"\n            >\n            {#each system.bond.system.major_ideals as major, index}\n                <div class=\"la-flexrow\">\n                    <input type=\"checkbox\"\n                        class=\"\"\n                        name=\"system.bond_state.xp_checklist.major_ideals.{index}\"\n                        checked={system.bond_state.xp_checklist.major_ideals[index]}\n                    />\n                    <span\n                        class=\"-fontsizemedium -lineheight5 -padding0-lr\"\n                    >\n                        {major}\n                    </span>\n                </div>\n            {/each}\n            </div>\n            <!-- Minor Ideals -->\n            <div class=\"la-bond-minor la-flexcol -alignstart clipped -widthfull -padding0 -padding1-r\n                    {darkTheme ? 'la-bckg-darken-1' : 'la-bckg-lighten-5' }\"\n            >\n                <div class=\"la-flexrow -widthfull\">\n                    <input type=\"checkbox\"\n                        class=\"\"\n                        name=\"system.bond_state.xp_checklist.minor_ideal\"\n                        checked={system.bond_state.xp_checklist.minor_ideal}\n                    />\n                    <select\n                        class=\"la-bond__select -fontsizemedium -lineheight5 la-bckg-transparent la-text-text -widthfull\"\n                        name=\"system.bond_state.minor_ideal\" \n                        data-type=\"String\"\n                    >\n                    {#each system.bond.system.minor_ideals as minor}\n                        <option\n                            style=\"color: black\"\n                            value=\"{minor}\"\n                            selected={minor === system.bond_state.minor_ideal}\n                        >\n                            {minor}\n                        </option>\n                    {/each}\n                    </select>\n                </div>\n                <div class=\"la-flexrow\">\n                    <input type=\"checkbox\"\n                        class=\"\"\n                        name=\"system.bond_state.xp_checklist.veteran_power\"\n                        checked={system.bond_state.xp_checklist.veteran_power}\n                    />\n                    <span\n                        class=\"-fontsizemedium -lineheight5 -padding0-lr\"\n                    >\n                        {getLocalized(\"LA.pilot.bond.other.label\")}\n                    </span>\n                </div>\n            </div>\n        </div>\n    {:else}\n        <div class=\"la-bond-card__content la-flexcol -positionabsolute -margin0-tb -heightfull -justifyevenly la-reveal\">\n            <!-- Q&A -->\n            {#each system.bond.system.questions as qna, index}\n            <div class=\"la-bond-question la-flexcol -alignstart clipped -widthfull -padding2-lr -padding0-t -padding1-b\n                        {darkTheme ? 'la-bckg-darken-1' : 'la-bckg-lighten-5' }\">\n                <span\n                    class=\"-fontsizemedium -lineheight5\"\n                >\n                    {qna.question}\n                </span>\n                <select \n                    class=\"la-bond__select -fontsizemedium -lineheight5 la-bckg-transparent la-text-text\"\n                    name=\"system.bond_state.answers.{index}\" \n                    data-type=\"String\"\n                >\n                {#each qna.options as answer}\n                    <option\n                        value=\"{answer}\"\n                        selected={answer === system.bond_state.answers[index]}\n                    >\n                        {answer}\n                    </option>\n                {/each}\n                </select>\n            </div>\n            {/each}\n        </div>\n    {/if}\n    </div>\n    <div class=\"la-flexrow\">\n    <!-- Bond XP Tally -->\n        <FlowButton\n            text={getLocalized(\"LA.pilot.bond.tally.label\")}\n            style={[\"clipped la-bckg-secondary -padding0-tb -flex1\"]}\n\n            flowClass={FlowClass.None}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.DOWN}\n            tooltip={getLocalized(\"LA.pilot.bond.tally.tooltip\")}\n            logText={getLocalized(\"LA.pilot.bond.tally.tooltip\")}\n            logging={true}\n\n            onClick={tallyAndUpdate}\n        />\n        <div class=\"la-flexrow -positionabsolute -right0 -padding3-r -gap2 {advancedOptions ? '' : '-visibilityhidden'}\">\n            <!-- Edit Bond Image -->\n            <GlyphButton\n                style={[\"mdi mdi-image-edit la-text-secondary -fontsize7 la-flexrow -justifycenter -aligncenter\",\n                    qualityMode ? \"-glow-prmy la-prmy-primary -glow-prmy-hover \" + getGlowColor() : \"\"]}\n\n                flowClass={FlowClass.None}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.bond.changeImage.tooltip\")}\n                logText={getLocalized(\"LA.pilot.bond.changeImage.tooltip\")}\n                logging={true}\n\n                onClick={browseImage}\n            />\n            <!-- Edit Bond -->\n            <GlyphButton\n                style={[\"mdi mdi-pencil la-text-secondary -fontsize6 -lineheight8 -justifycenter -aligncenter\",\n                    qualityMode ? \" -glow-prmy la-prmy-primary -glow-prmy-hover \" + getGlowColor() : \"\"]}\n\n                flowClass={FlowClass.ContextMenu}\n                uuid={system.bond.uuid}\n                path=\"itemTypes.bond\"\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.edit.tooltip\")}\n                logText={getLocalized(\"LA.edit.tooltip\")}\n                logging={true}\n            />\n        </div>\n        <div class=\"la-flexrow -positionabsolute -left0 -padding3-l -gap1\">\n            <!-- Q&A Toggle -->\n            <i class=\"mdi mdi-swap-vertical -fontsize la-text-text -positionabsolute -left0\n                {qualityMode ? '-glow-prmy la-prmy-primary -glow-prmy-hover' + getGlowColor() : ''}\"\n            ></i>\n            <GlyphButton\n                style={[\"la-text-secondary -fontsize7 la-flexrow -justifycenter -aligncenter\",\n                    questionAnswer ? \"mdi mdi-list-box\" : \"mdi mdi-help-circle\",\n                    qualityMode ? \"-glow-prmy la-prmy-primary -glow-prmy-hover \" + getGlowColor() : \"\"]}\n\n                flowClass={FlowClass.None}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.bond.swap.tooltip\")}\n                logText={getLocalized(!questionAnswer ? \"LA.pilot.bond.qa.tooltip\" : \"LA.pilot.bond.xp.tooltip\")}\n                logging={true}\n\n                onClick={() => { setBondQNAMode(actor.uuid, !questionAnswer); }}\n            />\n            <!-- Refresh Powers -->\n            <GlyphButton\n                style={[\"mdi mdi-refresh-circle la-text-secondary -fontsize7 -justifycenter\",\n                    qualityMode ? \"-glow-prmy la-prmy-primary -glow-prmy-hover \" + getGlowColor() : \"\"]}\n\n                flowClass={FlowClass.BondPowerRefresh}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n                tooltip={getLocalized(\"LA.pilot.bond.power.refresh.tooltip\")}\n                logText={getLocalized(\"LA.pilot.bond.power.refresh.tooltip\")}\n                logging={true}\n\n                onClick={() => { setBondQNAMode(actor.uuid, !questionAnswer); }}\n            />\n        </div>\n    </div>\n</div>\n{/if}","<script lang=\"ts\">\n    import Burden from \"@/svelte/pilot/Burden.svelte\";\n    import Power from \"@/svelte/pilot/Power.svelte\";\n    import Clock from \"@/svelte/pilot/Clock.svelte\";\n    import Passion from \"@/svelte/pilot/Passion.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n    } = $derived(props);\n    setActorContext(actor);\n</script>\n\n<Passion\n    actor={actor}\n    system={system}\n/>\n<Power\n    actor={actor}\n    system={system}\n/>\n<Burden\n    actor={actor}\n    system={system}\n/>\n<Clock\n    actor={actor}\n    system={system}\n/>","<script lang=\"ts\">\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { setActorContext } from \"@/scripts/context\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { LADataType } from \"@/enums/LADataType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { addCustomFlag, deleteCustomFlag, getCustomFlagPath, getCustomFlags, reorderCustomFlags, updateCustomFlag } from \"@/scripts/flags\";\n    import { getEnricher } from \"@/scripts/enrichers\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getCustomFlagsSortable, setCustomFlagsSortable } from \"@/scripts/store/advanced\";\n    import DragDropHandle from \"@/svelte/shared/dragdrop/DragDropHandle.svelte\";\n\n    const {\n        actor,\n    }: PilotSheetProps = $props();\n    setActorContext(actor);\n\n    let component: HTMLElement | null = $state(null);\n    let deleteButtonHover = $state(false);\n    let addButtonHover = $state(false);\n    let sortButtonHover = $state(false);\n\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Pilot));\n    const flagEntries = $derived(Object.entries(customFlags));\n    const sortable = $derived(getCustomFlagsSortable(actor.uuid));\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const refCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.ref.tooltip\"));\n    const enrichCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"));\n\n    function handleAddCustomFlag(_event: Event, actor: any)\n    {\n        addCustomFlag(actor, CustomFlagKey.Pilot);\n    }\n\n    function handleDeleteCustomFlag(event: Event, actor: any, id: string)\n    {\n        event.stopPropagation();\n        deleteCustomFlag(actor, CustomFlagKey.Pilot, id);\n    }\n\n    function handleUpdateCustomFlag(actor: any, id: string, changes: Partial<CustomFlag>)\n    {\n        updateCustomFlag(actor, CustomFlagKey.Pilot, id, changes);\n    }\n\n    function handleReorderCustomFlag(_event: DragEvent, dropData: { type: string, index: number }, thisData: { type: string, index: number })\n    {\n        if (dropData.type !== LADataType.Sorting)\n            return;\n        reorderCustomFlags(actor, CustomFlagKey.Pilot, dropData.index, thisData.index);\n    }\n\n    function getTypeIcon(type: string)\n    {\n        return type == CustomFlagContentType.Fraction ? 'mdi-fraction-one-half' : 'mdi-numeric'\n    }\n</script>\n\n{#snippet headerOptions()}\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\",\n                sortable ? \" mdi mdi-sort-variant-lock-open \" : \" mdi mdi-sort-variant-lock \"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logging={true}\n\n        onClick={() => setCustomFlagsSortable(actor.uuid, !sortable)}\n        onPointerEnter={() => {sortButtonHover = true;} }\n        onPointerLeave={() => {sortButtonHover = false;} }\n    ></GlyphButton>\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-plus-thick la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logging={true}\n\n        onClick={event => handleAddCustomFlag(event, actor)}\n        onPointerEnter={() => {addButtonHover = true;} }\n        onPointerLeave={() => {addButtonHover = false;} }\n    ></GlyphButton>\n{/snippet}\n\n{#snippet headerSecondaryInnerLeftOptions()}\n    <i\n        class=\"mdi mdi-code-json -padding0-lr\"\n    ></i>\n{/snippet}\n\n<div class=\"la-custom__list la-flexcol -widthfull\">\n    <HeaderMain\n        text={getLocalized(\"LA.tab.custom.subLabel\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-brdr-transparent clipped-bot-alt\"]}\n        extensionTextFunction={() => {\n            if (addButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.add.extension\")}`;\n            if (sortButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.sort.extension\")}`;\n            return undefined;\n        }}\n\n        headerContent={headerOptions}\n    >\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\"\n            bind:this={component}\n        >\n        {#each flagEntries as [id, flag], index (id)}\n            {#snippet headerSecondaryLeftOptions()}\n                <i\n                    class=\"mdi -padding0-lr\n                {getTypeIcon(flag.contentType)}\"\n                ></i>\n            {/snippet}\n\n            {#snippet headerSecondaryRightOptions()}\n                <GlyphButton type=\"button\"\n                    flowClass={FlowClass.None}\n                    style={[\"mdi mdi-close-thick la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                    qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logText={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logging={true}\n\n                    onClick={event => handleDeleteCustomFlag(event, actor, id)}\n                    onPointerEnter={() => {deleteButtonHover = true;} }\n                    onPointerLeave={() => {deleteButtonHover = false;} }\n                ></GlyphButton>\n            {/snippet}\n\n            <DragDropHandle\n                style={[sortable ? \"-padding5-l\" : \"\"]}\n                iconStyle={[sortable ? \"\" : \"-displaynone\"]}\n                index={index}\n                root={component}\n                data={{ type: LADataType.Sorting, index }}\n                onDrop={handleReorderCustomFlag}\n                deleteDisabled={true}\n                logging={false}\n                disabled={!sortable}\n            >\n            <HeaderSecondary\n                text={flag.name || getLocalized(\"LA.tab.custom.flag.name.label\")}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                borderStyle={[\"la-brdr-pilot\"]}\n                extensionTextFunction={() => {\n                    if (deleteButtonHover)\n                        return `--${getLocalized(\"LA.tab.custom.delete.extension\")}`;\n                    return undefined;\n                }}\n\n                collapseID={`custom.${id}`}\n                startCollapsed={false}\n\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n                <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.name.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.name}\n                            placeholder={getLocalized(\"LA.namePlaceholder\")}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { name: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.contentType.label\")}\n                    >\n                        <select\n                            class=\"la-customvalue__select la-text-text -bordersround -small la-brdr-repcap -padding0-lr -widthfull\"\n                            onchange={event => handleUpdateCustomFlag(actor, id, { contentType: (event.target as HTMLSelectElement).value as CustomFlagContentType })}\n                        >\n                            <option value={CustomFlagContentType.Value}\n                                selected={flag.contentType === CustomFlagContentType.Value}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.value.label\")}</option>\n                            <option value={CustomFlagContentType.Fraction}\n                                selected={flag.contentType === CustomFlagContentType.Fraction}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.fraction.label\")}</option>\n                        </select>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.content.label\")}\n                    >\n                        <div class=\"la-flexrow -gap1\">\n                            <div class=\"la-flexcol -gap0\">\n                                <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                <input type=\"number\"\n                                    class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                    value={flag.content.value}\n                                    onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, value: Number((event.target as HTMLInputElement).value) } })}\n                                    onfocus={event => event.currentTarget.select()}\n                                />\n                            </div>\n                            {#if flag.contentType === CustomFlagContentType.Fraction}\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.max}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, max: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.min}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, min: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                            {/if}\n                        </div>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.sidebarToggle.label\")}\n                    >\n                        <input type=\"checkbox\"\n                            class=\"-widthfull\"\n                            checked={flag.showInSidebar}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { showInSidebar: (event.target as HTMLInputElement).checked })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.color.label\")}\n                    >\n                        <input type=\"color\"\n                            class=\"la-customvalue__input -widthfull\"\n                            value={flag.color}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { color: (event.target as HTMLInputElement).value })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.icon.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.icon}\n                            placeholder={\"mdi mdi-abacus\"}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { icon: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.tooltip.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.tooltip}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { tooltip: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <HeaderSecondary\n                        text={getLocalized(\"LA.tab.custom.flag.assist.label\")}\n                        headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                        textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                        borderStyle={[\"la-brdr-pilot\"]}\n\n                        collapseID={`custom.${id}.assist`}\n                        startCollapsed={false}\n\n                        contentLeft={headerSecondaryInnerLeftOptions}\n                    >\n                        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.ref.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getCustomFlagPath(CustomFlagKey.Pilot, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Pilot, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Pilot, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.enricher.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getEnricher(actor.uuid, CustomFlagKey.Pilot, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Pilot, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Pilot, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                        </div>\n                    </HeaderSecondary>\n                </div>\n            </HeaderSecondary>\n            </DragDropHandle>\n        {/each}\n        </div>\n    </HeaderMain>\n</div>\n","<!--\n(#14) - Basically hijacking the statically mounted nav element in the `.hbs` file to be able to hide/display\nthe given element reactively. Expected to be removed in an update to the Lancer system that will migrate sheets to AppV2\n-->\n<script lang=\"ts\">\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n\n    type CustomToggleProps = {\n        actor: any;\n        button: HTMLElement;\n    };\n\n    const {\n        actor, button\n    } : CustomToggleProps = $props();\n\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n\n    $effect(() => {\n        button?.classList.toggle('-displaynone', !advancedOptions);\n    });\n</script>\n","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    \n    const props: PilotSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function levelUp(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.level\": system.level + 1, \n        })\n    }\n\n    function levelDown(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.level\": Math.max(system.level - 1, 0), \n        })\n    }\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend\">\n        {getLocalized(\"LA.pilot.level.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding1-b -heightfull\">\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-plus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.level.up.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.level.up.tooltip\")}\n            logging={true}\n\n            onClick={levelUp}\n        />\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-minus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.level.down.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.level.down.tooltip\")}\n            logging={true}\n\n            onClick={levelDown}\n        />\n    </div>\n</div>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    \n    const props: PilotSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function levelUp(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.hull\": system.hull + 1, \n        })\n    }\n\n    function levelDown(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.hull\": Math.max(system.hull - 1, 0), \n        })\n    }\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend -capitalize\">\n        {getLocalized(\"LA.hull.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding1-b -heightfull\">\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-plus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.hull.up.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.hull.up.tooltip\")}\n            logging={true}\n\n            onClick={levelUp}\n        />\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-minus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.hull.down.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.hull.down.tooltip\")}\n            logging={true}\n\n            onClick={levelDown}\n        />\n    </div>\n</div>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    \n    const props: PilotSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function levelUp(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.agi\": system.agi + 1, \n        })\n    }\n\n    function levelDown(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.agi\": Math.max(system.agi - 1, 0), \n        })\n    }\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend -capitalize\">\n        {getLocalized(\"LA.agility.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding1-b -heightfull\">\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-plus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.level.up.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.level.up.tooltip\")}\n            logging={true}\n\n            onClick={levelUp}\n        />\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-minus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.agility.down.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.agility.down.tooltip\")}\n            logging={true}\n\n            onClick={levelDown}\n        />\n    </div>\n</div>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    \n    const props: PilotSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n\n    function levelUp(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.sys\": system.sys + 1, \n        })\n    }\n\n    function levelDown(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.sys\": Math.max(system.sys - 1, 0), \n        })\n    }\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend -capitalize\">\n        {getLocalized(\"LA.systems.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding1-b -heightfull\">\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-plus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltip={getLocalized(\"LA.pilot.systems.up.tooltip\")}\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.systems.up.tooltip\")}\n            logging={true}\n\n            onClick={levelUp}\n        />\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-minus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltip={getLocalized(\"LA.pilot.systems.down.tooltip\")}\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.systems.down.tooltip\")}\n            logging={true}\n\n            onClick={levelDown}\n        />\n    </div>\n</div>","<script lang=\"ts\">\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { SETTINGS_BUTTON_STYLE, SETTINGS_HEADER_STYLE } from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    \n    const props: PilotSheetProps = $props();\n    const {\n        actor,\n        document,\n        system,\n    } = $derived(props);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function levelUp(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.eng\": system.eng + 1, \n        })\n    }\n\n    function levelDown(event : MouseEvent)\n    {\n        event.stopPropagation();\n        document.update({\n            \"system.eng\": Math.max(system.eng - 1, 0), \n        })\n    }\n</script>\n\n<div class=\"-heightfull\n    {advancedOptions ? 'la-flexrow' : '-displaynone'}\"\n>\n    <span class=\"{SETTINGS_HEADER_STYLE()} -alignend -capitalize\">\n        {getLocalized(\"LA.engineering.label\")}\n    </span>\n    <div class=\"la-flexcol -alignstart -padding1-b -heightfull\">\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-plus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.engineering.up.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.engineering.up.tooltip\")}\n            logging={true}\n\n            onClick={levelUp}\n        />\n        <GlyphButton\n            style={[SETTINGS_BUTTON_STYLE(), \"mdi mdi-minus-box -verticalaligntop\"]}\n            \n            flowClass={FlowClass.None}\n            \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.pilot.engineering.down.tooltip\")}\n            tooltipDirection={TooltipDirection.RIGHT}\n            logText={getLocalized(\"LA.pilot.engineering.down.tooltip\")}\n            logging={true}\n\n            onClick={levelDown}\n        />\n    </div>\n</div>","<script lang=\"ts\">\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import LevelSettings from \"@/svelte/pilot/settings/LevelSettings.svelte\";\n    import HullSettings from \"@/svelte/pilot/settings/HullSettings.svelte\";\n    import AgilitySettings from \"@/svelte/pilot/settings/AgilitySettings.svelte\";\n    import SystemsSettings from \"@/svelte/pilot/settings/SystemsSettings.svelte\";\n    import EngineeringSettings from \"@/svelte/pilot/settings/EngineeringSettings.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props: PilotSheetProps = $props();\n    const {\n    } = $derived(props);\n    setActorContext(props.actor);\n</script>\n<script lang=\"ts\" module>\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { logographicLanguage } from \"@/scripts/helpers\";\n\n    export const SETTINGS_BUTTON_STYLE = () => \" la-text-secondary la-prmy-primary -fontsize5 -height4 \" + (getExtraEffectsEnabled() ? \"-glow-prmy-hover \" : \" \");\n    export const SETTINGS_HEADER_STYLE = () => \" la-bckg-primary la-text-header clipped-top -width7 -padding0-b -padding1-t -fontface-stylized \" + (logographicLanguage() ? \"-fontsizemedium -padding0-lr\" : \"-fontsizemediumer -writingmode-v\");\n</script>\n\n<LevelSettings\n    {...props}\n/>\n<HullSettings\n    {...props}\n/>\n<AgilitySettings\n    {...props}\n/>\n<SystemsSettings\n    {...props}\n/>\n<EngineeringSettings\n    {...props}\n/>","<script lang=\"ts\">\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getPilotSheetTooltipEnabled, getSidebarRatio, setSidebarRatio, setThemeOverride } from \"@/scripts/pilot/settings\";\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import SidebarRatioSlider from \"@/svelte/shared/input/SidebarRatioSlider.svelte\";\n    import ThemeOverrideButton from \"@/svelte/shared/button/ThemeOverrideButton.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n    }: PilotSheetProps = $derived(props)\n    setActorContext(actor);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<SidebarRatioSlider\n    uuid={actor.uuid}\n    ratioGetter={getSidebarRatio}\n    ratioSetter={setSidebarRatio}\n    style={[\"-aligncontentcenter\"]}\n    \n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    logging={true}\n/>\n\n<ThemeOverrideButton\n    disabled={!advancedOptions}\n    uuid={actor.uuid}\n    style={[\"-alignselfstart\"]}\n    \n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    setOverride={setThemeOverride}\n\n    logging={true}\n/>","<script lang=\"ts\">\n    import { ActionLogCollapsePrefix } from \"@/enums/ActionLogCollapsePrefix\";\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import { getPilotSheetLogActionDontSaveCollapse, getPilotSheetLogActionStartCollapsed } from \"@/scripts/pilot/settings\";\n    import ActionLog from \"@/svelte/shared/ActionLog.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor\n    }: PilotSheetProps = $derived(props);\n    setActorContext(actor);\n    const actionLogSaveCollapse = getPilotSheetLogActionDontSaveCollapse();\n    const actionLogStartCollapsed = getPilotSheetLogActionStartCollapsed();\n</script>\n\n<div class=\"-margin7-t\">\n    <ActionLog\n        uuid={actor.uuid}\n        dontSaveCollapse={actionLogSaveCollapse}\n        startCollapsed={actionLogStartCollapsed}\n        collapsePrefix={ActionLogCollapsePrefix.PilotSheet}\n    />\n</div>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import EffectButton from \"@/svelte/shared/button/EffectButton.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        skills\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let effectButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.skills`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function getSkillPath(index: number)\n    {\n        return `itemTypes.skill.${index}`;\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.skill.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-primary\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if skills.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each skills as skill, index}\n    {#snippet headerSecondaryLeftOptions()}\n        <EffectButton\n            iconStyle={[\"la-text-header cci cci-skill -fontsize7\"]}\n            iconBackgroundStyle={[\n                \"-fontsize7 la-prmy-secondary\", \n                qualityMode ? \"-pulse-prmy\" : \"la-text-scrollbar-secondary\"\n            ]}\n            \n            flowClass={FlowClass.Skill}\n            uuid={skill.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltipDirection={TooltipDirection.LEFT}\n            tooltip={skill.system.description}\n            tooltipHeader={getLocalized(\"LA.pilot.skillTrigger.label\")}\n            logging={true}\n                        \n            onPointerEnter={() => {effectButtonHover = true;} }\n            onPointerLeave={() => {effectButtonHover = false;} }\n        />\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <span class=\"la-flexrow -gap0 -padding2-r -fontface-stylized\">\n            {#if skill.system.curr_rank > 0}\n            <span class=\"-fontsize4\">\n                +\n            </span>\n            {:else if skill.system.curr_rank < 0}\n            <span class=\"-fontsize4\">\n                -\n            </span>\n            {/if}\n            {skill.system.curr_rank * 2}\n        </span>\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexrow\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getSkillPath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <!-- Send to chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.SendToChat}\n            index={index}\n            uuid={skill.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={skill.name}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (effectButtonHover)\n                    return `--${getLocalized(\"LA.use.label\")}`;\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={skill.lid}\n            uuid={skill.uuid}\n            path={getSkillPath(index)}\n            acceptTypes={\"skill\"}\n            \n            collapseID={skill.uuid}\n            startCollapsed={true}\n\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={skill.system.description}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n                <EffectBox\n                    name={getLocalized(\"LA.detail.label\")}\n                    effect={skill.system.detail}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.skill.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.skill.empty.subLabel\")}\n        type={AcceptType.Skill}\n        path=\"itemTypes.skill.{skills.length}\"\n    />\n{/if}\n</HeaderMain>","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getNPCSheetTooltipEnabled } from \"@/scripts/npc/settings\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { AcceptType } from \"@/enums/AcceptType\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import { Logger } from \"@/classes/Logger\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    \n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_ICON_SIZE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { H2_BUTTON_ICON_STYLE } from \"@/svelte/shared/button/Button.svelte\";\n\n    const {\n        actor,\n        licenses\n    } = $props();\n    let collapseAllButtonHover = $state(false);\n    let editButtonHover = $state(false);\n    let messageButtonHover = $state(false);\n    let licenseDescriptions = $state<string[]>([]);\n\n    const tooltipEnabled = getNPCSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.licenses`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    onMount(() => {\n        // Fetch license descriptions from the compendium's cold storage\n        // and use Svelte's reactivity to update the UI\n        licenses.forEach((license: any, index: number) => {\n            fetchLicenseDescription(license, index);\n        });\n    });\n\n    async function fetchLicenseDescription(license: any, index: number) \n    {\n        try {\n            const item = await (game.lancer as any).fromLid(license.system.key);\n            const frame = await fromUuid(item.uuid) as any;\n            updateLicenseDescription(index, frame?.system.description || \"\");\n        } catch (error) {\n            console.error(`Failed to fetch license description for index ${index}:`, error);\n        }\n    }\n\n    function updateLicenseDescription(index: number, description: string) \n    {\n        licenseDescriptions[index] = description;\n    }\n\n    function getLicensePath(index: number)\n    {\n        return `itemTypes.license.${index}`;\n    }\n\n    function sendToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, license: any, index: number)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && license)\n        {\n            let chatData = {\n                title: `${license.name} ${license.system.curr_rank}`, \n                description: licenseDescriptions[index] || \"\",\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#snippet headerOptions()}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.license.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (collapseAllButtonHover)\n            return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n{#if licenses.length}\n    <div class=\"la-flexcol -gap0 -widthfull\">\n    {#each licenses as license, index}\n    {#snippet headerSecondaryLeftOptions()}\n        <i class=\"{H2_ICON_SIZE} cci cci-license\"></i>\n    {/snippet}\n    {#snippet headerSecondaryRightOptions()}\n        <span class=\"la-flexrow -gap0 -padding2-r -fontface-stylized\">\n            <span class=\"-fontsizesmall -letterspacing0\">\n                {getLocalized(\"LA.rank.label\")}\n            </span>\n            {license.system.curr_rank}\n        </span>\n        <!-- Edit -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr la-flexrow\"]}\n            flowClass={FlowClass.ContextMenu}\n            path={getLicensePath(index)}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edit.tooltip\")}\n            logText={getLocalized(\"LA.edit.tooltip\")}\n            logging={true}\n\n            onPointerEnter={() => {editButtonHover = true;} }\n            onPointerLeave={() => {editButtonHover = false;} }\n        >\n            <i class=\"fas fa-ellipsis-v\"></i>\n        </GlyphButton>\n        <!-- Send to chat -->\n        <GlyphButton\n            style={[H2_BUTTON_ICON_STYLE(), \"-padding0-lr\"]}\n            flowClass={FlowClass.None}\n            index={index}\n            uuid={license.uuid}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipDirection={TooltipDirection.UP}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.chat.tooltip\")}\n            logText={getLocalized(\"LA.chat.tooltip\")}\n            logging={true}\n\n            onClick={event => sendToChat(event, license, index)}\n            onPointerEnter={() => {messageButtonHover = true;} }\n            onPointerLeave={() => {messageButtonHover = false;} }\n        >\n            <i class=\"mdi mdi-message\"></i>\n        </GlyphButton>\n    {/snippet}\n        <HeaderSecondary\n            text={`${license.system.manufacturer} ${license.name}`}\n            headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n            textStyle={[H2_TEXT_SIZE, \"-overflowhidden -fontface-stylized\"]}\n            borderStyle={[\"-bordersoff\"]}\n            extensionTextFunction={() => {\n                if (messageButtonHover)\n                    return `--${getLocalized(\"LA.chat.extension\")}`;\n                if (editButtonHover)\n                    return `--${getLocalized(\"LA.edit.extension\")}`;\n                return undefined;\n            }}\n\n            itemID={license.lid}\n            uuid={license.uuid}\n            path={getLicensePath(index)}\n            acceptTypes={\"license\"}\n\n            collapseID={license.uuid}\n            startCollapsed={true}\n\n            contentLeft={headerSecondaryLeftOptions}\n            contentRight={headerSecondaryRightOptions}\n        >\n            <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                <EffectBox\n                    name={getLocalized(\"LA.description.label\")}\n                    effect={licenseDescriptions[index]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    logging={true}\n                />\n            </div>\n        </HeaderSecondary>\n    {/each}\n    </div>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.license.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.license.empty.subLabel\")}\n        type={AcceptType.License}\n        path=\"itemTypes.license.{licenses.length}\"\n    />\n{/if}\n</HeaderMain>","<script lang=\"ts\">\n    import type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\n    import CoreBonus from \"@/svelte/pilot/CoreBonus.svelte\";\n    import Talents from \"@/svelte/pilot/Talents.svelte\";\n    import SkillTriggers from \"@/svelte/pilot/SkillTriggers.svelte\";\n    import License from \"./License.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n        itemTypes,\n    } : PilotSheetProps = $derived(props);\n    setActorContext(actor);\n</script>\n\n<SkillTriggers\n    actor={actor}\n    skills={itemTypes.skill}\n/>\n<License\n    actor={actor}\n    licenses={itemTypes.license}\n/>\n<CoreBonus\n    actor={actor}\n    sheetActor={actor}\n/>\n<Talents\n    actor={actor}\n    sheetActor={actor}\n/>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme, getThemeHistoryLabel } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import {getThemeKey} from \"@/scripts/store/theme\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    let editButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.history`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const labelTheme = $derived(getThemeKey(actor.uuid));\n</script>\n\n{#snippet headerOptions()}\n<GlyphButton\n    style={[\"mdi mdi-pencil -fontsize4 -height4 -lineheight4 la-prmy-header la-scdy-primary\",\n        qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n    flowClass={FlowClass.EditText}\n    path=\"system.history\"\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltip={getLocalized(\"LA.edit.tooltip\")}\n    tooltipDirection={TooltipDirection.UP}\n    logText={getLocalized(\"LA.edit.tooltip\")}\n    logging={true}\n\n    onPointerEnter={() => {editButtonHover = true;}}\n    onPointerLeave={() => {editButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.history.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n    <EffectBox\n        name={getThemeHistoryLabel(labelTheme)}\n        effect={ system.history ? system.history : getLocalized(\"LA.placeholder\") }\n    />\n</HeaderMain>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getCSSDocumentTheme, getThemeHistoryLabel } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import {getThemeKey} from \"@/scripts/store/theme\";\n\n    const {\n        actor,\n        system,\n    } = $props();\n    let editButtonHover = $state(false);\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.notes`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const labelTheme = $derived(getThemeKey(actor.uuid));\n</script>\n\n{#snippet headerOptions()}\n<GlyphButton\n    style={[\"mdi mdi-pencil -fontsize4 -height4 -lineheight4 la-prmy-header la-scdy-primary\",\n        qualityMode ? \" -glow-prmy -glow-scdy-hover\" : \"\"]}\n\n    flowClass={FlowClass.EditText}\n    path=\"system.notes\"\n\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n    tooltip={getLocalized(\"LA.edit.tooltip\")}\n    tooltipDirection={TooltipDirection.UP}\n    logText={getLocalized(\"LA.edit.tooltip\")}\n    logging={true}\n\n    onPointerEnter={() => {editButtonHover = true;}}\n    onPointerLeave={() => {editButtonHover = false;}}\n/>\n{/snippet}\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.notes.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-weapon\"]}\n    extensionTextFunction={() => {\n        if (editButtonHover)\n            return `--${getLocalized(\"LA.edit.extension\")}`;\n        return undefined;\n    }}\n    \n    collapseID={collID}\n    startCollapsed={true}\n    \n    headerContent={headerOptions}\n>\n    <EffectBox\n        name={getThemeHistoryLabel(labelTheme)}\n        effect={ system.notes ? system.notes : getLocalized(\"LA.placeholder\") }\n    />\n</HeaderMain>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const {\n        actor,\n        system,\n        pilotCache,\n    } = $props();\n    // svelte-ignore state_referenced_locally\n    let cloudID = $state(system.cloud_id || \"\");\n\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const collID = $derived(`${actor.uuid}.sync`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    function overridePilotIDWithCloudID(event: Event)\n    {\n        event.stopPropagation();\n\n        cloudID = (event.target as HTMLSelectElement).value;\n    }\n\n    function getGlowColor()\n    {\n        return getBrightness(getThemeKey(actor.uuid)) === \"dark\" ? \"la-text-text\" : \"la-text-secondary\";\n    }\n</script>\n\n<HeaderMain\n    text={getLocalized(\"LA.pilot.sync.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-primary\"]}\n    \n    collapseID={collID}\n    startCollapsed={false}\n>\n    <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n        <EffectBox\n            name={getLocalized(\"LA.pilot.sync.download.label\")}\n        >\n            <div class=\"la-flexrow -aligncenter -widthfull\">\n                <GlyphButton\n                    style={[\"la-flexcol mdi mdi-cloud-download -fontsize7 la-prmy-header la-scdy-primary -padding1-lr\",\n                        qualityMode ? \" -glow-prmy -glow-scdy-hover \" + getGlowColor() : \"\"]}\n                    flowClass={FlowClass.DownloadFromCloud}\n                    action=\"download\"\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.pilot.sync.download.tooltip\")}\n                    tooltipDirection={TooltipDirection.LEFT}\n                    logText={getLocalized(\"LA.pilot.sync.download.tooltip\")}\n                    logging={true}\n                >\n                    <span class=\"-fontsizesmall -upper -fontface-stylized\">\n                        SYNC\n                    </span>\n                </GlyphButton>\n                <div class=\"la-flexcol -widthfull -gap0\">\n                    {#if pilotCache?.length}\n                    <select\n                        class=\"la-sync__select -textaligncenter la-bckg-transparent la-text-text la-brdr-text\"\n                        name=\"selectCloudId\"\n                        data-type=\"text\"\n                        onchange={event => overridePilotIDWithCloudID(event)}\n                    >\n                    {#each pilotCache as pilot}\n                        <option value={pilot.id}\n                            selected={pilot.id === cloudID}\n                        >\n                            {`${pilot.callsign} - ${pilot.name}`}\n                        </option>\n                    {/each}\n                    </select>\n                    {/if}\n                    <input type=\"text\"\n                        class=\"-bordersround -small la-text-text -padding1-lr -letterspacing1 -fontface-stylized -fontsize4\"\n                        name=\"system.cloud_id\"\n                        value={cloudID}\n                        data-dtype=\"string\"\n                        placeholder={getLocalized(\"LA.pilot.sync.download.subLabel\")}\n                    />\n                </div>\n            </div>\n        </EffectBox>\n        <EffectBox\n            name={getLocalized(\"LA.pilot.sync.import.label\")}\n        >\n            <input type=\"file\"\n                class=\"la-text-text -widthfull -padding0-tb -fontface-stylized -upper\n                    lcp-up\"\n                id=\"pilot-json-import\"\n                name=\"pilot-json-up\"\n                accept=\".json\"\n            >\n        </EffectBox>\n    </div>\n</HeaderMain>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import History from \"@/svelte/pilot/History.svelte\";\n    import Note from \"@/svelte/pilot/Note.svelte\";\n    import Sync from \"@/svelte/pilot/Sync.svelte\";\n    import ActiveEffects from \"@/svelte/shared/ActiveEffects.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor\n    } = $derived(props);\n    setActorContext(actor);\n\n    const collID = $derived(`${actor.uuid}.status.activeEffects`);\n</script>\n\n<Sync\n    {...props}\n/>\n<HeaderMain\n    text={getLocalized(\"LA.tab.status.effects.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-primary\"]}\n    \n    collapseID={collID}\n    startCollapsed={false}\n>\n    <ActiveEffects\n        {...props}\n    />\n</HeaderMain>\n<History\n    {...props}\n/>\n<Note\n    {...props}\n/>","<script lang=\"ts\">\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import StatComboShort from \"@/svelte/shared/StatComboShort.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n\n    const {\n        actor,\n        selectedMech,\n    } = $props();\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const collID = $derived(`${actor.uuid}.mechStats`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n</script>\n\n<HeaderMain\n    text={getLocalized(\"LA.tab.statistics.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-weapon\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-transparent la-bckg-card clipped-bot-alt\"]}\n\n    collapseID={collID}\n    startCollapsed={true}\n>\n<div class=\"la-flexcol -widthfull clipped-bot-alt -fontface-stylized\">\n    <div class=\"la-flexrow -justifyevenly -widthfull la-bckg-darken-1 -padding0-tb\">\n        <StatComboShort\n            icon={\"cci cci-role-defender -alignselfcenter\"}\n            label={getLocalized(\"LA.armor.short\")}\n            value={selectedMech.system.armor}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.armor.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-evasion -alignselfcenter\"}\n            label={getLocalized(\"LA.evasion.short\")}\n            value={selectedMech.system.evasion}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.evasion.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-edef -alignselfcenter\"}\n            label={getLocalized(\"LA.edefense.short\")}\n            value={selectedMech.system.edef}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.edefense.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n    </div>\n    <div class=\"la-flexrow -justifyevenly -widthfull -padding1-tb -fontsizemedium\"\n    >\n        <StatComboShort\n            icon={\"mdi mdi-heart-flash -alignselfcenter\"}\n            label={getLocalized(\"LA.hitpoint.short\")}\n            value={selectedMech.system.hp.max}\n            outerStyle={[\"la-text-text -fontsize6\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.hitpoint.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-structure -alignselfcenter\"}\n            label={getLocalized(\"LA.structure.label\")}\n            value={selectedMech.system.structure.max}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.structure.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-heat -alignselfcenter\"}\n            label={getLocalized(\"LA.heat.label\")}\n            value={selectedMech.system.heat.max}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.heat.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-reactor -alignselfcenter\"}\n            label={getLocalized(\"LA.stress.label\")}\n            value={selectedMech.system.stress.max}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n    \n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.stress.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n    </div>\n    <div class=\"la-flexrow -justifyevenly -widthfull la-bckg-darken-1 -padding0-tb\">\n        <StatComboShort\n            icon={\"cci cci-tech-full -alignselfcenter\"}\n            label={getLocalized(\"LA.tattack.short\")}\n            value={selectedMech.system.tech_attack}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.tattack.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-save -alignselfcenter\"}\n            label={getLocalized(\"LA.save.short\")}\n            value={selectedMech.system.save}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.save.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n        <StatComboShort\n            icon={\"cci cci-sensor -alignselfcenter\"}\n            label={getLocalized(\"LA.sensor.short\")}\n            value={selectedMech.system.sensor_range}\n            outerStyle={[\"la-text-text -fontsize7\"]}\n            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n            tooltipEnabled={tooltipEnabled}\n            tooltipTheme={theme}\n            tooltip={getLocalized(\"LA.sensor.tooltip\")}\n            tooltipDirection={TooltipDirection.LEFT}\n        />\n    </div>\n</div>\n</HeaderMain>","<script lang=\"ts\">\n    import { id as moduleID } from '@/module.json';\n    import { getLocalized } from \"@/scripts/helpers\";\n    import { getPilotSheetTooltipEnabled } from \"@/scripts/pilot/settings\";\n    import { PilotStore } from \"@/scripts/store/module-store\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { getThemeKey } from '@/scripts/store/theme';\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import MechStats from \"@/svelte/pilot/MechStats.svelte\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EmptyBox from \"@/svelte/shared/EmptyBox.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { setActorContext } from \"@/scripts/context\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n    } = $derived(props);\n    setActorContext(actor);\n    const ownedMechs: any[] = game.actors?.filter((mech: any) => \n        mech.type === \"mech\" && \n        mech.system.pilot?.status === \"resolved\" && \n        mech.system.pilot.value.id === actor.id) ?? [];\n    // svelte-ignore state_referenced_locally\n    let selectedMechIndex = $state(PilotStore.get(actor.uuid).selectedMech);\n\n    const qualityMode = getExtraEffectsEnabled();\n    const tooltipEnabled = getPilotSheetTooltipEnabled();\n    const themeOverride = $derived(getBrightness(getThemeKey(actor.uuid)) === 'light' ? 'la-text-primary' : 'la-text-text');\n    const collID = $derived(`${actor.uuid}.mechStorage`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const activateTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.mechStorage.activate.tooltip\"));\n    const deactivateTip = TooltipFactory.buildTooltip(getLocalized(\"LA.pilot.mechStorage.deactivate.tooltip\"));\n\n    function isInactive()\n    {\n        return !system.active_mech || system.active_mech.id !== ownedMechs[selectedMechIndex].uuid;\n    }\n    \n    function getGlowColor()\n    {\n        return isInactive() ? \"la-prmy-system\" : \"la-prmy-text\";\n    }\n\n    function getSizeTip()\n    {\n        return TooltipFactory.buildTooltip(getLocalized(\"LA.size.tooltip\"), `${getLocalized(\"LA.size.label\")} ${ownedMechs[selectedMechIndex].system.size}`);\n    }\n\n    function getSpeedTip()\n    {\n        return TooltipFactory.buildTooltip(getLocalized(\"LA.speed.tooltip\"), `${getLocalized(\"LA.speed.label\")} ${ownedMechs[selectedMechIndex].system.speed}`);\n    }\n\n    function handleMechSelect(event: Event, index: number)\n    {\n        event.stopPropagation();\n\n        selectedMechIndex = index;\n        PilotStore.set(actor.uuid, {\n            selectedMech: index\n        });\n    }\n\n    function setActiveMech(event: Event)\n    {\n        event.stopPropagation();\n\n        if (system.active_mech && system.active_mech.id === ownedMechs[selectedMechIndex].uuid)\n        {\n            actor.update({\n                [\"system.active_mech\"]: null\n            })\n        }\n        else\n        {\n            ownedMechs[selectedMechIndex].update({\n                [\"system.pilot\"]: actor.uuid\n            });\n            actor.update({\n                [\"system.active_mech\"]: ownedMechs[selectedMechIndex].uuid\n            })\n        }\n    }\n</script>\n\n{#if ownedMechs.length}\n<div class=\"la-flexcol -widthfull -margin1-b -padding1-tb la-reveal-hover\n        {qualityMode ? 'la-bg-scroll-alt' : 'la-bg-alt'}\"\n>\n    <div class=\"-positionrelative -widthfull la-reveal\">\n        <span class=\"la-selected-mech__active -positionabsolute la-outl-header -bold -textaligncenter -letterspacing1 -widthfull -height5 -lineheight5 la-bckg-darken-2\n            {isInactive() ? 'la-text-error' : 'la-text-system'}\"\n        >\n        {#if isInactive()}\n            {getLocalized(\"LA.pilot.mechstorage.inactive.label\")}\n        {:else}\n            {getLocalized(\"LA.pilot.mechstorage.active.label\")}\n        {/if}\n        </span>\n    </div>\n    <button \n        class=\"-fontsize6 -letterspacing1 -upper\n            {qualityMode ? '-glow-hover-primary' : ''}\n            ref set click-open\"\n        data-uuid={ownedMechs[selectedMechIndex].uuid}\n        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.mechStorage.open.tooltip\"), actor.uuid) }\n        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        draggable={true}\n    >\n        {ownedMechs[selectedMechIndex].name}\n    </button>\n    <span class=\"-fontsizemedium -letterspacing0 -upper\">\n        {ownedMechs[selectedMechIndex].system.loadout.frame?.value.system.manufacturer || \n        getLocalized(\"LA.placeholder\")}\n    </span>\n    <img\n        class=\"la-selected-mech__img\"\n        src={ ownedMechs[selectedMechIndex].img === \"systems/lancer/assets/icons/mech.svg\" ? `modules/${moduleID}/assets/nodata.png` : ownedMechs[selectedMechIndex].img }\n        alt={getLocalized(\"LA.placeholder\")}\n    />\n    <div class=\"la-flexcol -positionabsolute -right0\">\n        <div class=\" -fontsize19\">\n        {#if ownedMechs[selectedMechIndex].system.size < 1}\n            <i class=\"cci cci-size-half {themeOverride} la-outl-shadow\"\n                data-tooltip={tooltipEnabled ? getSizeTip() : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.LEFT}></i>\n        {:else}\n            <i class=\"cci cci-size-{ownedMechs[selectedMechIndex].system.size} {themeOverride} la-outl-shadow\"\n                data-tooltip={tooltipEnabled ? getSizeTip() : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.LEFT}></i>\n        {/if}\n        </div>\n        <div class=\" la-flexrow -fontsize9\" \n            data-tooltip={tooltipEnabled ? getSpeedTip() : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.LEFT}>\n            <i class=\"mdi mdi-arrow-right-bold-hexagon-outline {themeOverride} la-outl-shadow\"></i>\n            <span class=\"{themeOverride} la-outl-shadow -bold\">{ownedMechs[selectedMechIndex].system.speed}</span>\n        </div>\n    </div>\n    <div class=\"-positionrelative\">\n        <button type=\"button\"\n            class=\"la-flexrow -widthfull -fontsize13 -positionabsolute -bottom0 \n                {isInactive() ? 'cci cci-activate la-text-system' : 'cci cci-deactivate la-text-weapon'}\n                {qualityMode ? '-glow-prmy la-prmy-primary -glow-prmy-hover' + getGlowColor() : ''}\"\n            data-tooltip={tooltipEnabled \n                ? isInactive() ? activateTip : deactivateTip \n                : undefined}\n            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n            data-tooltip-direction={TooltipDirection.DOWN}\n            onpointerenter={ event => sendToTextConsole(event, isInactive()\n                    ? getLocalized(\"LA.pilot.mechStorage.activate.tooltip\")\n                    : getLocalized(\"LA.pilot.mechStorage.deactivate.tooltip\"),\n                actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n            aria-label={isInactive() ? activateTip : deactivateTip }\n            onclick={setActiveMech}\n        ></button>\n    </div>\n</div>\n<!-- Selectable Mechs -->\n<HeaderMain\n    text={getLocalized(\"LA.tab.mechs.label\")}\n    headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n    textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n    borderStyle={[\"la-brdr-transparent la-bckg-card clipped-bot-alt\"]}\n\n    collapseID={collID}\n    startCollapsed={true}\n>\n    <div class=\"la-flexcol -widthfull\">\n        <div role=\"none\"\n            class=\"la-available-mechs__list\"\n            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.pilot.mechStorage.select.tooltip\"), actor.uuid) }\n            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n        >\n            <div class=\" la-flexrow -justifystart -padding0-b\">\n            {#each ownedMechs as mech, index}\n                <button type=\"button\"\n                    class=\"la-flexcol -bordersround {selectedMechIndex === index ? 'la-brdr-accent' : 'la-brdr-transparent'}\"\n                    onclick={event => handleMechSelect(event, index)}\n                    aria-label={getLocalized(\"LA.pilot.mechStorage.select.tooltip\")}\n                >\n                    <img \n                        class=\"la-available-mechs__img\"\n                        src={mech.img}\n                        alt={getLocalized(\"LA.placeholder\")}\n                    >\n                    <span class=\"-fontsizesmall -fontface-stylized\">\n                        {mech.name}\n                    </span>\n                </button>\n            {/each}\n            </div>\n        </div>\n    </div>\n</HeaderMain>\n<!-- Mech Stats -->\n<MechStats\n    actor={actor}\n    selectedMech={ownedMechs[selectedMechIndex]}\n/>\n{:else}\n    <EmptyBox\n        label={getLocalized(\"LA.pilot.mechStorage.empty.label\")}\n        subLabel={getLocalized(\"LA.pilot.mechStorage.empty.subLabel\")}\n    />\n{/if}","import { mount } from \"svelte\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\nimport { applyThemeTo, getCSSSystemTheme } from \"@/scripts/theme\";\nimport { getSelectedTokenImage, setActiveTab, setSelectedTokenImage } from \"@/scripts/store/advanced\";\nimport { getLocalized, dataMap, isValidImageContainer } from \"@/scripts/helpers\";\nimport { setIntroRun } from \"@/scripts/store/text-log\";\nimport { getActorTokenSync, getPilotSheetTooltipEnabled, getThemeOverride } from \"@/scripts/pilot/settings\";\nimport { unregisterTrackedHooks } from \"@/scripts/store/hooks\";\nimport { getThemeKey, setThemeKey } from \"@/scripts/store/theme\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { ActiveTab } from \"@/enums/ActiveTab\";\nimport type { PilotSheetProps } from \"@/interfaces/pilot/PilotSheetProps\";\nimport Header from \"@/svelte/pilot/Header.svelte\";\nimport Sidebar from \"@/svelte/pilot/Sidebar.svelte\";\nimport Equipment from \"@/svelte/pilot/Equipment.svelte\";\nimport Bond from \"@/svelte/pilot/Bond.svelte\";\nimport Custom from \"@/svelte/pilot/Custom.svelte\";\nimport CustomToggle from \"@/svelte/pilot/CustomToggle.svelte\";\nimport HaseDisplay from \"@/svelte/shared/HaseArray.svelte\";\nimport AdvancedSettings from \"@/svelte/pilot/settings/AdvancedSettings.svelte\";\nimport AdvancedSettingsNav from \"@/svelte/pilot/settings/AdvancedSettingsNav.svelte\";\nimport Activity from \"@/svelte/pilot/Activity.svelte\";\nimport Abilities from \"@/svelte/pilot/Abilities.svelte\";\nimport Dossier from \"@/svelte/pilot/Dossier.svelte\";\nimport MechStorage from \"@/svelte/pilot/MechStorage.svelte\";\n\nexport class PilotSheetBase\n{\n    static get mergeOptions()\n    {\n        return {\n            classes: [\n                \"la-common la-override__header clipped-alt\",\n                \"lancer sheet actor pilot\", getCSSSystemTheme()\n            ],\n            template: TEMPLATE_PATHS.pilotSheetSvelte,\n            width: 900,\n            height: 800,\n            tabs: [\n                {\n                    navSelector: \".la-tabs\",\n                    contentSelector: \".la-content\",\n                    initial: \"equipment\"\n                },\n                {\n                    navSelector: \".la-tabs-secondary\",\n                    contentSelector: \".la-content-secondary\",\n                    initial: \"statistics\"\n                },\n                {\n                    navSelector: \".la-tabs-tertiary\",\n                    contentSelector: \".la-content-tertiary\",\n                    initial: \"loadout\"\n                },\n                {\n                    navSelector: \".la-tabs-quaternary\",\n                    contentSelector: \".la-content-quaternary\",\n                    initial: \"dossier\"\n                }\n            ],\n            scrollY: [\".la-dossier\", \".la-mechstorage\", \".la-abilities\", \".la-bonds\", \".la-equipment\", \".la-custom\", \".la-sidebar__statistics\", \".la-sidebar__activity\"],\n        }\n    }\n\n    static setupSheet()\n    {\n        // Unfortunately, since we are mounting from a Foundry class, and more specifically,\n        // from Lancer's extension of a ActorSheet, we have to essentially run setup 'twice'\n        //\n        // Hopefully since the 'first time' should end in an early leaf node, it won't be too bad\n        const LAPilotSheet = class extends ((game.lancer.applications as any).LancerPilotSheet as typeof  foundry.appv1.sheets.ActorSheet)\n        {\n            constructor(...args: [any])\n            {\n                super(...args);\n\n                Hooks.on(\"laOverrideTheme\", (uuid: string, theme: string) =>\n                {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    \n                    setThemeKey(this.actor.uuid!, theme);\n                    this.render();\n                });\n\n                // (#6): Jank-ass way of allowing pilot talents/core bonuses to update properly on mech sheets\n                // Something in the rerender call (getData? idk) actually lets (counters at least) properly update\n                // and so we just call the whole rerender on the sheet.\n                Hooks.on(\"laForceRerender\", (uuid: string, callback?: () => void) => {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    this.render();\n                    if (callback)\n                        callback();\n                });\n                                \n                Hooks.on(\"updateActor\", (document: any, changes: any) => {                    \n                    if (document.uuid === this.actor.uuid! && \n                        changes.prototypeToken?.texture?.src && \n                        getActorTokenSync(this.actor.uuid!) // Actor-token image sync enabled\n                    )\n                    {\n                        setSelectedTokenImage(this.actor.uuid!, changes.prototypeToken.texture.src);\n                        if (isValidImageContainer(changes.prototypeToken.texture.src))\n                            this.actor.update({\"img\": changes.prototypeToken.texture.src});\n                    }\n                });\n\n                // TODO: Write a PR. Until a Lancer settings/theme hook is available, \n                // this blasts on every single time the settings close\n                Hooks.on(\"closeSettingsConfig\", () =>\n                {\n                    this.render();\n                    setIntroRun(this.actor.uuid!, false);\n                });\n            }\n\n            static override get defaultOptions()\n            {\n                return foundry.utils.mergeObject(super.defaultOptions, PilotSheetBase.mergeOptions);\n            }\n\n            override activateListeners(html: JQuery<HTMLElement>)\n            {\n                super.activateListeners(html);\n\n                this.applyTabListener(html);\n            }\n\n            // The more pressing issue is whether or not this \n            // function's is networked and if it's return is internally cached\n            override async getData(): Promise<PilotSheetProps>\n            {\n                let data = await super.getData() as any;\n                return data as PilotSheetProps;\n            }\n\n            override async _injectHTML(html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._injectHTML(html);\n\n                setThemeKey(this.actor.uuid!, getThemeOverride(this.actor.uuid!));\n                applyThemeTo(this.element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n            }\n\n            // (#10)\n            // @ts-expect-error We're overriding a function in LancerActorSheet\n            override _propagateData(formData: any)\n            {\n                // @ts-expect-error We're overriding a function in LancerActorSheet\n                super._propagateData(formData);\n                \n                delete formData[\"prototypeToken.texture.src\"]; // GO AWAY MYSTERY MAN AAAAAAA\n                const updateToken = getSelectedTokenImage(this.actor.uuid!); // (#12)\n                if (updateToken)\n                {\n                    formData[\"prototypeToken.texture.src\"] = updateToken;\n                }\n            }\n\n            override async _replaceHTML(element: JQuery<HTMLElement>, html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._replaceHTML(element, html);\n                applyThemeTo(element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n\n                // Saving and restoring scroll positions calls before rerender, so \n                // restore the scroll positions after the rerender\n                this._restoreScrollPositions(html);\n            }\n\n            mountComponents(html: JQuery<HTMLElement>, data: any)\n            {\n                unregisterTrackedHooks(this.actor.uuid!); // Untrack all hooks that were registered from Svelte components\n                mount(Header, {\n                    target: html.find(\".la-SVELTE-HEADER\")[0],\n                    props: data,\n                });\n                mount(AdvancedSettingsNav, {\n                    target: html.find(\".la-SVELTE-ADVANCEDNAV\")[0],\n                    props: data,\n                });\n                mount(Sidebar, {\n                    target: html.find(\".la-SVELTE-SIDEBARSTATISTICS\")[0],\n                    props: data,\n                });\n                mount(Dossier, {\n                    target: html.find(\".la-SVELTE-DOSSIER\")[0],\n                    props: data,\n                })\n                mount(MechStorage, {\n                    target: html.find(\".la-SVELTE-MECHSTORAGE\")[0],\n                    props: data,\n                })\n                mount(Activity, {\n                    target: html.find(\".la-SVELTE-SIDEBARACTIVITY\")[0],\n                    props: data,\n                });\n                mount(Equipment, {\n                    target: html.find(\".la-SVELTE-EQUIPMENT\")[0],\n                    props: data,\n                });\n                mount(Abilities, {\n                    target: html.find(\".la-SVELTE-ABILITIES\")[0],\n                    props: data,\n                });\n                mount(Bond, {\n                    target: html.find(\".la-SVELTE-BONDS\")[0],\n                    props: data,\n                })\n                mount(Custom, {\n                    target: html.find(\".la-SVELTE-CUSTOM\")[0],\n                    props: data,\n                });\n                mount(CustomToggle, { // (#14)\n                    target: html.find(\".la-tabs-tertiary\")[0],\n                    props: {\n                        actor: data.actor,\n                        button: html.find('.la-tabs-tertiary>[data-tab=\"custom\"]')[0],\n                    },\n                });\n                mount(AdvancedSettings, {\n                    target: html.find(\".la-SVELTE-ADVANCED\")[0],\n                    props: data,\n                });\n                mount(HaseDisplay, {\n                    target: html.find(\".la-SVELTE-HASE\")[0],\n                    props: {\n                        pilot: data.actor,\n                        actor: data.actor,\n                        system: data.system,\n                        tooltipEnabled: getPilotSheetTooltipEnabled(),\n                        logging: true,\n                    },\n                });\n            }\n\n            applyTabListener(html: JQuery<HTMLElement>)\n            {\n                html.find('.la-nav__island .la-tabs-tertiary>.la-tab').each((_, button) =>\n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Tertiary, tab);\n                    });\n                });\n\n                html.find('.la-tabs>.la-tab').each((_, button) =>\n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Primary, tab);\n                    });\n                });\n\n                html.find('.la-tabs-quaternary>.la-tab').each((_, button) =>\n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Primary, tab);\n                    });\n                });\n\n                html.find('.la-nav-secondary__island>.la-tabs-secondary>.la-tab').each((_, button) => \n                {\n                    $(button).on('click', (event) =>\n                    {\n                        const tab = $(event.currentTarget).data('tab');\n                        setActiveTab(this.actor.uuid!, ActiveTab.Secondary, tab);\n                    });\n                });\n            }\n        }\n\n        foundry.documents.collections.Actors.registerSheet(LancerAlternative.Name, LAPilotSheet, {\n            types: [\"pilot\"] as any[], // Lancer system actor subtype (registered by the system at runtime)\n            label: getLocalized(\"LA.SHEET.pilot.label\"),\n            makeDefault: false\n        });\n    }\n}","<script lang=\"ts\">\n    import { formatString, getLocalized, logographicLanguage } from \"@/scripts/helpers\";\n    import { getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { getDeployableSheetTooltipEnabled } from \"@/scripts/deployable/settings\";\n    import { ACTIVATION_COLOR_MAP, ACTIVATION_LOCALIZE_MAP, ACTIVATION_TOOLTIP_LOCALIZE_MAP, CHAT_CARD_ACTIVATION_COLOR_MAP } from \"@/scripts/constants\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\n    import type { ChatData } from \"@/interfaces/flows/ChatData\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import CollapseAllButton from \"@/svelte/shared/button/CollapseAllButton.svelte\";\n    import ActionBox from \"@/svelte/shared/ActionBox.svelte\";\n    import { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\n    import FlowButton from \"@/svelte/shared/button/FlowButton.svelte\";\n    import { Logger } from \"@/classes/Logger\";\n    import {getAdvancedState} from \"@/scripts/store/advanced\";\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import { getCustomFlagPath, getCustomFlags, handleCustomFlagValueInput } from \"@/scripts/flags\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n\n    const {\n        actor,\n        system,\n    }: DeployableSheetProps = $props();\n    let collapseAllButtonHover = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getDeployableSheetTooltipEnabled();\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n    const collID = $derived(`${actor.uuid}.systems`);\n    const customFlagsCollID = $derived(`${actor.uuid}.detail.customFlags`);\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const actions = $derived(getDeployableActions(actor));\n    const customFlagsEmptyTipMain = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.empty.tooltip.0\")));\n    const customFlagsEmptyTipAlt = $derived(TooltipFactory.buildTooltip(formatString(getLocalized(\"LA.tab.custom.empty.tooltip.1\"), getLocalized(\"LA.tab.custom.flag.sidebarToggle.deployable.label\"))));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Deployable));\n    const visibleCustomFlags = $derived(Object.values(customFlags).filter(flag => flag.showInSidebar));\n\n    function getDeployableActions(deployable: any)\n    {\n        return [\n            { \n                label: \"LA.mech.system.deployable.activate.label\", \n                tooltip: \"LA.mech.system.deployable.activate.tooltip\",\n                deployableAction: deployable.system.activation \n            },\n            { \n                label: \"LA.mech.system.deployable.deactivate.label\", \n                tooltip: \"LA.mech.system.deployable.deactivate.tooltip\",\n                deployableAction: deployable.system.deactivation \n            },\n            { \n                label: \"LA.mech.system.deployable.recall.label\", \n                tooltip: \"LA.mech.system.deployable.recall.tooltip\",\n                deployableAction: deployable.system.recall \n            },\n            { \n                label: \"LA.mech.system.deployable.redeploy.label\", \n                tooltip: \"LA.mech.system.deployable.redeploy.tooltip\",\n                deployableAction: deployable.system.redeploy \n            },\n        ].filter(a => !!a.deployableAction);\n    }\n    \n    // (#4) Temporary until Lancer system implements proper deployable actions\n    function sendActionToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && action)\n        {\n            let chatData = {\n                title: action.name, \n                trigger: action.trigger,\n                effect: action.detail\n            } as ChatData \n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n\n    // (#4) Temporary until Lancer system implements proper deployable actions\n    function sendDeployableActionToChat(event: MouseEvent & { currentTarget: EventTarget & HTMLElement }, action: any, deployable: any)\n    {\n        event.stopPropagation();\n        if (actor?.uuid && action)\n        {\n            const description = `\n                <details>\n                    <summary>\n                    ${getLocalized(\"LA.mech.system.effect.label\")}\n                    </summary>\n                    ${deployable.system.detail}\n                </details>\n                <hr>\n                <div \n                    class=\"clipped lancer-header ${CHAT_CARD_ACTIVATION_COLOR_MAP[action.deployableAction]}\"\n                    style=\"\n                        padding: 0.25rem;\n                    \"\n                >\n                    ${getLocalized(ACTIVATION_LOCALIZE_MAP[action.deployableAction])}\n                </div>\n                <div\n                    style=\"\n                        padding-top: 0.25rem;\n                    \"\n                >\n                ${getLocalized(action.tooltip)}\n                </div>\n            `;\n            let chatData = {\n                title: deployable.name, \n                description: description,\n            } as ChatData\n            SendUnknownToChatBase.getInstance().startFlow(actor.uuid, chatData);\n        }\n        else\n            Logger.error(\"Tried to call LAS sendToChat without either an actor's UUID or associated object\");\n    }\n</script>\n\n{#snippet headerOptions(collID: string)}\n<CollapseAllButton\n    collapseID={collID}\n    tooltipEnabled={tooltipEnabled}\n    tooltipTheme={theme}\n\n    onPointerEnter={() => {collapseAllButtonHover = true;}}\n    onPointerLeave={() => {collapseAllButtonHover = false;}}\n/>\n{/snippet}\n{#snippet headerActions()}\n    {@render headerOptions(`${collID}.actions`)}\n{/snippet}\n\n<div class=\"la-flexcol -widthfull\">\n    <HeaderMain\n        rootStyle ={[`${ system.detail || advancedOptions ? \"\" : \"-displaynone\" }`]}\n        text={getLocalized(\"LA.deployable.effects.label\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"-fontsize4 -overflowhidden -upper\"]}\n        borderStyle={[\"la-brdr-primary -gap0\"]}\n        extensionTextFunction={() => {\n            if (collapseAllButtonHover)\n                return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n            return undefined;\n        }}\n\n        collapseID=\"{collID}.details\"\n        startCollapsed={true}\n    >\n        <EffectBox\n            name={getLocalized(\"LA.mech.system.effect.label\")}\n\n            editOption={advancedOptions}\n            editPath=\"system.detail\"\n        >\n            {@html system.detail}\n        </EffectBox>\n    </HeaderMain>\n    <HeaderMain\n        text={getLocalized(\"LA.deployable.actions.label\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"-fontsize4 -overflowhidden -upper\"]}\n        borderStyle={[\"la-brdr-primary -gap0\"]}\n        extensionTextFunction={() => {\n            if (collapseAllButtonHover)\n                return `--${getLocalized(\"LA.collapseAll.extension\")}`;\n            return undefined;\n        }}\n        \n        collapseID=\"{collID}.actions\"\n        startCollapsed={true}\n\n        headerContent={headerActions}\n    >\n        <div class=\"la-flexcol -gap1 -widthfull -fontsize4\">\n            <EffectBox\n                name={getLocalized(\"LA.npc.utilities.label\")}\n            >\n                <div class=\"la-flexrow -wrapwrap -widthfull -gap0\">\n                    <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                        <FlowButton \n                            style={[\"clipped-alt la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                            text={getLocalized(\"LA.flow.rollAttack.label\")}\n\n                            uuid={actor.uuid}\n                            flowClass={FlowClass.Standard}\n                            flowType={\"BasicAttack\"}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                            tooltip={getLocalized(\"LA.flow.rollAttack.tooltip\")}\n                        />\n                    </div>\n                    <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                        <FlowButton \n                            style={[\"clipped la-bckg-secondary -widthfull -overflowhidden -lineheight3\"]}\n                            text={getLocalized(\"LA.flow.rollDamage.label\")}\n\n                            uuid={actor.uuid}\n                            flowClass={FlowClass.Standard}\n                            flowType={\"Damage\"}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                            tooltip={getLocalized(\"LA.flow.rollDamage.tooltip\")}\n                        />\n                    </div>\n                </div>\n            </EffectBox>\n            {#if actions.length}\n            <EffectBox\n                name={getLocalized(\"LA.deployable.deployment.label\")}\n            >\n                <div class=\"la-flexrow -wrapwrap -widthfull -gap0\">\n                    <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                    {#each actions as action, index}\n                    {#if index % 2 == 0}\n                        <FlowButton\n                            text={getLocalized(action.label)}\n                            style={[\"clipped-alt -widthfull -overflowhidden -lineheight3\", ACTIVATION_COLOR_MAP[action.deployableAction]]}\n\n                            uuid={actor.uuid}\n                            path={`system.lid`}\n                            flowClass={FlowClass.None}\n                            onClick={(event) => sendDeployableActionToChat(event, action, actor)}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                            tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[action.deployableAction])}\n                            tooltip={`${getLocalized(action.tooltip)}<br><br>${getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.deployableAction])}`}\n                        />\n                    {/if}\n                    {/each}\n                    </div>\n                    <div class=\"la-flexcol -gap0 -flex1 -widthfull\">\n                    {#each actions as action, index}\n                    {#if index % 2 != 0}\n                        <FlowButton\n                            text={getLocalized(action.label)}\n                            style={[\"clipped -widthfull -overflowhidden -lineheight3\", ACTIVATION_COLOR_MAP[action.deployableAction]]}\n\n                            uuid={actor.uuid}\n                            path={`system.lid`}\n                            flowClass={FlowClass.None}\n                            onClick={(event) => sendDeployableActionToChat(event, action, actor)}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                            tooltipHeader={getLocalized(ACTIVATION_LOCALIZE_MAP[action.deployableAction])}\n                            tooltip={`${getLocalized(action.tooltip)}<br><br>${getLocalized(ACTIVATION_TOOLTIP_LOCALIZE_MAP[action.deployableAction])}`}\n                        />\n                    {/if}\n                    {/each}\n                    </div>\n                </div>\n            </EffectBox>\n            {/if}\n            <ActionBox\n                actions={system.actions}\n                collapseID={`${collID}.actions.list`}\n                startCollapsed={false}\n                \n                uuid={actor.uuid}\n                actor={actor}\n                onClick={sendActionToChat}\n\n                tooltipEnabled={tooltipEnabled}\n                tooltipTheme={theme}\n            />\n        </div>\n    </HeaderMain>\n\n    <HeaderMain\n        text={getLocalized(\"LA.tab.custom.subLabel\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"-fontsize4 -overflowhidden -upper\"]}\n        borderStyle={[\"la-brdr-primary -gap0\"]}\n\n        collapseID={customFlagsCollID}\n        startCollapsed={true}\n    >\n        {#if visibleCustomFlags.length}\n        <div class=\"la-flags la-flexcol -gap1 -widthfull\">\n        {#snippet createFractionBar(data: CustomFlag)}\n        <div class=\"la-flexcol -widthfull -fontface-stylized\">\n            <div class=\"la-flexrow -widthfull\">\n                <div class=\"-width10\"></div>\n                <div class=\"-flex5\" style=\"--la-flag-custom: {data.color};\">\n                    <StatusBar\n                        name={\"\"}\n                        nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                        dataName={getCustomFlagPath(CustomFlagKey.Deployable, data.id, \"value\")}\n                        currentValue={data.content.value}\n                        maxValue={data.content.max}\n                        barStyle={[\"la-bckg-custom\"]}\n                        barEditStyle={[\"la-bckg-custom\"]}\n                        textStyle={[\"la-text-text\"]}\n                        clipPath={\"clipped-alt\"}\n                    />\n                </div>\n                <div class=\"-width10\"></div>\n            </div>\n            <span class=\"-fontsizemedium -upper\n                    {logographic ? '' : '-bold'}\"\n                data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.UP}\n            >{data.name}</span>\n        </div>\n        {/snippet}\n\n        {#snippet createValueGlyph(data: CustomFlag)}\n        <div class=\"-widthfull\">\n            <div class=\"la-shortstat la-flexrow la-text-text -fontsize6\">\n                <i class=\"{data.icon ? data.icon : \"mdi mdi-abacus\"} -alignselfcenter\"></i>\n                <div class=\"la-flexcol -divider -upper -fontface-stylized -fontsizemedium la-prmy-accent -textaligncenter\n                        {logographic ? '' : '-bold'}\"\n                    data-tooltip={tooltipEnabled && data.tooltip ? TooltipFactory.buildTooltip(data.tooltip) : undefined}\n                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                    data-tooltip-direction={TooltipDirection.UP}\n                >\n                    <input class=\"la-top__input -widthfull -medium -inset la-text-text -fontface-neutral -height4\"\n                        type=\"text\"\n                        value={data.content.value}\n                        onfocus={event => event.currentTarget.select()}\n                        onchange={event => handleCustomFlagValueInput(event, actor, CustomFlagKey.Deployable, data)}\n                    >\n                    <span class=\"la-bottom__span\">{data.name}</span>\n                </div>\n            </div>\n        </div>\n        {/snippet}\n\n        {#each visibleCustomFlags as flag (flag.id)}\n            {#if flag.contentType === CustomFlagContentType.Fraction}\n                {@render createFractionBar(flag)}\n            {:else}\n                {@render createValueGlyph(flag)}\n            {/if}\n        {/each}\n        </div>\n        {:else}\n        <details class=\"la-details -widthfull la-flexcol\">\n            <summary class=\"la-details__summary la-flexrow clipped-bot-alt la-bckg-repcap la-text-header -padding1-l -widthfull\"\n                data-tooltip={tooltipEnabled\n                    ? advancedOptions ? customFlagsEmptyTipAlt : customFlagsEmptyTipMain\n                    : undefined}\n                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                data-tooltip-direction={TooltipDirection.UP}\n            >\n                <span class=\"la-left la-flexrow\">\n                    <i class=\"la-icon mdi mdi-card-off-outline -fontsize4 -margin1-lr\"></i>\n                    <span class=\"la-name__span -fontsize4\">\n                        {getLocalized(\"LA.tab.custom.empty.label\")}\n                    </span>\n                </span>\n            </summary>\n        </details>\n        {/if}\n    </HeaderMain>\n</div>","<script lang=\"ts\">\n    import { onMount } from \"svelte\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import {\n        browseActorImage,\n        browseActorImageSync,\n        browseTokenImage,\n        getLocalized,\n        handleRelativeDataInput, logographicLanguage\n    } from \"@/scripts/helpers\";\n    import { getActorTokenSync, setActorTokenSync, setThemeOverride } from \"@/scripts/deployable/settings\";\n    import { getAdvancedState, getTokenImageLock, setTokenImageLock } from \"@/scripts/store/advanced\";\n    import { getDeployableSheetTooltipEnabled } from \"@/scripts/deployable/settings\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { EditMode } from \"@/enums/EditMode\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\n    import StatusBar from \"@/svelte/shared/StatusBar.svelte\";\n    import StatComboShort from \"@/svelte/shared/StatComboShort.svelte\";\n    import AdvancedButton from \"@/svelte/shared/button/AdvancedButton.svelte\";\n    import ThemeOverrideButton from \"@/svelte/shared/button/ThemeOverrideButton.svelte\";\n    import ImageVideo from \"@/svelte/shared/ImageVideo.svelte\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import LockImageButton from \"@/svelte/shared/button/LockImageButton.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props = $props();\n    const {\n        document,\n        actor,\n        system,\n    }: DeployableSheetProps = $derived(props);\n    let advancedOptions = $derived(getAdvancedState(actor.uuid));\n    let tokenImageLocked = $derived(getTokenImageLock(actor.uuid));\n    let editingBurn = $state(false);\n    let editingShield = $state(false);\n\n    const logographic = logographicLanguage();\n    const tooltipEnabled = getDeployableSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const isInstanced = $derived(actor.parent && actor.type === \"deployable\");\n    const themeOverride = $derived(getBrightness(getThemeKey(actor.uuid)) === 'light' ? 'la-text-primary' : 'la-text-text');\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n\n    const sizeTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.size.tooltip\"), `${getLocalized(\"LA.size.label\")} ${system.stats.size}`));\n    const speedTip = $derived(TooltipFactory.buildTooltip(getLocalized(\"LA.speed.tooltip\"), `${getLocalized(\"LA.speed.label\")} ${system.stats.speed}`));\n    const shieldTip = TooltipFactory.buildTooltip(getLocalized('LA.overshield.tooltip'));\n    const burnTip = TooltipFactory.buildTooltip(getLocalized('LA.burn.tooltip'));\n    const tokenErrorTip = TooltipFactory.buildTooltip(getLocalized(\"LA.edit.image.token.error\"));\n\n    onMount(() => {\n        setTokenImageLock(actor.uuid, getActorTokenSync(actor.uuid));\n    });\n\n    function handleEditStat(event: MouseEvent, value: number, valuePath: string, mod: EditMode)\n    {\n        event.stopPropagation();\n\n        switch(mod)\n        {\n            case EditMode.Subtract:\n                document.update({\n                    [valuePath]: Math.max(value--, 0)\n                });\n                break;\n            case EditMode.Add:\n                document.update({\n                    [valuePath]: value++\n                });\n                break;\n        }\n    }\n\n    function handleEditToken(event: MouseEvent & { currentTarget: EventTarget & HTMLElement })\n    {\n        event.stopPropagation();\n        \n        if (tokenImageLocked)\n            browseActorImageSync(event, actor);\n        else\n            browseTokenImage(event, actor);\n    }\n</script>\n\n<div class=\"la-bckg-background la-shadow -medium -inset -widthfull -heightfull\n        {qualityMode ? 'la-bg-scroll' : 'la-bg'}\"\n>\n    <div class=\"la-flexrow la-dropshadow -justifyevenly\">\n    <!-- Left Side -->\n        <div class=\"la-flexcol -gap1\">\n            <!-- Options -->\n            <div class=\"la-flexrow -height4 \">\n            </div>\n            <div class=\"la-flexrow -widthfull -heightfull\">\n                <!-- Left Side Floating Stats -->\n                <div class=\"la-stat__island -positionrelative la-dropshadow\">\n                    <div class=\"la-flexcol -positionabsolute -top0 -left0 -fontsize13 -heightfull -margin3-t\">\n                        <!-- Size -->\n                        <div class=\"{advancedOptions ? '-displaynone' : ''}\">\n                        {#if system.stats.size < 1}\n                            <i class=\"cci cci-size-half {themeOverride} la-outl-shadow\"\n                                data-tooltip={tooltipEnabled ? sizeTip : undefined}\n                                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                data-tooltip-direction={TooltipDirection.RIGHT}></i>\n                        {:else}\n                            <i class=\"cci cci-size-{system.stats.size} {themeOverride} la-outl-shadow\"\n                                data-tooltip={tooltipEnabled ? sizeTip : undefined}\n                                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                data-tooltip-direction={TooltipDirection.RIGHT}></i>\n                        {/if}\n                        </div>\n                        <div class=\"{advancedOptions ? '' : '-displaynone'} -fontface-stylized\">\n                            <!-- Edit Size -->\n                            <StatComboShort\n                                icon={\"\"}\n                                label={getLocalized(\"LA.size.short\")}\n                                value={system.stats.size}\n                                valuePath=\"system.stats.size\"\n                                innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n                                bottomStyle={[logographic ? \"-fontsize3\" : \"\"]}\n\n                                tooltipEnabled={tooltipEnabled}\n                                tooltipTheme={theme}\n                                tooltip={getLocalized(\"LA.size.tooltip\")}\n                                tooltipDirection={TooltipDirection.LEFT}\n\n                                editable={advancedOptions}\n                                onPointerClick={handleEditStat}\n                            />\n                        </div>\n                        <div class=\"{advancedOptions ? '-displaynone' : ''}\">\n                            <!-- Speed -->\n                            <div class=\"la-flexrow\" \n                                data-tooltip={tooltipEnabled ? speedTip : undefined}\n                                data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                data-tooltip-direction={TooltipDirection.RIGHT}>\n                                <i class=\"mdi mdi-arrow-right-bold-hexagon-outline {themeOverride} la-outl-shadow -fontsize8\"></i>\n                                <span class=\"{themeOverride} la-outl-shadow -fontsize7 -bold\">{system.stats.speed}</span>\n                            </div>\n                        </div>\n                        <div class=\"{advancedOptions ? '' : '-displaynone'} -fontface-stylized\">\n                            <!-- Edit Speed -->\n                            <StatComboShort\n                                icon={\"\"}\n                                label={getLocalized(\"LA.speed.short\")}\n                                value={system.stats.speed}\n                                valuePath=\"system.stats.speed\"\n                                innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n                                bottomStyle={[logographic ? \"-fontsize3\" : \"\"]}\n\n                                tooltipEnabled={tooltipEnabled}\n                                tooltipTheme={theme}\n                                tooltip={getLocalized(\"LA.speed.tooltip\")}\n                                tooltipDirection={TooltipDirection.LEFT}\n\n                                editable={advancedOptions}\n                                onPointerClick={handleEditStat}\n                            />\n                        </div>\n                    </div>\n                </div>\n                <!-- Actor Image -->\n                <div\n                    class=\"la-deployable__img -aligncontentcenter\n                        ref set\"\n                    data-uuid=\"{actor.uuid}\"\n                >\n                    <ImageVideo\n                        actor={actor}\n                        editDisabled={isInstanced}\n                        tooltipEnabled={tooltipEnabled}\n                        tooltipTheme={theme}\n                        onPointerClick={handleEditToken}\n                    />\n                </div>\n            </div>\n        </div>\n        <!-- Right Side -->\n        <div class=\"la-flexrow -padding1-r -fontface-stylized\">\n            <div class=\"la-flexcol -gap1\">\n                <div class=\"la-flexrow -height4 -justifybetween -widthfull\">\n                    <!-- Advanced options, theme override, notes, etc -->\n                    <div class=\"la-flexrow -gap1\">\n                        <AdvancedButton\n                            uuid={actor.uuid}\n                            style={[\"-lineheight5 la-prmy-primary\",\n                                qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                            iconStyle={[\"-fontsize7\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                        />\n                    {#if advancedOptions && !isInstanced}\n                        <LockImageButton\n                            style=\"-fontsize4 la-text-text la-prmy-primary\n                                {qualityMode ? '-glow-prmy-hover' : ''}\"\n                            actor={actor}\n                            setState={setActorTokenSync}\n                            tooltipEnabled={tooltipEnabled}\n                        />\n                    {/if}\n                    {#if !isInstanced}\n                        {#if !tokenImageLocked}\n                            <GlyphButton\n                                flowClass={FlowClass.None}\n                                style={[\"mdi mdi-image-edit -fontsize4 la-text-text la-prmy-primary\",\n                                    qualityMode ? \"-glow-prmy-hover\" : \"\"]}\n                                onClick={event => browseActorImage(event, actor)}\n                                tooltipEnabled={tooltipEnabled}\n                                tooltipTheme={theme}\n                                tooltip={getLocalized(\"LA.edit.image.actor.tooltip\")}\n                                tooltipDirection={TooltipDirection.UP}\n                            />\n                        {/if}\n                    {:else}\n                        <i class=\"mdi mdi-creation la-text-text -fontsize4 la-prmy-warning\n                                {qualityMode ? '-glow-prmy' : ''}\"\n                            data-tooltip={tooltipEnabled ? tokenErrorTip : undefined}\n                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                            data-tooltip-direction={TooltipDirection.DOWN}></i>\n                    {/if}\n                    {#if advancedOptions}\n                        <ThemeOverrideButton\n                            uuid={actor.uuid}\n                            style={[\"-lineheight5\"]}\n                            iconStyle={[\"-fontsize4\"]}\n                            setOverride={setThemeOverride}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltipDirection={TooltipDirection.UP}\n                        />\n                    {/if}\n                    </div>\n                    <div class=\"la-flexrow -gap1\">\n                        <!-- Options -->\n                    </div>\n                </div>\n                <div class=\"-flex1\">\n                    <!-- Mech Stats 1 -->\n                    <div class=\"la-stats la-flexrow -justifyevenly\">\n                        <StatComboShort\n                            icon={\"cci cci-role-defender\"}\n                            label={getLocalized(\"LA.armor.short\")}\n                            value={system.stats.armor}\n                            valuePath=\"system.stats.armor\"\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.armor.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-evasion\"}\n                            label={getLocalized(\"LA.evasion.short\")}\n                            value={system.stats.evasion}\n                            valuePath=\"system.stats.evasion\"\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.evasion.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-edef\"}\n                            label={getLocalized(\"LA.edefense.short\")}\n                            value={system.stats.edef}\n                            valuePath=\"system.stats.edef\"\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.edefense.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                    </div>\n                    <!-- Mech Bars -->\n                    <div class=\"la-damage -margin0-lr -margin2-tb\">\n                        <div class=\"la-flexrow -gap2\">\n                            <div class=\"la-visuals -flex5\">\n                                <span>&nbsp;</span>\n                                <!-- HP, SHIELD (BAR) -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.hitpoint.short\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.hp.value\"\n                                    currentValue={system.hp.value}\n                                    maxValue={system.hp.max}\n                                    barStyle={[\"la-bckg-bar-health\"]}\n                                    barEditStyle={[\"la-prmy-bar-health\"]}\n                                    currentValueSecondary={system.overshield.value}\n                                    maxValueSecondary={system.hp.max}\n                                    barStyleSecondary={[\"la-bckg-bar-shield -shield\"]}\n                                    barEditStyleSecondary={[\"la-prmy-bar-shield\"]}\n                                    textStyle={[\"la-text-text\"]}\n                                    clipPath={\"clipped\"}\n                                    editSecondary={editingShield}\n                                    \n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.deployable.hitpointMax.tooltip\")}\n                                />\n                            </div>\n                            <!-- SHIELD (VALUE) -->\n                            <div class=\"la-flexcol -divider la-prmy-bar-shield -flex0 -textaligncenter la-prmy-bar-shield\n                                    {qualityMode ? '-glow-prmy' : ''}\n                                    {logographic ? '-width4ch' : '-width3ch'}\"\n                            >\n                                <span class=\"la-damage__span -heightfull -lineheight3\n                                        {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                                    data-tooltip={tooltipEnabled ? shieldTip : undefined}\n                                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                    data-tooltip-direction=\"LEFT\"\n                                ><!--\n                                --->{getLocalized(\"LA.overshield.short\")}<!--\n                            ---></span>\n                                <input type=\"text\"\n                                    class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                                    name=\"system.overshield.value\"\n                                    data-dtype=\"Number\"\n                                    value=\"{system.overshield.value}\"\n                                    onfocus={(event) => {event.currentTarget.select(); editingShield = true;}}\n                                    onblur={() => {editingShield = false;}}\n                                    onchange={(event) => handleRelativeDataInput(event, system.overshield.value)}\n                                >\n                            </div>\n                        </div>\n                        <div class=\"la-flexrow -gap2\">\n                            <div class=\"la-visuals -flex5\">\n                                <!-- HEAT, BURN (BAR) -->\n                                <StatusBar\n                                    name={getLocalized(\"LA.heat.label\")}\n                                    nameStyle={[logographic ? \"-fontsizemedium\" : \"\"]}\n                                    dataName=\"system.heat.value\"\n                                    currentValue={system.heat.value}\n                                    maxValue={system.heat.max}\n                                    barStyle={[\"la-bckg-bar-heat\"]}\n                                    barEditStyle={[\"la-prmy-bar-heat\"]}\n                                    currentValueSecondary={system.burn}\n                                    maxValueSecondary={system.heat.max || system.hp.max}\n                                    barStyleSecondary={[\"la-bckg-bar-burn -burn\"]}\n                                    barEditStyleSecondary={[\"la-prmy-bar-burn\"]}\n                                    textStyle={[\"la-text-text\"]}\n                                    clipPath={\"clipped-alt\"}\n                                    editSecondary={editingBurn}\n\n                                    tooltipEnabled={tooltipEnabled}\n                                    tooltipTheme={theme}\n                                    tooltipDirection={TooltipDirection.LEFT}\n                                    tooltip={getLocalized(\"LA.deployable.heatMax.tooltip\")}\n                                />\n                            </div>\n                            <!-- BURN (VALUE) -->\n                            <div class=\"la-flexcol -divider la-prmy-bar-burn -flex0 -textaligncenter la-prmy-bar-burn\n                                    {qualityMode ? '-glow-prmy' : ''}\n                                    {logographic ? '-width4ch' : '-width3ch'}\"\n                            >\n                                <input type=\"text\"\n                                    class=\"la-damage__input la-shadow -medium -inset la-text-text -width7 -heightfull -bordersround-lrt -small -bordersoff\"\n                                    name=\"system.burn\"\n                                    data-dtype=\"Number\"\n                                    value=\"{system.burn}\"\n                                    onfocus={(event) => {event.currentTarget.select(); editingBurn = true;}}\n                                    onblur={() => {editingBurn = false;}}\n                                    onchange={(event) => handleRelativeDataInput(event, system.burn)}\n                                >\n                                <span class=\"la-damage__span -heightfull -lineheight3\n                                        {logographic ? '-fontsizemedium' : '-fontsizesmall'}\"\n                                    data-tooltip={tooltipEnabled ? burnTip : undefined}\n                                    data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                    data-tooltip-direction=\"LEFT\"\n                                ><!--\n                                --->{getLocalized(\"LA.burn.short\")}<!--\n                            ---></span>\n                            </div>\n                        </div>\n                    </div>\n                    <!-- Mech Stats 2 -->\n                    <div class=\"la-stats la-flexrow -justifyevenly\">\n                        <StatComboShort\n                            icon={\"mdi mdi-heart-flash\"}\n                            label={getLocalized(\"LA.deployable.hitpointMax.short\")}\n                            value={parseInt(system.stats.hp)}\n                            valuePath={\"system.stats.hp\"}\n                            outerStyle={[\"-fontsize6\", `${advancedOptions ? '' : '-displaynone'}`]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.deployable.hitpointMax.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-save\"}\n                            label={getLocalized(\"LA.save.short\")}\n                            value={system.stats.save}\n                            valuePath=\"system.stats.save\"\n                            outerStyle={[\"-fontsize7\"]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.save.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                        <StatComboShort\n                            icon={\"cci cci-heat\"}\n                            label={getLocalized(\"LA.deployable.heatMax.short\")}\n                            value={system.stats.heatcap}\n                            valuePath={\"system.stats.heatcap\"}\n                            outerStyle={[\"-fontsize7\", `${advancedOptions ? '' : '-displaynone'}`]}\n                            innerStyle={[\"-divider -fontsizemedium la-prmy-accent -textaligncenter\", logographic ? \"\" : \"-bold\"]}\n\n                            tooltipEnabled={tooltipEnabled}\n                            tooltipTheme={theme}\n                            tooltip={getLocalized(\"LA.deployable.heatMax.tooltip\")}\n                            tooltipDirection={TooltipDirection.LEFT}\n\n                            editable={advancedOptions}\n                            onPointerClick={handleEditStat}\n                        />\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>","<script lang=\"ts\">\n    import { getLocalized } from \"@/scripts/helpers\";\n    import type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\n    import Stats from \"@/svelte/deployable/Stats.svelte\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n\n    const props = $props();\n    const {\n        actor,\n        system,\n    }: DeployableSheetProps = $derived(props);\n\n    const qualityMode = getExtraEffectsEnabled();\n</script>\n\n<div class=\"la-flexcol -widthfull -heightfull\">\n    <!-- Name & Templates -->\n    <div class=\"la-bckg-primary -widthfull -height15\n            {qualityMode ? 'la-bg-scroll-alt' : 'la-bg-alt'}\"\n    >\n        <div class=\"la-flexcol -widthfull -heightfull -padding1-lr\">\n            <input type=\"text\" \n                class=\"la-actorname__input la-text-header -upper -fontsize6 -textaligncenter -heightfull\"\n                name=\"name\" \n                value={actor.name}\n                placeholder={getLocalized(\"LA.placeholder\")}\n            />\n            <div class=\"la-flexrow -gap5 la-text-header -widthfull -textaligncenter -padding0-tb\">\n                <!-- 'id' in this case is actually the uuid -->\n                <span \n                    class=\"-upper -fontsize4 -fontface-stylized\n                        mech ref set click-open\"\n                    data-uuid={system.owner?.id}\n                >\n                {#if system.owner?.value}\n                    {system.owner?.value.name}\n                {:else}\n                    {getLocalized(\"LA.placeholder\")}\n                {/if}\n                </span>\n            </div>\n        </div>\n    </div>\n\n    <Stats {...props} />\n</div>","<script lang=\"ts\">\n    import { ActionLogCollapsePrefix } from \"@/enums/ActionLogCollapsePrefix\";\n    import type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\n    import { getDeployableSheetLogActionDontSaveCollapse, getDeployableSheetLogActionStartCollapsed } from \"@/scripts/deployable/settings\";\n    import ActionLog from \"@/svelte/shared/ActionLog.svelte\";\n\n    const props = $props();\n    const {\n        actor,\n    }: DeployableSheetProps = $derived(props);\n\n    const actionLogSaveCollapse = getDeployableSheetLogActionDontSaveCollapse();\n    const actionLogStartCollapsed = getDeployableSheetLogActionStartCollapsed();\n</script>\n\n<ActionLog\n    uuid={actor.uuid}\n    dontSaveCollapse={actionLogSaveCollapse}\n    startCollapsed={actionLogStartCollapsed}\n    collapsePrefix={ActionLogCollapsePrefix.DeployableSheet}\n/>","<script lang=\"ts\">\n    import type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\n    import { setActorContext } from \"@/scripts/context\";\n    import { getLocalized } from \"@/scripts/helpers\";\n    import HeaderMain, { MAIN_HEADER_STYLE } from \"@/svelte/shared/header/HeaderMain.svelte\";\n    import { getDeployableSheetTooltipEnabled } from \"@/scripts/deployable/settings\";\n    import GlyphButton from \"@/svelte/shared/button/GlyphButton.svelte\";\n    import { FlowClass } from \"@/enums/FlowClass\";\n    import { TooltipDirection } from \"@/enums/TooltipDirection\";\n    import { getExtraEffectsEnabled } from \"@/scripts/settings\";\n    import { getBrightness, getCSSDocumentTheme } from \"@/scripts/theme\";\n    import { TooltipFactory } from \"@/classes/TooltipFactory\";\n    import HeaderSecondary, { H2_HEADER_STYLE, H2_TEXT_SIZE } from \"@/svelte/shared/header/HeaderSecondary.svelte\";\n    import EffectBox from \"@/svelte/shared/EffectBox.svelte\";\n    import { resetTextConsole, sendToTextConsole } from \"@/scripts/store/text-log\";\n    import { CustomFlagContentType } from \"@/enums/CustomFlagContentType\";\n    import { CustomFlagKey } from \"@/enums/CustomFlagKey\";\n    import { LADataType } from \"@/enums/LADataType\";\n    import type { CustomFlag } from \"@/interfaces/actor/CustomFlagData\";\n    import { addCustomFlag, deleteCustomFlag, getCustomFlagPath, getCustomFlags, reorderCustomFlags, updateCustomFlag } from \"@/scripts/flags\";\n    import { getEnricher } from \"@/scripts/enrichers\";\n    import { getThemeKey } from \"@/scripts/store/theme\";\n    import { getCustomFlagsSortable, setCustomFlagsSortable } from \"@/scripts/store/advanced\";\n    import DragDropHandle from \"@/svelte/shared/dragdrop/DragDropHandle.svelte\";\n\n    const {\n        actor,\n    }: DeployableSheetProps = $props();\n    setActorContext(actor);\n\n    let component: HTMLElement | null = $state(null);\n    let deleteButtonHover = $state(false);\n    let addButtonHover = $state(false);\n    let sortButtonHover = $state(false);\n\n    const theme = $derived(getCSSDocumentTheme(actor.uuid));\n    const customFlags = $derived(getCustomFlags(actor, CustomFlagKey.Deployable));\n    const flagEntries = $derived(Object.entries(customFlags));\n    const sortable = $derived(getCustomFlagsSortable(actor.uuid));\n\n    const tooltipEnabled = getDeployableSheetTooltipEnabled();\n    const qualityMode = getExtraEffectsEnabled();\n    const refCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.ref.tooltip\"));\n    const enrichCopyTip = TooltipFactory.buildTooltip(getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"));\n\n    function handleAddCustomFlag(_event: Event, actor: any)\n    {\n        addCustomFlag(actor, CustomFlagKey.Deployable);\n    }\n\n    function handleDeleteCustomFlag(event: Event, actor: any, id: string)\n    {\n        event.stopPropagation();\n        deleteCustomFlag(actor, CustomFlagKey.Deployable, id);\n    }\n\n    function handleUpdateCustomFlag(actor: any, id: string, changes: Partial<CustomFlag>)\n    {\n        updateCustomFlag(actor, CustomFlagKey.Deployable, id, changes);\n    }\n\n    function handleReorderCustomFlag(_event: DragEvent, dropData: { type: string, index: number }, thisData: { type: string, index: number })\n    {\n        if (dropData.type !== LADataType.Sorting)\n            return;\n        reorderCustomFlags(actor, CustomFlagKey.Deployable, dropData.index, thisData.index);\n    }\n\n    function getTypeIcon(type: string)\n    {\n        return type == CustomFlagContentType.Fraction ? 'mdi-fraction-one-half' : 'mdi-numeric'\n    }\n</script>\n\n{#snippet headerOptions()}\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\",\n                sortable ? \" mdi mdi-sort-variant-lock-open \" : \" mdi mdi-sort-variant-lock \"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.sort.tooltip\")}\n        logging={true}\n\n        onClick={() => setCustomFlagsSortable(actor.uuid, !sortable)}\n        onPointerEnter={() => {sortButtonHover = true;} }\n        onPointerLeave={() => {sortButtonHover = false;} }\n    ></GlyphButton>\n    <GlyphButton type=\"button\"\n        flowClass={FlowClass.None}\n        style={[\"mdi mdi-plus-thick la-text-header la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n        tooltipEnabled={tooltipEnabled}\n        tooltipDirection={TooltipDirection.UP}\n        tooltipTheme={theme}\n        tooltip={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logText={getLocalized(\"LA.tab.custom.add.tooltip\")}\n        logging={true}\n\n        onClick={event => handleAddCustomFlag(event, actor)}\n        onPointerEnter={() => {addButtonHover = true;} }\n        onPointerLeave={() => {addButtonHover = false;} }\n    ></GlyphButton>\n{/snippet}\n\n{#snippet headerSecondaryInnerLeftOptions()}\n    <i\n        class=\"mdi mdi-code-json -padding0-lr\"\n    ></i>\n{/snippet}\n\n<div class=\"la-custom__list la-flexcol -widthfull\">\n    <HeaderMain\n        text={getLocalized(\"LA.tab.custom.subLabel\")}\n        headerStyle={[MAIN_HEADER_STYLE, \"la-bckg-primary\"]}\n        textStyle={[\"la-text-header -fontsize4 -overflowhidden\"]}\n        borderStyle={[\"la-brdr-transparent clipped-bot-alt\"]}\n        extensionTextFunction={() => {\n            if (addButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.add.extension\")}`;\n            if (sortButtonHover)\n                return `--${getLocalized(\"LA.tab.custom.sort.extension\")}`;\n            return undefined;\n        }}\n\n        headerContent={headerOptions}\n    >\n        <div class=\"la-generated -widthfull -gap1 la-flexcol\"\n            bind:this={component}\n        >\n        {#each flagEntries as [id, flag], index (id)}\n            {#snippet headerSecondaryLeftOptions()}\n                <i\n                    class=\"mdi -padding0-lr\n                {getTypeIcon(flag.contentType)}\"\n                ></i>\n            {/snippet}\n\n            {#snippet headerSecondaryRightOptions()}\n                <GlyphButton type=\"button\"\n                    flowClass={FlowClass.None}\n                    style={[\"mdi mdi-close-thick la-prmy-header la-scdy-primary -fontsize5 -alignselfcenter\",\n                    qualityMode ? \" -glow-prmy -glow-scdy-hover \" : \"\"]}\n\n                    tooltipEnabled={tooltipEnabled}\n                    tooltipDirection={TooltipDirection.UP}\n                    tooltipTheme={theme}\n                    tooltip={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logText={getLocalized(\"LA.tab.custom.delete.tooltip\")}\n                    logging={true}\n\n                    onClick={event => handleDeleteCustomFlag(event, actor, id)}\n                    onPointerEnter={() => {deleteButtonHover = true;} }\n                    onPointerLeave={() => {deleteButtonHover = false;} }\n                ></GlyphButton>\n            {/snippet}\n\n            <DragDropHandle\n                style={[sortable ? \"-padding5-l\" : \"\"]}\n                iconStyle={[sortable ? \"\" : \"-displaynone\"]}\n                index={index}\n                root={component}\n                data={{ type: LADataType.Sorting, index }}\n                onDrop={handleReorderCustomFlag}\n                deleteDisabled={true}\n                logging={false}\n                disabled={!sortable}\n            >\n            <HeaderSecondary\n                text={flag.name || getLocalized(\"LA.tab.custom.flag.name.label\")}\n                headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                borderStyle={[\"la-brdr-pilot\"]}\n                extensionTextFunction={() => {\n                    if (deleteButtonHover)\n                        return `--${getLocalized(\"LA.tab.custom.delete.extension\")}`;\n                    return undefined;\n                }}\n\n                collapseID={`custom.${id}`}\n                startCollapsed={false}\n\n                contentLeft={headerSecondaryLeftOptions}\n                contentRight={headerSecondaryRightOptions}\n            >\n                <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.name.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.name}\n                            placeholder={getLocalized(\"LA.namePlaceholder\")}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { name: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.contentType.label\")}\n                    >\n                        <select\n                            class=\"la-customvalue__select la-text-text -bordersround -small la-brdr-repcap -padding0-lr -widthfull\"\n                            onchange={event => handleUpdateCustomFlag(actor, id, { contentType: (event.target as HTMLSelectElement).value as CustomFlagContentType })}\n                        >\n                            <option value={CustomFlagContentType.Value}\n                                selected={flag.contentType === CustomFlagContentType.Value}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.value.label\")}</option>\n                            <option value={CustomFlagContentType.Fraction}\n                                selected={flag.contentType === CustomFlagContentType.Fraction}\n                            >{getLocalized(\"LA.tab.custom.flag.contentType.fraction.label\")}</option>\n                        </select>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.content.label\")}\n                    >\n                        <div class=\"la-flexrow -gap1\">\n                            <div class=\"la-flexcol -gap0\">\n                                <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                <input type=\"number\"\n                                    class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                    value={flag.content.value}\n                                    onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, value: Number((event.target as HTMLInputElement).value) } })}\n                                    onfocus={event => event.currentTarget.select()}\n                                />\n                            </div>\n                            {#if flag.contentType === CustomFlagContentType.Fraction}\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.max}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, max: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                                <div class=\"la-flexcol -gap0\">\n                                    <span class=\"-fontsizesmall -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                    <input type=\"number\"\n                                        class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                                        value={flag.content.min}\n                                        onchange={event => handleUpdateCustomFlag(actor, id, { content: { ...flag.content, min: Number((event.target as HTMLInputElement).value) } })}\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                </div>\n                            {/if}\n                        </div>\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.sidebarToggle.deployable.label\")}\n                    >\n                        <input type=\"checkbox\"\n                            class=\"-widthfull\"\n                            checked={flag.showInSidebar}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { showInSidebar: (event.target as HTMLInputElement).checked })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.color.label\")}\n                    >\n                        <input type=\"color\"\n                            class=\"la-customvalue__input -widthfull\"\n                            value={flag.color}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { color: (event.target as HTMLInputElement).value })}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.icon.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.icon}\n                            placeholder={\"mdi mdi-abacus\"}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { icon: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <EffectBox\n                        name={getLocalized(\"LA.tab.custom.flag.tooltip.label\")}\n                    >\n                        <input type=\"text\"\n                            class=\"la-customvalue__input la-text-text -bordersround -small la-brdr-repcap -padding0-lr\"\n                            value={flag.tooltip}\n                            onchange={event => handleUpdateCustomFlag(actor, id, { tooltip: (event.target as HTMLInputElement).value })}\n                            onfocus={event => event.currentTarget.select()}\n                        />\n                    </EffectBox>\n                    <HeaderSecondary\n                        text={getLocalized(\"LA.tab.custom.flag.assist.label\")}\n                        headerStyle={[H2_HEADER_STYLE, \"la-bckg-pilot\"]}\n                        textStyle={[H2_TEXT_SIZE, \"-fontface-stylized\"]}\n                        borderStyle={[\"la-brdr-pilot\"]}\n\n                        collapseID={`custom.${id}.assist`}\n                        startCollapsed={false}\n\n                        contentLeft={headerSecondaryInnerLeftOptions}\n                    >\n                        <div class=\"la-generated -widthfull -gap1 la-flexcol\">\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.ref.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getCustomFlagPath(CustomFlagKey.Deployable, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Deployable, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getCustomFlagPath(CustomFlagKey.Deployable, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? refCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.ref.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                            <EffectBox\n                                name={getLocalized(\"LA.tab.custom.flag.enricher.label\")}\n                            >\n                                <div class=\"la-combine-grid -horizontal2-auto -aligncenter -gap1 -widthfull\">\n                                    <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.value.label\")}</span>\n                                    <input type=\"text\" readonly\n                                        class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                        { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                        ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                        : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                        value={getEnricher(actor.uuid, CustomFlagKey.Deployable, id, \"value\")}\n\n                                        data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                        data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                        data-tooltip-direction={TooltipDirection.DOWN}\n\n                                        onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                        onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                        onfocus={event => event.currentTarget.select()}\n                                    />\n                                    {#if flag.contentType === CustomFlagContentType.Fraction}\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.max.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Deployable, id, \"max\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                        <span class=\" -upper\">{getLocalized(\"LA.tab.custom.flag.content.min.label\")}</span>\n                                        <input type=\"text\" readonly\n                                            class=\"la-customvalue__input -bordersround -small -padding0-lr -widthfull\n                                            { getBrightness(getThemeKey(actor.uuid)) === 'light'\n                                            ? 'la-brdr-darken-3 la-text-darken-7 la-bckg-darken-1'\n                                            : 'la-brdr-lighten-3 la-text-lighten-7 la-bckg-lighten-1' }\"\n                                            value={getEnricher(actor.uuid, CustomFlagKey.Deployable, id, \"min\")}\n\n                                            data-tooltip={tooltipEnabled ? enrichCopyTip : undefined}\n                                            data-tooltip-class=\"clipped-bot la-tooltip {theme}\"\n                                            data-tooltip-direction={TooltipDirection.DOWN}\n\n                                            onpointerenter={ event => sendToTextConsole(event, getLocalized(\"LA.tab.custom.flag.enricher.tooltip\"), actor.uuid) }\n                                            onpointerleave={ event => resetTextConsole(event, actor.uuid) }\n                                            onfocus={event => event.currentTarget.select()}\n                                        />\n                                    {/if}\n                                </div>\n                            </EffectBox>\n                        </div>\n                    </HeaderSecondary>\n                </div>\n            </HeaderSecondary>\n            </DragDropHandle>\n        {/each}\n        </div>\n    </HeaderMain>\n</div>\n","<!--\n(#14) - Basically hijacking the statically mounted nav element in the `.hbs` file to be able to hide/display\nthe given element reactively. Expected to be removed in an update to the Lancer system that will migrate sheets to AppV2\n-->\n<script lang=\"ts\">\n    import { getAdvancedState } from \"@/scripts/store/advanced\";\n\n    type CustomToggleProps = {\n        actor: any;\n        button: HTMLElement;\n    };\n\n    const {\n        actor, button\n    } : CustomToggleProps = $props();\n\n    const advancedOptions = $derived(getAdvancedState(actor.uuid));\n\n    $effect(() => {\n        button?.classList.toggle('-displaynone', !advancedOptions);\n    });\n</script>\n","import { mount } from \"svelte\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport type { DeployableSheetProps } from \"@/interfaces/deployable/DeployableSheetProps\";\nimport { dataMap, getLocalized, isValidImageContainer } from \"@/scripts/helpers\";\nimport { TEMPLATE_PATHS } from \"@/scripts/loader\";\nimport { getActorTokenSync, getDeployableSheetHeight, getDeployableSheetWidth } from \"@/scripts/deployable/settings\";\nimport { applyThemeTo, getCSSSystemTheme } from \"@/scripts/theme\";\nimport { getThemeOverride } from '@/scripts/deployable/settings';\nimport { unregisterTrackedHooks } from '@/scripts/store/hooks';\nimport { getSelectedTokenImage, setSelectedTokenImage } from \"@/scripts/store/advanced\";\nimport { getThemeKey, setThemeKey } from \"@/scripts/store/theme\";\nimport Detail from \"@/svelte/deployable/Detail.svelte\";\nimport Header from \"@/svelte/deployable/Header.svelte\";\nimport Activity from '@/svelte/deployable/Activity.svelte';\nimport Custom from \"@/svelte/deployable/Custom.svelte\";\nimport CustomToggle from \"@/svelte/deployable/CustomToggle.svelte\";\n\nexport class DeployableSheetBase\n{\n    static get mergeOptions()\n    {\n        return {\n            classes: [\n                \"la-common la-override__header clipped-alt\",\n                \"lancer sheet actor deployable\", getCSSSystemTheme()\n            ],\n            template: TEMPLATE_PATHS.deployableSheetSvelte,\n            width: getDeployableSheetWidth() || 500,\n            height: getDeployableSheetHeight() || 800,\n            tabs: [\n                {\n                    navSelector: \".la-tabs\",\n                    contentSelector: \".la-content\",\n                    initial: \"detail\"\n                },\n            ],\n            scrollY: [\".la-SVELTE-DETAIL\", \".la-SVELTE-CUSTOM\", \".la-SVELTE-ACTIVITY\"],\n        }\n    }\n\n    static setupSheet()\n    {\n        const LADeployableSheet = class extends ((game.lancer.applications as any).LancerDeployableSheet as typeof  foundry.appv1.sheets.ActorSheet)\n        {\n            constructor(...args: [any])\n            {\n                super(...args);\n                \n                Hooks.on(\"laOverrideTheme\", (uuid: string, theme: string) =>\n                {\n                    if (uuid !== this.actor.uuid!)\n                        return;\n                    setThemeKey(this.actor.uuid!, theme);\n                    this.render();\n                });\n\n                Hooks.on(\"updateActor\", (document: any, changes: any) => {\n                    if (document.uuid === this.actor.uuid! && \n                        changes.prototypeToken?.texture?.src && \n                        getActorTokenSync(this.actor.uuid!) // Actor-token image sync enabled\n                    )\n                    {\n                        setSelectedTokenImage(this.actor.uuid!, changes.prototypeToken.texture.src);\n                        if (isValidImageContainer(changes.prototypeToken.texture.src))\n                            this.actor.update({\"img\": changes.prototypeToken.texture.src});\n                    }\n                });\n\n                // TODO: Until a Lancer settings/theme hook is available, \n                // this blasts on every single time the settings close\n                Hooks.on(\"closeSettingsConfig\", () =>\n                {\n                    this.render();\n                });\n            }\n\n            static override get defaultOptions(): ActorSheet.Options\n            {\n                return foundry.utils.mergeObject(super.defaultOptions, DeployableSheetBase.mergeOptions);\n            }\n\n            override async getData(): Promise<DeployableSheetProps>\n            {\n                let data = await super.getData() as any;\n                return data as DeployableSheetProps;\n            }\n\n            // (#10)\n            // @ts-expect-error We're overriding a function in LancerActorSheet\n            override _propagateData(formData: any)\n            {\n                // @ts-expect-error We're overriding a function in LancerActorSheet\n                super._propagateData(formData);\n                \n                delete formData[\"prototypeToken.texture.src\"]; // GO AWAY MYSTERY MAN AAAAAAA\n                const updateToken = getSelectedTokenImage(this.actor.uuid!); // (#12)\n                if (updateToken)\n                {\n                    formData[\"prototypeToken.texture.src\"] = updateToken;\n                }\n            }\n\n            override async _injectHTML(html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._injectHTML(html);\n                setThemeKey(this.actor.uuid!, getThemeOverride(this.actor.uuid!));\n                applyThemeTo(this.element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n            }\n\n            override async _replaceHTML(element: JQuery<HTMLElement>, html: JQuery<HTMLElement>): Promise<void>\n            {\n                super._replaceHTML(element, html);\n                applyThemeTo(element, getThemeKey(this.actor.uuid!));\n\n                this.mountComponents(html, dataMap[this.actor.uuid!]);\n\n                // Saving and restoring scroll positions calls before rerender, so \n                // restore the scroll positions after the rerender\n                this._restoreScrollPositions(html);\n            }\n\n            mountComponents(html: JQuery<HTMLElement>, data: any)\n            {\n                unregisterTrackedHooks(this.actor.uuid!); // Untrack all hooks that were registered from Svelte components\n                mount(Header,\n                    {\n                        target: html.find(\".la-SVELTE-HEADER\")[0],\n                        props: data,\n                    });\n                mount(Detail,\n                    {\n                        target: html.find(\".la-SVELTE-DETAIL\")[0],\n                        props: data,\n                    });\n                // mount(Status,\n                //     {\n                //         target: html.find(\".la-SVELTE-STATUS\")[0],\n                //         props: data,\n                //     });\n                mount(Activity, \n                {\n                    target: html.find(\".la-SVELTE-ACTIVITY\")[0],\n                    props: data,\n                });\n                mount(Custom, {\n                    target: html.find(\".la-SVELTE-CUSTOM\")[0],\n                    props: data,\n                });\n                mount(CustomToggle, { // (#14)\n                    target: html.find(\".la-tabs\")[0],\n                    props: {\n                        actor: data.actor,\n                        button: html.find('.la-tabs>[data-tab=\"custom\"]')[0],\n                    },\n                });\n            }\n        }\n\n        foundry.documents.collections.Actors.registerSheet(LancerAlternative.Name, LADeployableSheet, {\n            types: [\"deployable\"] as any[], // Lancer system actor subtype (registered by the system at runtime)\n            label: getLocalized(\"LA.SHEET.deployable.label\"),\n            makeDefault: false\n        });\n    }\n}","import { preloadTemplates } from \"./loader\";\nimport { forwardData, logConsole, logData } from \"./helpers\";\nimport { resetTextLog, sendToTextLog } from \"@/scripts/store/text-log\";\nimport { MechSheetBase } from \"@/classes/mech/MechSheetBase\";\nimport { NPCSheetBase } from \"@/classes/npc/NPCSheetBase\";\nimport { PilotSheetBase } from \"@/classes/pilot/PilotSheetBase\";\nimport { DeployableSheetBase } from \"@/classes/deployable/DeployableSheetBase\";\nimport { SendUnknownToChatBase } from \"@/classes/flows/SendUnknownToChat\";\nimport { RunMacroBase } from \"@/classes/flows/RunMacro\";\nimport { getExtraEffectsEnabled, registerModuleSettings } from \"@/scripts/settings\";\nimport { getAdvancedState } from \"@/scripts/store/advanced\";\nimport { registerMechSheetSettings, resetMechSheetData, resetMechSheetLocalData } from \"@/scripts/mech/settings\";\nimport { registerNPCSheetSettings, resetNPCSheetData } from \"@/scripts/npc/settings\";\nimport { registerPilotSheetSettings, resetPilotSheetData, resetPilotSheetLocalData } from \"@/scripts/pilot/settings\";\nimport { registerDeployableSheetSettings, resetDeployableSheetData } from \"@/scripts/deployable/settings\";\nimport { LancerAlternative } from \"@/enums/LancerAlternative\";\nimport { SkillTriggerOtherBase } from \"@/classes/flows/SkillTriggerOther\";\nimport { Logger } from \"@/classes/Logger\";\nimport { registerCustomFlagEnricher } from \"@/scripts/enrichers\";\nimport { addCustomFlag, deleteCustomFlag, getCustomFlagPath, getCustomFlags, setCustomFlags, updateCustomFlag } from \"@/scripts/flags\";\n\nHooks.once(\"init\", () =>\n{\n    registerHandlebarsHelpers();\n    registerSettings();\n    registerCustomFlagEnricher();\n});\n\nHooks.once(\"setup\", async () =>\n{\n    preloadTemplates();\n\n    setupSheets();\n    setupEventListeners();\n    registerFlows();\n});\n\nHooks.once(\"ready\", async () =>\n{\n    // @ts-expect-error It's not undefined; it's lying\n    game.modules.get(LancerAlternative.Name).api = {\n        settings: {\n            resetMechSheetLocalData,\n            resetMechSheetData,\n            resetNPCSheetData,\n            resetPilotSheetLocalData,\n            resetPilotSheetData,\n            resetDeployableSheetData,\n        },\n        textLog: {\n            sendToTextLog,\n            resetTextLog,\n        },\n        flags: {\n            getCustomFlags,\n            setCustomFlags,\n            addCustomFlag,\n            updateCustomFlag,\n            deleteCustomFlag,\n            getCustomFlagPath,\n        },\n    };\n});\n\nfunction registerHandlebarsHelpers()\n{\n    Handlebars.registerHelper(\"la_logData\", logData);\n    Handlebars.registerHelper(\"la_logConsole\", logConsole)\n    Handlebars.registerHelper(\"la_setDatastore\", forwardData);\n    Handlebars.registerHelper(\"la_getBackgroundStyle\", () => {\n        return getExtraEffectsEnabled() ? 'la-bg-scroll' : 'la-bg';\n    });\n    Handlebars.registerHelper(\"la_getBackgroundAltStyle\", () => {\n        return getExtraEffectsEnabled() ? 'la-bg-scroll-alt' : 'la-bg-alt';\n    });\n    Handlebars.registerHelper(\"la_getScrollStyle\", () => {\n        return getExtraEffectsEnabled() ? 'la-ruler-scroll' : 'la-ruler';\n    });\n    Handlebars.registerHelper(\"la_getAdvancedStyle\", (uuid: string) => {\n        return getAdvancedState(uuid) ? '' : '-displaynone';\n    });\n}\n\nfunction registerSettings()\n{\n    registerModuleSettings();\n    registerMechSheetSettings();\n    registerNPCSheetSettings();\n    registerPilotSheetSettings();\n    registerDeployableSheetSettings();\n}\n\nfunction registerFlows()\n{\n    // TODO: write PR to separate flow registration from hook call\n    // We miss the 'lancer.registerFlows' hook, since it is called on init, but the \n    // classes are not ready for reading on init, so we have to grab the flows Map \n    // ourselves in the setup step\n    const customFlows = [\n        SendUnknownToChatBase.getInstance().setupFlow(),\n        RunMacroBase.getInstance().setupFlow(),\n        SkillTriggerOtherBase.getInstance().setupFlow(),\n    ];\n\n    const customSteps = [\n        ...SendUnknownToChatBase.getInstance().setupFlowSteps(),\n        ...RunMacroBase.getInstance().setupFlowSteps(),\n        ...SkillTriggerOtherBase.getInstance().setupFlowSteps(),\n    ];\n\n    const flows = game.lancer.flows as Map<string, any>;\n    for (const flow of customFlows)\n    {\n        flows.set(flow.name, flow);\n    }\n\n    const flowSteps = game.lancer.flowSteps as Map<string, any>;\n    for (const step of customSteps)\n    {\n        flowSteps.set(step.name, step);\n    }\n\n    Logger.log(`Registered flows: ${customFlows.map(flow => flow.name).join(\", \")}`);\n    Logger.log(`Registered steps: ${customSteps.map(flowStep => flowStep.name).join(\", \")}`);\n}\n\nfunction setupSheets()\n{\n    // TODO: write PR to define these earlier or separate initialization/exposure \n    // Declare extension classes at runtime since they're only defined at that point\n    MechSheetBase.setupSheet();\n    NPCSheetBase.setupSheet();\n    PilotSheetBase.setupSheet();\n    DeployableSheetBase.setupSheet();\n}\n\nfunction setupEventListeners()\n{\n\n}\n"],"names":["moduleID","LancerAlternative","index","size","state","SystemButton","getSidebarRatio","setSidebarRatio","migratedDefaults","determineActorTokenSync","setImageOffsetXY","getImageOffsetY","getImageOffsetX","getImageWidth","setImageWidth","setImageBatched","getThemeOverride","setThemeOverride","getSidebarExecutables","setSidebarExecutables","getActorTokenSync","setActorTokenSync","onResetLocalData_fn","onResetServerData_fn","onSubmit_fn","getRoot","component_context","source","e.state_unsafe_mutation","prop","e.state_descriptors_fixed","get","value","key","e.state_prototype_fixed","derived","e.effect_orphan","e.effect_in_unowned_derived","e.effect_in_teardown","effect","push","teardown","child","sibling","is_micro_task_queued","root","e.effect_update_depth_exceeded","e.state_unsafe_local_read","event","html","text","events","fn","i","_a","node","snippet","action","clsx","_clsx","set","template","TextConsoleHook","TextLogHook","ThemeKey","ThemeValue","ActiveTab","TooltipDirection","FlowClass","CustomFlowClass","TextLogIntro","_DEFAULT_BUTTON","$.derived","$.set_attribute","$.get","$.set","$.state","$.proxy","$.bind_this","$.rest_props","$.set_value","$.event","imageComponent","EditMode","$.set_class","$$anchor","$.prop","$.bind_checked","on_click","ownerUUID","macroUUID","LADataType","$.template_effect","$.set_text","$.each","CustomFlagContentType","id","CustomFlagKey","on_change_1","$.noop","ActionLogCollapsePrefix","theme","$.html","target","$.user_effect","headerSecondaryLeftOptions","on_change","on_change_2","document","CounterBoxType","ChatCardType","$.index","AcceptType","_DEFAULT_I_BACKGROUND","mount","$.set_selected","$.set_checked","headerSecondaryInnerLeftOptions","SETTINGS_BUTTON_STYLE","on_click_1","_mount","SETTINGS_HEADER_STYLE","Header","AdvancedSettingsNav","Sidebar","Activity","Status","AdvancedSettings","Loadout","Custom","CustomToggle","HaseDisplay","r","$.spread_props","handleEditToken","on_change_3","armorBonuses","otherBonuses","collID"],"mappings":"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","x_google_ignoreList":[2,3,4,5,6,7,8,9,10,11,12,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,82,83,131,134]}