bc-deeplib 1.0.5 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CREDITS.md +13 -0
- package/LICENSE +21 -21
- package/README.md +2 -2
- package/dist/3rd_party_types/bcmodsdk.d.ts +184 -0
- package/dist/3rd_party_types/declarations.d.ts +4 -0
- package/dist/deeplib.d.ts +538 -0
- package/dist/deeplib.js +2582 -0
- package/dist/deeplib.js.map +7 -0
- package/dist/index.js +2556 -0
- package/dist/index.js.map +7 -0
- package/dist/public/dl_images/arrow_left.svg +1 -0
- package/dist/public/dl_images/arrow_right.svg +1 -0
- package/dist/public/dl_images/bug.svg +1 -0
- package/dist/public/dl_images/clipboard_export.svg +19 -0
- package/dist/public/dl_images/clipboard_import.svg +19 -0
- package/dist/public/dl_images/cog.svg +1 -0
- package/dist/public/dl_images/exit.svg +1 -0
- package/dist/public/dl_images/file_export.svg +12 -0
- package/dist/public/dl_images/file_import.svg +12 -0
- package/dist/public/dl_images/git.svg +10 -0
- package/dist/public/dl_images/notebook.svg +1 -0
- package/dist/public/dl_images/round_arrow_left.svg +1 -0
- package/dist/public/dl_images/round_arrow_right.svg +1 -0
- package/dist/public/dl_images/round_transfer.svg +7 -0
- package/dist/public/dl_images/transfer.svg +1 -0
- package/dist/public/dl_images/trash_bin.svg +1 -0
- package/dist/public/dl_translations/en.lang +17 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vendored_types/bcmodsdk.d.ts +184 -0
- package/dist/vendored_types/declarations.d.ts +5 -0
- package/lib/build.d.ts +32 -0
- package/lib/build.js +236 -0
- package/package.json +41 -24
- package/.types/declarations.d.ts +0 -15
- package/.types/elements.d.ts +0 -38
- package/.types/type-override.d.ts +0 -3
- package/public/styles/DeepLib.css +0 -206
- package/public/styles/Gratitude.css +0 -23
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../node_modules/.pnpm/bondage-club-mod-sdk@1.2.0/node_modules/bondage-club-mod-sdk/dist/bcmodsdk.js", "../src/base/base_module.ts", "../src/base/base_subscreen.ts", "../src/styles/index.scss", "../src/base/initialization.ts", "../src/base/modules.ts", "../src/migrators/base_migrator.ts", "../src/modules/gui.ts", "../src/modules/version.ts", "../src/screens/debug.ts", "../src/utilities/common.ts", "../src/utilities/elements/advanced_elements.ts", "../src/screens/main_menu.ts", "../src/screens/import_export.ts", "../src/utilities/data.ts", "../src/utilities/elements/element_helpers.ts", "../src/utilities/elements/layout_elements.ts", "../src/utilities/logger.ts", "../src/utilities/messages.ts", "../src/utilities/sdk.ts", "../src/utilities/style.ts", "../src/utilities/translation.ts"],
|
|
4
|
+
"sourcesContent": ["// Bondage Club Mod Development Kit (1.2.0)\n// For more info see: https://github.com/Jomshir98/bondage-club-mod-sdk\n/** @type {ModSDKGlobalAPI} */\nvar bcModSdk=function(){\"use strict\";const o=\"1.2.0\";function e(o){alert(\"Mod ERROR:\\n\"+o);const e=new Error(o);throw console.error(e),e}const t=new TextEncoder;function n(o){return!!o&&\"object\"==typeof o&&!Array.isArray(o)}function r(o){const e=new Set;return o.filter((o=>!e.has(o)&&e.add(o)))}const i=new Map,a=new Set;function c(o){a.has(o)||(a.add(o),console.warn(o))}function s(o){const e=[],t=new Map,n=new Set;for(const r of f.values()){const i=r.patching.get(o.name);if(i){e.push(...i.hooks);for(const[e,a]of i.patches.entries())t.has(e)&&t.get(e)!==a&&c(`ModSDK: Mod '${r.name}' is patching function ${o.name} with same pattern that is already applied by different mod, but with different pattern:\\nPattern:\\n${e}\\nPatch1:\\n${t.get(e)||\"\"}\\nPatch2:\\n${a}`),t.set(e,a),n.add(r.name)}}e.sort(((o,e)=>e.priority-o.priority));const r=function(o,e){if(0===e.size)return o;let t=o.toString().replaceAll(\"\\r\\n\",\"\\n\");for(const[n,r]of e.entries())t.includes(n)||c(`ModSDK: Patching ${o.name}: Patch ${n} not applied`),t=t.replaceAll(n,r);return(0,eval)(`(${t})`)}(o.original,t);let i=function(e){var t,i;const a=null===(i=(t=m.errorReporterHooks).hookChainExit)||void 0===i?void 0:i.call(t,o.name,n),c=r.apply(this,e);return null==a||a(),c};for(let t=e.length-1;t>=0;t--){const n=e[t],r=i;i=function(e){var t,i;const a=null===(i=(t=m.errorReporterHooks).hookEnter)||void 0===i?void 0:i.call(t,o.name,n.mod),c=n.hook.apply(this,[e,o=>{if(1!==arguments.length||!Array.isArray(e))throw new Error(`Mod ${n.mod} failed to call next hook: Expected args to be array, got ${typeof o}`);return r.call(this,o)}]);return null==a||a(),c}}return{hooks:e,patches:t,patchesSources:n,enter:i,final:r}}function l(o,e=!1){let r=i.get(o);if(r)e&&(r.precomputed=s(r));else{let e=window;const a=o.split(\".\");for(let t=0;t<a.length-1;t++)if(e=e[a[t]],!n(e))throw new Error(`ModSDK: Function ${o} to be patched not found; ${a.slice(0,t+1).join(\".\")} is not object`);const c=e[a[a.length-1]];if(\"function\"!=typeof c)throw new Error(`ModSDK: Function ${o} to be patched not found`);const l=function(o){let e=-1;for(const n of t.encode(o)){let o=255&(e^n);for(let e=0;e<8;e++)o=1&o?-306674912^o>>>1:o>>>1;e=e>>>8^o}return((-1^e)>>>0).toString(16).padStart(8,\"0\").toUpperCase()}(c.toString().replaceAll(\"\\r\\n\",\"\\n\")),d={name:o,original:c,originalHash:l};r=Object.assign(Object.assign({},d),{precomputed:s(d),router:()=>{},context:e,contextProperty:a[a.length-1]}),r.router=function(o){return function(...e){return o.precomputed.enter.apply(this,[e])}}(r),i.set(o,r),e[r.contextProperty]=r.router}return r}function d(){for(const o of i.values())o.precomputed=s(o)}function p(){const o=new Map;for(const[e,t]of i)o.set(e,{name:e,original:t.original,originalHash:t.originalHash,sdkEntrypoint:t.router,currentEntrypoint:t.context[t.contextProperty],hookedByMods:r(t.precomputed.hooks.map((o=>o.mod))),patchedByMods:Array.from(t.precomputed.patchesSources)});return o}const f=new Map;function u(o){f.get(o.name)!==o&&e(`Failed to unload mod '${o.name}': Not registered`),f.delete(o.name),o.loaded=!1,d()}function g(o,t){o&&\"object\"==typeof o||e(\"Failed to register mod: Expected info object, got \"+typeof o),\"string\"==typeof o.name&&o.name||e(\"Failed to register mod: Expected name to be non-empty string, got \"+typeof o.name);let r=`'${o.name}'`;\"string\"==typeof o.fullName&&o.fullName||e(`Failed to register mod ${r}: Expected fullName to be non-empty string, got ${typeof o.fullName}`),r=`'${o.fullName} (${o.name})'`,\"string\"!=typeof o.version&&e(`Failed to register mod ${r}: Expected version to be string, got ${typeof o.version}`),o.repository||(o.repository=void 0),void 0!==o.repository&&\"string\"!=typeof o.repository&&e(`Failed to register mod ${r}: Expected repository to be undefined or string, got ${typeof o.version}`),null==t&&(t={}),t&&\"object\"==typeof t||e(`Failed to register mod ${r}: Expected options to be undefined or object, got ${typeof t}`);const i=!0===t.allowReplace,a=f.get(o.name);a&&(a.allowReplace&&i||e(`Refusing to load mod ${r}: it is already loaded and doesn't allow being replaced.\\nWas the mod loaded multiple times?`),u(a));const c=o=>{let e=g.patching.get(o.name);return e||(e={hooks:[],patches:new Map},g.patching.set(o.name,e)),e},s=(o,t)=>(...n)=>{var i,a;const c=null===(a=(i=m.errorReporterHooks).apiEndpointEnter)||void 0===a?void 0:a.call(i,o,g.name);g.loaded||e(`Mod ${r} attempted to call SDK function after being unloaded`);const s=t(...n);return null==c||c(),s},p={unload:s(\"unload\",(()=>u(g))),hookFunction:s(\"hookFunction\",((o,t,n)=>{\"string\"==typeof o&&o||e(`Mod ${r} failed to patch a function: Expected function name string, got ${typeof o}`);const i=l(o),a=c(i);\"number\"!=typeof t&&e(`Mod ${r} failed to hook function '${o}': Expected priority number, got ${typeof t}`),\"function\"!=typeof n&&e(`Mod ${r} failed to hook function '${o}': Expected hook function, got ${typeof n}`);const s={mod:g.name,priority:t,hook:n};return a.hooks.push(s),d(),()=>{const o=a.hooks.indexOf(s);o>=0&&(a.hooks.splice(o,1),d())}})),patchFunction:s(\"patchFunction\",((o,t)=>{\"string\"==typeof o&&o||e(`Mod ${r} failed to patch a function: Expected function name string, got ${typeof o}`);const i=l(o),a=c(i);n(t)||e(`Mod ${r} failed to patch function '${o}': Expected patches object, got ${typeof t}`);for(const[n,i]of Object.entries(t))\"string\"==typeof i?a.patches.set(n,i):null===i?a.patches.delete(n):e(`Mod ${r} failed to patch function '${o}': Invalid format of patch '${n}'`);d()})),removePatches:s(\"removePatches\",(o=>{\"string\"==typeof o&&o||e(`Mod ${r} failed to patch a function: Expected function name string, got ${typeof o}`);const t=l(o);c(t).patches.clear(),d()})),callOriginal:s(\"callOriginal\",((o,t,n)=>{\"string\"==typeof o&&o||e(`Mod ${r} failed to call a function: Expected function name string, got ${typeof o}`);const i=l(o);return Array.isArray(t)||e(`Mod ${r} failed to call a function: Expected args array, got ${typeof t}`),i.original.apply(null!=n?n:globalThis,t)})),getOriginalHash:s(\"getOriginalHash\",(o=>{\"string\"==typeof o&&o||e(`Mod ${r} failed to get hash: Expected function name string, got ${typeof o}`);return l(o).originalHash}))},g={name:o.name,fullName:o.fullName,version:o.version,repository:o.repository,allowReplace:i,api:p,loaded:!0,patching:new Map};return f.set(o.name,g),Object.freeze(p)}function h(){const o=[];for(const e of f.values())o.push({name:e.name,fullName:e.fullName,version:e.version,repository:e.repository});return o}let m;const y=void 0===window.bcModSdk?window.bcModSdk=function(){const e={version:o,apiVersion:1,registerMod:g,getModsInfo:h,getPatchingInfo:p,errorReporterHooks:Object.seal({apiEndpointEnter:null,hookEnter:null,hookChainExit:null})};return m=e,Object.freeze(e)}():(n(window.bcModSdk)||e(\"Failed to init Mod SDK: Name already in use\"),1!==window.bcModSdk.apiVersion&&e(`Failed to init Mod SDK: Different version already loaded ('1.2.0' vs '${window.bcModSdk.version}')`),window.bcModSdk.version!==o&&alert(`Mod SDK warning: Loading different but compatible versions ('1.2.0' vs '${window.bcModSdk.version}')\\nOne of mods you are using is using an old version of SDK. It will work for now but please inform author to update`),window.bcModSdk);return\"undefined\"!=typeof exports&&(Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.default=y),y}();\n", "import { BaseSettingsModel, SettingsModel, Subscreen, ModSdkManager, ModStorage, modStorage } from '../deeplib';\n\nexport abstract class BaseModule {\n get settingsScreen(): Subscreen | null {\n return null;\n }\n\n get settingsStorage(): string | null {\n return this.constructor.name;\n }\n\n get settings(): BaseSettingsModel {\n const modName = ModSdkManager.ModInfo.name;\n if (!this.settingsStorage) return {} as BaseSettingsModel;\n if (!modStorage.playerStorage) {\n Player[modName] = <SettingsModel>{};\n this.registerDefaultSettings();\n } else if (!modStorage.playerStorage[this.settingsStorage]) this.registerDefaultSettings();\n return modStorage.playerStorage[this.settingsStorage];\n }\n\n set settings(value) {\n const modName = ModSdkManager.ModInfo.name;\n const storage = new ModStorage<SettingsModel>(modName);\n if (!this.settingsStorage) return;\n if (!storage.playerStorage) {\n Player[modName] = <SettingsModel>{};\n this.registerDefaultSettings();\n } else if (!storage.playerStorage[this.settingsStorage]) this.registerDefaultSettings();\n storage.playerStorage[this.settingsStorage] = value;\n }\n\n init() {\n this.registerDefaultSettings();\n }\n\n registerDefaultSettings(): void {\n const storage = this.settingsStorage;\n const defaults = this.defaultSettings;\n if (!storage || !defaults) return;\n\n Player[ModSdkManager.ModInfo.name][storage] = Object.assign(defaults, Player[ModSdkManager.ModInfo.name][storage] ?? {});\n }\n\n get defaultSettings(): BaseSettingsModel | null {\n return null;\n }\n\n load() { }\n\n run() { }\n\n unload() { }\n}\n", "import { BaseModule, BaseSettingsModel, GUI, advancedElement, ModSdkManager, domUtil, getText, layoutElement, modules, modStorage } from '../deeplib';\nimport { SettingElement } from './elements_typings';\n\ntype SubscreenOptions = {\n drawCharacter?: boolean;\n};\n\nexport type Subscreen = new (subscreenOptions?: SubscreenOptions, module?: BaseModule) => BaseSubscreen;\n\nexport function getCurrentSubscreen(): BaseSubscreen | null {\n return GUI.instance && GUI.instance.currentSubscreen;\n}\n\nexport function setSubscreen(subscreen: BaseSubscreen | string | null): BaseSubscreen | null {\n if (!GUI.instance) {\n throw new Error('Attempt to set subscreen before init');\n }\n GUI.instance.currentSubscreen = subscreen;\n\n return GUI.instance.currentSubscreen;\n}\n\nexport abstract class BaseSubscreen {\n static currentElements: [HTMLElement, SettingElement][] = [];\n static currentPage: number = 1;\n readonly options: SubscreenOptions;\n readonly module!: BaseModule;\n\n constructor(subscreenOptions?: SubscreenOptions, module?: BaseModule) {\n if (module) this.module = module;\n this.options = subscreenOptions || {} as SubscreenOptions;\n }\n\n get name(): string {\n return 'UNKNOWN';\n }\n\n get icon(): string {\n return '';\n }\n\n get subscreenName(): string {\n return this.constructor.name;\n }\n\n setSubscreen(screen: BaseSubscreen | string | null) {\n return setSubscreen(screen);\n }\n\n get settings(): BaseSettingsModel {\n return this.module.settings as BaseSettingsModel;\n }\n\n set settings(value) {\n this.module.settings = value;\n }\n\n get pageStructure(): SettingElement[][] {\n return [[]];\n }\n\n get currentPage(): SettingElement[] {\n return this.pageStructure[Math.min(BaseSubscreen.currentPage - 1, this.pageStructure.length - 1)];\n }\n\n changePage(page: number, setLabel: (label: string) => void) {\n const totalPages = this.pageStructure.length;\n\n if (page > totalPages) page = 1;\n if (page < 1) page = totalPages;\n BaseSubscreen.currentPage = page;\n\n this.managePageElementsVisibility();\n\n setLabel(`${BaseSubscreen.currentPage} of ${this.pageStructure.length}`);\n }\n\n managePageElementsVisibility() {\n this.pageStructure.forEach((item, ix) => {\n if (ix != BaseSubscreen.currentPage - 1) {\n item.forEach((setting) => {\n domUtil.hide(`${setting.id}-container`);\n });\n } else {\n item.forEach((setting) => {\n domUtil.unhide(`${setting.id}-container`);\n });\n }\n });\n }\n\n load() {\n for (const module of modules()) {\n if (!module.settingsScreen) continue;\n if (!module.settings || !Object.keys(module.settings).length) module.registerDefaultSettings();\n }\n\n BaseSubscreen.currentPage = 1;\n\n layoutElement.createSubscreenDiv();\n const settingsElement = layoutElement.createSettingsDiv();\n layoutElement.appendToSubscreenDiv(settingsElement);\n\n const menu = ElementMenu.Create('deeplib-nav-menu', []);\n layoutElement.appendToSubscreenDiv(menu);\n\n if (this.pageStructure.length > 1) {\n const backNext = advancedElement.createBackNext({\n id: 'deeplib-page-back-next',\n next: ({ setLabel }) => this.changePage(BaseSubscreen.currentPage + 1, setLabel),\n initialNextTooltip: getText('settings.button.next_button_hint'),\n back: ({ setLabel }) => this.changePage(BaseSubscreen.currentPage - 1, setLabel),\n initialPrevTooltip: getText('settings.button.prev_button_hint'),\n initialLabel: `${BaseSubscreen.currentPage} of ${this.pageStructure.length}`,\n });\n\n ElementMenu.PrependItem(menu, backNext);\n }\n\n const subscreenTitle = advancedElement.createLabel({\n id: 'deeplib-subscreen-title',\n label: getText(`${this.name}.title`).replace('$ModVersion', ModSdkManager.ModInfo.version),\n });\n layoutElement.appendToSubscreenDiv(subscreenTitle);\n\n if (this.name !== 'mainmenu') {\n const exitButton = advancedElement.createButton({\n id: 'deeplib-exit',\n size: [90, 90],\n image: `${PUBLIC_URL}/dl_images/exit.svg`,\n onClick: () => {\n this.exit();\n },\n tooltip: getText('settings.button.back_button_hint')\n });\n ElementMenu.AppendButton(menu, exitButton);\n }\n\n const tooltip = advancedElement.createTooltip();\n layoutElement.appendToSubscreenDiv(tooltip);\n\n this.pageStructure.forEach((s) =>\n s.forEach((item) => {\n let element: HTMLElement;\n switch (item.type) {\n case 'text':\n case 'number':\n case 'color':\n element = advancedElement.createInput(item);\n break;\n case 'checkbox':\n element = advancedElement.createCheckbox(item);\n break;\n case 'button':\n element = advancedElement.createButton(item);\n break;\n case 'label':\n element = advancedElement.createLabel(item);\n break;\n case 'custom':\n element = advancedElement.createCustom(item);\n break;\n }\n layoutElement.appendToSettingsDiv(element);\n })\n );\n\n this.managePageElementsVisibility();\n\n CharacterAppearanceForceUpCharacter = Player.MemberNumber ?? -1;\n }\n\n run() {\n if (this.options.drawCharacter) DrawCharacter(Player, 50, 50, 0.9, false);\n }\n\n click() {\n }\n\n exit() {\n CharacterAppearanceForceUpCharacter = -1;\n CharacterLoadCanvas(Player);\n\n setSubscreen('mainmenu');\n modStorage.save();\n }\n\n resize(onLoad: boolean = false) {\n const offset = this.options.drawCharacter ? 0 : 380;\n const subscreen = layoutElement.getSubscreenDiv();\n const settingsDiv = layoutElement.getSettingsDiv();\n\n ElementSetPosition(subscreen || '', 0, 0);\n ElementSetSize(subscreen || '', 2000, 1000);\n ElementSetFontSize(subscreen || '', 'auto');\n\n if (this.name === 'mainmenu') {\n ElementSetPosition(settingsDiv || '', 530 - offset, 170);\n ElementSetSize(settingsDiv || '', 600 + offset, 660);\n } else {\n ElementSetPosition(settingsDiv || '', 530 - offset, 170);\n ElementSetSize(settingsDiv || '', 1000 + offset, 660);\n }\n\n ElementSetPosition('deeplib-subscreen-title', 530 - offset, 75);\n ElementSetSize('deeplib-subscreen-title', 800, 60);\n\n ElementSetPosition('deeplib-nav-menu', 1905, 75, 'top-right');\n ElementSetSize('deeplib-nav-menu', null, 90);\n\n ElementSetPosition(advancedElement.getTooltip() || '', 250, 850);\n ElementSetSize(advancedElement.getTooltip() || '', 1500, 70);\n\n BaseSubscreen.currentElements.forEach((item) => {\n const options = item[1];\n\n domUtil.autoSetPosition(options.id, options.position);\n domUtil.autoSetSize(options.id, options.size);\n });\n\n if (settingsDiv) {\n if (domUtil.hasOverflow(settingsDiv)?.vertical) {\n settingsDiv.classList.add('deeplib-overflow-box');\n } else {\n settingsDiv.classList.remove('deeplib-overflow-box');\n }\n }\n }\n\n unload() {\n BaseSubscreen.currentElements = [];\n\n layoutElement.removeSubscreenDiv();\n }\n}\n\n", "export default `.deeplib-subscreen,\n.deeplib-modal {\n --deeplib-background-color: var(--tmd-main, white);\n --deeplib-element-color: var(--tmd-element, white);\n --deeplib-element-hover-color: var(--tmd-element-hover, cyan);\n --deeplib-blocked-color: var(--tmd-blocked, red);\n --deeplib-text-color: var(--tmd-text, black);\n --deeplib-icon-color: var(--tmd-accent, white);\n --deeplib-icon-hover-color: var(--tmd-accent-hover, cyan);\n --deeplib-border-color: var(--tmd-accent, black);\n --deeplib-border-width: min(0.2vh, 0.1vw);\n --deeplib-border-width: min(0.2dvh, 0.1dvw);\n --deeplib-border-radius: min(1vh, 0.5vw);\n --deeplib-border-radius: min(1dvh, 0.5dvw);\n}\n\n.deeplib-button {\n color: var(--deeplib-text-color);\n width: 100%;\n height: 100%;\n}\n\n.deeplib-button.button-styling,\n.deeplib-button.button-styling::before {\n border-radius: min(1dvh, 0.5dvw);\n}\n\n.deeplib-button img {\n position: absolute;\n top: 0%;\n left: 0%;\n width: 100%;\n height: 100%;\n background-position: left;\n background-color: var(--deeplib-icon-color);\n background-blend-mode: multiply;\n background-size: contain;\n mask-position: left;\n mask-size: contain;\n background-repeat: no-repeat;\n mask-repeat: no-repeat;\n color: transparent;\n background-image: var(--image);\n mask-image: var(--image);\n pointer-events: none;\n}\n\n.deeplib-button:hover img {\n background-color: var(--deeplib-icon-hover-color);\n}\n\n.deeplib-button .button-label {\n background-color: transparent !important;\n color: var(--deeplib-text-color);\n font-size: min(3.6dvh, 1.8dvw);\n}\n\n.deeplib-button .button-tooltip {\n border-radius: min(1dvh, 0.5dvw);\n}\n\n#deeplib-page-label {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n#deeplib-subscreen-title {\n text-align: left;\n color: var(--deeplib-text-color);\n}\n\n.deeplib-text {\n color: var(--deeplib-text-color);\n}\n\n.deeplib-subscreen {\n padding: 0;\n margin: 0;\n pointer-events: none;\n}\n\n.deeplib-subscreen * {\n box-sizing: border-box;\n pointer-events: all;\n}\n\n.deeplib-settings {\n display: grid;\n grid-auto-rows: min-content;\n padding: min(1dvh, 0.5dvw);\n gap: 0.3em;\n overflow-y: scroll;\n}\n\n.deeplib-misc {\n display: flex;\n align-items: center;\n flex-direction: column-reverse;\n gap: min(1vh, 0.5vw);\n}\n\n.deeplib-tooltip {\n background-color: var(--deeplib-element-color);\n color: var(--deeplib-text-color);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: min(1dvh, 0.5dvw);\n padding: min(1vh, 0.5vw);\n font-size: 0.8em;\n border: min(0.2vh, 0.1vw) solid var(--deeplib-border-color);\n}\n\n.deeplib-overflow-box {\n border: var(--deeplib-border-color) solid var(--deeplib-border-width);\n}\n\n.deeplib-prev-next {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-direction: row;\n gap: min(2dvh, 1dvw);\n background-color: var(--deeplib-element-color);\n color: var(--deeplib-text-color);\n border-radius: min(1dvh, 0.5dvw);\n border: min(0.2vh, 0.1vw) solid var(--deeplib-border-color);\n}\n.deeplib-prev-next .deeplib-prev-next-button {\n height: 100%;\n aspect-ratio: 1;\n}\n.deeplib-prev-next .deeplib-prev-next-button:hover {\n background-color: var(--deeplib-element-hover-color);\n border-radius: var(--deeplib-border-radius);\n}\n.deeplib-prev-next .deeplib-prev-next-label {\n white-space: nowrap;\n}\n\n#deeplib-nav-menu {\n display: flex;\n flex-direction: row;\n gap: min(2dvh, 1dvw);\n}\n\n.deeplib-checkbox-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.3em;\n}\n\n.deeplib-checkbox-container input.deeplib-input {\n width: min(5vh, 2.5vw);\n height: min(5vh, 2.5vw);\n border-radius: min(1dvh, 0.5dvw);\n}\n\n.deeplib-checkbox-container input.deeplib-input[type=checkbox]:checked::before {\n width: 80%;\n height: 80%;\n}\n\n.deeplib-input-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0.3em;\n}\n\n.deeplib-input-container:has(label.deeplib-text) {\n margin-top: min(1vh, 0.5vw);\n}\n\n.deeplib-input-container input.deeplib-input {\n font-size: 0.6em;\n padding: 5px 0;\n background-color: transparent;\n outline: none;\n padding-left: min(1vh, 0.5vw);\n padding-right: min(1vh, 0.5vw);\n min-height: min(5dvh, 2.5dvw);\n border-radius: min(1dvh, 0.5dvw);\n}\n\n.deeplib-input-container input.deeplib-input[type=color] {\n padding: 0px;\n width: min(5vh, 2.5vw);\n height: min(5vh, 2.5vw);\n border-radius: 0px;\n}\n\n.deeplib-input-container input.deeplib-input[type=color]:disabled {\n border: var(--deeplib-blocked-color) solid var(--deeplib-border-width);\n cursor: not-allowed;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\ninput[type=number] {\n appearance: textfield;\n -moz-appearance: textfield;\n}\n\n.deeplib-highlight-text {\n font-weight: bold;\n color: rgb(203, 185, 23);\n}\n\n#TextAreaChatLog[data-colortheme=dark] div.ChatMessage.deeplib-message,\n#TextAreaChatLog[data-colortheme=dark2] div.ChatMessage.deeplib-message {\n background-color: var(--deeplib-element-color);\n border: min(0.2dvh, 0.1dvw) solid var(--deeplib-border-color);\n color: var(--deeplib-text-color);\n}\n\n#TextAreaChatLog div.ChatMessage.deeplib-message {\n background-color: #eee;\n border: min(0.2dvh, 0.1dvw) solid #440171;\n color: #111;\n padding-left: min(0.6dvh, 0.3dvw);\n display: block;\n white-space: normal;\n}\n\n#TextAreaChatLog[data-colortheme=dark] div.ChatMessage.deeplib-message a,\n#TextAreaChatLog[data-colortheme=dark2] div.ChatMessage.deeplib-message a {\n color: var(--deeplib-text-color);\n}\n\n#TextAreaChatLog div.ChatMessage.deeplib-message a {\n cursor: pointer;\n font-weight: bold;\n color: #111;\n}\n\n.deeplib-modal {\n position: fixed;\n top: 10%;\n left: 50%;\n transform: translateX(-50%);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 0.5em;\n width: max(50dvw, 25dvh);\n font-size: min(4dvh, 2dvw);\n padding: min(2dvh, 1dvw);\n background-color: var(--deeplib-element-color);\n border-radius: min(1.2dvh, 0.6dvw);\n border: min(0.2dvh, 0.1dvw) solid var(--deeplib-border-color);\n color: var(--deeplib-text-color);\n}\n.deeplib-modal .deeplib-modal-input {\n width: 100%;\n font-size: min(2.6dvh, 1.8dvw);\n border-radius: min(1dvh, 0.5dvw);\n padding: min(1dvh, 0.5dvw);\n}\n.deeplib-modal input.deeplib-modal-input {\n max-width: max(50dvh, 25dvw);\n}\n.deeplib-modal .deeplib-modal-button-container {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n gap: 0.5em;\n width: 100%;\n}\n.deeplib-modal .deeplib-modal-button-container .deeplib-button {\n font-size: 0.8em;\n display: flex;\n width: auto;\n padding: min(0.4vh, 0.2vw) min(2vh, 1vw);\n}\n.deeplib-modal .deeplib-modal-button-container .deeplib-button .button-label {\n display: contents;\n}\n\n.deeplib-modal-blocker {\n z-index: 1000;\n position: fixed;\n top: 0;\n left: 0;\n width: 100dvw;\n height: 100dvh;\n background-color: rgba(0, 0, 0, 0.5);\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21lZGlhL0Rlby9OVk1FL1N0dWZmL0NvZGUvQkMvQkMtRGVlcExpYi9zcmMvc3R5bGVzIiwic291cmNlcyI6WyJ2YXJzLnNjc3MiLCJidXR0b25zLnNjc3MiLCJlbGVtZW50cy5zY3NzIiwiaW5wdXRzLnNjc3MiLCJtZXNzYWdlcy5zY3NzIiwibW9kYWwuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUNiRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUMzQ0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFNRTtFQUNBOztBQU5BO0VBQ0U7RUFDQTs7QUFPSjtFQUNFOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7O0FDdEZGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBSUY7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUM3REY7RUFDRTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FDN0JGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBTVI7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSIsInNvdXJjZXNDb250ZW50IjpbIi5kZWVwbGliLXN1YnNjcmVlbixcbi5kZWVwbGliLW1vZGFsIHtcbiAgLS1kZWVwbGliLWJhY2tncm91bmQtY29sb3I6IHZhcigtLXRtZC1tYWluLCB3aGl0ZSk7XG4gIC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yOiB2YXIoLS10bWQtZWxlbWVudCwgd2hpdGUpO1xuICAtLWRlZXBsaWItZWxlbWVudC1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWVsZW1lbnQtaG92ZXIsIGN5YW4pO1xuICAtLWRlZXBsaWItYmxvY2tlZC1jb2xvcjogdmFyKC0tdG1kLWJsb2NrZWQsIHJlZCk7XG4gIC0tZGVlcGxpYi10ZXh0LWNvbG9yOiB2YXIoLS10bWQtdGV4dCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgd2hpdGUpO1xuICAtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWFjY2VudC1ob3ZlciwgY3lhbik7XG4gIC0tZGVlcGxpYi1ib3JkZXItY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWJvcmRlci13aWR0aDogbWluKDAuMnZoLCAwLjF2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItd2lkdGg6IG1pbigwLjJkdmgsIDAuMWR2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMXZoLCAwLjV2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbn1cbiIsIi5kZWVwbGliLWJ1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmcsXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmc6OmJlZm9yZSB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMCU7XG4gIGxlZnQ6IDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWljb24tY29sb3IpO1xuICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcG9zaXRpb246IGxlZnQ7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWltYWdlKTtcbiAgbWFzay1pbWFnZTogdmFyKC0taW1hZ2UpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRlZXBsaWItYnV0dG9uOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcik7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiAuYnV0dG9uLWxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogbWluKDMuNmR2aCwgMS44ZHZ3KTtcbn1cblxuLmRlZXBsaWItYnV0dG9uIC5idXR0b24tdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG4iLCIjZGVlcGxpYi1wYWdlLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbiNkZWVwbGliLXN1YnNjcmVlbi10aXRsZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4uZGVlcGxpYi10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuLmRlZXBsaWItc2V0dGluZ3Mge1xuICBkaXNwbGF5OiBncmlkO1xuICBncmlkLWF1dG8tcm93czogbWluLWNvbnRlbnQ7XG4gIHBhZGRpbmc6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIGdhcDogMC4zZW07XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cblxuLmRlZXBsaWItbWlzYyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgZ2FwOiBtaW4oMXZoLCAwLjV2dyk7XG59XG5cbi5kZWVwbGliLXRvb2x0aXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIHBhZGRpbmc6IG1pbigxdmgsIDAuNXZ3KTtcbiAgZm9udC1zaXplOiAwLjhlbTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG59XG5cbi5kZWVwbGliLW92ZXJmbG93LWJveCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKTtcbn1cblxuLmRlZXBsaWItcHJldi1uZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gIGJvcmRlcjogbWluKDAuMnZoLCAwLjF2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuXG4gIC5kZWVwbGliLXByZXYtbmV4dC1idXR0b24ge1xuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWhvdmVyLWNvbG9yKTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZXBsaWItYm9yZGVyLXJhZGl1cyk7XG4gICAgfVxuICAgIFxuICAgIGhlaWdodDogMTAwJTtcbiAgICBhc3BlY3QtcmF0aW86IDE7XG4gIH1cblxuICAuZGVlcGxpYi1wcmV2LW5leHQtbGFiZWwge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIH1cbn1cblxuI2RlZXBsaWItbmF2LW1lbnUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBnYXA6IG1pbigyZHZoLCAxZHZ3KTtcbn0iLCIuZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dCB7XG4gIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gIGhlaWdodDogbWluKDV2aCwgMi41dncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuXG4uZGVlcGxpYi1jaGVja2JveC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl06Y2hlY2tlZDo6YmVmb3JlIHtcbiAgd2lkdGg6IDgwJTtcbiAgaGVpZ2h0OiA4MCU7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMC4zZW07XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lcjpoYXMobGFiZWwuZGVlcGxpYi10ZXh0KSB7XG4gIG1hcmdpbi10b3A6IG1pbigxdmgsIDAuNXZ3KTtcbn1cblxuLmRlZXBsaWItaW5wdXQtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXQge1xuICBmb250LXNpemU6IDAuNmVtO1xuICBwYWRkaW5nOiA1cHggMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogbWluKDF2aCwgMC41dncpO1xuICBwYWRkaW5nLXJpZ2h0OiBtaW4oMXZoLCAwLjV2dyk7XG4gIG1pbi1oZWlnaHQ6IG1pbig1ZHZoLCAyLjVkdncpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xufVxuXG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0W3R5cGU9XCJjb2xvclwiXSB7XG4gIHBhZGRpbmc6IDBweDtcbiAgd2lkdGg6IG1pbig1dmgsIDIuNXZ3KTtcbiAgaGVpZ2h0OiBtaW4oNXZoLCAyLjV2dyk7XG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbn1cblxuLmRlZXBsaWItaW5wdXQtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNvbG9yXCJdOmRpc2FibGVkIHtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJsb2NrZWQtY29sb3IpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLXdpZHRoKTtcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuaW5wdXQ6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24sXG5pbnB1dDo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xufVxuXG5pbnB1dFt0eXBlPW51bWJlcl0ge1xuICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XG4gIC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xufVxuIiwiLmRlZXBsaWItaGlnaGxpZ2h0LXRleHQge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6IHJnYigyMDMsIDE4NSwgMjMpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyayddIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2UsXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyazInXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGVlcGxpYi1lbGVtZW50LWNvbG9yKTtcbiAgYm9yZGVyOiBtaW4oMC4yZHZoLCAwLjFkdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2cgZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlZWU7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCAjNDQwMTcxO1xuICBjb2xvcjogIzExMTtcbiAgcGFkZGluZy1sZWZ0OiBtaW4oMC42ZHZoLCAwLjNkdncpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsnXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEsXG4jVGV4dEFyZWFDaGF0TG9nW2RhdGEtY29sb3J0aGVtZT0nZGFyazInXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEge1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZyBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlIGEge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogIzExMTtcbn1cbiIsIi5kZWVwbGliLW1vZGFsIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDEwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIHotaW5kZXg6IDEwMDE7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuNWVtO1xuICB3aWR0aDogbWF4KDUwZHZ3LCAyNWR2aCk7XG4gIGZvbnQtc2l6ZTogbWluKDRkdmgsIDJkdncpO1xuICBwYWRkaW5nOiBtaW4oMmR2aCwgMWR2dyk7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjJkdmgsIDAuNmR2dyk7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuXG4gIC5kZWVwbGliLW1vZGFsLWlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmb250LXNpemU6IG1pbigyLjZkdmgsIDEuOGR2dyk7XG4gICAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgICBwYWRkaW5nOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbiAgfVxuXG4gIGlucHV0LmRlZXBsaWItbW9kYWwtaW5wdXQge1xuICAgIG1heC13aWR0aDogbWF4KDUwZHZoLCAyNWR2dyk7XG4gIH1cblxuICAuZGVlcGxpYi1tb2RhbC1idXR0b24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBnYXA6IDAuNWVtO1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgLmRlZXBsaWItYnV0dG9uIHtcbiAgICAgIGZvbnQtc2l6ZTogMC44ZW07XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgICBwYWRkaW5nOiBtaW4oMC40dmgsIDAuMnZ3KSBtaW4oMnZoLCAxdncpO1xuXG4gICAgICAuYnV0dG9uLWxhYmVsIHtcbiAgICAgICAgZGlzcGxheTogY29udGVudHM7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5kZWVwbGliLW1vZGFsLWJsb2NrZXIge1xuICB6LWluZGV4OiAxMDAwO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMGR2dztcbiAgaGVpZ2h0OiAxMDBkdmg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbn1cbiJdfQ== */`;\n", "import deeplib_style from '../styles/index.scss';\nimport { BaseModule, ModSdkManager, deepLibLogger, Localization, modules, registerModule, Style, VersionModule, hasSetter, deepMergeMatchingProperties, hasGetter, BaseMigrator, ModStorage, MainMenuOptions, MainMenu } from '../deeplib';\n\ninterface InitOptions {\n modInfo: {\n info: ModSDKModInfo,\n options?: ModSDKModOptions\n };\n modules?: BaseModule[];\n migrators?: BaseMigrator[];\n mainMenuOptions?: MainMenuOptions;\n beforeLogin?: () => (void);\n initFunction?: () => (void | Promise<void>);\n pathToTranslationsFolder?: string;\n}\n\nexport let modStorage: ModStorage;\n\nexport function initMod(options: InitOptions) {\n const sdk = new ModSdkManager(options.modInfo.info, options.modInfo.options);\n const MOD_NAME = ModSdkManager.ModInfo.name;\n\n modStorage = new ModStorage(ModSdkManager.ModInfo.name);\n Style.injectInline('deeplib-style', deeplib_style);\n\n deepLibLogger.debug(`Init wait for ${MOD_NAME}`);\n if (CurrentScreen == null || CurrentScreen === 'Login') {\n options.beforeLogin?.();\n const removeHook = sdk.hookFunction('LoginResponse', 0, (args, next) => {\n deepLibLogger.debug(`Init for ${MOD_NAME}! LoginResponse caught: `, args);\n next(args);\n const response = args[0];\n if (response === 'InvalidNamePassword') return next(args);\n if (response && typeof response.Name === 'string' && typeof response.AccountName === 'string') {\n init(options);\n removeHook();\n }\n });\n } else {\n deepLibLogger.debug(`Already logged in, initing ${MOD_NAME}`);\n init(options);\n }\n\n return { sdk };\n}\n\nexport async function init(options: InitOptions) {\n const MOD_NAME = ModSdkManager.ModInfo.name;\n const MOD_VERSION = ModSdkManager.ModInfo.version;\n\n if ((window as any)[MOD_NAME + 'Loaded']) return;\n\n modStorage.load();\n\n if (options.pathToTranslationsFolder) {\n await Localization.init({\n pathToTranslationsFolder: options.pathToTranslationsFolder\n });\n }\n\n if (options.modules && !initModules(options.modules)) {\n unloadMod();\n return;\n }\n\n if (options.migrators) {\n for (const m of options.migrators) {\n VersionModule.registerMigrator(m);\n }\n }\n\n await options.initFunction?.();\n\n if (options.mainMenuOptions)\n MainMenu.setOptions(options.mainMenuOptions);\n\n VersionModule.checkVersionUpdate();\n\n for (const m of modules()) {\n if (m.defaultSettings && hasGetter(m, 'defaultSettings') && m.settings && hasSetter(m, 'settings')) {\n if (Object.entries(m.defaultSettings).length === 0) continue;\n m.settings = deepMergeMatchingProperties(m.defaultSettings, m.settings);\n }\n }\n\n (window as any)[MOD_NAME + 'Loaded'] = true;\n deepLibLogger.log(`Loaded ${MOD_NAME}! Version: ${MOD_VERSION}`);\n}\n\nfunction initModules(modulesToRegister: BaseModule[]): boolean {\n const MOD_NAME = ModSdkManager.ModInfo.name;\n\n for (const module of modulesToRegister) {\n registerModule(module);\n }\n\n for (const module of modules()) {\n module.init();\n }\n\n for (const module of modules()) {\n module.load();\n }\n\n for (const module of modules()) {\n module.run();\n }\n\n deepLibLogger.debug(`Modules Loaded for ${MOD_NAME}.`);\n return true;\n}\n\nexport function unloadMod(): true {\n const MOD_NAME = ModSdkManager.ModInfo.name;\n unloadModules();\n\n delete (window as any)[MOD_NAME + 'Loaded'];\n deepLibLogger.debug(`Unloaded ${MOD_NAME}.`);\n return true;\n}\n\nfunction unloadModules() {\n for (const module of modules()) {\n module.unload();\n }\n}\n", "import { BaseModule } from '../deeplib';\n\nexport const modulesMap: Map<string, BaseModule> = new Map<string, BaseModule>();\n\nexport function modules(): BaseModule[] {\n return [...modulesMap.values()];\n}\n\nexport function registerModule<T extends BaseModule>(module: T): T {\n modulesMap.set(module.constructor.name, module);\n return module;\n}\n\nexport function getModule<T extends BaseModule>(moduleType: string): T {\n return modulesMap.get(moduleType) as T;\n}\n", "export abstract class BaseMigrator {\n abstract get MigrationVersion(): string;\n abstract Migrate(): boolean;\n}\n", "import { BaseModule, BaseSubscreen, MainMenu, modules, setSubscreen } from '../deeplib';\n\ntype ModButtonOptions = {\n Identifier: string;\n ButtonText: string | (()=>string);\n Image: string | (()=>string);\n\n load?: () => void;\n click?: () => void;\n run?: () => void;\n unload?: () => void;\n exit?: () => boolean | void;\n};\n\nexport class GUI extends BaseModule {\n static instance: GUI | null = null;\n\n private _subscreens: BaseSubscreen[];\n private _mainMenu: MainMenu;\n private _currentSubscreen: BaseSubscreen | null = null;\n private _modButtonOptions: ModButtonOptions;\n\n get subscreens(): BaseSubscreen[] {\n return this._subscreens;\n }\n\n get mainMenu(): MainMenu {\n return this._mainMenu;\n }\n\n get currentSubscreen(): BaseSubscreen | null {\n return this._currentSubscreen;\n }\n\n set currentSubscreen(subscreen: BaseSubscreen | string | null) {\n if (this._currentSubscreen) {\n this._currentSubscreen.unload();\n }\n\n if (typeof subscreen === 'string') {\n const scr = this._subscreens?.find((s) => s.name === subscreen);\n if (!scr) throw `Failed to find screen name ${subscreen}`;\n this._currentSubscreen = scr;\n } else {\n this._currentSubscreen = subscreen;\n }\n\n PreferenceMessage = '';\n PreferencePageCurrent = 1;\n\n if (this._currentSubscreen) {\n this._currentSubscreen.load();\n this._currentSubscreen.resize(true);\n }\n }\n\n constructor(modButtonOptions: ModButtonOptions) {\n super();\n if (GUI.instance) {\n throw new Error('Duplicate initialization');\n }\n\n for (const module of modules()) {\n if (!module.settingsScreen) continue;\n }\n\n this._mainMenu = new MainMenu(this);\n this._subscreens = [this._mainMenu];\n this._modButtonOptions = modButtonOptions;\n\n GUI.instance = this;\n }\n\n get defaultSettings(): null {\n return null;\n }\n\n load(): void {\n for (const module of modules()) {\n if (!module.settingsScreen) continue;\n\n this._subscreens.push(new module.settingsScreen({}, module));\n }\n\n this._mainMenu.subscreens = this._subscreens;\n PreferenceRegisterExtensionSetting({\n Identifier: this._modButtonOptions.Identifier,\n ButtonText: this._modButtonOptions.ButtonText,\n Image: this._modButtonOptions.Image,\n load: this._modButtonOptions.load || (() => {\n setSubscreen(new MainMenu(this));\n }),\n run: this._modButtonOptions.run || (() => {\n if (this._currentSubscreen) {\n MainCanvas.textAlign = 'left';\n this._currentSubscreen.run();\n MainCanvas.textAlign = 'center';\n \n const newCanvasPosition: RectTuple = [MainCanvas.canvas.offsetLeft, MainCanvas.canvas.offsetTop, MainCanvas.canvas.clientWidth, MainCanvas.canvas.clientHeight];\n if (!CommonArraysEqual(newCanvasPosition, DrawCanvasPosition)) {\n DrawCanvasPosition = newCanvasPosition;\n this._currentSubscreen.resize(false);\n }\n }\n }),\n click: this._modButtonOptions.click || (() => {\n if (this._currentSubscreen) {\n this._currentSubscreen.click();\n }\n }),\n exit: this._modButtonOptions.exit || (() => {\n if (this._currentSubscreen) {\n this._currentSubscreen.exit();\n }\n }),\n unload: this._modButtonOptions.unload || (() => {\n if (this._currentSubscreen) {\n this._currentSubscreen.unload();\n }\n })\n });\n }\n}\n", "import { BaseMigrator, BaseModule, HookPriority, ModSdkManager, deepLibLogger, modStorage, sendLocalMessage } from '../deeplib';\n\nexport class VersionModule extends BaseModule {\n private static isItNewVersion: boolean = false;\n static Version: string;\n static NewVersionMessage: string = '';\n private static Migrators: BaseMigrator[] = [];\n\n load(): void {\n VersionModule.Version = ModSdkManager.ModInfo.version;\n\n ModSdkManager.prototype.hookFunction(\n 'ChatRoomSync',\n HookPriority.Observe,\n (args, next) => {\n next(args);\n if (modStorage.playerStorage.GlobalModule.doShowNewVersionMessage && VersionModule.isItNewVersion) {\n VersionModule.sendNewVersionMessage();\n }\n },\n 'VersionModule'\n );\n }\n\n static checkVersionUpdate() {\n const PreviousVersion = VersionModule.loadVersion();\n const CurrentVersion = VersionModule.Version;\n\n if (VersionModule.isNewVersion(PreviousVersion, CurrentVersion)) {\n VersionModule.isItNewVersion = true;\n VersionModule.checkVersionMigration();\n VersionModule.saveVersion();\n }\n\n modStorage.save();\n }\n\n private static checkVersionMigration() {\n const PreviousVersion = VersionModule.loadVersion();\n\n for (const migrator of VersionModule.Migrators) {\n if (VersionModule.isNewVersion(PreviousVersion, migrator.MigrationVersion)) {\n migrator.Migrate();\n deepLibLogger.info(`Migrating ${ModSdkManager.ModInfo.name} from ${PreviousVersion} to ${migrator.MigrationVersion} with ${migrator.constructor.name}`);\n }\n }\n }\n \n static registerMigrator(migrator: BaseMigrator) {\n VersionModule.Migrators.push(migrator);\n\n VersionModule.Migrators.sort((a, b) => a.MigrationVersion.localeCompare(b.MigrationVersion));\n }\n\n static setNewVersionMessage(newVersionMessage: string) {\n VersionModule.NewVersionMessage = newVersionMessage;\n }\n\n static sendNewVersionMessage() {\n sendLocalMessage('deeplib-new-version', VersionModule.NewVersionMessage);\n }\n\n private static isNewVersion(current: string | undefined, candidate: string) {\n if (current !== undefined) {\n const CURRENT_ = current.split('.'),\n CANDIDATE_ = candidate.split('.');\n for (let i = 0; i < 3; i++) {\n if (CURRENT_[i] === CANDIDATE_[i]) {\n continue;\n }\n return CANDIDATE_[i] > CURRENT_[i];\n }\n }\n if (current === undefined || current === '' || !current) {\n return true;\n }\n return false;\n }\n\n private static saveVersion() {\n if (modStorage.playerStorage) {\n Player[ModSdkManager.ModInfo.name].Version = VersionModule.Version;\n }\n }\n\n private static loadVersion() {\n return modStorage.playerStorage?.Version;\n }\n}\n", "\nimport { Button, Checkbox, Input, Label, SettingElement } from '../base/elements_typings';\nimport { BaseSubscreen, deepLibLogger } from '../deeplib';\n\nexport class GuiDebug extends BaseSubscreen {\n\n get name(): string {\n return 'debug';\n }\n\n get pageStructure(): SettingElement[][] {\n return [[\n <Button>{\n type: 'button',\n id: 'test-deeplib-big-button',\n size: [405, 80],\n label: 'Big Button',\n tooltip: 'This is a big button',\n image: 'Icons/Exit.png',\n onClick() {\n deepLibLogger.info('Big Button Clicked');\n }\n },\n <Button>{\n type: 'button',\n id: 'test-deeplib-small-button',\n size: [90, 90],\n tooltip: 'This is a small button',\n image: 'Icons/Exit.png',\n onClick() {\n deepLibLogger.info('Small Button Clicked');\n }\n },\n <Checkbox>{\n type: 'checkbox',\n id: 'test-deeplib-checkbox',\n label: 'Checkbox',\n description: 'This is a checkbox',\n setElementValue() {\n return true;\n },\n setSettingValue(val: boolean) {\n deepLibLogger.info('Checkbox value:', val);\n },\n },\n <Input>{\n type: 'text',\n id: 'test-deeplib-text-input',\n label: 'Input',\n description: 'This is a text input',\n setElementValue() {\n return 'Input Value';\n },\n setSettingValue(val: string) {\n deepLibLogger.info('Input value:', val);\n },\n },\n <Input>{\n type: 'number',\n id: 'test-deeplib-number-input',\n label: 'Input',\n description: 'This is a number input',\n setElementValue() {\n return '123';\n },\n setSettingValue(val: string) {\n deepLibLogger.info('Input value:', val);\n },\n },\n <Label>{\n type: 'label',\n id: 'test-deeplib-label',\n label: 'Label',\n description: 'This is a label',\n }\n ],\n [\n <Button>{\n type: 'button',\n id: 'test-deeplib-big-button2',\n size: [405, 80],\n label: 'Big Button',\n tooltip: 'This is a big button',\n image: 'Icons/Prev.png',\n onClick() {\n deepLibLogger.info('Big Button Clicked');\n }\n },\n <Button>{\n type: 'button',\n id: 'test-deeplib-small-button2',\n size: [90, 90],\n tooltip: 'This is a small button',\n image: 'Icons/Next.png',\n onClick() {\n deepLibLogger.info('Small Button Clicked');\n }\n },\n <Checkbox>{\n type: 'checkbox',\n id: 'test-deeplib-checkbox2',\n label: 'Checkbox',\n description: 'This is a checkbox',\n setElementValue() {\n return true;\n },\n setSettingValue(val: boolean) {\n deepLibLogger.info('Checkbox value:', val);\n },\n },\n <Input>{\n type: 'text',\n id: 'test-deeplib-text-input2',\n label: 'Input',\n description: 'This is a text input',\n setElementValue() {\n return 'Input Value';\n },\n setSettingValue(val: string) {\n deepLibLogger.info('Input value:', val);\n },\n },\n <Input>{\n type: 'number',\n id: 'test-deeplib-number-input2',\n label: 'Input',\n description: 'This is a number input',\n setElementValue() {\n return '123';\n },\n setSettingValue(val: string) {\n deepLibLogger.info('Input value:', val);\n },\n },\n <Label>{\n type: 'label',\n id: 'test-deeplib-label2',\n label: 'Label',\n description: 'This is a label',\n }\n ]];\n }\n}\n", "export function deepMerge(target: any, source: any): any {\n if (target === undefined) return source;\n if (source === undefined) return target;\n if (typeof target !== 'object' || typeof source !== 'object') {\n return source;\n }\n\n for (const key of Object.keys(source)) {\n if (Array.isArray(source[key]) && Array.isArray(target[key])) {\n target[key] = [...target[key], ...source[key]];\n } else if (typeof source[key] === 'object' && source[key] !== null) {\n target[key] = deepMerge(target[key] || {}, source[key]);\n } else {\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nexport function shuffleArray(array: string[]) {\n const temp: string[] = JSON.parse(JSON.stringify(array));\n const ret: string[] = [];\n\n while (temp.length > 0) {\n const d = Math.floor(Math.random() * temp.length);\n ret.push(temp[d]);\n temp.splice(d, 1);\n }\n\n return ret;\n}\n\nexport function exportToGlobal(name: string, value: any): void {\n const keys = name.split('.');\n let current = globalThis as any;\n\n for (let i = 0; i < keys.length - 1; i++) {\n if (!current[keys[i]]) {\n current[keys[i]] = {};\n }\n current = current[keys[i]];\n }\n\n current[keys[keys.length - 1]] = value;\n}\n\n/** Merges matching properties from `mergeFrom` into `mergeTo`. */\nexport function deepMergeMatchingProperties<T extends object>(mergeTo: T, mergeFrom: T): T {\n const mergedObject = { ...mergeTo };\n\n for (const key in mergeFrom) {\n if (mergeFrom[key] !== null && typeof mergeFrom[key] === 'object') {\n (mergedObject as any)[key] = deepMergeMatchingProperties(mergedObject[key] || {}, mergeFrom[key]);\n } else if (key in mergedObject) {\n (mergedObject as any)[key] = mergeFrom[key];\n }\n }\n\n return mergedObject;\n}\n\nexport function hasGetter<T extends object>(obj: T, prop: keyof T | string): boolean {\n while (obj && obj !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor?.get) return true;\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n}\n\nexport function hasSetter<T extends object>(obj: T, prop: keyof T | string): boolean {\n while (obj && obj !== Object.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor?.set) return true;\n obj = Object.getPrototypeOf(obj);\n }\n return false;\n}", "import { Button, Checkbox, Custom, Input, Label } from '../../base/elements_typings';\nimport { BaseSubscreen } from '../../deeplib';\nimport { deepMerge } from '../common';\n\nexport const advancedElement = {\n createButton: elementCreateButton,\n createCheckbox: elementCreateCheckbox,\n createInput: elementCreateInput,\n createLabel: elementCreateLabel,\n createCustom: elementCreateCustom,\n\n createTooltip: elementCreateTooltip,\n getTooltip: elementGetTooltip,\n setTooltip: elementSetTooltip,\n\n createBackNext: elementPrevNext,\n};\n\nfunction elementCreateButton(options: Omit<Button, 'type'>): HTMLButtonElement {\n const elem = document.getElementById(options.id) as HTMLButtonElement;\n\n if (elem) return elem;\n\n (options as Button).type = 'button';\n\n const disabled = typeof options?.disabled === 'function' ? options?.disabled() : options?.disabled;\n\n const button = ElementButton.Create(\n options.htmlOptions?.id ?? options.id,\n options.htmlOptions?.onClick ?? options?.onClick ?? (() => { }),\n deepMerge({\n tooltip: options.tooltip,\n label: options.label,\n labelPosition: 'center',\n }, options.htmlOptions?.options),\n deepMerge({\n button: {\n classList: ['deeplib-button'],\n attributes: {\n disabled: disabled,\n },\n children: [\n options.image ? {\n tag: 'img',\n attributes: {\n id: `${options.id}-image`,\n alt: '',\n decoding: 'async',\n loading: 'lazy',\n src: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' // 1x1 transparent image to get rid of broken image\n },\n style: {\n '--image': `url(\"${options.image}\")`,\n },\n } : undefined,\n ],\n },\n }, options.htmlOptions?.htmlOptions ?? {}));\n\n BaseSubscreen.currentElements.push([button, options as Button]);\n\n return button;\n};\n\nfunction elementCreateCheckbox(options: Omit<Checkbox, 'type'>) {\n const elem = document.getElementById(options.id);\n\n if (elem) return elem;\n\n (options as Checkbox).type = 'checkbox';\n\n const disabled = typeof options?.disabled === 'function' ? options?.disabled() : options?.disabled;\n\n const retElem = ElementCreate({\n tag: 'div',\n classList: ['deeplib-checkbox-container'],\n attributes: {\n id: `${options.id}-container`,\n },\n children: [\n deepMerge({\n tag: 'input',\n classList: ['checkbox', 'deeplib-input'],\n attributes: {\n type: 'checkbox',\n id: options.id,\n disabled: disabled,\n checked: options?.setElementValue?.() || undefined,\n },\n }, options.htmlOptions),\n {\n tag: 'label',\n classList: ['deeplib-text'],\n attributes: {\n for: options.id,\n },\n children: [options.label]\n },\n ],\n eventListeners: {\n change: () => {\n options?.setSettingValue?.((document.getElementById(options.id) as HTMLInputElement)?.checked);\n }\n }\n });\n\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description || '');\n });\n\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n\n BaseSubscreen.currentElements.push([retElem, options as Checkbox]);\n\n return retElem;\n}\n\nfunction elementCreateCustom(options: Omit<Custom, 'type'>) {\n const elem = document.getElementById(options.id);\n\n if (elem) return elem;\n\n (options as Custom).type = 'custom';\n\n const retElem = ElementCreate(options.htmlOptions);\n\n BaseSubscreen.currentElements.push([retElem, options as Custom]);\n\n return retElem;\n}\n\nfunction elementCreateInput(options: Input) {\n const elem = document.getElementById(options.id);\n\n if (elem) return elem;\n\n const disabled = typeof options?.disabled === 'function' ? options?.disabled() : options?.disabled;\n\n const retElem = ElementCreate({\n tag: 'div',\n classList: ['deeplib-input-container'],\n attributes: {\n id: `${options.id}-container`,\n },\n children: [\n deepMerge({\n tag: 'input',\n classList: ['deeplib-input'],\n attributes: {\n type: options.type,\n id: options.id,\n placeholder: ' ',\n disabled: disabled,\n value: options?.setElementValue?.() || undefined,\n },\n }, options.htmlOptions),\n options.label ? {\n tag: 'label',\n classList: ['deeplib-text'],\n attributes: {\n for: options.id,\n },\n children: [options.label]\n } : undefined,\n ],\n eventListeners: {\n input: () => {\n options?.setSettingValue?.((document.getElementById(options.id) as HTMLInputElement)?.value);\n }\n }\n });\n\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description || '');\n });\n\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n\n BaseSubscreen.currentElements.push([retElem, options]);\n\n return retElem;\n}\n\nfunction elementCreateLabel(options: Omit<Label, 'type'>) {\n const elem = document.getElementById(options.id);\n\n if (elem) return elem;\n\n (options as Label).type = 'label';\n\n const retElem = ElementCreate(deepMerge({\n tag: 'span',\n classList: ['deeplib-label', 'deeplib-text'],\n attributes: {\n id: options.id\n },\n children: [\n options.label,\n ],\n }, options.htmlOptions));\n\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description || '');\n });\n\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n\n BaseSubscreen.currentElements.push([retElem, options as Label]);\n\n return retElem;\n}\n\nfunction elementCreateTooltip() {\n const element = ElementCreate({\n tag: 'div',\n classList: ['deeplib-tooltip'],\n attributes: {\n id: 'deeplib-tooltip'\n },\n style: {\n display: 'none'\n }\n });\n\n return element;\n}\n\nfunction elementGetTooltip() {\n return document.getElementById('deeplib-tooltip') ?? undefined;\n}\n\nfunction elementSetTooltip(text: string) {\n const element = document.getElementById('deeplib-tooltip');\n\n if (!element) return false;\n\n element.innerHTML = text;\n if (text === '') element.style.display = 'none';\n else element.style.display = '';\n\n return true;\n}\n\ninterface PrevNext {\n id: string,\n initialLabel?: string\n back: (arg0: PrevNextCallbacks) => void,\n initialPrevTooltip?: string,\n next: (arg0: PrevNextCallbacks) => void,\n initialNextTooltip?: string\n};\n\ninterface PrevNextCallbacks {\n setLabel: (label: string) => void,\n setBackTooltip: (tooltip: string) => void,\n setNextTooltip: (tooltip: string) => void\n}\n\nfunction elementPrevNext(options: PrevNext) {\n const elem = document.getElementById(options.id);\n\n if (elem) return elem;\n\n const setLabel = (label: string) => {\n const elem = document.getElementById(`${options.id}-label`);\n if (!elem) return false;\n elem.textContent = label;\n };\n\n const setPrevTooltip = (tooltip: string) => {\n const elem = document.getElementById(`deeplib-prev-next-${options.id}-prev-button-tooltip`);\n if (!elem) return false;\n elem.textContent = tooltip;\n };\n\n const setNextTooltip = (tooltip: string) => {\n const elem = document.getElementById(`deeplib-prev-next-${options.id}-next-button-tooltip`);\n if (!elem) return false;\n elem.textContent = tooltip;\n };\n\n const retElem = ElementCreate({\n tag: 'div',\n classList: ['deeplib-prev-next'],\n attributes: {\n id: options.id\n },\n children: [\n advancedElement.createButton({\n id: `deeplib-prev-next-${options.id}-prev-button`,\n image: `${PUBLIC_URL}/dl_images/arrow_left.svg`,\n onClick: () => {\n options.back({\n setLabel: setLabel,\n setBackTooltip: setPrevTooltip,\n setNextTooltip: setNextTooltip,\n });\n },\n tooltip: options.initialPrevTooltip,\n htmlOptions: {\n htmlOptions: {\n button: {\n classList: ['deeplib-prev-next-button']\n }\n },\n options: {\n noStyling: true\n }\n }\n }),\n advancedElement.createLabel({\n id: `${options.id}-label`,\n label: options.initialLabel,\n htmlOptions: {\n classList: ['deeplib-prev-next-label']\n }\n }),\n advancedElement.createButton({\n id: `deeplib-prev-next-${options.id}-next-button`,\n image: `${PUBLIC_URL}/dl_images/arrow_right.svg`,\n onClick: () => {\n options.next({\n setLabel: setLabel,\n setBackTooltip: setPrevTooltip,\n setNextTooltip: setNextTooltip,\n });\n },\n tooltip: options.initialNextTooltip,\n htmlOptions: {\n htmlOptions: {\n button: {\n classList: ['deeplib-prev-next-button']\n }\n },\n options: {\n noStyling: true\n }\n }\n }),\n ]\n });\n\n return retElem;\n}\n\nexport type ModalButton<T extends string = string> = {\n text: string\n action: T\n disabled?: boolean\n};\n\nexport type ModalInputOptions = {\n defaultValue?: string\n readOnly?: boolean\n placeholder?: string\n type: 'input' | 'textarea'\n validate?: (value: string) => string | null\n};\n\nexport type ModalOptions<T extends string = string> = {\n prompt: string | Node\n input?: ModalInputOptions\n buttons?: ModalButton<T>[]\n custom?: readonly (string | Node | HTMLOptions<keyof HTMLElementTagNameMap> | null | undefined)[] | undefined\n closeOnBackdrop?: boolean\n timeoutMs?: number\n};\n\nexport class Modal<T extends string = string> {\n private dialog: HTMLDialogElement;\n private blocker: HTMLDivElement;\n private inputEl?: HTMLInputElement | HTMLTextAreaElement;\n private timeoutId?: number;\n\n private static queue: Modal<any>[] = [];\n private static processing = false;\n\n constructor(private opts: ModalOptions<T>) {\n opts ??= {} as ModalOptions<T>;\n opts.closeOnBackdrop ??= true;\n\n const promptId = `modal-prompt-${Date.now()}`;\n\n this.dialog = ElementCreate({\n tag: 'dialog',\n classList: ['deeplib-modal'],\n attributes: {\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': promptId\n },\n style: {\n fontFamily: CommonGetFontName()\n },\n children: [\n opts.prompt,\n {\n tag: 'div',\n classList: ['deeplib-modal-prompt'],\n attributes: {\n id: promptId\n },\n children: [\n opts.input ? this.renderInput(opts.input) : undefined,\n ]\n },\n this.renderButtons()\n ]\n });\n\n this.blocker = this.createBlocker();\n\n this.renderButtons();\n document.body.append(this.createBlocker(), this.dialog);\n this.setupFocusTrap();\n if (opts.timeoutMs) {\n this.timeoutId = window.setTimeout(() => this.close('timeout' as T), opts.timeoutMs);\n }\n }\n\n show(): Promise<[T, string | null]> {\n return Modal.enqueue(this);\n }\n\n static async alert(msg: string, timeoutMs?: number) {\n await new Modal({ prompt: msg, buttons: [{ action: 'close', text: 'OK' }], timeoutMs }).show();\n }\n\n static async confirm(msg: string) {\n const [action] = await new Modal({ prompt: msg, buttons: [{ text: 'Cancel', action: 'cancel' }, { text: 'OK', action: 'ok' }] }).show();\n return action === 'ok';\n }\n\n static async prompt(msg: string, defaultValue = ''): Promise<string | null> {\n const [action, value] = await new Modal({ prompt: msg, timeoutMs: 0, input: { type: 'input', defaultValue }, buttons: [{ text: 'Cancel', action: 'cancel' }, { text: 'Submit', action: 'submit' }] }).show();\n return action === 'submit' ? value : null;\n }\n\n private renderInput(cfg: ModalInputOptions) {\n const el = document.createElement(cfg.type);\n el.classList.add('deeplib-modal-input');\n if (cfg.placeholder) el.placeholder = cfg.placeholder;\n if (cfg.readOnly) el.readOnly = true;\n if (cfg.defaultValue) el.value = cfg.defaultValue;\n if (cfg.type === 'textarea') (el as HTMLTextAreaElement).rows = 5;\n el.addEventListener('input', () => {\n const err = cfg.validate?.(el.value);\n el.setCustomValidity(err || '');\n });\n this.inputEl = el;\n\n return el;\n }\n\n private renderButtons() {\n const container = document.createElement('div');\n container.classList.add('deeplib-modal-button-container');\n\n const btns = this.opts.buttons ? [...this.opts.buttons] : [];\n\n btns.forEach(b => {\n const btn = advancedElement.createButton({\n label: b.text,\n id: `deeplib-modal-${b.action}`,\n disabled: b.disabled,\n onClick: () => this.close(b.action)\n });\n container.append(btn);\n });\n\n return container;\n }\n\n private createBlocker() {\n const blocker = document.createElement('div');\n blocker.classList.add('deeplib-modal-blocker');\n blocker.title = 'Click to close';\n if (this.opts.closeOnBackdrop !== false)\n blocker.addEventListener('click', () => this.close('close' as T));\n\n return blocker;\n }\n\n private setupFocusTrap() {\n const focusable = 'button, [href], input, textarea, select, [tabindex]:not([tabindex=\"-1\"])';\n const elements = Array.from(this.dialog.querySelectorAll<HTMLElement>(focusable));\n const first = elements[0];\n const last = elements[elements.length - 1];\n this.dialog.addEventListener('keydown', e => {\n if (e.key === 'Tab') {\n if (elements.length === 0) {\n e.preventDefault();\n return;\n }\n if (e.shiftKey) {\n if (document.activeElement === first) {\n last.focus();\n e.preventDefault();\n }\n } else {\n if (document.activeElement === last) {\n first.focus();\n e.preventDefault();\n }\n }\n } else if (e.key === 'Escape') {\n e.stopPropagation();\n this.close('close' as T);\n }\n });\n window.requestAnimationFrame(() => {\n (this.inputEl || first)?.focus();\n });\n }\n\n private close(action: T) {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n this.dialog.close();\n this.dialog.remove();\n this.blocker.remove();\n document.body.querySelector('.deeplib-modal-blocker')?.remove();\n const value = this.inputEl?.value ?? '';\n this.resolve([action, value]);\n Modal.dequeue();\n }\n\n /**\n * An internal function where we will save promise function.\n */\n private resolve: (result: [T, string]) => void = () => { };\n\n /** A function that adds a modal to the queue and returns a promise */\n private static enqueue(modal: Modal<any>): Promise<[any, string]> {\n Modal.queue.push(modal);\n if (!Modal.processing) Modal.dequeue();\n return new Promise(resolve => (modal.resolve = resolve));\n }\n\n /** A function that processes the queue, removing the first modal */\n private static dequeue() {\n const modal = Modal.queue.shift();\n if (modal) {\n Modal.processing = true;\n modal.dialog.show();\n } else {\n Modal.processing = false;\n }\n }\n}\n\n(window as any).Modal = Modal;", "\nimport { BaseSubscreen, getText, GUI, GuiDebug, layoutElement } from '../deeplib';\nimport { advancedElement } from '../utilities/elements/advanced_elements';\nimport { GuiImportExport } from './import_export';\n\nexport type MainMenuOptions = {\n repoLink?: string;\n wikiLink?: string;\n resetSubscreen?: BaseSubscreen;\n importExportSubscreen?: GuiImportExport;\n};\n\nexport class MainMenu extends BaseSubscreen {\n subscreens: BaseSubscreen[] = [];\n\n private static options: MainMenuOptions = {};\n\n get name(): string {\n return 'mainmenu';\n }\n\n constructor(module: GUI) {\n super({ drawCharacter: true }, module);\n\n this.subscreens = module.subscreens;\n }\n\n load(): void {\n if (!GUI.instance?.currentSubscreen) {\n this.setSubscreen(this);\n return;\n }\n\n super.load();\n\n const exitButton = advancedElement.createButton({\n id: 'exit',\n size: [90, 90],\n image: `${PUBLIC_URL}/dl_images/exit.svg`,\n onClick: () => {\n this.exit();\n },\n tooltip: getText('settings.button.back_button_hint')\n });\n\n const menu = document.getElementById('deeplib-nav-menu');\n if (menu) {\n ElementMenu.AppendButton(menu, exitButton);\n }\n\n for (const screen of this.subscreens) {\n\n if (screen.name == 'mainmenu') continue;\n\n const button = advancedElement.createButton({\n id: `${screen.name}-button`,\n image: screen.icon,\n label: getText(`mainmenu.button.${screen.name}`),\n onClick: () => {\n this.setSubscreen(screen);\n },\n size: [null, 90],\n });\n\n layoutElement.appendToSettingsDiv(button);\n }\n\n const miscDiv = layoutElement.createMiscDiv();\n layoutElement.appendToSubscreenDiv(miscDiv);\n\n if (MainMenu.options.wikiLink) {\n const wikiButton = advancedElement.createButton({\n id: 'deeplib-wiki-button',\n image: `${PUBLIC_URL}/dl_images/notebook.svg`,\n label: getText('mainmenu.button.wiki'),\n onClick: () => {\n window.open(MainMenu.options.wikiLink, '_blank');\n },\n size: [null, 80],\n });\n layoutElement.appendToMiscDiv(wikiButton);\n }\n\n if (MainMenu.options.repoLink) {\n const repoButton = advancedElement.createButton({\n id: 'deeplib-repo-button',\n image: `${PUBLIC_URL}/dl_images/git.svg`,\n label: getText('mainmenu.button.repo'),\n onClick: () => {\n window.open(MainMenu.options.repoLink, '_blank');\n },\n size: [null, 80],\n });\n layoutElement.appendToMiscDiv(repoButton);\n }\n\n if (MainMenu.options.resetSubscreen) {\n const resetButton = advancedElement.createButton({\n id: 'deeplib-reset-button',\n image: `${PUBLIC_URL}/dl_images/trash_bin.svg`,\n label: getText('mainmenu.button.reset'),\n onClick: () => {\n this.setSubscreen(MainMenu.options.resetSubscreen!);\n },\n size: [null, 80],\n });\n layoutElement.appendToMiscDiv(resetButton);\n }\n\n if (MainMenu.options.importExportSubscreen) {\n const importExportButton = advancedElement.createButton({\n id: 'deeplib-import-export-button',\n image: `${PUBLIC_URL}/dl_images/transfer.svg`,\n label: getText('mainmenu.button.import_export'),\n onClick: () => {\n this.setSubscreen(MainMenu.options.importExportSubscreen!);\n },\n size: [null, 80],\n });\n layoutElement.appendToMiscDiv(importExportButton);\n }\n\n if (IS_DEBUG) {\n const debugButton = advancedElement.createButton({\n id: 'deeplib-debug-button',\n image: `${PUBLIC_URL}/dl_images/bug.svg`,\n onClick: () => {\n this.setSubscreen(new GuiDebug());\n },\n size: [90, 90],\n });\n if (menu) {\n ElementMenu.PrependItem(menu, debugButton);\n }\n }\n }\n\n run() {\n super.run();\n }\n\n click() { }\n\n exit(): void {\n CharacterAppearanceForceUpCharacter = -1;\n CharacterLoadCanvas(Player);\n this.setSubscreen(null);\n PreferenceSubscreenExtensionsClear();\n }\n\n resize(): void {\n super.resize();\n ElementSetPosition('deeplib-misc', 1905, 930, 'bottom-right');\n ElementSetSize('deeplib-misc', 405, null);\n }\n\n static setOptions(mainMenuOptions: MainMenuOptions) {\n MainMenu.options = mainMenuOptions;\n }\n}\n", "\nimport { BaseSubscreen, ModSdkManager, getText, layoutElement, SettingsModel, modStorage, deepLibLogger } from '../deeplib';\nimport { advancedElement, Modal } from '../utilities/elements/advanced_elements';\n\nexport type ImportExportOptions = {\n /** A custom save file extension. */\n customFileExtension: string;\n /** A callback to be called after data is imported. */\n onImport?: () => void;\n /** A callback to be called after data is exported. */\n onExport?: () => void;\n};\n\ntype DataTransferMethod = 'clipboard' | 'file';\n\nexport class GuiImportExport extends BaseSubscreen {\n private importExportOptions: ImportExportOptions;\n\n get name(): string {\n return 'import-export';\n }\n\n constructor(importExportOptions: ImportExportOptions) {\n super({ drawCharacter: true });\n this.importExportOptions = importExportOptions;\n }\n\n load(): void {\n\n super.load();\n\n const importFromFileButton = advancedElement.createButton({\n id: 'deeplib-import-file-button',\n size: [600, 90],\n image: `${PUBLIC_URL}/dl_images/file_import.svg`,\n onClick: () => {\n this.dataImport('file');\n },\n label: getText('import-export.button.import_file')\n });\n layoutElement.appendToSettingsDiv(importFromFileButton);\n\n const exportToFileButton = advancedElement.createButton({\n id: 'deeplib-export-file-button',\n size: [600, 90],\n image: `${PUBLIC_URL}/dl_images/file_export.svg`,\n onClick: () => {\n this.dataExport('file');\n },\n label: getText('import-export.button.export_file')\n });\n layoutElement.appendToSettingsDiv(exportToFileButton);\n\n const importFromClipboardButton = advancedElement.createButton({\n id: 'deeplib-import-clipboard-button',\n size: [600, 90],\n image: `${PUBLIC_URL}/dl_images/clipboard_import.svg`,\n onClick: () => {\n this.dataImport('clipboard');\n },\n label: getText('import-export.button.import_clipboard')\n });\n layoutElement.appendToSettingsDiv(importFromClipboardButton);\n\n const exportToClipboardButton = advancedElement.createButton({\n id: 'deeplib-export-clipboard-button',\n size: [600, 90],\n image: `${PUBLIC_URL}/dl_images/clipboard_export.svg`,\n onClick: () => {\n this.dataExport('clipboard');\n },\n label: getText('import-export.button.export_clipboard')\n });\n layoutElement.appendToSettingsDiv(exportToClipboardButton);\n }\n\n resize(): void {\n super.resize();\n }\n\n async dataExport(transferMethod: DataTransferMethod) {\n try {\n const data = LZString.compressToBase64(JSON.stringify(modStorage.playerStorage));\n\n if (transferMethod === 'clipboard') {\n await this.exportToClipboard(data);\n } else if (transferMethod === 'file') {\n await this.exportToFile(data, 'themed_settings');\n }\n\n this.importExportOptions.onExport?.();\n ToastManager.success('Data exported successfully.');\n } catch (error) {\n ToastManager.error('Data export failed.');\n deepLibLogger.error(`Data export failed for ${ModSdkManager.ModInfo.name}.`, error,);\n }\n }\n\n async dataImport(transferMethod: DataTransferMethod) {\n try {\n let importedData: string | null = '';\n\n if (transferMethod === 'clipboard') {\n importedData = await this.importFromClipboard() ?? null;\n } else if (transferMethod === 'file') {\n importedData = await this.importFromFile() ?? null;\n }\n\n if (!importedData) {\n throw new Error('No data imported.');\n }\n\n const data = JSON.parse(LZString.decompressFromBase64(importedData) ?? '') as SettingsModel;\n\n if (!data) {\n throw new Error('Invalid data.');\n }\n\n modStorage.playerStorage = data;\n this.importExportOptions.onImport?.();\n ToastManager.success('Data imported successfully.');\n } catch (error) {\n ToastManager.error('Data import failed.');\n deepLibLogger.error(`Data import failed for ${ModSdkManager.ModInfo.name}.`, error,);\n }\n }\n\n async exportToFile(data: string, defaultFileName: string): Promise<void> {\n const CUSTOM_EXTENSION = this.importExportOptions.customFileExtension.startsWith('.')\n ? this.importExportOptions.customFileExtension\n : '.' + this.importExportOptions.customFileExtension;\n\n const suggestedName = defaultFileName.endsWith(CUSTOM_EXTENSION)\n ? defaultFileName\n : defaultFileName + CUSTOM_EXTENSION;\n\n if ('showSaveFilePicker' in window) {\n try {\n const handle = await (window as any).showSaveFilePicker({\n suggestedName: suggestedName,\n types: [\n {\n description: 'Custom Data Files',\n accept: { 'text/plain': [CUSTOM_EXTENSION] },\n },\n ],\n });\n const writable = await handle.createWritable();\n await writable.write(data);\n await writable.close();\n } catch (error: any) {\n throw new Error('File save cancelled or failed: ' + error.message);\n }\n } else {\n const fileName = await Modal.prompt('Enter file name', suggestedName);\n\n if (fileName === null) {\n return;\n } else if (fileName === '') {\n throw new Error('File name cannot be empty.');\n }\n\n const blob = new Blob([data], { type: 'text/plain' });\n const link = ElementCreate({\n tag: 'a',\n attributes: {\n href: URL.createObjectURL(blob),\n download: fileName.endsWith(CUSTOM_EXTENSION) ? fileName : fileName + CUSTOM_EXTENSION\n },\n });\n\n link.click();\n URL.revokeObjectURL(link.href);\n }\n }\n\n async importFromFile(): Promise<string | null> {\n const CUSTOM_EXTENSION = this.importExportOptions.customFileExtension.startsWith('.')\n ? this.importExportOptions.customFileExtension\n : '.' + this.importExportOptions.customFileExtension;\n\n async function importFromFileInternal(file: File): Promise<string | null> {\n if (!file.name.endsWith(CUSTOM_EXTENSION)) {\n throw new Error(`Invalid file type. Expected a ${CUSTOM_EXTENSION} file.`);\n }\n\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => resolve(reader.result as string);\n reader.onerror = () => reject(new Error('Failed to read file.'));\n reader.readAsText(file);\n });\n }\n\n if ('showOpenFilePicker' in window) {\n try {\n const [fileHandle] = await (window as any).showOpenFilePicker({\n types: [\n {\n description: 'Custom Data Files',\n accept: { 'text/plain': [CUSTOM_EXTENSION] },\n },\n ],\n multiple: false,\n });\n const file = await fileHandle.getFile();\n return await importFromFileInternal(file);\n } catch (error: any) {\n throw new Error('File selection cancelled or failed: ' + error.message);\n }\n } else {\n return new Promise((resolve, reject) => {\n const input = document.createElement('input');\n input.type = 'file';\n input.accept = CUSTOM_EXTENSION;\n input.onchange = async (event) => {\n const file = (event.target as HTMLInputElement).files?.[0];\n if (file) {\n try {\n const data = await importFromFileInternal(file);\n resolve(data);\n } catch (error) {\n reject(error);\n }\n } else {\n reject(new Error('No file selected.'));\n }\n };\n input.click();\n });\n }\n }\n\n async exportToClipboard(data: string): Promise<void> {\n return navigator.clipboard.writeText(data).catch((error) => {\n throw new Error('Failed to copy data to clipboard.' + error);\n });\n }\n\n async importFromClipboard(): Promise<string | null> {\n return Modal.prompt('Enter data to import').catch((error) => {\n throw new Error('Failed to read data from clipboard.' + error);\n });\n }\n}\n", "import { SettingsModel, deepLibLogger } from '../deeplib';\n\nexport class ModStorage<T extends SettingsModel = SettingsModel> {\n private static _instance: ModStorage | null = null;\n private modName: string;\n\n constructor(modName: string) {\n if (!ModStorage._instance) {\n ModStorage._instance = this;\n this.modName = modName;\n }\n this.modName ??= modName;\n\n return ModStorage._instance as ModStorage<T>;\n }\n\n get playerStorage(): T {\n return Player[this.modName];\n }\n\n set playerStorage(value: T) {\n Player[this.modName] = value;\n }\n\n get extensionStorage(): string {\n return Player.ExtensionSettings[this.modName];\n }\n\n set extensionStorage(value: string) {\n Player.ExtensionSettings[this.modName] = value;\n }\n\n setLocalStorage(key: string, value: object) {\n localStorage.setItem(`${this.modName}_${key}`, ModStorage.dataCompress(value));\n }\n\n getLocalStorage(key: string): object | null {\n const data = localStorage.getItem(`${this.modName}_${key}`);\n\n if (!data) return null;\n\n return ModStorage.dataDecompress<T>(data);\n }\n\n load() {\n if (this.extensionStorage) {\n const parsed = ModStorage.dataDecompress<T>(this.extensionStorage || '');\n if (parsed === null || !Object.hasOwn(parsed, 'Version')) {\n this.playerStorage = {} as T;\n } else {\n this.playerStorage = parsed;\n };\n } else {\n this.playerStorage = {} as T;\n }\n }\n\n save() {\n if (!this.extensionStorage) this.extensionStorage = '';\n this.extensionStorage = ModStorage.dataCompress(this.playerStorage);\n ServerPlayerExtensionSettingsSync(this.modName);\n }\n\n static dataDecompress<T = object>(string: string): T | null {\n const d = LZString.decompressFromBase64(string as string);\n let data: T | null = null;\n\n try {\n const decoded: T = JSON.parse(d as string);\n data = decoded;\n } catch (error) {\n deepLibLogger.error(error);\n }\n\n return data;\n }\n\n static dataCompress(object: object) {\n return LZString.compressToBase64(JSON.stringify(object));\n }\n}\n", "import { SettingElement } from '../../base/elements_typings';\n\nexport const domUtil = {\n autoSetPosition: autoSetPosition,\n autoSetSize: autoSetSize,\n hide: hide,\n unhide: unhide,\n hasOverflow: hasOverflow\n};\n\nfunction autoSetPosition(_: ElementHelp.ElementOrId, position: SettingElement['position']) {\n let xPos = undefined;\n let yPos = undefined;\n\n if (Array.isArray(position)) {\n xPos = position[0];\n yPos = position[1];\n } else if (typeof position === 'function') {\n const result = position();\n xPos = result[0];\n yPos = result[1];\n }\n\n if (xPos !== undefined && yPos !== undefined) ElementSetPosition(_, xPos, yPos);\n}\n\nfunction autoSetSize(_: ElementHelp.ElementOrId, size: SettingElement['size']) {\n let width = undefined;\n let height = undefined;\n \n if (Array.isArray(size)) {\n width = size[0];\n height = size[1];\n } else if (typeof size === 'function') {\n const result = size();\n width = result[0];\n height = result[1];\n }\n \n if (width !== undefined && height !== undefined) ElementSetSize(_, width, height);\n}\n\nfunction hide(_: ElementHelp.ElementOrId) {\n const element = ElementWrap(_);\n if (!element) return;\n\n element.style.display = 'none';\n};\n\nfunction unhide(_: ElementHelp.ElementOrId) {\n const element = ElementWrap(_);\n if (!element) return;\n\n element.style.display = '';\n};\n\nfunction hasOverflow(el: ElementHelp.ElementOrId): { any: boolean, vertical: boolean, horizontal: boolean } | null {\n const element = ElementWrap(el);\n if (!element) return null;\n\n const vertical = element.scrollHeight > element.clientHeight;\n const horizontal = element.scrollWidth > element.clientWidth;\n\n return {\n any: vertical || horizontal,\n vertical,\n horizontal,\n };\n}", "export const layoutElement = {\n createSubscreenDiv: elementCreateSubscreenDiv,\n getSubscreenDiv: elementGetSubscreenDiv,\n appendToSubscreenDiv: elementAppendToSubscreenDiv,\n removeSubscreenDiv: elementRemoveSubscreenDiv,\n\n createSettingsDiv: elementCreateSettingsDiv,\n getSettingsDiv: elementGetSettingsDiv,\n appendToSettingsDiv: elementAppendToSettingsDiv,\n removeSettingsDiv: elementRemoveSettingsDiv,\n\n createMiscDiv: elementCreateMiscDiv,\n getMiscDiv: elementGetMiscDiv,\n appendToMiscDiv: elementAppendToMiscDiv,\n removeMiscDiv: elementRemoveMiscDiv\n};\n\nfunction elementCreateSubscreenDiv() {\n const subscreenDiv = elementGetSubscreenDiv();\n if (subscreenDiv) {\n console.error('Subscreen already exists');\n return subscreenDiv;\n }\n\n const div = document.createElement('div');\n div.id = 'deeplib-subscreen';\n div.classList.add('deeplib-subscreen', 'HideOnPopup');\n\n return document.body.appendChild(div);\n}\n\nfunction elementGetSubscreenDiv() {\n return document.getElementById('deeplib-subscreen') ?? undefined;\n}\n\nfunction elementRemoveSubscreenDiv() {\n return elementGetSubscreenDiv()?.remove();\n}\n\nfunction elementAppendToSubscreenDiv(...element: HTMLElement[]) {\n return elementGetSubscreenDiv()?.append(...element);\n}\n\nfunction elementCreateSettingsDiv() {\n const settingsDiv = elementGetSettingsDiv();\n if (settingsDiv) {\n console.error('Settings screen already exists');\n return settingsDiv;\n }\n\n const div = document.createElement('div');\n div.id = 'deeplib-settings';\n div.classList.add('deeplib-settings');\n\n return div;\n}\n\nfunction elementGetSettingsDiv() {\n return document.getElementById('deeplib-settings') ?? undefined;\n}\n\nfunction elementAppendToSettingsDiv(...element: HTMLElement[]) {\n return elementGetSettingsDiv()?.append(...element);\n}\n\nfunction elementRemoveSettingsDiv() {\n return elementGetSettingsDiv()?.remove();\n}\n\nfunction elementCreateMiscDiv() {\n const miscDiv = elementGetMiscDiv();\n if (miscDiv) {\n console.error('Settings screen already exists');\n return miscDiv;\n }\n\n const div = document.createElement('div');\n div.id = 'deeplib-misc';\n div.classList.add('deeplib-misc');\n\n return div;\n}\n\nfunction elementGetMiscDiv() {\n return document.getElementById('deeplib-misc');\n}\n\nfunction elementAppendToMiscDiv(...element: HTMLElement[]) {\n return elementGetMiscDiv()?.append(...element);\n}\n\nfunction elementRemoveMiscDiv() {\n return elementGetMiscDiv()?.remove();\n}\n", "type LogLevel = 'info' | 'log' | 'warn' | 'error' | 'debug';\n\ninterface LogEntry {\n readonly args: readonly any[];\n readonly date: Date;\n readonly logLevel: LogLevel;\n}\n\nexport class Logger extends Array<LogEntry> {\n private ModName: string = 'DeepLib';\n\n constructor(modName?: string) {\n super();\n\n if (modName) {\n this.ModName = modName;\n }\n }\n\n private _Log(level: LogLevel, ...args: any[]): void {\n const logEntry: LogEntry = {\n logLevel: level,\n args: [...args],\n // trace: arguments.callee.caller.toString().split('\\n'), \n date: new Date(Date.now())\n // `[${this.ModName}] ${formattedArgs}` \n };\n\n const userAgent = navigator.userAgent.toLowerCase();\n if (userAgent.includes('chrome') || userAgent.includes('firefox')) {\n const color = Logger.colorizeLog(level);\n args.forEach(arg => {\n if (typeof arg === 'string') {\n arg = `\\n%c${arg}`;\n // args.splice(args.indexOf(arg), 1, arg, color);\n }\n });\n console.log(`%c${this.ModName}:`, color, ...args);\n } else {\n console.log(`${this.ModName}:`, ...args);\n }\n\n this.push(logEntry);\n }\n\n info(...args: any[]): void {\n this._Log('info', ...args);\n }\n\n log(...args: any[]): void {\n this._Log('log', ...args);\n }\n\n warn(...args: any[]): void {\n this._Log('warn', ...args);\n }\n\n error(...args: any[]): void {\n this._Log('error', ...args);\n }\n\n debug(...args: any[]): void {\n this._Log('debug', ...args);\n }\n\n static colorizeLog(logLevel: LogLevel): string {\n const colors: Record<LogLevel, string> = {\n info: 'color: #32CCCC',\n log: 'color: #CCCC32',\n warn: 'color: #eec355',\n error: 'color: #750b0b',\n debug: 'color: #9E4BCF',\n };\n\n return colors[logLevel];\n }\n}\n\nexport const deepLibLogger = new Logger();\n", "export function sendLocalMessage(id: string | null, message: string, timeoutInSeconds?: number) {\n const element = ElementCreate({\n tag: 'div',\n classList: ['ChatMessage', 'deeplib-message', 'ChatMessageNonDialogue'],\n attributes: {\n id: id ?? `DEEPLIB_LOCAL_MESSAGE_${Date.now()}`,\n 'data-time': ChatRoomCurrentTime(),\n 'data-sender': Player.MemberNumber?.toString(),\n },\n children: [\n {\n tag: 'span',\n classList: ['deeplib-text'],\n innerHTML: message.replaceAll('\\n\\t', ''),\n },\n {\n tag: 'br',\n },\n {\n tag: 'a',\n classList: ['deeplib-text'],\n attributes: {\n href: '#',\n },\n innerHTML: '<b>Close (Click)</b>',\n eventListeners: {\n click: () => {\n element.remove();\n },\n },\n }\n ]\n });\n\n ChatRoomAppendChat(element);\n if (!timeoutInSeconds) return;\n setTimeout(() => element.remove(), timeoutInSeconds * 1000);\n}\n\nexport function sendActionMessage(msg: string, target: undefined | number = undefined, dictionary: ChatMessageDictionaryEntry[] = []) {\n if (!msg) return;\n ServerSend('ChatRoomChat', {\n Content: 'DEEPLIB_CUSTOM_ACTION',\n Type: 'Action',\n Target: target ?? undefined,\n Dictionary: [\n { Tag: 'MISSING TEXT IN \"Interface.csv\": DEEPLIB_CUSTOM_ACTION', Text: msg },\n ...dictionary,\n ],\n });\n}\n", "import rawSdkImport from 'bondage-club-mod-sdk';\n\n// What the fuck is this?? \n// It seems that ESBuild breaks things, either when building this package or a final mod\nconst rawSdk = rawSdkImport as any;\nconst bcModSdkRef = (rawSdk.default ?? rawSdk) as ModSDKGlobalAPI;\n\nexport const HookPriority = {\n Observe: 0,\n AddBehavior: 1,\n ModifyBehavior: 5,\n OverrideBehavior: 10,\n Top: 100\n};\n\nexport type ModuleCategory = number | string;\n\ninterface IPatchedFunctionData {\n name: string;\n hooks: {\n hook: PatchHook;\n priority: number;\n module: ModuleCategory | null;\n removeCallback: () => void;\n }[];\n}\n\nexport class ModSdkManager {\n private static SDK: ModSDKModAPI;\n private static patchedFunctions: Map<string, IPatchedFunctionData> = new Map();\n\n public static ModInfo: ModSDKModInfo;\n\n constructor(info: ModSDKModInfo, options?: ModSDKModOptions) {\n ModSdkManager.SDK = bcModSdkRef.registerMod(info, options);\n ModSdkManager.ModInfo = info;\n }\n\n initPatchableFunction(target: string): IPatchedFunctionData {\n let result = ModSdkManager.patchedFunctions.get(target);\n if (!result) {\n result = {\n name: target,\n hooks: []\n };\n ModSdkManager.patchedFunctions.set(target, result);\n }\n return result;\n }\n\n hookFunction<TargetName extends string>(\n target: TargetName,\n priority: number,\n hook: PatchHook<GetDotedPathType<typeof globalThis, TargetName>>,\n module: ModuleCategory | null = null\n ): () => void {\n const data = this.initPatchableFunction(target);\n\n if (data.hooks.some((h) => h.hook === hook)) {\n return () => null;\n }\n\n const removeCallback = ModSdkManager.SDK?.hookFunction(target, priority, hook);\n\n data.hooks.push({\n hook,\n priority,\n module,\n removeCallback\n });\n data.hooks.sort((a, b) => b.priority - a.priority);\n\n return removeCallback;\n }\n\n patchFunction(target: string, patches: Record<string, string>): void {\n ModSdkManager.SDK?.patchFunction(target, patches);\n }\n\n unpatchFunction(target: string): void {\n ModSdkManager.SDK?.removePatches(target);\n }\n\n removeHookByModule(target: string, module: ModuleCategory): boolean {\n const data = this.initPatchableFunction(target);\n\n for (let i = data.hooks.length - 1; i >= 0; i--) {\n if (data.hooks[i].module === module) {\n data.hooks[i].removeCallback();\n data.hooks.splice(i, 1);\n }\n }\n\n return true;\n }\n\n removeAllHooksByModule(module: ModuleCategory): boolean {\n for (const data of ModSdkManager.patchedFunctions.values()) {\n for (let i = data.hooks.length - 1; i >= 0; i--) {\n if (data.hooks[i].module === module) {\n data.hooks[i].removeCallback();\n data.hooks.splice(i, 1);\n }\n }\n }\n\n return true;\n }\n}\n", "export const Style = {\n injectInline(styleId: string, styleSource: string) {\n const isStyleLoaded = document.getElementById(styleId);\n\n if (isStyleLoaded) return;\n\n const styleElement = document.createElement('style');\n styleElement.id = styleId;\n styleElement.appendChild(document.createTextNode(styleSource));\n document.head.appendChild(styleElement);\n },\n\n injectEmbed(styleId: string, styleLink: string) {\n const isStyleLoaded = document.getElementById(styleId);\n\n if (isStyleLoaded) return;\n\n const styleElement = document.createElement('link');\n styleElement.id = styleId;\n styleElement.rel = 'stylesheet';\n styleElement.href = styleLink;\n document.head.appendChild(styleElement);\n },\n\n eject(id: string) {\n const style = document.getElementById(id);\n if (!style) return;\n\n style.remove();\n },\n\n reload(styleId: string, styleSource: string) {\n Style.eject(styleId);\n Style.injectInline(styleId, styleSource);\n },\n\n async fetch(link: string) {\n return fetch(link).then((res) => res.text());\n }\n};\n", "type TranslationDict = {\n [key: string]: string;\n};\n\ninterface InitOptions {\n pathToTranslationsFolder: string;\n}\n\nexport class Localization {\n private static LibTranslation: TranslationDict = {};\n private static ModTranslation: TranslationDict = {};\n private static PathToModTranslation: string;\n private static PathToLibTranslation: string = `${PUBLIC_URL}/dl_translations/`;\n private static initialized = false;\n\n static async init(initOptions: InitOptions) {\n if (Localization.initialized) return;\n Localization.initialized = true;\n\n Localization.PathToModTranslation = initOptions.pathToTranslationsFolder.endsWith('/') ? initOptions.pathToTranslationsFolder : initOptions.pathToTranslationsFolder + '/';\n\n const lang = TranslationLanguage.toLowerCase();\n\n const libTranslation = await Localization.fetchLanguageFile(Localization.PathToLibTranslation, lang);\n if (lang === 'en') {\n Localization.LibTranslation = libTranslation;\n } else {\n const fallbackTranslation = await Localization.fetchLanguageFile(Localization.PathToLibTranslation, 'en');\n Localization.LibTranslation = { ...fallbackTranslation, ...libTranslation };\n }\n\n const modTranslation = await Localization.fetchLanguageFile(Localization.PathToModTranslation, lang);\n if (lang === 'en') {\n Localization.ModTranslation = modTranslation;\n } else {\n const fallbackTranslation = await Localization.fetchLanguageFile(Localization.PathToModTranslation, 'en');\n Localization.ModTranslation = { ...fallbackTranslation, ...modTranslation };\n }\n }\n\n static getTextMod(srcTag: string): string | undefined {\n return Localization.ModTranslation?.[srcTag] || undefined;\n }\n\n static getTextLib(srcTag: string): string | undefined {\n return Localization.LibTranslation?.[srcTag] || undefined;\n }\n\n private static async fetchLanguageFile(baseUrl: string, lang: string): Promise<TranslationDict> {\n const response = await fetch(`${baseUrl}${lang}.lang`);\n\n if (lang !== 'en' && !response.ok) {\n return this.fetchLanguageFile(baseUrl, 'en');\n }\n const langFileContent = await response.text();\n\n return this.parseLanguageFile(langFileContent);\n }\n\n private static parseLanguageFile(content: string): TranslationDict {\n const translations: TranslationDict = {};\n const lines = content.split('\\n');\n\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith('#')) continue;\n\n const [key, ...rest] = trimmed.split('=');\n translations[key.trim()] = rest.join('=').trim();\n }\n\n return translations;\n }\n}\n\nexport const getText = (srcTag: string): string => {\n return Localization.getTextMod(srcTag) || Localization.getTextLib(srcTag) || srcTag;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["o", "e", "t", "n", "r", "i", "a", "c", "l", "d", "g", "s", "p", "BaseMigrator", "elem", "rawSdkImport"]
|
|
7
|
+
}
|