bc-deeplib 1.0.3 → 1.0.4
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/main.js +1894 -0
- package/dist/main.js.map +1 -0
- package/dist/public/styles/DeepLib.css +206 -0
- package/dist/public/styles/Gratitude.css +23 -0
- package/package.json +3 -3
- package/src/Base/BaseModule.ts +0 -45
- package/src/Base/BaseSubscreen.ts +0 -198
- package/src/Base/Initialization.ts +0 -83
- package/src/Base/Modules.ts +0 -16
- package/src/Base/SettingDefinitions.ts +0 -14
- package/src/Migrators/BaseMigrator.ts +0 -4
- package/src/Models/Base.ts +0 -4
- package/src/Models/Settings.ts +0 -7
- package/src/Modules/GUI.ts +0 -123
- package/src/Modules/Version.ts +0 -89
- package/src/Screens/Debug.ts +0 -99
- package/src/Screens/MainMenu.ts +0 -138
- package/src/Screens/Support.ts +0 -99
- package/src/Utilities/Data.ts +0 -40
- package/src/Utilities/Elements/.AdvancedElements.ts +0 -70
- package/src/Utilities/Elements/.ElementHelpers.ts +0 -100
- package/src/Utilities/Elements/Button.ts +0 -54
- package/src/Utilities/Elements/Checkbox.ts +0 -63
- package/src/Utilities/Elements/Input.ts +0 -72
- package/src/Utilities/Elements/Label.ts +0 -50
- package/src/Utilities/Elements/Tooltip.ts +0 -30
- package/src/Utilities/Logger.ts +0 -79
- package/src/Utilities/Messages.ts +0 -36
- package/src/Utilities/SDK.ts +0 -104
- package/src/Utilities/String.ts +0 -31
- package/src/Utilities/Style.ts +0 -24
- package/src/Utilities/Translation.ts +0 -59
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","mappings":"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AACA,qBAAqB;AACrB;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iBAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,sFAAsF,qBAAqB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iDAAiD,qBAAqB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,sDAAsD,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpFa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;;;;;;UCfA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqD;AAC9C,MAAM,qBAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAQ;AAChC;AACA;AACA,aAAa,kBAAa;AAC1B;AACA;AACA;AACA,kBAAkB,kBAAa;AAC/B;AACA,eAAe,kBAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAQ,yDAAyD,YAAQ,6BAA6B;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpCof;AAC7e;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW,GAAG,uBAAuB;AACzD,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,6BAA6B,eAAO;AACpC;AACA;AACA;AACA;AACA;AACA,QAAQ,yBAAyB;AACjC,gCAAgC,wBAAwB;AACxD,QAAQ,2BAA2B;AACnC,+BAA+B,kBAAkB;AACjD;AACA;AACA,mBAAmB,OAAO,0CAA0C,YAAQ,2BAA2B,aAAa;AACpH,SAAS;AACT,QAAQ,2BAA2B;AACnC;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,iBAAiB;AACjB,yBAAyB,OAAO;AAChC,aAAa;AACb,YAAY,2BAA2B;AACvC;AACA,wBAAwB,oBAAoB;AAC5C,QAAQ,2BAA2B;AACnC;AACA;AACA;AACA;AACA;AACA,8BAA8B,kBAAkB;AAChD;AACA;AACA,8BAA8B,qBAAqB;AACnD;AACA;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA,8BAA8B,kBAAkB;AAChD;AACA;AACA,YAAY,0BAA0B;AACtC,SAAS;AACT;AACA;AACA;AACA,yBAAyB,OAAO,0CAA0C,YAAQ,2BAA2B,aAAa;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,YAAY;AACpB,QAAQ,cAAS;AACjB;AACA;AACA,QAAQ,qBAAqB,GAAG,SAAS,sBAAsB,IAAI;AACnE;AACA,YAAY,qBAAqB,GAAG,SAAS,qBAAqB,IAAI;AACtE;AACA;AACA,YAAY,qBAAqB,GAAG,SAAS,qBAAqB,IAAI;AACtE;AACA,QAAQ,qBAAqB,GAAG,sCAAsC;AACtE,QAAQ,kBAAkB,GAAG,SAAS,iBAAiB,IAAI;AAC3D,QAAQ,cAAc,GAAG,SAAS,iBAAiB,IAAI;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB,GAAG,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc,GAAG,uBAAuB;AACxD;AACA,YAAY,qBAAqB,GAAG,uBAAuB;AAC3D,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,yBAAyB;AACjC;AACA;;;;;AClK4D;AACgE;AACrH;AACP;AACA,yCAAyC,SAAS;AAClD;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oDAAoD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,SAAS,aAAa,YAAY;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACO;AACP;AACA;AACA;AACA,oCAAoC,SAAS;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrEO;AACA,SAAS,eAAO;AACvB;AACA;AACO,SAAS,sBAAc;AAC9B;AACA;AACA;AACO;AACP;AACA;;;ACViC;AAC1B;AACP;AACA;AACO;AACP,SAAS,OAAG;AACZ;AACA;AACA,IAAI,OAAG;AACP,WAAW,OAAG;AACd;;;ACVyE;AAClE,MAAM,OAAG,SAAS,qBAAU;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,UAAU;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,OAAG;AACf;AACA;AACA,6BAA6B,eAAO;AACpC;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA,QAAQ,OAAG;AACX;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY,KAAK,QAAQ;AACzC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;;;AChG2H;AACpH,MAAM,qBAAa,SAAS,0DAAU;AAC7C,4BAA4B,qDAAK;AACjC;AACA,+BAA+B,kDAAE;AACjC,uBAAuB,kDAAE;AACzB;AACA,QAAQ,qBAAa;AACrB;AACA;AACA,wEAAwE,qBAAa;AACrF,gBAAgB,qBAAa;AAC7B;AACA,SAAS;AACT;AACA;AACA,gCAAgC,qBAAa;AAC7C,+BAA+B,qBAAa;AAC5C,YAAY,qBAAa;AACzB,YAAY,qBAAa;AACzB,YAAY,qBAAa;AACzB;AACA;AACA;AACA,gCAAgC,qBAAa;AAC7C;AACA,+BAA+B,qBAAa;AAC5C,gBAAgB,qBAAa;AAC7B;AACA,gDAAgD,uBAAuB,OAAO,iBAAiB,KAAK,2BAA2B,OAAO,0BAA0B;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAa;AACrB;AACA;AACA,QAAQ,qBAAa;AACrB;AACA;AACA,gDAAgD,qBAAa;AAC7D;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAa;AACjE;AACA;AACA;AACA;AACA;AACA;;;ACpE0D;AACnD,uBAAuB,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAa;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAa;AACrC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,wBAAwB,oBAAa;AACrC,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,wBAAwB,oBAAa;AACrC,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,wBAAwB,oBAAa;AACrC,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACxFkO;AAC3N,uBAAuB,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAG;AAChB;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,OAAO;AAC5B,SAAS;AACT,QAAQ,2BAA2B;AACnC;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA,uBAAuB,YAAY;AACnC;AACA,uBAAuB,OAAO,oBAAoB,YAAY;AAC9D;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,YAAY,0BAA0B;AACtC;AACA,wBAAwB,oBAAoB;AAC5C,QAAQ,2BAA2B;AACnC;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,YAAY,sBAAsB;AAClC;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,YAAY,sBAAsB;AAClC;AACA,8BAA8B,mBAAmB;AACjD;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD,aAAa;AACb;AACA,SAAS;AACT,QAAQ,sBAAsB;AAC9B,QAAQ,qBAAqB,GAAG,2BAA2B;AAC3D,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA,sCAAsC,QAAQ;AAC9C,aAAa;AACb;AACA;AACA,SAAS;AACT,QAAQ,sBAAsB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB,GAAG,2BAA2B;AAC3D;AACA;AACO;AACP;AACA;AACA;;;ACnH2E;AACpE;AACP;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,OAAO,2BAA2B,IAAI,uBAAuB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,yBAAyB,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB,GAAG,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qBAAqB,GAAG,gCAAgC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtFwD;AACjD,MAAM,kBAAa,0BAA0B,YAAQ;AAC5D,6BAA6B,YAAQ;AACrC;AACO,wDAAwD,YAAQ;AAChE,SAAS,aAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,cAAS;AACzB,oBAAoB,YAAQ;AAC5B,uBAAuB,YAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yBAAyB,eAAO;AAChC;AACA;AACA,uCAAuC,kBAAa;AACpD;AACA,wCAAwC,OAAO;AAC/C;AACA;;;ACjCO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;;;ACrD8C;AAC9C;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oBAAa,SAAS,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA,QAAQ,oBAAa,mBAAmB,UAAU,2CAA2C,UAAU;AACvG;AACA;AACA;AACA;;;AC/E+G;AACxG;AACP,iCAAiC,gBAAgB;AACjD,kCAAkC,iBAAiB;AACnD,oCAAoC,YAAY;AAChD,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA,2CAA2C,cAAc;AACzD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,IAAI,aAAa;AACjB;AACA;;;AC7CkI;AAC3H;AACP;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,kCAAkC,iBAAiB;AACnD,oCAAoC,YAAY;AAChD,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,IAAI,aAAa;AACjB;AACA;;;ACtDkI;AAC3H;AACP;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,kCAAkC,iBAAiB;AACnD,oCAAoC,YAAY;AAChD,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,IAAI,aAAa;AACjB;AACA;;;AC/DkI;AAC3H;AACP;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,kCAAkC,iBAAiB;AACnD,oCAAoC,YAAY;AAChD,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,YAAY,iBAAiB;AAC7B,SAAS;AACT;AACA,IAAI,aAAa;AACjB;AACA;;;ACzCO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1BO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,IAAI;AACrC;AACA,aAAa;AACb,6BAA6B,aAAa;AAC1C;AACA;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAM,oBAAa;;;;;;ACvDqB;AACxC,IAAI,gBAAY;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAE,gBAAY,KAAK,gBAAY,KAAK;AAC9B,MAAM,YAAQ;AACrB;AACA;AACA;AACA;AACA,QAAQ,YAAQ,OAAO,8BAAuB;AAC9C,QAAQ,YAAQ;AAChB;AACA;AACA,qBAAqB,YAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA,YAAY,YAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAQ;AACnC,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnEyC;AAClC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,oBAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC5BO,MAAM,wBAAY;AACzB;AACA;AACA;AACA,QAAQ,wBAAY;AACpB;AACA;AACA;AACA,kCAAkC,wBAAY;AAC9C;AACA,YAAY,wBAAY;AACxB;AACA;AACA,8CAA8C,wBAAY;AAC1D,YAAY,wBAAY,2BAA2B;AACnD;AACA;AACA;AACA,eAAe,wBAAY;AAC3B;AACA;AACA,wCAAwC,wBAAY,mBAAmB,EAAE,KAAK;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,4BAA4B,wBAAY;;;ACzCb;AACG;AACC;AACP;AACW;AACD;AACX;AACI;AACJ;AACI;AACF;AACG;AACD;AACD;AACsB;AACF;AACT;AACE;AACH;AACA;AACE;AACV;AACE;AACL;AACG;AACD;AACM","sources":["webpack://bc-deeplib/./node_modules/.pnpm/bondage-club-mod-sdk@1.2.0/node_modules/bondage-club-mod-sdk/dist/bcmodsdk.js","webpack://bc-deeplib/./public/styles/DeepLib.css","webpack://bc-deeplib/./node_modules/.pnpm/css-loader@7.1.2_webpack@5.97.1/node_modules/css-loader/dist/runtime/api.js","webpack://bc-deeplib/./node_modules/.pnpm/css-loader@7.1.2_webpack@5.97.1/node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://bc-deeplib/webpack/bootstrap","webpack://bc-deeplib/webpack/runtime/compat get default export","webpack://bc-deeplib/webpack/runtime/define property getters","webpack://bc-deeplib/webpack/runtime/hasOwnProperty shorthand","webpack://bc-deeplib/./src/Base/BaseModule.ts","webpack://bc-deeplib/./src/Base/BaseSubscreen.ts","webpack://bc-deeplib/./src/Base/Initialization.ts","webpack://bc-deeplib/./src/Base/Modules.ts","webpack://bc-deeplib/./src/Base/SettingDefinitions.ts","webpack://bc-deeplib/./src/Modules/GUI.ts","webpack://bc-deeplib/./src/Modules/Version.ts","webpack://bc-deeplib/./src/Screens/Debug.ts","webpack://bc-deeplib/./src/Screens/MainMenu.ts","webpack://bc-deeplib/./src/Screens/Support.ts","webpack://bc-deeplib/./src/Utilities/Data.ts","webpack://bc-deeplib/./src/Utilities/Elements/.AdvancedElements.ts","webpack://bc-deeplib/./src/Utilities/Elements/.ElementHelpers.ts","webpack://bc-deeplib/./src/Utilities/Elements/Button.ts","webpack://bc-deeplib/./src/Utilities/Elements/Checkbox.ts","webpack://bc-deeplib/./src/Utilities/Elements/Input.ts","webpack://bc-deeplib/./src/Utilities/Elements/Label.ts","webpack://bc-deeplib/./src/Utilities/Elements/Tooltip.ts","webpack://bc-deeplib/./src/Utilities/Logger.ts","webpack://bc-deeplib/./src/Utilities/SDK.ts","webpack://bc-deeplib/./src/Utilities/String.ts","webpack://bc-deeplib/./src/Utilities/Translation.ts","webpack://bc-deeplib/./src/DeepLib.ts"],"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","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.97.1/node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/.pnpm/css-loader@7.1.2_webpack@5.97.1/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.deeplib-subscreen {\n --deeplib-background-color: var(--main, white);\n --deeplib-element-color: var(--element, white);\n --deeplib-element-hover-color: var(--accentHover, cyan);\n --deeplib-text-color: var(--text, black);\n --deeplib-icon-color: var(--accent, white);\n --deeplib-border-color: var(--accent, black);\n}\n\n/************/\n/* ELEMENTS */\n/************/\n\n.deeplib-text {\n color: var(--deeplib-text-color);\n}\n\n.deeplib-subscreen {\n padding: 0;\n margin: 0;\n}\n\n.deeplib-subscreen * {\n box-sizing: border-box;\n}\n\n.deeplib-settings {\n display: flex;\n flex-direction: column;\n padding: min(1.0dvh, 0.5dvw);\n gap: 0.3em;\n overflow-y: auto;\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-button.button-styling {\n border-radius: min(1.0dvh, 0.5dvw);\n color: var(--deeplib-text-color);\n}\n\n.deeplib-button.button-styling 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\n background-image: var(--image);\n mask-image: var(--image);\n}\n\n.deeplib-button.button-styling .button-label {\n width: 100%;\n background-color: transparent;\n color: var(--deeplib-text-color);\n font-size: min(3.6dvh, 1.8dvw);\n}\n\n#deeplib-subscreen-title {\n text-align: center;\n color: var(--deeplib-text-color);\n}\n\n#deeplib-reset-button {\n background-color: indianred;\n}\n\n#deeplib-wiki-button {\n background-color: #BDA203;\n}\n\n#deeplib-support-button {\n background-color: #5e4969;\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-input {\n border-radius: min(1.0dvh, 0.5dvw);\n}\n\n.deeplib-input-container {\n position: relative;\n margin-top: min(1vh, 0.5vw);\n}\n\n.deeplib-input-container input.deeplib-input {\n font-size: 20px;\n width: 100%;\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}\n\n.deeplib-input-container label.deeplib-text {\n position: absolute;\n top: min(0.6vh, 0.3vw);\n left: min(0.6vh, 0.3vw);\n transition: all 0.3s ease;\n pointer-events: none;\n}\n\n.deeplib-input-container input.deeplib-input:focus~label,\n.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~label {\n font-size: 0.7em;\n transform: translate(20%, -70%);\n background-color: var(--deeplib-background-color);\n padding: 0px min(1vh, 0.5vw);\n}\n\n.deeplib-input-container .deeplib-underline {\n position: absolute;\n bottom: 0;\n left: 0;\n height: 2px;\n width: 100%;\n background-color: var(--deeplib-element-hover-color);\n transform: scaleX(0);\n transition: all 0.3s ease;\n}\n\n.deeplib-input-container input.deeplib-input:focus~.deeplib-underline,\n.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~.deeplib-underline {\n transform: scaleX(0.98);\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(1.0dvh, 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\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/*************/\n/* MESSAGES */\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`, \"\",{\"version\":3,\"sources\":[\"webpack://./public/styles/DeepLib.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,8CAA8C;EAC9C,8CAA8C;EAC9C,uDAAuD;EACvD,wCAAwC;EACxC,0CAA0C;EAC1C,4CAA4C;AAC9C;;AAEA,aAAa;AACb,aAAa;AACb,aAAa;;AAEb;EACE,gCAAgC;AAClC;;AAEA;EACE,UAAU;EACV,SAAS;AACX;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,4BAA4B;EAC5B,UAAU;EACV,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,8BAA8B;AAChC;;AAEA;EACE,kCAAkC;EAClC,gCAAgC;AAClC;;AAEA;EACE,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,yBAAyB;EACzB,2CAA2C;EAC3C,+BAA+B;EAC/B,wBAAwB;EACxB,mBAAmB;EACnB,kBAAkB;EAClB,4BAA4B;EAC5B,sBAAsB;EACtB,kBAAkB;;EAElB,8BAA8B;EAC9B,wBAAwB;AAC1B;;AAEA;EACE,WAAW;EACX,6BAA6B;EAC7B,gCAAgC;EAChC,8BAA8B;AAChC;;AAEA;EACE,kBAAkB;EAClB,gCAAgC;AAClC;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,UAAU;AACZ;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,kBAAkB;EAClB,2BAA2B;AAC7B;;AAEA;EACE,eAAe;EACf,WAAW;EACX,cAAc;EACd,6BAA6B;EAC7B,aAAa;EACb,6BAA6B;EAC7B,8BAA8B;AAChC;;AAEA;EACE,kBAAkB;EAClB,sBAAsB;EACtB,uBAAuB;EACvB,yBAAyB;EACzB,oBAAoB;AACtB;;AAEA;;EAEE,gBAAgB;EAChB,+BAA+B;EAC/B,iDAAiD;EACjD,4BAA4B;AAC9B;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,OAAO;EACP,WAAW;EACX,WAAW;EACX,oDAAoD;EACpD,oBAAoB;EACpB,yBAAyB;AAC3B;;AAEA;;EAEE,uBAAuB;AACzB;;AAEA;EACE,8CAA8C;EAC9C,gCAAgC;EAChC,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,kCAAkC;EAClC,wBAAwB;EACxB,gBAAgB;EAChB,2DAA2D;AAC7D;;AAEA;;EAEE,wBAAwB;EACxB,SAAS;AACX;;AAEA;EACE,qBAAqB;EACrB,0BAA0B;AAC5B;;AAEA,cAAc;AACd,aAAa;AACb,cAAc;;AAEd;EACE,iBAAiB;EACjB,wBAAwB;AAC1B;;AAEA;;EAEE,8CAA8C;EAC9C,6DAA6D;EAC7D,gCAAgC;AAClC;;AAEA;EACE,sBAAsB;EACtB,yCAAyC;EACzC,WAAW;EACX,iCAAiC;EACjC,cAAc;EACd,mBAAmB;AACrB;;AAEA;;EAEE,gCAAgC;AAClC;;AAEA;EACE,eAAe;EACf,iBAAiB;EACjB,WAAW;AACb\",\"sourcesContent\":[\".deeplib-subscreen {\\n --deeplib-background-color: var(--main, white);\\n --deeplib-element-color: var(--element, white);\\n --deeplib-element-hover-color: var(--accentHover, cyan);\\n --deeplib-text-color: var(--text, black);\\n --deeplib-icon-color: var(--accent, white);\\n --deeplib-border-color: var(--accent, black);\\n}\\n\\n/************/\\n/* ELEMENTS */\\n/************/\\n\\n.deeplib-text {\\n color: var(--deeplib-text-color);\\n}\\n\\n.deeplib-subscreen {\\n padding: 0;\\n margin: 0;\\n}\\n\\n.deeplib-subscreen * {\\n box-sizing: border-box;\\n}\\n\\n.deeplib-settings {\\n display: flex;\\n flex-direction: column;\\n padding: min(1.0dvh, 0.5dvw);\\n gap: 0.3em;\\n overflow-y: auto;\\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-button.button-styling {\\n border-radius: min(1.0dvh, 0.5dvw);\\n color: var(--deeplib-text-color);\\n}\\n\\n.deeplib-button.button-styling 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\\n background-image: var(--image);\\n mask-image: var(--image);\\n}\\n\\n.deeplib-button.button-styling .button-label {\\n width: 100%;\\n background-color: transparent;\\n color: var(--deeplib-text-color);\\n font-size: min(3.6dvh, 1.8dvw);\\n}\\n\\n#deeplib-subscreen-title {\\n text-align: center;\\n color: var(--deeplib-text-color);\\n}\\n\\n#deeplib-reset-button {\\n background-color: indianred;\\n}\\n\\n#deeplib-wiki-button {\\n background-color: #BDA203;\\n}\\n\\n#deeplib-support-button {\\n background-color: #5e4969;\\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-input {\\n border-radius: min(1.0dvh, 0.5dvw);\\n}\\n\\n.deeplib-input-container {\\n position: relative;\\n margin-top: min(1vh, 0.5vw);\\n}\\n\\n.deeplib-input-container input.deeplib-input {\\n font-size: 20px;\\n width: 100%;\\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}\\n\\n.deeplib-input-container label.deeplib-text {\\n position: absolute;\\n top: min(0.6vh, 0.3vw);\\n left: min(0.6vh, 0.3vw);\\n transition: all 0.3s ease;\\n pointer-events: none;\\n}\\n\\n.deeplib-input-container input.deeplib-input:focus~label,\\n.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~label {\\n font-size: 0.7em;\\n transform: translate(20%, -70%);\\n background-color: var(--deeplib-background-color);\\n padding: 0px min(1vh, 0.5vw);\\n}\\n\\n.deeplib-input-container .deeplib-underline {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n height: 2px;\\n width: 100%;\\n background-color: var(--deeplib-element-hover-color);\\n transform: scaleX(0);\\n transition: all 0.3s ease;\\n}\\n\\n.deeplib-input-container input.deeplib-input:focus~.deeplib-underline,\\n.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~.deeplib-underline {\\n transform: scaleX(0.98);\\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(1.0dvh, 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\\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/*************/\\n/* MESSAGES */\\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\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { PlayerStorage, bcSdkMod } from '../DeepLib';\nexport class BaseModule {\n get settingsScreen() {\n return null;\n }\n get settingsStorage() {\n return this.constructor.name;\n }\n get settings() {\n const modName = bcSdkMod.ModInfo.name;\n if (!this.settingsStorage)\n return {};\n if (!PlayerStorage()) {\n Player[modName] = {};\n this.registerDefaultSettings();\n }\n else if (!PlayerStorage()[this.settingsStorage])\n this.registerDefaultSettings();\n return PlayerStorage()[this.settingsStorage];\n }\n init() {\n this.registerDefaultSettings();\n }\n registerDefaultSettings() {\n const storage = this.settingsStorage;\n const defaults = this.defaultSettings;\n if (!storage || !defaults)\n return;\n Player[bcSdkMod.ModInfo.name][storage] = Object.assign(defaults, Player[bcSdkMod.ModInfo.name][storage] ?? {});\n }\n get defaultSettings() {\n return null;\n }\n load() { }\n run() { }\n unload() { }\n}\n","import { SupportHelper, bcSdkMod, dataStore, elementAdjustFontSize, elementAppendToSettingsDiv, elementAppendToSubscreenDiv, elementCreateButton, elementCreateCheckbox, elementCreateInput, elementCreateLabel, elementCreateSettingsDiv, elementCreateSubscreenDiv, elementCreateTooltip, elementGetSettingsDiv, elementGetSubscreenDiv, elementGetTooltip, elementHide, elementRemoveSubscreenDiv, elementSetPosSizeFont, elementSetPosition, elementSetSize, getText, modules, setSubscreen } from '../DeepLib';\nexport class BaseSubscreen {\n static currentElements = [];\n static currentPage = 1;\n module;\n constructor(module) {\n if (module)\n this.module = module;\n }\n get name() {\n return 'UNKNOWN';\n }\n get icon() {\n return '';\n }\n get subscreenName() {\n return this.constructor.name;\n }\n setSubscreen(screen) {\n return setSubscreen(screen);\n }\n get settings() {\n return this.module.settings;\n }\n get pageStructure() {\n return [[]];\n }\n get currentPage() {\n return this.pageStructure[Math.min(PreferencePageCurrent - 1, this.pageStructure.length - 1)];\n }\n hideElements() {\n this.pageStructure.forEach((item, ix) => {\n if (ix != PreferencePageCurrent - 1) {\n item.forEach((setting) => {\n elementHide({ elementId: setting.id });\n });\n }\n });\n }\n load() {\n for (const module of modules()) {\n if (!module.settingsScreen)\n continue;\n if (!module.settings || !Object.keys(module.settings).length)\n module.registerDefaultSettings();\n }\n elementCreateSubscreenDiv();\n const settingsElement = elementCreateSettingsDiv();\n elementAppendToSubscreenDiv(settingsElement);\n const subscreenTitle = elementCreateLabel({\n type: 'label',\n id: 'deeplib-subscreen-title',\n label: getText('mainmenu.title').replace('$ModVersion', bcSdkMod.ModInfo.version) + ' ' + SupportHelper.getSupporter(),\n });\n elementAppendToSubscreenDiv(subscreenTitle);\n if (this.name !== 'mainmenu') {\n const exitButton = elementCreateButton({\n type: 'button',\n id: 'deeplib-exit',\n position: [1815, 75],\n size: [90, 90],\n image: 'Icons/Exit.png',\n onClick: () => {\n setSubscreen('mainmenu');\n },\n tooltip: getText('settings.button.back_button_hint')\n });\n elementAppendToSubscreenDiv(exitButton);\n }\n const tooltip = elementCreateTooltip();\n elementAppendToSubscreenDiv(tooltip);\n this.pageStructure.forEach((s) => s.forEach((item) => {\n let element;\n switch (item.type) {\n case 'text':\n case 'number':\n element = elementCreateInput(item);\n break;\n case 'checkbox':\n element = elementCreateCheckbox(item);\n break;\n case 'button':\n element = elementCreateButton(item);\n break;\n case 'label':\n element = elementCreateLabel(item);\n break;\n }\n elementAppendToSettingsDiv(element);\n }));\n CharacterAppearanceForceUpCharacter = Player.MemberNumber ?? -1;\n }\n run() {\n const newTitle = getText('mainmenu.title').replace('$ModVersion', bcSdkMod.ModInfo.version) + ' ' + SupportHelper.getSupporter();\n const oldTitle = ElementContent('deeplib-subscreen-title');\n if (newTitle !== oldTitle) {\n ElementContent('deeplib-subscreen-title', newTitle);\n }\n DrawCharacter(Player, 50, 50, 0.9, false);\n if (this.pageStructure.length > 1) {\n MainCanvas.textAlign = 'center';\n PreferencePageChangeDraw(1595, 75, this.pageStructure.length);\n MainCanvas.textAlign = 'left';\n }\n this.hideElements();\n }\n click() {\n if (this.pageStructure.length > 1)\n PreferencePageChangeClick(1595, 75, this.pageStructure.length);\n }\n exit() {\n CharacterAppearanceForceUpCharacter = -1;\n CharacterLoadCanvas(Player);\n setSubscreen('mainmenu');\n dataStore();\n }\n resize(onLoad = false) {\n elementSetPosSizeFont({ element: elementGetSubscreenDiv() }, 0, 0, 2000, 1000);\n if (this.name === 'mainmenu') {\n elementSetPosSizeFont({ element: elementGetSettingsDiv() }, 530, 170, 800, 660);\n }\n else {\n elementSetPosSizeFont({ element: elementGetSettingsDiv() }, 530, 170, 1000, 660);\n }\n elementSetPosSizeFont({ elementId: 'deeplib-subscreen-title' }, 530, 75, 800, 60);\n elementSetPosition({ element: elementGetTooltip() }, 250, 850);\n elementSetSize({ element: elementGetTooltip() }, 1500, 60);\n BaseSubscreen.currentElements.forEach((item) => {\n const options = item[1];\n const elementDataAttrs = item[0].dataset;\n if (options.position || elementDataAttrs.position) {\n const position = elementDataAttrs?.position?.split('x');\n const xPos = options?.position?.[0] || parseInt(position?.[0] || 0);\n const yPos = options?.position?.[1] || parseInt(position?.[1] || 0);\n elementSetPosition({ elementId: options.id }, xPos, yPos);\n }\n if (options.size || elementDataAttrs.size) {\n const size = elementDataAttrs?.size?.split('x');\n const width = options?.size?.[0] || parseInt(size?.[0] || 0);\n const height = options?.size?.[1] || parseInt(size?.[1] || 0);\n elementSetSize({ elementId: options.id }, width, height);\n }\n elementAdjustFontSize({ elementId: options.id });\n });\n }\n unload() {\n this.pageStructure.forEach((s) => s.forEach((item) => {\n switch (item.type) {\n case 'text':\n item.setSettingValue(ElementValue(item.id));\n break;\n case 'checkbox': {\n const elem = document.getElementById(item.id);\n const checked = elem.checked;\n item.setSettingValue(checked);\n break;\n }\n }\n }));\n BaseSubscreen.currentElements = [];\n elementRemoveSubscreenDiv();\n }\n}\n","import deeplib_style from '../../public/styles/DeepLib.css';\nimport { bcSdkMod, dataTake, deepLibLogger, Localization, modules, registerModule, Style, VersionModule } from '../DeepLib';\nexport function initMod(initFunction, modules, pathToTranslationsFolder) {\n const MOD_NAME = bcSdkMod.ModInfo.name;\n deepLibLogger.debug(`Init wait for ${MOD_NAME}`);\n if (CurrentScreen == null || CurrentScreen === 'Login') {\n bcSdkMod.prototype.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')\n return next(args);\n if (response && typeof response.Name === 'string' && typeof response.AccountName === 'string') {\n init(initFunction, modules, pathToTranslationsFolder);\n }\n });\n }\n else {\n deepLibLogger.debug(`Already logged in, initing ${MOD_NAME}`);\n init(initFunction, modules, pathToTranslationsFolder);\n }\n}\nexport async function init(initFunction, modules, pathToTranslationsFolder) {\n const MOD_NAME = bcSdkMod.ModInfo.name;\n const MOD_VERSION = bcSdkMod.ModInfo.version;\n if (window[MOD_NAME + 'Loaded'])\n return;\n dataTake();\n Style.inject('deeplib-style', deeplib_style);\n new Localization({ pathToTranslationsFolder: pathToTranslationsFolder });\n await Localization.init();\n if (!initModules(modules)) {\n unloadMod();\n return;\n }\n await initFunction();\n VersionModule.checkVersionUpdate();\n VersionModule.checkVersionMigration();\n window[MOD_NAME + 'Loaded'] = true;\n deepLibLogger.log(`Loaded ${MOD_NAME}! Version: ${MOD_VERSION}`);\n}\nfunction initModules(modulesToRegister) {\n const MOD_NAME = bcSdkMod.ModInfo.name;\n for (const module of modulesToRegister) {\n registerModule(module);\n }\n for (const module of modules()) {\n module.init();\n }\n for (const module of modules()) {\n module.load();\n }\n for (const module of modules()) {\n module.run();\n }\n deepLibLogger.debug(`Modules Loaded for ${MOD_NAME}.`);\n return true;\n}\nexport function unloadMod() {\n const MOD_NAME = bcSdkMod.ModInfo.name;\n unloadModules();\n delete window[MOD_NAME + 'Loaded'];\n deepLibLogger.debug(`Unloaded ${MOD_NAME}.`);\n return true;\n}\nfunction unloadModules() {\n for (const module of modules()) {\n module.unload();\n }\n}\n","export const modulesMap = new Map();\nexport function modules() {\n return [...modulesMap.values()];\n}\nexport function registerModule(module) {\n modulesMap.set(module.constructor.name, module);\n return module;\n}\nexport function getModule(moduleType) {\n return modulesMap.get(moduleType);\n}\n","import { GUI } from '../DeepLib';\nexport function getCurrentSubscreen() {\n return GUI.instance && GUI.instance.currentSubscreen;\n}\nexport function setSubscreen(subscreen) {\n if (!GUI.instance) {\n throw new Error('Attempt to set subscreen before init');\n }\n GUI.instance.currentSubscreen = subscreen;\n return GUI.instance.currentSubscreen;\n}\n","import { BaseModule, MainMenu, modules, setSubscreen } from '../DeepLib';\nexport class GUI extends BaseModule {\n static instance = null;\n _subscreens;\n _mainMenu;\n _currentSubscreen = null;\n _modButtonOptions;\n get subscreens() {\n return this._subscreens;\n }\n get mainMenu() {\n return this._mainMenu;\n }\n get currentSubscreen() {\n return this._currentSubscreen;\n }\n set currentSubscreen(subscreen) {\n if (this._currentSubscreen) {\n this._currentSubscreen.unload();\n }\n if (typeof subscreen === 'string') {\n const scr = this._subscreens?.find((s) => s.name === subscreen);\n if (!scr)\n throw `Failed to find screen name ${subscreen}`;\n this._currentSubscreen = scr;\n }\n else {\n this._currentSubscreen = subscreen;\n }\n PreferenceMessage = '';\n PreferencePageCurrent = 1;\n if (this._currentSubscreen) {\n this._currentSubscreen.load();\n this._currentSubscreen.resize(true);\n }\n }\n constructor(modButtonOptions) {\n super();\n if (GUI.instance) {\n throw new Error('Duplicate initialization');\n }\n for (const module of modules()) {\n if (!module.settingsScreen)\n continue;\n }\n this._mainMenu = new MainMenu(this);\n this._subscreens = [this._mainMenu];\n this._modButtonOptions = modButtonOptions;\n GUI.instance = this;\n }\n get defaultSettings() {\n return null;\n }\n load() {\n for (const module of modules()) {\n if (!module.settingsScreen)\n continue;\n this._subscreens.push(new module.settingsScreen(module));\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 const newCanvasPosition = [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 { BaseModule, HookPriority, PlayerStorage, bcSdkMod, dataStore, deepLibLogger, sendLocalMessage } from '../DeepLib';\nexport class VersionModule extends BaseModule {\n static isItNewVersion = false;\n static Version;\n static NewVersionMessage = '';\n static Migrators = [];\n load() {\n VersionModule.Version = bcSdkMod.ModInfo.version;\n bcSdkMod.prototype.hookFunction('ChatRoomSync', HookPriority.Observe, (args, next) => {\n next(args);\n if (PlayerStorage().GlobalModule.doShowNewVersionMessage && VersionModule.isItNewVersion) {\n VersionModule.sendNewVersionMessage();\n }\n }, 999);\n }\n static checkVersionUpdate() {\n const PreviousVersion = VersionModule.loadVersion();\n const CurrentVersion = VersionModule.Version;\n if (VersionModule.isNewVersion(PreviousVersion, CurrentVersion)) {\n VersionModule.isItNewVersion = true;\n VersionModule.saveVersion();\n }\n }\n static checkVersionMigration() {\n const PreviousVersion = VersionModule.loadVersion();\n let saveRequired = false;\n for (const migrator of VersionModule.Migrators) {\n if (VersionModule.isNewVersion(PreviousVersion, migrator.MigrationVersion)) {\n saveRequired = saveRequired || migrator.Migrate();\n deepLibLogger.info(`Migrating ${bcSdkMod.ModInfo.name} from ${PreviousVersion} to ${migrator.MigrationVersion} with ${migrator.constructor.name}`);\n }\n }\n if (saveRequired) {\n dataStore();\n }\n }\n static registerMigrator(migrator) {\n VersionModule.Migrators.push(migrator);\n }\n static setNewVersionMessage(newVersionMessage) {\n VersionModule.NewVersionMessage = newVersionMessage;\n }\n static sendNewVersionMessage() {\n sendLocalMessage('deeplib-new-version', VersionModule.NewVersionMessage);\n }\n static isNewVersion(current, candidate) {\n if (current !== undefined) {\n const CURRENT_ = current.split('.'), 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 static saveVersion() {\n if (PlayerStorage()) {\n Player[bcSdkMod.ModInfo.name].Version = VersionModule.Version;\n }\n }\n static loadVersion() {\n return PlayerStorage()?.Version;\n }\n}\n","import { BaseSubscreen, deepLibLogger } from '../DeepLib';\nexport class GuiDebug extends BaseSubscreen {\n get name() {\n return 'debug';\n }\n get pageStructure() {\n return [[\n {\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 {\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 {\n type: 'checkbox',\n id: 'test-deeplib-checkbox',\n label: 'Checkbox',\n description: 'This is a checkbox',\n checked: false,\n getSettingValue() {\n return true;\n },\n setSettingValue(val) {\n deepLibLogger.info('Checkbox value:', val);\n },\n },\n {\n type: 'text',\n id: 'test-deeplib-text-input',\n label: 'Input',\n description: 'This is a text input',\n getElementValue() {\n return 'Input Value';\n },\n setSettingValue(val) {\n deepLibLogger.info('Input value:', val);\n },\n },\n {\n type: 'number',\n id: 'test-deeplib-number-input',\n label: 'Input',\n description: 'This is a number input',\n getElementValue() {\n return '123';\n },\n setSettingValue(val) {\n deepLibLogger.info('Input value:', val);\n },\n },\n {\n type: 'label',\n id: 'test-deeplib-label',\n label: 'Label',\n description: 'This is a label',\n }\n ]];\n }\n load() {\n super.load();\n }\n run() {\n super.run();\n }\n click() { }\n exit() {\n super.exit();\n }\n resize() {\n super.resize();\n }\n}\n","import { BaseSubscreen, GUI, GuiDebug, GuiSupport, elementAppendToMiscDiv, elementAppendToSettingsDiv, elementAppendToSubscreenDiv, elementCreateButton, elementCreateMiscDiv, elementSetPosSizeFont, getText } from '../DeepLib';\nexport class MainMenu extends BaseSubscreen {\n subscreens = [];\n static wikiLink = '';\n static resetSubscreen = null;\n get name() {\n return 'mainmenu';\n }\n constructor(module) {\n super(module);\n this.subscreens = module.subscreens;\n }\n load() {\n if (!GUI.instance?.currentSubscreen) {\n this.setSubscreen(this);\n return;\n }\n super.load();\n const exitButton = elementCreateButton({\n type: 'button',\n id: 'exit',\n position: [1815, 75],\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 elementAppendToSubscreenDiv(exitButton);\n for (const screen of this.subscreens) {\n if (screen.name == 'mainmenu')\n continue;\n const button = elementCreateButton({\n type: 'button',\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: [450, 90],\n });\n elementAppendToSettingsDiv(button);\n }\n const miscDiv = elementCreateMiscDiv();\n elementAppendToSubscreenDiv(miscDiv);\n if (MainMenu.resetSubscreen) {\n const resetButton = elementCreateButton({\n type: 'button',\n id: 'deeplib-reset-button',\n image: 'Icons/ServiceBell.png',\n label: 'Reset',\n onClick: () => {\n this.setSubscreen(MainMenu.resetSubscreen);\n },\n size: [405, 80],\n });\n elementAppendToMiscDiv(resetButton);\n }\n if (MainMenu.wikiLink) {\n const wikiButton = elementCreateButton({\n type: 'button',\n id: 'deeplib-wiki-button',\n image: 'Icons/Introduction.png',\n label: 'Wiki',\n onClick: () => {\n window.open(MainMenu.wikiLink, '_blank');\n },\n size: [405, 80],\n });\n elementAppendToMiscDiv(wikiButton);\n }\n const supportButton = elementCreateButton({\n type: 'button',\n id: 'deeplib-support-button',\n image: 'Assets/Female3DCG/Emoticon/Coffee/Icon.png',\n label: 'Support',\n onClick: () => {\n this.setSubscreen(new GuiSupport());\n },\n size: [405, 80],\n });\n elementAppendToMiscDiv(supportButton);\n elementSetPosSizeFont({ elementId: 'deeplib-misc' }, 1500, 670, 405, 260);\n const debugButton = elementCreateButton({\n type: 'button',\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 elementAppendToMiscDiv(debugButton);\n }\n run() {\n super.run();\n }\n click() { }\n exit() {\n CharacterAppearanceForceUpCharacter = -1;\n CharacterLoadCanvas(Player);\n this.setSubscreen(null);\n PreferenceSubscreenExtensionsClear();\n }\n resize() {\n super.resize();\n elementSetPosSizeFont({ elementId: 'deeplib-misc' }, 1500, 670, 405, 260);\n }\n}\nexport function setMainMenuOptions(wikiLink, resetSubscreen) {\n MainMenu.wikiLink = wikiLink;\n MainMenu.resetSubscreen = resetSubscreen;\n}\n","import { BaseSubscreen, elementSetPosSizeFont, getText } from '../DeepLib';\nexport class SupportHelper {\n static thankYouList = ['Ellena', 'weboos', 'Jamie'];\n static thankYouNext = 0;\n static thankYou = '';\n static getSupporter() {\n if (SupportHelper.thankYouNext < CommonTime())\n SupportHelper.doNextThankYou();\n return `${getText('support.other.thankyou')}, ${SupportHelper.thankYou}`;\n }\n static doNextThankYou() {\n if (SupportHelper.thankYou && SupportHelper.thankYouList.length < 2)\n return;\n SupportHelper.thankYou = CommonRandomItemFromList(SupportHelper.thankYou, SupportHelper.thankYouList);\n SupportHelper.thankYouNext = CommonTime() + 5000;\n }\n}\nexport class GuiSupport extends BaseSubscreen {\n get name() {\n return 'Support';\n }\n get currentPage() {\n return [\n {\n type: 'button',\n id: 'deeplib-support-kofi',\n size: [405, 80],\n label: getText('support.button.ko-fi'),\n image: 'https://storage.ko-fi.com/cdn/nav-logo-stroke.png',\n onClick() {\n window.open('https://ko-fi.com/monikka_bc', '_blank');\n }\n },\n {\n type: 'button',\n id: 'deeplib-support-patreon',\n size: [405, 80],\n label: getText('support.button.patreon'),\n image: 'https://c5.patreon.com/external/favicon/rebrand/favicon-32.png?v=af5597c2ef',\n onClick() {\n window.open('https://patreon.com/monikka_bc', '_blank');\n }\n }\n ];\n }\n load() {\n SupportHelper.doNextThankYou();\n super.load();\n ElementRemove('deeplib-settngs');\n ElementCreateDiv('deeplib-gratitude');\n const elm = document.getElementById('deeplib-gratitude');\n ElementContent('deeplib-gratitude', gratitudeHtml);\n elementSetPosSizeFont({ element: elm }, 1000, 250, 400, 400);\n }\n run() {\n super.run();\n }\n click() {\n super.click();\n }\n exit() {\n ElementRemove('deeplib-gratitude');\n super.exit();\n }\n resize() {\n super.resize();\n elementSetPosSizeFont({ elementId: 'deeplib-gratitude' }, 1000, 250, 400, 400);\n }\n}\nconst gratitudeHtml = `\n<h1>Dear Supporters!</h1>\n<p>\n I want to take a moment to express my heartfelt gratitude for considering supporting me. Your willingness to stand by\n my side in this creative journey means the world to me, and I am truly humbled by your generosity.\n</p>\n<p>\n Your support goes far beyond the financial contributions; it represents belief in my work and a shared passion for\n what I do. Your encouragement inspires me to continue developing.\n</p>\n<p>\n Your support not only helps me sustain and grow as a developer, but also enables me to dedicate more time and\n resources to producing high-quality mods. It allows me to explore new ideas, enhance my skills, and bring even more\n meaningful and enjoyable content to you.\n</p>\n<p>Thank you all~</p>\n<p>With love, Monikka♥</p>\n`;\n","import { _String, bcSdkMod, modules } from '../DeepLib';\nexport const PlayerStorage = () => (typeof Player?.[bcSdkMod.ModInfo.name] === 'object' ?\n CommonCloneDeep(Player?.[bcSdkMod.ModInfo.name]) :\n undefined);\nexport const ExtensionStorage = () => Player.ExtensionSettings[bcSdkMod.ModInfo.name];\nexport function dataTake(modName = bcSdkMod.ModInfo.name) {\n if (ExtensionStorage()) {\n const parsed = JSON.parse(LZString.decompressFromBase64(ExtensionStorage()) || '');\n Player[modName] = Object.hasOwn(parsed, 'Version') ? parsed : undefined;\n }\n else {\n Player[modName] = {};\n }\n}\nexport function dataStore() {\n const modName = bcSdkMod.ModInfo.name;\n const modVersion = bcSdkMod.ModInfo.version;\n if (!ExtensionStorage())\n Player.ExtensionSettings[modName] = '';\n const Data = {\n GlobalModule: {\n modEnabled: false,\n doShowNewVersionMessage: false\n },\n Version: modVersion\n };\n for (const module of modules()) {\n if (!module.settingsStorage)\n continue;\n Data[module.settingsStorage] = PlayerStorage()[module.settingsStorage];\n }\n Player.ExtensionSettings[modName] = _String.encode(Data);\n ServerPlayerExtensionSettingsSync(modName);\n}\n","export function elementCreateSubscreenDiv() {\n const subscreenDiv = elementGetSubscreenDiv();\n if (subscreenDiv) {\n console.error('Subscreen already exists');\n return subscreenDiv;\n }\n const div = document.createElement('div');\n div.id = 'deeplib-subscreen';\n div.classList.add('deeplib-subscreen', 'HideOnPopup');\n return document.body.appendChild(div);\n}\nexport function elementGetSubscreenDiv() {\n return document.getElementById('deeplib-subscreen') ?? undefined;\n}\nexport function elementRemoveSubscreenDiv() {\n return elementGetSubscreenDiv()?.remove();\n}\nexport function elementAppendToSubscreenDiv(element) {\n return elementGetSubscreenDiv()?.appendChild(element);\n}\nexport function elementCreateSettingsDiv() {\n const settingsDiv = elementGetSettingsDiv();\n if (settingsDiv) {\n console.error('Settings screen already exists');\n return settingsDiv;\n }\n const div = document.createElement('div');\n div.id = 'deeplib-settings';\n div.classList.add('deeplib-settings');\n return div;\n}\nexport function elementGetSettingsDiv() {\n return document.getElementById('deeplib-settings') ?? undefined;\n}\nexport function elementAppendToSettingsDiv(element) {\n return elementGetSettingsDiv()?.appendChild(element);\n}\nexport function elementCreateMiscDiv() {\n const miscDiv = elementGetMiscDiv();\n if (miscDiv) {\n console.error('Settings screen already exists');\n return miscDiv;\n }\n const div = document.createElement('div');\n div.id = 'deeplib-misc';\n div.classList.add('deeplib-misc');\n return div;\n}\nexport function elementGetMiscDiv() {\n return document.getElementById('deeplib-misc');\n}\nexport function elementAppendToMiscDiv(element) {\n return elementGetMiscDiv()?.appendChild(element);\n}\n","import { deepLibLogger } from '../../DeepLib';\nconst mainCanvasHeight = 1000;\nconst mainCanvasWidth = 2000;\nexport function getRelativeHeight(height) {\n return height * (MainCanvas.canvas.clientHeight / mainCanvasHeight);\n}\nexport function getRelativeWidth(width) {\n return width * (MainCanvas.canvas.clientWidth / mainCanvasWidth);\n}\nexport function getRelativeY(yPos) {\n return MainCanvas.canvas.offsetTop + yPos * (MainCanvas.canvas.clientHeight / mainCanvasHeight);\n}\nexport function getRelativeX(xPos) {\n return MainCanvas.canvas.offsetLeft + xPos * (MainCanvas.canvas.clientWidth / mainCanvasWidth);\n}\nexport function elementSetPosition(_, xPos, yPos) {\n const element = elementGet(_, 'elementSetPosition');\n if (!element)\n return;\n const Top = getRelativeY(yPos);\n const Left = getRelativeX(xPos);\n Object.assign(element.style, {\n position: 'fixed',\n left: Left + 'px',\n top: Top + 'px'\n });\n}\nexport function elementSetSize(_, width, height) {\n const element = elementGet(_, 'elementSetSize');\n if (!element)\n return;\n const Height = getRelativeHeight(height);\n const Width = getRelativeWidth(width);\n Object.assign(element.style, {\n width: Width + 'px',\n height: Height + 'px',\n });\n}\nexport function elementAdjustFontSize(_) {\n const element = elementGet(_, 'elementAdjustFontSize');\n if (!element)\n return;\n const Font = MainCanvas.canvas.clientWidth <= MainCanvas.canvas.clientHeight * 2 ? MainCanvas.canvas.clientWidth / 50 : MainCanvas.canvas.clientHeight / 25;\n Object.assign(element.style, {\n fontSize: Font + 'px',\n fontFamily: CommonGetFontName()\n });\n}\nexport function elementSetPosSizeFont(_, xPos, yPos, width, height) {\n if (elementGet(_, 'elementSetPosSizeFont') === null)\n return;\n elementSetPosition(_, xPos, yPos);\n elementSetSize(_, width, height);\n elementAdjustFontSize(_);\n}\nexport function elementHide(_) {\n const element = elementGet(_, 'elementHide');\n if (!element)\n return;\n element.style.display = 'none';\n}\nexport function elementUnhide(_) {\n const element = elementGet(_, 'elementUnhide');\n if (!element)\n return;\n element.style.display = '';\n}\nfunction elementGet(_, funcName) {\n if (!_) {\n deepLibLogger.warn(`${funcName} called without an elementId or element`);\n return null;\n }\n const elementId = _.elementId ?? _.element?.id;\n const element = _.element ?? document.getElementById(_.elementId);\n if (!element) {\n deepLibLogger.warn(`A call to ${funcName} was made on non-existent element with id ${elementId}`);\n return null;\n }\n return element;\n}\n","import { BaseSubscreen, getRelativeHeight, getRelativeWidth, getRelativeX, getRelativeY } from '../../DeepLib';\nexport function elementCreateButton(options) {\n const width = options.size ? getRelativeWidth(options.size[0]) + 'px' : '';\n const height = options.size ? getRelativeHeight(options.size[1]) + 'px' : '';\n const left = options.position ? getRelativeX(options.position[0]) + 'px' : '';\n const top = options.position ? getRelativeY(options.position[1]) + 'px' : '';\n const position = options.position ? 'fixed' : '';\n const button = ElementButton.Create(options.id, () => options.onClick(), {\n tooltip: options.tooltip,\n label: options.label,\n labelPosition: 'center',\n }, {\n button: {\n classList: ['deeplib-button'],\n children: [\n {\n tag: 'img',\n attributes: {\n id: `${options.id}-image`,\n alt: '',\n disabled: options.disabled,\n decoding: 'async',\n loading: 'lazy',\n src: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n },\n dataAttributes: {\n 'size': options.size?.join('x'),\n 'position': options.position?.join('x'),\n },\n style: {\n '--image': `url(\"${options.image}\")`,\n }\n },\n ],\n style: {\n width: width,\n height: height,\n left: left,\n top: top,\n position: position,\n }\n },\n });\n BaseSubscreen.currentElements.push([button, options]);\n return button;\n}\n","import { BaseSubscreen, elementSetTooltip, getRelativeHeight, getRelativeWidth, getRelativeX, getRelativeY } from '../../DeepLib';\nexport function elementCreateCheckbox(options) {\n const elem = document.getElementById(options.id);\n if (elem)\n return elem;\n const width = options.size ? getRelativeWidth(options.size[0]) + 'px' : '';\n const height = options.size ? getRelativeHeight(options.size[1]) + 'px' : '';\n const left = options.position ? getRelativeX(options.position[0]) + 'px' : '';\n const top = options.position ? getRelativeY(options.position[1]) + 'px' : '';\n const position = options.position ? 'fixed' : '';\n const retElem = ElementCreate({\n tag: 'div',\n classList: ['deeplib-checkbox-container'],\n style: {\n width: width,\n height: height,\n left: left,\n top: top,\n position: position,\n },\n dataAttributes: {\n 'size': options.size?.join('x'),\n 'position': options.position?.join('x'),\n },\n children: [\n {\n tag: 'input',\n classList: ['deeplib-input'],\n attributes: {\n type: 'checkbox',\n id: options.id,\n checked: options.getSettingValue() || undefined,\n },\n },\n {\n tag: 'label',\n classList: ['deeplib-text'],\n attributes: {\n for: options.id,\n },\n children: [options.label]\n },\n ]\n });\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description);\n });\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n BaseSubscreen.currentElements.push([retElem, options]);\n return retElem;\n}\n","import { BaseSubscreen, elementSetTooltip, getRelativeHeight, getRelativeWidth, getRelativeX, getRelativeY } from '../../DeepLib';\nexport function elementCreateInput(options) {\n const elem = document.getElementById(options.id);\n if (elem)\n return elem;\n const width = options.size ? getRelativeWidth(options.size[0]) + 'px' : '';\n const height = options.size ? getRelativeHeight(options.size[1]) + 'px' : '';\n const left = options.position ? getRelativeX(options.position[0]) + 'px' : '';\n const top = options.position ? getRelativeY(options.position[1]) + 'px' : '';\n const position = options.position ? 'fixed' : '';\n const retElem = ElementCreate({\n tag: 'div',\n classList: ['deeplib-input-container'],\n style: {\n width: width,\n height: height,\n left: left,\n top: top,\n position: position,\n },\n dataAttributes: {\n 'size': options.size?.join('x'),\n 'position': options.position?.join('x'),\n },\n children: [\n {\n tag: 'input',\n classList: ['deeplib-input'],\n attributes: {\n type: options.type,\n id: options.id,\n placeholder: ' ',\n },\n },\n {\n tag: 'label',\n classList: ['deeplib-text'],\n attributes: {\n for: options.id,\n },\n children: [options.label]\n },\n {\n tag: 'div',\n classList: ['deeplib-underline'],\n }\n ]\n });\n if (options.getElementValue?.()) {\n const input = document.getElementById(options.id);\n if (input)\n input.value = options.getElementValue();\n }\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description);\n });\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n BaseSubscreen.currentElements.push([retElem, options]);\n return retElem;\n}\n","import { BaseSubscreen, elementSetTooltip, getRelativeHeight, getRelativeWidth, getRelativeX, getRelativeY } from '../../DeepLib';\nexport function elementCreateLabel(options) {\n const elem = document.getElementById(options.id);\n if (elem)\n return elem;\n const width = options.size ? getRelativeWidth(options.size[0]) + 'px' : '';\n const height = options.size ? getRelativeHeight(options.size[1]) + 'px' : '';\n const left = options.position ? getRelativeX(options.position[0]) + 'px' : '';\n const top = options.position ? getRelativeY(options.position[1]) + 'px' : '';\n const position = options.position ? 'fixed' : '';\n const retElem = ElementCreate({\n tag: 'span',\n classList: ['deeplib-label', 'deeplib-text'],\n attributes: {\n id: options.id\n },\n style: {\n width: width,\n height: height,\n left: left,\n top: top,\n position: position,\n },\n dataAttributes: {\n 'size': options.size?.join('x'),\n 'position': options.position?.join('x'),\n },\n children: [\n options.label,\n ],\n });\n if (options.description) {\n retElem.addEventListener('mouseover', () => {\n elementSetTooltip(options.description);\n });\n retElem.addEventListener('mouseout', () => {\n elementSetTooltip('');\n });\n }\n BaseSubscreen.currentElements.push([retElem, options]);\n return retElem;\n}\n","export function 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 return element;\n}\nexport function elementGetTooltip() {\n return document.getElementById('deeplib-tooltip') ?? undefined;\n}\nexport function elementSetTooltip(text) {\n const element = document.getElementById('deeplib-tooltip');\n if (!element)\n return false;\n element.innerHTML = text;\n if (text === '')\n element.style.display = 'none';\n else\n element.style.display = '';\n return true;\n}\n","export class Logger extends Array {\n ModName = 'DeepLib';\n constructor(modName) {\n super();\n if (modName) {\n this.ModName = modName;\n }\n }\n _Log(level, ...args) {\n const logEntry = {\n logLevel: level,\n args: [...args],\n date: new Date(Date.now())\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 }\n });\n console.log(`%c${this.ModName}:`, color, ...args);\n }\n else {\n console.log(`${this.ModName}:`, ...args);\n }\n this.push(logEntry);\n }\n info(...args) {\n this._Log('info', ...args);\n }\n log(...args) {\n this._Log('log', ...args);\n }\n warn(...args) {\n this._Log('warn', ...args);\n }\n error(...args) {\n this._Log('error', ...args);\n }\n debug(...args) {\n this._Log('debug', ...args);\n }\n static colorizeLog(logLevel) {\n const colors = {\n info: 'color: #32CCCC',\n log: 'color: #CCCC32',\n warn: 'color: #eec355',\n error: 'color: #750b0b',\n debug: 'color: #9E4BCF',\n };\n return colors[logLevel];\n }\n}\nexport const deepLibLogger = new Logger();\n","import bcModSdkRef from 'bondage-club-mod-sdk';\nexport var HookPriority;\n(function (HookPriority) {\n HookPriority[HookPriority[\"Observe\"] = 0] = \"Observe\";\n HookPriority[HookPriority[\"AddBehavior\"] = 1] = \"AddBehavior\";\n HookPriority[HookPriority[\"ModifyBehavior\"] = 5] = \"ModifyBehavior\";\n HookPriority[HookPriority[\"OverrideBehavior\"] = 10] = \"OverrideBehavior\";\n HookPriority[HookPriority[\"Top\"] = 100] = \"Top\";\n})(HookPriority || (HookPriority = {}));\nexport class bcSdkMod {\n static SDK;\n static patchedFunctions = new Map();\n static ModInfo;\n constructor(info, options) {\n bcSdkMod.SDK = bcModSdkRef.registerMod(info, options);\n bcSdkMod.ModInfo = info;\n }\n initPatchableFunction(target) {\n let result = bcSdkMod.patchedFunctions.get(target);\n if (!result) {\n result = {\n name: target,\n hooks: []\n };\n bcSdkMod.patchedFunctions.set(target, result);\n }\n return result;\n }\n hookFunction(target, priority, hook, module = null) {\n const data = this.initPatchableFunction(target);\n if (data.hooks.some((h) => h.hook === hook)) {\n return () => null;\n }\n const removeCallback = bcSdkMod.SDK?.hookFunction(target, priority, hook);\n data.hooks.push({\n hook,\n priority,\n module,\n removeCallback\n });\n data.hooks.sort((a, b) => b.priority - a.priority);\n return removeCallback;\n }\n patchFunction(target, patches) {\n this.patchFunction(target, patches);\n }\n removeHookByModule(target, module) {\n const data = this.initPatchableFunction(target);\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 return true;\n }\n removeAllHooksByModule(module) {\n for (const data of bcSdkMod.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 return true;\n }\n}\n","import { deepLibLogger } from './Logger';\nexport class _String {\n static encode(string) {\n return LZString.compressToBase64(JSON.stringify(string));\n }\n static decode(string) {\n const d = LZString.decompressFromBase64(string);\n let data = {};\n try {\n const decoded = JSON.parse(d);\n data = decoded;\n }\n catch (error) {\n deepLibLogger.error(error);\n }\n if (data)\n return data;\n }\n static shuffle(string) {\n const temp = JSON.parse(JSON.stringify(string));\n const ret = [];\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 return ret;\n }\n}\n","export class Localization {\n Translation = {};\n static PathToTranslation;\n constructor(options) {\n Localization.PathToTranslation = options.pathToTranslationsFolder.endsWith('/') ? options.pathToTranslationsFolder : options.pathToTranslationsFolder + '/';\n }\n static async init() {\n const lang = TranslationLanguage.toLowerCase();\n const translation = await Localization.fetchLanguageFile(lang);\n if (lang === 'en') {\n Localization.prototype.Translation = translation;\n }\n else {\n const fallbackTranslation = await Localization.fetchLanguageFile('en');\n Localization.prototype.Translation = { ...fallbackTranslation, ...translation };\n }\n }\n static getText(srcTag) {\n return Localization.prototype.Translation?.[srcTag] || srcTag || '';\n }\n static async fetchLanguageFile(lang) {\n const response = await fetch(`${Localization.PathToTranslation}${lang}.lang`);\n if (lang !== 'en' && !response.ok) {\n return this.fetchLanguageFile('en');\n }\n const langFileContent = await response.text();\n return this.parseLanguageFile(langFileContent);\n }\n static parseLanguageFile(content) {\n const translations = {};\n const lines = content.split('\\n');\n for (const line of lines) {\n if (line.trim() === '' || line.trim().startsWith('#')) {\n continue;\n }\n const [key, value] = line.split('=');\n translations[key.trim()] = value.trim();\n }\n return translations;\n }\n}\nexport const getText = (string) => Localization.getText(string);\n","export * from './Base/BaseModule';\nexport * from './Base/BaseSubscreen';\nexport * from './Base/Initialization';\nexport * from './Base/Modules';\nexport * from './Base/SettingDefinitions';\nexport * from './Migrators/BaseMigrator';\nexport * from './Models/Base';\nexport * from './Models/Settings';\nexport * from './Modules/GUI';\nexport * from './Modules/Version';\nexport * from './Screens/Debug';\nexport * from './Screens/MainMenu';\nexport * from './Screens/Support';\nexport * from './Utilities/Data';\nexport * from './Utilities/Elements/.AdvancedElements';\nexport * from './Utilities/Elements/.ElementHelpers';\nexport * from './Utilities/Elements/Button';\nexport * from './Utilities/Elements/Checkbox';\nexport * from './Utilities/Elements/Input';\nexport * from './Utilities/Elements/Label';\nexport * from './Utilities/Elements/Tooltip';\nexport * from './Utilities/Logger';\nexport * from './Utilities/Messages';\nexport * from './Utilities/SDK';\nexport * from './Utilities/String';\nexport * from './Utilities/Style';\nexport * from './Utilities/Translation';\n"],"names":[],"sourceRoot":""}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
.deeplib-subscreen {
|
|
2
|
+
--deeplib-background-color: var(--main, white);
|
|
3
|
+
--deeplib-element-color: var(--element, white);
|
|
4
|
+
--deeplib-element-hover-color: var(--accentHover, cyan);
|
|
5
|
+
--deeplib-text-color: var(--text, black);
|
|
6
|
+
--deeplib-icon-color: var(--accent, white);
|
|
7
|
+
--deeplib-border-color: var(--accent, black);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/************/
|
|
11
|
+
/* ELEMENTS */
|
|
12
|
+
/************/
|
|
13
|
+
|
|
14
|
+
.deeplib-text {
|
|
15
|
+
color: var(--deeplib-text-color);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.deeplib-subscreen {
|
|
19
|
+
padding: 0;
|
|
20
|
+
margin: 0;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.deeplib-subscreen * {
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.deeplib-settings {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
padding: min(1.0dvh, 0.5dvw);
|
|
31
|
+
gap: 0.3em;
|
|
32
|
+
overflow-y: auto;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.deeplib-misc {
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: space-between;
|
|
39
|
+
flex-direction: column-reverse;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.deeplib-button.button-styling {
|
|
43
|
+
border-radius: min(1.0dvh, 0.5dvw);
|
|
44
|
+
color: var(--deeplib-text-color);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.deeplib-button.button-styling img {
|
|
48
|
+
position: absolute;
|
|
49
|
+
top: 0%;
|
|
50
|
+
left: 0%;
|
|
51
|
+
width: 100%;
|
|
52
|
+
height: 100%;
|
|
53
|
+
background-position: left;
|
|
54
|
+
background-color: var(--deeplib-icon-color);
|
|
55
|
+
background-blend-mode: multiply;
|
|
56
|
+
background-size: contain;
|
|
57
|
+
mask-position: left;
|
|
58
|
+
mask-size: contain;
|
|
59
|
+
background-repeat: no-repeat;
|
|
60
|
+
mask-repeat: no-repeat;
|
|
61
|
+
color: transparent;
|
|
62
|
+
|
|
63
|
+
background-image: var(--image);
|
|
64
|
+
mask-image: var(--image);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.deeplib-button.button-styling .button-label {
|
|
68
|
+
width: 100%;
|
|
69
|
+
background-color: transparent;
|
|
70
|
+
color: var(--deeplib-text-color);
|
|
71
|
+
font-size: min(3.6dvh, 1.8dvw);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#deeplib-subscreen-title {
|
|
75
|
+
text-align: center;
|
|
76
|
+
color: var(--deeplib-text-color);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#deeplib-reset-button {
|
|
80
|
+
background-color: indianred;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#deeplib-wiki-button {
|
|
84
|
+
background-color: #BDA203;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#deeplib-support-button {
|
|
88
|
+
background-color: #5e4969;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.deeplib-checkbox-container {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: row;
|
|
94
|
+
align-items: center;
|
|
95
|
+
gap: 0.3em;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.deeplib-input {
|
|
99
|
+
border-radius: min(1.0dvh, 0.5dvw);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.deeplib-input-container {
|
|
103
|
+
position: relative;
|
|
104
|
+
margin-top: min(1vh, 0.5vw);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.deeplib-input-container input.deeplib-input {
|
|
108
|
+
font-size: 20px;
|
|
109
|
+
width: 100%;
|
|
110
|
+
padding: 5px 0;
|
|
111
|
+
background-color: transparent;
|
|
112
|
+
outline: none;
|
|
113
|
+
padding-left: min(1vh, 0.5vw);
|
|
114
|
+
padding-right: min(1vh, 0.5vw);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.deeplib-input-container label.deeplib-text {
|
|
118
|
+
position: absolute;
|
|
119
|
+
top: min(0.6vh, 0.3vw);
|
|
120
|
+
left: min(0.6vh, 0.3vw);
|
|
121
|
+
transition: all 0.3s ease;
|
|
122
|
+
pointer-events: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.deeplib-input-container input.deeplib-input:focus~label,
|
|
126
|
+
.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~label {
|
|
127
|
+
font-size: 0.7em;
|
|
128
|
+
transform: translate(20%, -70%);
|
|
129
|
+
background-color: var(--deeplib-background-color);
|
|
130
|
+
padding: 0px min(1vh, 0.5vw);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.deeplib-input-container .deeplib-underline {
|
|
134
|
+
position: absolute;
|
|
135
|
+
bottom: 0;
|
|
136
|
+
left: 0;
|
|
137
|
+
height: 2px;
|
|
138
|
+
width: 100%;
|
|
139
|
+
background-color: var(--deeplib-element-hover-color);
|
|
140
|
+
transform: scaleX(0);
|
|
141
|
+
transition: all 0.3s ease;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.deeplib-input-container input.deeplib-input:focus~.deeplib-underline,
|
|
145
|
+
.deeplib-input-container input.deeplib-input:not(:placeholder-shown)~.deeplib-underline {
|
|
146
|
+
transform: scaleX(0.98);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.deeplib-tooltip {
|
|
150
|
+
background-color: var(--deeplib-element-color);
|
|
151
|
+
color: var(--deeplib-text-color);
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
justify-content: center;
|
|
155
|
+
border-radius: min(1.0dvh, 0.5dvw);
|
|
156
|
+
padding: min(1vh, 0.5vw);
|
|
157
|
+
font-size: 0.8em;
|
|
158
|
+
border: min(0.2vh, 0.1vw) solid var(--deeplib-border-color);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
input::-webkit-outer-spin-button,
|
|
162
|
+
input::-webkit-inner-spin-button {
|
|
163
|
+
-webkit-appearance: none;
|
|
164
|
+
margin: 0;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
input[type=number] {
|
|
168
|
+
appearance: textfield;
|
|
169
|
+
-moz-appearance: textfield;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/*************/
|
|
173
|
+
/* MESSAGES */
|
|
174
|
+
/*************/
|
|
175
|
+
|
|
176
|
+
.deeplib-highlight-text {
|
|
177
|
+
font-weight: bold;
|
|
178
|
+
color: rgb(203, 185, 23);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
#TextAreaChatLog[data-colortheme='dark'] div.ChatMessage.deeplib-message,
|
|
182
|
+
#TextAreaChatLog[data-colortheme='dark2'] div.ChatMessage.deeplib-message {
|
|
183
|
+
background-color: var(--deeplib-element-color);
|
|
184
|
+
border: min(0.2dvh, 0.1dvw) solid var(--deeplib-border-color);
|
|
185
|
+
color: var(--deeplib-text-color);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
#TextAreaChatLog div.ChatMessage.deeplib-message {
|
|
189
|
+
background-color: #eee;
|
|
190
|
+
border: min(0.2dvh, 0.1dvw) solid #440171;
|
|
191
|
+
color: #111;
|
|
192
|
+
padding-left: min(0.6dvh, 0.3dvw);
|
|
193
|
+
display: block;
|
|
194
|
+
white-space: normal;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
#TextAreaChatLog[data-colortheme='dark'] div.ChatMessage.deeplib-message a,
|
|
198
|
+
#TextAreaChatLog[data-colortheme='dark2'] div.ChatMessage.deeplib-message a {
|
|
199
|
+
color: var(--deeplib-text-color);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
#TextAreaChatLog div.ChatMessage.deeplib-message a {
|
|
203
|
+
cursor: pointer;
|
|
204
|
+
font-weight: bold;
|
|
205
|
+
color: #111;
|
|
206
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#deeplib-gratitude {
|
|
2
|
+
position: fixed;
|
|
3
|
+
width: 25%;
|
|
4
|
+
height: 50%;
|
|
5
|
+
top: 15%;
|
|
6
|
+
left: 50%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
#deeplib-gratitude h1 {
|
|
10
|
+
font-size: 1em;
|
|
11
|
+
color: var(--text, #333);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
#deeplib-gratitude p {
|
|
15
|
+
font-size: 0.6em;
|
|
16
|
+
color: var(--text, #555);
|
|
17
|
+
line-height: 1.5;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
#deeplib-gratitude p:last-child {
|
|
21
|
+
font-size: 0.8em;
|
|
22
|
+
color: var(--text, #ff69b4);
|
|
23
|
+
}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bc-deeplib",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"author": "dDeepLb",
|
|
5
5
|
"description": "Package for easier development of BC mods without need to repeat myself in every mod",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"files": [
|
|
9
|
-
"/src",
|
|
10
9
|
".types",
|
|
11
|
-
"public"
|
|
10
|
+
"public",
|
|
11
|
+
"dist"
|
|
12
12
|
],
|
|
13
13
|
"main": "./src/DeepLib.ts",
|
|
14
14
|
"devDependencies": {
|
package/src/Base/BaseModule.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { BaseSettingsModel, BaseSubscreen, PlayerStorage, SettingsModel, bcSdkMod } from '../DeepLib';
|
|
2
|
-
|
|
3
|
-
export type Subscreen = new (module?: BaseModule) => BaseSubscreen;
|
|
4
|
-
|
|
5
|
-
export abstract class BaseModule {
|
|
6
|
-
get settingsScreen(): Subscreen | null {
|
|
7
|
-
return null;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
get settingsStorage(): string | null {
|
|
11
|
-
return this.constructor.name;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
get settings(): BaseSettingsModel {
|
|
15
|
-
const modName = bcSdkMod.ModInfo.name;
|
|
16
|
-
if (!this.settingsStorage) return {} as BaseSettingsModel;
|
|
17
|
-
if (!PlayerStorage()) {
|
|
18
|
-
Player[modName] = <SettingsModel>{};
|
|
19
|
-
this.registerDefaultSettings();
|
|
20
|
-
} else if (!PlayerStorage()[this.settingsStorage]) this.registerDefaultSettings();
|
|
21
|
-
return PlayerStorage()[this.settingsStorage];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
init() {
|
|
25
|
-
this.registerDefaultSettings();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
registerDefaultSettings(): void {
|
|
29
|
-
const storage = this.settingsStorage;
|
|
30
|
-
const defaults = this.defaultSettings;
|
|
31
|
-
if (!storage || !defaults) return;
|
|
32
|
-
|
|
33
|
-
Player[bcSdkMod.ModInfo.name][storage] = Object.assign(defaults, Player[bcSdkMod.ModInfo.name][storage] ?? {});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get defaultSettings(): BaseSettingsModel | null {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
load() { }
|
|
41
|
-
|
|
42
|
-
run() { }
|
|
43
|
-
|
|
44
|
-
unload() { }
|
|
45
|
-
}
|