bc-deeplib 1.1.2 → 1.2.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/dist/index.js.map DELETED
@@ -1,7 +0,0 @@
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/deeplib-style.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 '..';\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 '..';\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: 'Icons/Exit.png',\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-accent-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: flex;\n flex-direction: column;\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 justify-content: space-between;\n flex-direction: column-reverse;\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\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiL21lZGlhL0Rlby9OVk1FL1N0dWZmL0NvZGUvQkMvQkMtRGVlcExpYi9zcmMvc3R5bGVzIiwic291cmNlcyI6WyJ2YXJzLnNjc3MiLCJkZWVwbGliLWJ1dHRvbnMuc2NzcyIsImVsZW1lbnRzLnNjc3MiLCJpbnB1dHMuc2NzcyIsIm1lc3NhZ2VzLnNjc3MiLCJtb2RhbC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQ2JGO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtBQUFBO0VBRUU7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQzNDRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQ3hFRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FDN0RGO0VBQ0U7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQzdCRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQU1SO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIuZGVlcGxpYi1zdWJzY3JlZW4sXG4uZGVlcGxpYi1tb2RhbCB7XG4gIC0tZGVlcGxpYi1iYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10bWQtbWFpbiwgd2hpdGUpO1xuICAtLWRlZXBsaWItZWxlbWVudC1jb2xvcjogdmFyKC0tdG1kLWVsZW1lbnQsIHdoaXRlKTtcbiAgLS1kZWVwbGliLWVsZW1lbnQtaG92ZXItY29sb3I6IHZhcigtLXRtZC1hY2NlbnQtaG92ZXIsIGN5YW4pO1xuICAtLWRlZXBsaWItYmxvY2tlZC1jb2xvcjogdmFyKC0tdG1kLWJsb2NrZWQsIHJlZCk7XG4gIC0tZGVlcGxpYi10ZXh0LWNvbG9yOiB2YXIoLS10bWQtdGV4dCwgYmxhY2spO1xuICAtLWRlZXBsaWItaWNvbi1jb2xvcjogdmFyKC0tdG1kLWFjY2VudCwgd2hpdGUpO1xuICAtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcjogdmFyKC0tdG1kLWFjY2VudC1ob3ZlciwgY3lhbik7XG4gIC0tZGVlcGxpYi1ib3JkZXItY29sb3I6IHZhcigtLXRtZC1hY2NlbnQsIGJsYWNrKTtcbiAgLS1kZWVwbGliLWJvcmRlci13aWR0aDogbWluKDAuMnZoLCAwLjF2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItd2lkdGg6IG1pbigwLjJkdmgsIDAuMWR2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMXZoLCAwLjV2dyk7XG4gIC0tZGVlcGxpYi1ib3JkZXItcmFkaXVzOiBtaW4oMWR2aCwgMC41ZHZ3KTtcbn1cbiIsIi5kZWVwbGliLWJ1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmcsXG4uZGVlcGxpYi1idXR0b24uYnV0dG9uLXN0eWxpbmc6OmJlZm9yZSB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiBpbWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMCU7XG4gIGxlZnQ6IDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWljb24tY29sb3IpO1xuICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gIG1hc2stcG9zaXRpb246IGxlZnQ7XG4gIG1hc2stc2l6ZTogY29udGFpbjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgbWFzay1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIGJhY2tncm91bmQtaW1hZ2U6IHZhcigtLWltYWdlKTtcbiAgbWFzay1pbWFnZTogdmFyKC0taW1hZ2UpO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmRlZXBsaWItYnV0dG9uOmhvdmVyIGltZyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItaWNvbi1ob3Zlci1jb2xvcik7XG59XG5cbi5kZWVwbGliLWJ1dHRvbiAuYnV0dG9uLWxhYmVsIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG4gIGZvbnQtc2l6ZTogbWluKDMuNmR2aCwgMS44ZHZ3KTtcbn1cblxuLmRlZXBsaWItYnV0dG9uIC5idXR0b24tdG9vbHRpcCB7XG4gIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG59XG4iLCIjZGVlcGxpYi1wYWdlLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbiNkZWVwbGliLXN1YnNjcmVlbi10aXRsZSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4uZGVlcGxpYi10ZXh0IHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5kZWVwbGliLXN1YnNjcmVlbiAqIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgcG9pbnRlci1ldmVudHM6IGFsbDtcbn1cblxuLmRlZXBsaWItc2V0dGluZ3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nOiBtaW4oMS4wZHZoLCAwLjVkdncpO1xuICBnYXA6IDAuM2VtO1xuICBvdmVyZmxvdy15OiBzY3JvbGw7XG59XG5cbi5kZWVwbGliLW1pc2Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbn1cblxuLmRlZXBsaWItdG9vbHRpcCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgcGFkZGluZzogbWluKDF2aCwgMC41dncpO1xuICBmb250LXNpemU6IDAuOGVtO1xuICBib3JkZXI6IG1pbigwLjJ2aCwgMC4xdncpIHNvbGlkIHZhcigtLWRlZXBsaWItYm9yZGVyLWNvbG9yKTtcbn1cblxuLmRlZXBsaWItb3ZlcmZsb3ctYm94IHtcbiAgYm9yZGVyOiB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcikgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItd2lkdGgpO1xufVxuXG4uZGVlcGxpYi1wcmV2LW5leHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGdhcDogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbiAgYm9yZGVyOiBtaW4oMC4ydmgsIDAuMXZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG59XG5cbiNkZWVwbGliLW5hdi1tZW51IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgZ2FwOiBtaW4oMmR2aCwgMWR2dyk7XG59IiwiLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjNlbTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXQge1xuICB3aWR0aDogbWluKDV2aCwgMi41dncpO1xuICBoZWlnaHQ6IG1pbig1dmgsIDIuNXZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuLmRlZXBsaWItY2hlY2tib3gtY29udGFpbmVyIGlucHV0LmRlZXBsaWItaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQ6OmJlZm9yZSB7XG4gIHdpZHRoOiA4MCU7XG4gIGhlaWdodDogODAlO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDAuM2VtO1xufVxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXI6aGFzKGxhYmVsLmRlZXBsaWItdGV4dCkge1xuICBtYXJnaW4tdG9wOiBtaW4oMXZoLCAwLjV2dyk7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0IHtcbiAgZm9udC1zaXplOiAwLjZlbTtcbiAgcGFkZGluZzogNXB4IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBvdXRsaW5lOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IG1pbigxdmgsIDAuNXZ3KTtcbiAgcGFkZGluZy1yaWdodDogbWluKDF2aCwgMC41dncpO1xuICBtaW4taGVpZ2h0OiBtaW4oNWR2aCwgMi41ZHZ3KTtcbiAgYm9yZGVyLXJhZGl1czogbWluKDEuMGR2aCwgMC41ZHZ3KTtcbn1cblxuXG4uZGVlcGxpYi1pbnB1dC1jb250YWluZXIgaW5wdXQuZGVlcGxpYi1pbnB1dFt0eXBlPVwiY29sb3JcIl0ge1xuICBwYWRkaW5nOiAwcHg7XG4gIHdpZHRoOiBtaW4oNXZoLCAyLjV2dyk7XG4gIGhlaWdodDogbWluKDV2aCwgMi41dncpO1xuICBib3JkZXItcmFkaXVzOiAwcHg7XG59XG5cbi5kZWVwbGliLWlucHV0LWNvbnRhaW5lciBpbnB1dC5kZWVwbGliLWlucHV0W3R5cGU9XCJjb2xvclwiXTpkaXNhYmxlZCB7XG4gIGJvcmRlcjogdmFyKC0tZGVlcGxpYi1ibG9ja2VkLWNvbG9yKSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci13aWR0aCk7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbmlucHV0Ojotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uLFxuaW5wdXQ6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gIG1hcmdpbjogMDtcbn1cblxuaW5wdXRbdHlwZT1udW1iZXJdIHtcbiAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcbn1cbiIsIi5kZWVwbGliLWhpZ2hsaWdodC10ZXh0IHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiByZ2IoMjAzLCAxODUsIDIzKTtcbn1cblxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsnXSBkaXYuQ2hhdE1lc3NhZ2UuZGVlcGxpYi1tZXNzYWdlLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRlZXBsaWItZWxlbWVudC1jb2xvcik7XG4gIGJvcmRlcjogbWluKDAuMmR2aCwgMC4xZHZ3KSBzb2xpZCB2YXIoLS1kZWVwbGliLWJvcmRlci1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1kZWVwbGliLXRleHQtY29sb3IpO1xufVxuXG4jVGV4dEFyZWFDaGF0TG9nIGRpdi5DaGF0TWVzc2FnZS5kZWVwbGliLW1lc3NhZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgIzQ0MDE3MTtcbiAgY29sb3I6ICMxMTE7XG4gIHBhZGRpbmctbGVmdDogbWluKDAuNmR2aCwgMC4zZHZ3KTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2dbZGF0YS1jb2xvcnRoZW1lPSdkYXJrJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhLFxuI1RleHRBcmVhQ2hhdExvZ1tkYXRhLWNvbG9ydGhlbWU9J2RhcmsyJ10gZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY29sb3I6IHZhcigtLWRlZXBsaWItdGV4dC1jb2xvcik7XG59XG5cbiNUZXh0QXJlYUNoYXRMb2cgZGl2LkNoYXRNZXNzYWdlLmRlZXBsaWItbWVzc2FnZSBhIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgY29sb3I6ICMxMTE7XG59XG4iLCIuZGVlcGxpYi1tb2RhbCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMCU7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICB6LWluZGV4OiAxMDAxO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAwLjVlbTtcbiAgd2lkdGg6IG1heCg1MGR2dywgMjVkdmgpO1xuICBmb250LXNpemU6IG1pbig0ZHZoLCAyZHZ3KTtcbiAgcGFkZGluZzogbWluKDJkdmgsIDFkdncpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kZWVwbGliLWVsZW1lbnQtY29sb3IpO1xuICBib3JkZXItcmFkaXVzOiBtaW4oMS4yZHZoLCAwLjZkdncpO1xuICBib3JkZXI6IG1pbigwLjJkdmgsIDAuMWR2dykgc29saWQgdmFyKC0tZGVlcGxpYi1ib3JkZXItY29sb3IpO1xuICBjb2xvcjogdmFyKC0tZGVlcGxpYi10ZXh0LWNvbG9yKTtcblxuICAuZGVlcGxpYi1tb2RhbC1pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZm9udC1zaXplOiBtaW4oMi42ZHZoLCAxLjhkdncpO1xuICAgIGJvcmRlci1yYWRpdXM6IG1pbigxLjBkdmgsIDAuNWR2dyk7XG4gICAgcGFkZGluZzogbWluKDFkdmgsIDAuNWR2dyk7XG4gIH1cblxuICBpbnB1dC5kZWVwbGliLW1vZGFsLWlucHV0IHtcbiAgICBtYXgtd2lkdGg6IG1heCg1MGR2aCwgMjVkdncpO1xuICB9XG5cbiAgLmRlZXBsaWItbW9kYWwtYnV0dG9uLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAwLjVlbTtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIC5kZWVwbGliLWJ1dHRvbiB7XG4gICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZzogbWluKDAuNHZoLCAwLjJ2dykgbWluKDJ2aCwgMXZ3KTtcblxuICAgICAgLmJ1dHRvbi1sYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IGNvbnRlbnRzO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZGVlcGxpYi1tb2RhbC1ibG9ja2VyIHtcbiAgei1pbmRleDogMTAwMDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDBkdnc7XG4gIGhlaWdodDogMTAwZHZoO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG4iXX0= */`;\n", "import deeplib_style from '../styles/deeplib-style.scss';\nimport { BaseModule, ModSdkManager, deepLibLogger, Localization, modules, registerModule, Style, VersionModule, hasSetter, deepMergeMatchingProperties, hasGetter, BaseMigrator, ModStorage, MainMenuOptions, MainMenu } from '..';\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 new Localization({ pathToTranslationsFolder: options.pathToTranslationsFolder });\n await Localization.init();\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 '..';\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 '..';\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 '..';\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 '..';\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 roundness: 50,\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 roundness: 5,\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 roundness: 50,\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 roundness: 5,\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 load(): void {\n super.load();\n }\n\n run() {\n super.run();\n }\n\n click() { }\n\n exit(): void {\n super.exit();\n }\n\n resize(): void {\n super.resize();\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 '../..';\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 size: [90, 90],\n image: 'Icons/Prev.png',\n onClick: () => {\n options.back({\n setLabel: setLabel,\n setBackTooltip: setPrevTooltip,\n setNextTooltip: setNextTooltip,\n });\n },\n tooltip: options.initialPrevTooltip,\n htmlOptions: {\n options: {\n noStyling: true\n }\n }\n }),\n advancedElement.createLabel({\n id: `${options.id}-label`,\n label: options.initialLabel\n }),\n advancedElement.createButton({\n id: `deeplib-prev-next-${options.id}-next-button`,\n size: [90, 90],\n image: 'Icons/Next.png',\n onClick: () => {\n options.next({\n setLabel: setLabel,\n setBackTooltip: setPrevTooltip,\n setNextTooltip: setNextTooltip,\n });\n },\n tooltip: options.initialNextTooltip,\n htmlOptions: {\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 '..';\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: 'Icons/Exit.png',\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: 'Icons/Introduction.png',\n label: '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 //TODO - Replace with repo icon\n image: `${PUBLIC_URL}/images/git.svg`,\n label: 'Repository',\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: 'Icons/ServiceBell.png',\n label: '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: 'Icons/Introduction.png',\n label: 'Import/Export',\n onClick: () => {\n this.setSubscreen(MainMenu.options.importExportSubscreen!);\n },\n size: [null, 80],\n });\n layoutElement.appendToMiscDiv(importExportButton);\n }\n\n const debugButton = advancedElement.createButton({\n id: 'deeplib-debug-button',\n image: 'Assets/Female3DCG/Emoticon/Coffee/Icon.png',\n onClick: () => {\n this.setSubscreen(new GuiDebug());\n },\n size: [90, 90],\n position: [75, 75],\n });\n layoutElement.appendToSubscreenDiv(debugButton);\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', 1500, 670);\n ElementSetSize('deeplib-misc', 405, 260);\n }\n\n static setOptions(mainMenuOptions: MainMenuOptions) {\n MainMenu.options = mainMenuOptions;\n }\n}\n", "\nimport { BaseSubscreen, ModSdkManager, getText, layoutElement, SettingsModel, modStorage, deepLibLogger } from '..';\nimport { advancedElement, Modal } from '../utilities/elements/advanced_elements';\n\nexport type ImportExportOptions = {\n /** A custom save file extension. */\n customFileExtension: string;\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: 'Icons/Import.png',\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: 'Icons/Export.png',\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: 'Icons/Import.png',\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: 'Icons/Export.png',\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 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\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();\n }\n\n const data = JSON.parse(LZString.decompressFromBase64(importedData) ?? '') as SettingsModel;\n\n if (!data) {\n throw new Error();\n }\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 return ToastManager.info('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 ToastManager.error(`Invalid file type. Expected a ${CUSTOM_EXTENSION} file.`);\n return null;\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 ToastManager.error('File selection cancelled or failed: ' + error.message);\n return '';\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 ToastManager.error('Failed to copy data to clipboard.');\n deepLibLogger.error(`Failed to copy data to clipboard for ${ModSdkManager.ModInfo.name}.`, error);\n });\n }\n\n async importFromClipboard(): Promise<string | null> {\n return Modal.prompt('Enter data to import').catch((error) => {\n ToastManager.error('Failed to read data from clipboard.');\n deepLibLogger.error(`Failed to read data from clipboard for ${ModSdkManager.ModInfo.name}.`, error);\n return null;\n });\n }\n}\n", "import { SettingsModel, deepLibLogger } from '..';\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\nexport class Localization {\n private Translation: TranslationDict = {};\n private static PathToTranslation: string;\n\n constructor(options: {\n pathToTranslationsFolder: string;\n }) {\n Localization.PathToTranslation = options.pathToTranslationsFolder.endsWith('/') ? options.pathToTranslationsFolder : options.pathToTranslationsFolder + '/';\n }\n\n static async init() {\n const lang = TranslationLanguage.toLowerCase();\n const translation = await Localization.fetchLanguageFile(lang);\n\n if (lang === 'en') {\n Localization.prototype.Translation = translation;\n } else {\n const fallbackTranslation = await Localization.fetchLanguageFile('en');\n Localization.prototype.Translation = { ...fallbackTranslation, ...translation };\n }\n }\n\n static getText(srcTag: string) {\n return Localization.prototype.Translation?.[srcTag] || srcTag || '';\n }\n\n private static async fetchLanguageFile(lang: string): Promise<TranslationDict> {\n const response = await fetch(`${Localization.PathToTranslation}${lang}.lang`);\n\n if (lang !== 'en' && !response.ok) {\n return this.fetchLanguageFile('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 if (line.trim() === '' || line.trim().startsWith('#')) {\n continue;\n }\n\n const [key, value] = line.split('=');\n translations[key.trim()] = value.trim();\n }\n\n return translations;\n }\n}\n\nexport const getText = (string: string): string => Localization.getText(string);\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
- }
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 8.25C9.92894 8.25 8.25 9.92893 8.25 12C8.25 14.0711 9.92894 15.75 12 15.75C14.0711 15.75 15.75 14.0711 15.75 12C15.75 9.92893 14.0711 8.25 12 8.25ZM9.75 12C9.75 10.7574 10.7574 9.75 12 9.75C13.2426 9.75 14.25 10.7574 14.25 12C14.25 13.2426 13.2426 14.25 12 14.25C10.7574 14.25 9.75 13.2426 9.75 12Z" fill="#ffffff"></path> <path fill-rule="evenodd" clip-rule="evenodd" d="M11.9747 1.25C11.5303 1.24999 11.1592 1.24999 10.8546 1.27077C10.5375 1.29241 10.238 1.33905 9.94761 1.45933C9.27379 1.73844 8.73843 2.27379 8.45932 2.94762C8.31402 3.29842 8.27467 3.66812 8.25964 4.06996C8.24756 4.39299 8.08454 4.66251 7.84395 4.80141C7.60337 4.94031 7.28845 4.94673 7.00266 4.79568C6.64714 4.60777 6.30729 4.45699 5.93083 4.40743C5.20773 4.31223 4.47642 4.50819 3.89779 4.95219C3.64843 5.14353 3.45827 5.3796 3.28099 5.6434C3.11068 5.89681 2.92517 6.21815 2.70294 6.60307L2.67769 6.64681C2.45545 7.03172 2.26993 7.35304 2.13562 7.62723C1.99581 7.91267 1.88644 8.19539 1.84541 8.50701C1.75021 9.23012 1.94617 9.96142 2.39016 10.5401C2.62128 10.8412 2.92173 11.0602 3.26217 11.2741C3.53595 11.4461 3.68788 11.7221 3.68786 12C3.68785 12.2778 3.53592 12.5538 3.26217 12.7258C2.92169 12.9397 2.62121 13.1587 2.39007 13.4599C1.94607 14.0385 1.75012 14.7698 1.84531 15.4929C1.88634 15.8045 1.99571 16.0873 2.13552 16.3727C2.26983 16.6469 2.45535 16.9682 2.67758 17.3531L2.70284 17.3969C2.92507 17.7818 3.11058 18.1031 3.28089 18.3565C3.45817 18.6203 3.64833 18.8564 3.89769 19.0477C4.47632 19.4917 5.20763 19.6877 5.93073 19.5925C6.30717 19.5429 6.647 19.3922 7.0025 19.2043C7.28833 19.0532 7.60329 19.0596 7.8439 19.1986C8.08452 19.3375 8.24756 19.607 8.25964 19.9301C8.27467 20.3319 8.31403 20.7016 8.45932 21.0524C8.73843 21.7262 9.27379 22.2616 9.94761 22.5407C10.238 22.661 10.5375 22.7076 10.8546 22.7292C11.1592 22.75 11.5303 22.75 11.9747 22.75H12.0252C12.4697 22.75 12.8407 22.75 13.1454 22.7292C13.4625 22.7076 13.762 22.661 14.0524 22.5407C14.7262 22.2616 15.2616 21.7262 15.5407 21.0524C15.686 20.7016 15.7253 20.3319 15.7403 19.93C15.7524 19.607 15.9154 19.3375 16.156 19.1985C16.3966 19.0596 16.7116 19.0532 16.9974 19.2042C17.3529 19.3921 17.6927 19.5429 18.0692 19.5924C18.7923 19.6876 19.5236 19.4917 20.1022 19.0477C20.3516 18.8563 20.5417 18.6203 20.719 18.3565C20.8893 18.1031 21.0748 17.7818 21.297 17.3969L21.3223 17.3531C21.5445 16.9682 21.7301 16.6468 21.8644 16.3726C22.0042 16.0872 22.1135 15.8045 22.1546 15.4929C22.2498 14.7697 22.0538 14.0384 21.6098 13.4598C21.3787 13.1586 21.0782 12.9397 20.7378 12.7258C20.464 12.5538 20.3121 12.2778 20.3121 11.9999C20.3121 11.7221 20.464 11.4462 20.7377 11.2742C21.0783 11.0603 21.3788 10.8414 21.6099 10.5401C22.0539 9.96149 22.2499 9.23019 22.1547 8.50708C22.1136 8.19546 22.0043 7.91274 21.8645 7.6273C21.7302 7.35313 21.5447 7.03183 21.3224 6.64695L21.2972 6.60318C21.0749 6.21825 20.8894 5.89688 20.7191 5.64347C20.5418 5.37967 20.3517 5.1436 20.1023 4.95225C19.5237 4.50826 18.7924 4.3123 18.0692 4.4075C17.6928 4.45706 17.353 4.60782 16.9975 4.79572C16.7117 4.94679 16.3967 4.94036 16.1561 4.80144C15.9155 4.66253 15.7524 4.39297 15.7403 4.06991C15.7253 3.66808 15.686 3.2984 15.5407 2.94762C15.2616 2.27379 14.7262 1.73844 14.0524 1.45933C13.762 1.33905 13.4625 1.29241 13.1454 1.27077C12.8407 1.24999 12.4697 1.24999 12.0252 1.25H11.9747ZM10.5216 2.84515C10.5988 2.81319 10.716 2.78372 10.9567 2.76729C11.2042 2.75041 11.5238 2.75 12 2.75C12.4762 2.75 12.7958 2.75041 13.0432 2.76729C13.284 2.78372 13.4012 2.81319 13.4783 2.84515C13.7846 2.97202 14.028 3.21536 14.1548 3.52165C14.1949 3.61826 14.228 3.76887 14.2414 4.12597C14.271 4.91835 14.68 5.68129 15.4061 6.10048C16.1321 6.51968 16.9974 6.4924 17.6984 6.12188C18.0143 5.9549 18.1614 5.90832 18.265 5.89467C18.5937 5.8514 18.9261 5.94047 19.1891 6.14228C19.2554 6.19312 19.3395 6.27989 19.4741 6.48016C19.6125 6.68603 19.7726 6.9626 20.0107 7.375C20.2488 7.78741 20.4083 8.06438 20.5174 8.28713C20.6235 8.50382 20.6566 8.62007 20.6675 8.70287C20.7108 9.03155 20.6217 9.36397 20.4199 9.62698C20.3562 9.70995 20.2424 9.81399 19.9397 10.0041C19.2684 10.426 18.8122 11.1616 18.8121 11.9999C18.8121 12.8383 19.2683 13.574 19.9397 13.9959C20.2423 14.186 20.3561 14.29 20.4198 14.373C20.6216 14.636 20.7107 14.9684 20.6674 15.2971C20.6565 15.3799 20.6234 15.4961 20.5173 15.7128C20.4082 15.9355 20.2487 16.2125 20.0106 16.6249C19.7725 17.0373 19.6124 17.3139 19.474 17.5198C19.3394 17.72 19.2553 17.8068 19.189 17.8576C18.926 18.0595 18.5936 18.1485 18.2649 18.1053C18.1613 18.0916 18.0142 18.045 17.6983 17.8781C16.9973 17.5075 16.132 17.4803 15.4059 17.8995C14.68 18.3187 14.271 19.0816 14.2414 19.874C14.228 20.2311 14.1949 20.3817 14.1548 20.4784C14.028 20.7846 13.7846 21.028 13.4783 21.1549C13.4012 21.1868 13.284 21.2163 13.0432 21.2327C12.7958 21.2496 12.4762 21.25 12 21.25C11.5238 21.25 11.2042 21.2496 10.9567 21.2327C10.716 21.2163 10.5988 21.1868 10.5216 21.1549C10.2154 21.028 9.97201 20.7846 9.84514 20.4784C9.80512 20.3817 9.77195 20.2311 9.75859 19.874C9.72896 19.0817 9.31997 18.3187 8.5939 17.8995C7.86784 17.4803 7.00262 17.5076 6.30158 17.8781C5.98565 18.0451 5.83863 18.0917 5.73495 18.1053C5.40626 18.1486 5.07385 18.0595 4.81084 17.8577C4.74458 17.8069 4.66045 17.7201 4.52586 17.5198C4.38751 17.314 4.22736 17.0374 3.98926 16.625C3.75115 16.2126 3.59171 15.9356 3.4826 15.7129C3.37646 15.4962 3.34338 15.3799 3.33248 15.2971C3.28921 14.9684 3.37828 14.636 3.5801 14.373C3.64376 14.2901 3.75761 14.186 4.0602 13.9959C4.73158 13.5741 5.18782 12.8384 5.18786 12.0001C5.18791 11.1616 4.73165 10.4259 4.06021 10.004C3.75769 9.81389 3.64385 9.70987 3.58019 9.62691C3.37838 9.3639 3.28931 9.03149 3.33258 8.7028C3.34348 8.62001 3.37656 8.50375 3.4827 8.28707C3.59181 8.06431 3.75125 7.78734 3.98935 7.37493C4.22746 6.96253 4.3876 6.68596 4.52596 6.48009C4.66055 6.27983 4.74468 6.19305 4.81093 6.14222C5.07395 5.9404 5.40636 5.85133 5.73504 5.8946C5.83873 5.90825 5.98576 5.95483 6.30173 6.12184C7.00273 6.49235 7.86791 6.51962 8.59394 6.10045C9.31998 5.68128 9.72896 4.91837 9.75859 4.12602C9.77195 3.76889 9.80512 3.61827 9.84514 3.52165C9.97201 3.21536 10.2154 2.97202 10.5216 2.84515Z" fill="#ffffff"></path> </g></svg>
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75ZM1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM14.0303 8.46967C14.3232 8.76256 14.3232 9.23744 14.0303 9.53033L11.5607 12L14.0303 14.4697C14.3232 14.7626 14.3232 15.2374 14.0303 15.5303C13.7374 15.8232 13.2626 15.8232 12.9697 15.5303L9.96967 12.5303C9.67678 12.2374 9.67678 11.7626 9.96967 11.4697L12.9697 8.46967C13.2626 8.17678 13.7374 8.17678 14.0303 8.46967Z" fill="#ffffff"></path> </g></svg>
@@ -1 +0,0 @@
1
- <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.75C6.89137 2.75 2.75 6.89137 2.75 12C2.75 17.1086 6.89137 21.25 12 21.25C17.1086 21.25 21.25 17.1086 21.25 12C21.25 6.89137 17.1086 2.75 12 2.75ZM1.25 12C1.25 6.06294 6.06294 1.25 12 1.25C17.9371 1.25 22.75 6.06294 22.75 12C22.75 17.9371 17.9371 22.75 12 22.75C6.06294 22.75 1.25 17.9371 1.25 12ZM9.96967 8.46967C10.2626 8.17678 10.7374 8.17678 11.0303 8.46967L14.0303 11.4697C14.3232 11.7626 14.3232 12.2374 14.0303 12.5303L11.0303 15.5303C10.7374 15.8232 10.2626 15.8232 9.96967 15.5303C9.67678 15.2374 9.67678 14.7626 9.96967 14.4697L12.4393 12L9.96967 9.53033C9.67678 9.23744 9.67678 8.76256 9.96967 8.46967Z" fill="#ffffff"></path> </g></svg>
@@ -1,7 +0,0 @@
1
- <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
2
- <!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
3
- <svg width="800px" height="800px" viewBox="-2.4 -2.4 28.80 28.80" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="#ffffff" stroke-width="0.00024000000000000003">
4
-
5
-
6
-
7
-