bc-deeplib 1.0.6 → 1.1.0

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