@sheetxl/sdk 0.1.98

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 (106) hide show
  1. package/LICENSE.md +11 -0
  2. package/README.md +30 -0
  3. package/build/browser/cjs/7Yh1PqgSd93uKFOq.cjs +6 -0
  4. package/build/browser/cjs/AbBzPqrBe_7Scafy.cjs +6 -0
  5. package/build/browser/cjs/B2jt9h-29UhlG-ir.cjs +6 -0
  6. package/build/browser/cjs/BAY6G2idlFTr3aXF.cjs +6 -0
  7. package/build/browser/cjs/BJAOd8ki61yYMUO8.cjs +6 -0
  8. package/build/browser/cjs/BNfn1no9QwiHEFwd.cjs +6 -0
  9. package/build/browser/cjs/BUkgy8lQRuxtyPlh.cjs +6 -0
  10. package/build/browser/cjs/B_O3B0P2cyGD9Rbm.cjs +6 -0
  11. package/build/browser/cjs/BkmEUMAKvuzsSqbR.cjs +7 -0
  12. package/build/browser/cjs/BlllxPbkhoY0sEC4.cjs +23 -0
  13. package/build/browser/cjs/BmT4qU5bgAIPFNTH.cjs +124 -0
  14. package/build/browser/cjs/BqZnbFL2t1u1XgPn.cjs +6 -0
  15. package/build/browser/cjs/Bs6xUWpBc0gC2FqH.cjs +6 -0
  16. package/build/browser/cjs/Bsv5BCVCW5dIA5It.cjs +1511 -0
  17. package/build/browser/cjs/ByZLM15SpxjqWDYX.cjs +6 -0
  18. package/build/browser/cjs/CaHv2p0pVvOc7XPO.cjs +42 -0
  19. package/build/browser/cjs/CcIliks7z_TMUXOM.cjs +6 -0
  20. package/build/browser/cjs/CpbUnis3pqWrW9H4.cjs +11 -0
  21. package/build/browser/cjs/CvGHijwHYOsCppoo.cjs +6 -0
  22. package/build/browser/cjs/D5m2Wlak7m4vG0kA.cjs +6 -0
  23. package/build/browser/cjs/DSNXa0HNC7bG9qZw.cjs +6 -0
  24. package/build/browser/cjs/DZ-H3oz78Mjq38DI.cjs +6 -0
  25. package/build/browser/cjs/Da34iNTZrWBA6OUT.cjs +6 -0
  26. package/build/browser/cjs/DfMNPyGio0O0RToU.cjs +6 -0
  27. package/build/browser/cjs/Dghi8Yq5nXZtUpoV.cjs +80 -0
  28. package/build/browser/cjs/Dk63Co0TJejVtNXp.cjs +6 -0
  29. package/build/browser/cjs/ErSjtO5fMJzUVHk4.cjs +6 -0
  30. package/build/browser/cjs/G-xZJIN6jjcTuQXA.cjs +6 -0
  31. package/build/browser/cjs/GPfZ0ZpBee250ywR.cjs +20 -0
  32. package/build/browser/cjs/IHypcrtWCiX_F0RJ.cjs +11 -0
  33. package/build/browser/cjs/X-HIF0659hMdI4Fu.cjs +6 -0
  34. package/build/browser/cjs/index.cjs +6 -0
  35. package/build/browser/cjs/qhBvSFMQ_DepDCwv.cjs +6 -0
  36. package/build/browser/cjs/wYOZ6mjOO7MbdyBZ.cjs +6 -0
  37. package/build/browser/esm/70LlV-Ub5gQiHal4.mjs +10 -0
  38. package/build/browser/esm/71Qocy3xStWv_56t.mjs +10 -0
  39. package/build/browser/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
  40. package/build/browser/esm/BAKRnfUqPzHyyiLx.mjs +3966 -0
  41. package/build/browser/esm/BChNW8QNTMP8QXKM.mjs +484 -0
  42. package/build/browser/esm/BCzBxiWxCFs-jcmK.mjs +5651 -0
  43. package/build/browser/esm/BOn1aDBCyrMSMmVr.mjs +10 -0
  44. package/build/browser/esm/BPqJ7trmE53kA4iD.mjs +10 -0
  45. package/build/browser/esm/B_XqbIeKalrEkjs7.mjs +10 -0
  46. package/build/browser/esm/B_b5FIYJnm4UKAEc.mjs +28 -0
  47. package/build/browser/esm/BoWGCLoCBi99JpFs.mjs +10 -0
  48. package/build/browser/esm/Bq9W-xButcfpjGEk.mjs +433 -0
  49. package/build/browser/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
  50. package/build/browser/esm/CAxIV1vPiKW9r_Yh.mjs +10 -0
  51. package/build/browser/esm/CFw23OkHfPquoVEk.mjs +10 -0
  52. package/build/browser/esm/CG8a93kgahRemVJe.mjs +10 -0
  53. package/build/browser/esm/CN45di2IcbM8P0Qu.mjs +10 -0
  54. package/build/browser/esm/COgfNXNmX_PF_eWZ.mjs +35 -0
  55. package/build/browser/esm/CPv7OpinaYcwbA_W.mjs +10 -0
  56. package/build/browser/esm/Cfhp3FCr7wP0Rnfu.mjs +10 -0
  57. package/build/browser/esm/D4GeLOfATuEzvjPr.mjs +1586 -0
  58. package/build/browser/esm/DMas1DZMe9F5tPaN.mjs +23970 -0
  59. package/build/browser/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
  60. package/build/browser/esm/DTM0pK30PrZRsXYw.mjs +10 -0
  61. package/build/browser/esm/DgslJ1_vlPooGZHU.mjs +10 -0
  62. package/build/browser/esm/DmEPCZ9FSKO_TRTA.mjs +10 -0
  63. package/build/browser/esm/Do_EO3eQIyPgc7uz.mjs +30 -0
  64. package/build/browser/esm/ERMewE78C__HUblm.mjs +10 -0
  65. package/build/browser/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
  66. package/build/browser/esm/SSYRYFzxzHWQzdAN.mjs +12 -0
  67. package/build/browser/esm/V_ha0oCA5_oDPanz.mjs +832 -0
  68. package/build/browser/esm/gTh1PiesKrQblf8O.mjs +10 -0
  69. package/build/browser/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
  70. package/build/browser/esm/index.mjs +89 -0
  71. package/build/licenses/dependencies.txt +1239 -0
  72. package/build/node/esm/4HPektqH91Rh-rsq.mjs +2445 -0
  73. package/build/node/esm/70LlV-Ub5gQiHal4.mjs +10 -0
  74. package/build/node/esm/B9-WgxZWcZj4jdUC.mjs +10 -0
  75. package/build/node/esm/BDxewg-utn4BhUXl.mjs +35 -0
  76. package/build/node/esm/BPqJ7trmE53kA4iD.mjs +10 -0
  77. package/build/node/esm/BUOg554dxBM0VWFi.mjs +22 -0
  78. package/build/node/esm/B_XqbIeKalrEkjs7.mjs +10 -0
  79. package/build/node/esm/BoWGCLoCBi99JpFs.mjs +10 -0
  80. package/build/node/esm/ByxOyRbOjkmiHT8z.mjs +10 -0
  81. package/build/node/esm/CFw23OkHfPquoVEk.mjs +10 -0
  82. package/build/node/esm/CG8a93kgahRemVJe.mjs +10 -0
  83. package/build/node/esm/CN45di2IcbM8P0Qu.mjs +10 -0
  84. package/build/node/esm/CNOiP4baOWSizP6F.mjs +1070 -0
  85. package/build/node/esm/CPv7OpinaYcwbA_W.mjs +10 -0
  86. package/build/node/esm/CVAFJAiy4lznWzaG.mjs +10 -0
  87. package/build/node/esm/CZd8SSXlusZy49FM.mjs +10 -0
  88. package/build/node/esm/CZw7SgmfxSHhZZe0.mjs +10 -0
  89. package/build/node/esm/Cdjab80o1WocCHgN.mjs +13 -0
  90. package/build/node/esm/CfWoSrOmaP9LrFja.mjs +466 -0
  91. package/build/node/esm/CnaBpzYiURAKhAxF.mjs +825 -0
  92. package/build/node/esm/Cp5ea9Hpxse8B4mC.mjs +10 -0
  93. package/build/node/esm/DH_fbhyW3PwE1rYa.mjs +10 -0
  94. package/build/node/esm/DNHqdv3-ufdcF5zc.mjs +20 -0
  95. package/build/node/esm/DS4xBjO2TN0rQ1lJ.mjs +10 -0
  96. package/build/node/esm/DTM0pK30PrZRsXYw.mjs +10 -0
  97. package/build/node/esm/DlFgt0KLeXDowatv.mjs +10 -0
  98. package/build/node/esm/ERMewE78C__HUblm.mjs +10 -0
  99. package/build/node/esm/GTFYlX2Atw10TdFe.mjs +86 -0
  100. package/build/node/esm/Qib5_XvQHWOPzGrm.mjs +10 -0
  101. package/build/node/esm/gTh1PiesKrQblf8O.mjs +10 -0
  102. package/build/node/esm/g_p1uVDePbDJJ4nX.mjs +10 -0
  103. package/build/node/esm/index.mjs +23412 -0
  104. package/build/package.json +58 -0
  105. package/build/types/index.d.ts +20624 -0
  106. package/package.json +85 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const e = { BIN2DEC: { s: "Converts a binary number to decimal", p: { number: { d: "is the binary number you want to convert" } } }, BIN2HEX: { s: "Converts a binary number to hexadecimal", p: { number: { d: "is the binary number you want to convert" }, places: { d: "is the number of characters to use" } } }, BIN2OCT: { s: "Converts a binary number to octal", p: { number: { d: "is the binary number you want to convert" }, places: { d: "is the number of characters to use" } } }, BITAND: { s: "Returns a bitwise 'And' of two numbers", p: { number1: { d: "is the decimal representation of the binary number you want to evaluate" }, number2: { d: "is the decimal representation of the binary number you want to evaluate" } } }, BITLSHIFT: { s: "Returns a number shifted left by shift_amount bits", p: { number: { d: "is the decimal representation of the binary number you want to evaluate" }, shiftAmount: { d: "is the number of bits that you want to shift Number left by" } } }, BITOR: { s: "Returns a bitwise 'Or' of two numbers", p: { number1: { d: "is the decimal representation of the binary number you want to evaluate" }, number2: { d: "is the decimal representation of the binary number you want to evaluate" } } }, BITRSHIFT: { s: "Returns a number shifted right by shift_amount bits", p: { number: { d: "is the decimal representation of the binary number you want to evaluate" }, shiftAmount: { d: "is the number of bits that you want to shift Number left by" } } }, BITXOR: { s: "Returns a bitwise 'Exclusive Or' of two numbers", p: { number1: { d: "is the decimal representation of the binary number you want to evaluate" }, number2: { d: "is the decimal representation of the binary number you want to evaluate" } } }, DEC2BIN: { s: "Converts a decimal number to binary", p: { number: { d: "is the decimal integer you want to convert" }, places: { d: "is the number of characters to use" } } }, DEC2HEX: { s: "Converts a decimal number to hexadecimal", p: { number: { d: "is the decimal integer you want to convert" }, places: { d: "is the number of characters to use" } } }, DEC2OCT: { s: "Converts a decimal number to octal", p: { number: { d: "is the decimal integer you want to convert" }, places: { d: "is the number of characters to use" } } }, HEX2BIN: { s: "Converts a Hexadecimal number to binary", p: { number: { d: "is the hexadecimal number you want to convert" }, places: { d: "is the number of characters to use" } } }, HEX2DEC: { s: "Converts a hexadecimal number to decimal", p: { number: { d: "is the hexadecimal number you want to convert" } } }, HEX2OCT: { s: "Converts a hexadecimal number to octal", p: { number: { d: "is the hexadecimal number you want to convert" }, places: { d: "is the number of characters to use" } } }, OCT2BIN: { s: "Converts an octal number to binary", p: { number: { d: "is the octal number you want to convert" }, places: { d: "is the number of characters to use" } } }, OCT2DEC: { s: "Converts an octal number to decimal", p: { number: { d: "is the octal number you want to convert" } } }, OCT2HEX: { s: "Converts an octal number to hexadecimal", p: { number: { d: "is the octal number you want to convert" }, places: { d: "is the number of characters to use" } } } };
8
+ export {
9
+ e as default
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const e = { ACOS: { s: "Returns the arccosine of a number, in radians in the range 0 to Pi. The arccosine is the angle whose cosine is Number", p: { number: { d: "is the cosine of the angle you want and must be from -1 to 1" } } }, ACOSH: { s: "Returns the inverse hyperbolic cosine of a number", p: { number: { d: "is any real number equal to or greater than 1" } } }, ACOT: { s: "Returns the arccotangent of a number, in radians in the range 0 to Pi.", p: { number: { d: "is the cotangent of the angle you want" } } }, ACOTH: { s: "Returns the inverse hyperbolic cotangent of a number", p: { number: { d: "is the hyperbolic cotangent of the angle that you want" } } }, ASIN: { s: "Returns the arcsine of a number in radians, in the range -Pi/2 to Pi/2", p: { number: { d: "is the sine of the angle you want and must be from -1 to 1" } } }, ASINH: { s: "Returns the inverse hyperbolic sine of a number", p: { number: { d: "is any real number equal to or greater than 1" } } }, ATAN: { s: "Returns the arctangent of a number in radians, in the range -Pi/2 to Pi/2", p: { number: { d: "is the tangent of the angle you want" } } }, ATAN2: { s: "Returns the arctangent of the specified x- and y- coordinates, in radians between -Pi and Pi, excluding -Pi", p: { x: { d: "is the x-coordinate of the point" }, y: { d: "is the y-coordinate of the point" } } }, ATANH: { s: "Returns the inverse hyperbolic tangent of a number", p: { number: { d: "is any real number between -1 and 1 excluding -1 and 1" } } }, COS: { s: "Returns the cosine of an angle", p: { number: { d: "is the angle in radians for which you want the cosine" } } }, COSH: { s: "Returns the hyperbolic cosine of a number", p: { number: { d: "is any real number" } } }, COT: { s: "Returns the cotangent of an angle", p: { number: { d: "is the angle in radians for which you want the cotangent" } } }, COTH: { s: "Returns the hyperbolic cotangent of a number", p: { number: { d: "is the angle in radians for which you want the hyperbolic cotangent" } } }, CSC: { s: "Returns the cosecant of an angle", p: { number: { d: "is the angle in radians for which you want the cosecant" } } }, CSCH: { s: "Returns the hyperbolic cosecant of an angle", p: { number: { d: "is the angle in radians for which you want the hyperbolic cosecant" } } }, SEC: { s: "Returns the secant of an angle", p: { number: { d: "is the angle in radians for which you want the secant" } } }, SECH: { s: "Returns the hyperbolic secant of an angle", p: { number: { d: "is the angle in radians for which you want the hyperbolic secant" } } }, SIN: { s: "Returns the sine of an angle", p: { number: { d: "is the angle in radians for which you want the sine. Degrees * PI()/180 = radians" } } }, SINH: { s: "Returns the hyperbolic sine of a number", p: { number: { d: "is any real number" } } }, TAN: { s: "Returns the tangent of an angle", p: { number: { d: "is the angle in radians for which you want the tangent. Degrees * PI()/180 = radians" } } }, TANH: { s: "Returns the hyperbolic tangent of a number", p: { number: { d: "is any real number" } } } };
8
+ export {
9
+ e as default
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const e = { DATE: { s: "Returns the number that represents the date in Microsoft Excel date-time code", p: { year: { d: "is a number from 1900 or 1904 (depending on the workbook's date system) to 9999" }, month: { d: "is a number from 1 to 12 representing the month of the year" }, day: { d: "is a number from 1 to 31 representing the day of the month" } } }, DATEDIF: { s: "Returns the number of days between two dates", p: { startDate: { d: "is a serial date number that represents the start date" }, endDate: { d: "is a serial date number that represents the end date" }, unit: { d: "is a string that specifies the unit of time to use" } }, h: "Legacy" }, DATESTRING: { s: "Returns NA.", p: { number: { d: "is a number that is ignored" } }, h: "Legacy" }, DATEVALUE: { s: "Converts a date in the form of text to a number that represents the date in Microsoft Excel date-time code", p: { dateText: { d: "is text that represents a date in a Microsoft Excel date format, between 1/1/1900 or 1/1/1904 (depending on the workbook's date system) and 12/31/9999" } } }, DAY: { s: "Returns the day of the month, a number from 1 to 31.", p: { serialOrString: { d: "is a number in the date-time code used by Excel or text in time format, such as 16:48:00 or 4:48:00 PM" } } }, DAYS: { s: "Returns the number of days between the two dates.", p: { endDate: { d: "start_date and end_date are the two dates between which you want to know the number of days" }, startDate: { d: "start_date and end_date are the two dates between which you want to know the number of days" } } }, DAYS360: { s: "Returns the number of days between two dates based on a 360-day year (twelve 30-day months)", p: { startDate: { d: "start_date and end_date are the two dates between which you want to know the number of days" }, endDate: { d: "start_date and end_date are the two dates between which you want to know the number of days" }, method: { d: "is a logical value specifying the calculation method: U.S. (NASD) = FALSE; European = TRUE.", v: false } } }, EDATE: { s: "Returns the serial number of the date that is the indicated number of months before or after the start date", p: { startDate: { d: "is a serial date number that represents the start date" }, months: { d: "is the number of months before or after start_date" } } }, EOMONTH: { s: "Returns the serial number of the last day of the month before or after a specified number of months", p: { startDate: { d: "is a serial date number that represents the start date" }, months: { d: "is the number of months before or after the start_date" } } }, HOUR: { s: "Returns the hour as a number from 0 (12:00 A.M.) to 23 (11:00 P.M.).", p: { serialOrString: { d: "is a number in the date-time code used by Excel or text in time format, such as 16:48:00 or 4:48:00 PM" } } }, ISOWEEKNUM: { s: "Returns the ISO week number in the year for a given date", p: { serialOrString: { d: "is a number in the date-time code used by Excel or text in time format, such as 16:48:00 or 4:48:00 PM" } } }, MINUTE: { s: "Returns the minute, a number from 0 to 59.", p: { serialOrString: { d: "is a number in the date-time code used by Excel or text in time format, such as 16:48:00 or 4:48:00 PM" } } }, MONTH: { s: "Returns the month, a number from 1 (January) to 12 (December).", p: { serialOrString: { d: "is a number in the date-time code used by Excel" } } }, NETWORKDAYS: { s: "Returns the number of whole workdays between two dates", p: { startDate: { d: "is a serial date number that represents the start date" }, endDate: { d: "is a serial date number that represents the end date" }, holidays: { d: "is an optional set of one or more serial date numbers to exclude from the working calendar, such as state and federal holidays and floating holidays", v: null } } }, "NETWORKDAYS.INTL": { s: "Returns the number of whole workdays between two dates with custom weekend parameters", p: { startDate: { d: "is a serial date number that represents the start date" }, endDate: { d: "is a serial date number that represents the end date" }, weekend: { d: "is a number or string specifying when weekends occur", v: 1 }, holidays: { d: "is an optional set of one or more serial date numbers to exclude from the working calendar, such as state and federal holidays and floating holidays", v: null } } }, NOW: { s: "Returns the current date and time formatted as a date and time.", p: {} }, SECOND: { s: "Returns the second, a number from 0 to 59.", p: { serialOrString: { d: "is a number in the date-time code used by Excel or text in time format, such as 16:48:23 or 4:48:47 PM" } } }, TIME: { s: "Converts hours, minutes, and seconds given as numbers to an Excel serial number, formatted with a time format", p: { hour: { d: "is a number from 0 to 23 representing the hour" }, minute: { d: "is a number from 0 to 59 representing the minute" }, second: { d: "is a number from 0 to 59 representing the second" } } }, TIMEVALUE: { s: "Converts a text time to an Excel serial number for a time, a number from 0 (12:00:00 AM) to 0.999988426 (11:59:59 PM). Format the number with a time format after entering the formula", p: { timeText: { d: "is a text string that gives a time in any one of the Excel time formats (date information in the string is ignored)" } } }, TODAY: { s: "Returns the current date formatted as a date.", p: {} }, WEEKDAY: { s: "Returns a number from 1 to 7 identifying the day of the week of a date.", p: { serialOrString: { d: "is a number that represents a date" }, returnType: { d: "is a number: for Sunday=1 through Saturday=7, use 1; for Monday=1 through Sunday=7, use 2; for Monday=0 through Sunday=6, use 3", v: 1 } } }, WEEKNUM: { s: "Returns the week number in the year", p: { serialOrString: { d: "is the date-time code used by Excel for date and time calculation" }, returnType: { d: "is a number (1 or 2) that determines the type of the return value", v: 1 } } }, WORKDAY: { s: "Returns the serial number of the date before or after a specified number of workdays", p: { startDate: { d: "is a serial date number that represents the start date" }, days: { d: "is the number of nonweekend and non-holiday days before or after start_date" }, holidays: { d: "is an optional array of one or more serial date numbers to exclude from the working calendar, such as state and federal holidays and floating holidays", v: null } } }, "WORKDAY.INTL": { s: "Returns the serial number of the date before or after a specified number of workdays with custom weekend parameters", p: { startDate: { d: "is a serial date number that represents the start date" }, days: { d: "is the number of nonweekend and non-holiday days before or after start_date" }, weekend: { d: "is a number or string specifying when weekends occur", v: 1 }, holidays: { d: "is an optional array of one or more serial date numbers to exclude from the working calendar, such as state and federal holidays and floating holidays", v: null } } }, YEAR: { s: "Returns the year of a date, an integer in the range 1900 - 9999.", p: { serialOrString: { d: "is a number in the date-time code used by Excel" } } }, YEARFRAC: { s: "Returns the year fraction representing the number of whole days between start_date and end_date", p: { startDate: { d: "is a serial date number that represents the start date" }, endDate: { d: "is a serial date number that represents the end date" }, basis: { d: "is the type of day count basis to use", v: 0 } } } };
8
+ export {
9
+ e as default
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const e = { DELTA: { s: "Tests whether two numbers are equal", p: { number1: { d: "is the first number" }, number2: { d: "is the second number", v: 0 } } }, GESTEP: { s: "Tests whether a number is greater than a threshold value", p: { number: { d: "is the value to test against step" }, step: { d: "is the threshold value", v: 0 } } } };
8
+ export {
9
+ e as default
10
+ };
@@ -0,0 +1,86 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ /**
8
+ * @license @sheetxl/scripting - SheetXL scripting utilities including TypeScript compilation. - v0.0.0
9
+ *
10
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
11
+ * License: The license can be found at https://www.sheetxl.com/license.
12
+ */
13
+ let n = class {
14
+ constructor(n2) {
15
+ this._worker = null, this._nextId = 1, this._pendingRequests = /* @__PURE__ */ new Map(), this._workerFactory = n2;
16
+ }
17
+ start() {
18
+ if (typeof Worker > "u") throw new Error("Web Workers are not supported in this environment.");
19
+ return this._worker || (this._worker = this._workerFactory(), this._worker.onmessage = (n2) => {
20
+ const { id: e2, result: t2, error: r2 } = n2.data, o2 = this._pendingRequests.get(e2);
21
+ if (o2) if (this._pendingRequests.delete(e2), r2) {
22
+ const n3 = new Error(r2.message);
23
+ n3.stack = r2.stack, r2.cause && (n3.cause = r2.cause), o2.reject(n3);
24
+ } else o2.resolve(t2);
25
+ }, this._worker.onerror = (n2) => {
26
+ console.error("Worker error:", n2), this._pendingRequests.forEach((e2) => {
27
+ e2.reject(new Error(`Worker failed: ${n2.message}`));
28
+ }), this._pendingRequests.clear(), this._worker = null;
29
+ }), Promise.resolve();
30
+ }
31
+ execute(n2) {
32
+ if (!this._worker) throw new Error("Worker is not initialized. Call start() first.");
33
+ const e2 = this._nextId++;
34
+ return new Promise((t2, r2) => {
35
+ this._pendingRequests.set(e2, { resolve: t2, reject: r2 }), this._worker.postMessage({ id: e2, params: n2 });
36
+ });
37
+ }
38
+ terminate() {
39
+ this._worker && (this._worker.terminate(), this._worker = null);
40
+ }
41
+ };
42
+ class e {
43
+ constructor(n2) {
44
+ this._onExecute = n2;
45
+ }
46
+ execute(n2) {
47
+ return this._onExecute(n2);
48
+ }
49
+ start() {
50
+ return Promise.resolve();
51
+ }
52
+ terminate() {
53
+ }
54
+ }
55
+ const t = '/**\n * @license @sheetxl/primitives - Primitive - Base types for SheetXL functions. - v0.0.0\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst W = { Number: "n", String: "s", Boolean: "b", Error: "e", Null: "z" };\nvar Re, ae, d;\n(ae = Re || (Re = {})).Orientation = { Column: "column", Row: "row" }, ae.Orientations = { ...ae.Orientation, Both: "both" }, ae.Direction = { Up: "up", Down: "down", Left: "left", Right: "right" }, ((e) => {\n e.Code = { Parse: 0, Null: 1, Div0: 2, Value: 3, Ref: 4, Name: 5, Num: 6, NA: 7, GettingData: 8, Spill: 9, Connect: 10, Blocked: 11, Unknown: 12, Field: 13, Calc: 14, Busy: 16, Python: 19, Timeout: 20 }, e.Label = { Parse: "#PARSE!", Null: "#NULL!", Div0: "#DIV/0!", Value: "#VALUE!", Ref: "#REF!", Name: "#NAME?", Num: "#NUM!", NA: "#N/A", GettingData: "#GETTING_DATA", Spill: "#SPILL!", Connect: "#CONNECT!", Blocked: "#BLOCKED!", Unknown: "#UNKNOWN!", Field: "#FIELD!", Calc: "#CALC!", Busy: "#BUSY!", Python: "#PYTHON!", Timeout: "#TIMEOUT!" };\n class t extends Error {\n constructor(c, m, fe, B) {\n super(fe, B), this._label = m, this._code = c, this.details = B;\n }\n static {\n this.code = e.Code.Unknown;\n }\n get isFormulaError() {\n return !0;\n }\n getLabel() {\n return this._label;\n }\n getCode() {\n return this._code;\n }\n equals(c) {\n return !!c && (this._code === c._code || this._code === c.code);\n }\n get [Symbol.toStringTag]() {\n return "[FormulaError]";\n }\n toString() {\n return this.message || this._label;\n }\n }\n e.Known = t;\n class r extends t {\n constructor(c, m) {\n super(e.Code.Parse, e.Label.Parse, c, m);\n }\n static {\n this.code = e.Code.Parse;\n }\n getDetails() {\n const c = this.details;\n return { line: c?.line ?? 1, column: c?.column ?? 1, offset: c?.offset ?? 0, length: c?.length ?? 0 };\n }\n }\n e.Parse = r;\n class n extends t {\n constructor(c, m) {\n super(e.Code.Null, e.Label.Null, c, m);\n }\n static {\n this.code = e.Code.Null;\n }\n }\n e.Null = n;\n class o extends t {\n constructor(c, m) {\n super(e.Code.Div0, e.Label.Div0, c, m);\n }\n static {\n this.code = e.Code.Div0;\n }\n }\n e.Div0 = o;\n class i extends t {\n constructor(c, m) {\n super(e.Code.Value, e.Label.Value, c, m);\n }\n static {\n this.code = e.Code.Value;\n }\n }\n e.Value = i;\n class a extends t {\n constructor(c, m) {\n super(e.Code.Ref, e.Label.Ref, c, m);\n }\n static {\n this.code = e.Code.Ref;\n }\n }\n e.Ref = a;\n class l extends t {\n constructor(c, m) {\n super(e.Code.Name, e.Label.Name, c, m);\n }\n static {\n this.code = e.Code.Name;\n }\n }\n e.Name = l;\n class u extends t {\n constructor(c, m) {\n super(e.Code.Num, e.Label.Num, c, m);\n }\n static {\n this.code = e.Code.Num;\n }\n }\n e.Num = u;\n class f extends t {\n constructor(c, m) {\n super(e.Code.NA, e.Label.NA, c, m);\n }\n static {\n this.code = e.Code.NA;\n }\n }\n e.NA = f;\n class h extends t {\n constructor(c, m) {\n super(e.Code.GettingData, e.Label.GettingData, c, m);\n }\n static {\n this.code = e.Code.GettingData;\n }\n }\n e.GettingData = h;\n class g extends t {\n constructor(c, m) {\n super(e.Code.Spill, e.Label.Spill, c, m);\n }\n static {\n this.code = e.Code.Spill;\n }\n }\n e.Spill = g;\n class p extends t {\n constructor(c, m) {\n super(e.Code.Connect, e.Label.Connect, c, m);\n }\n static {\n this.code = e.Code.Connect;\n }\n }\n e.Connect = p;\n class y extends t {\n constructor(c, m) {\n super(e.Code.Blocked, e.Label.Blocked, c, m);\n }\n static {\n this.code = e.Code.Blocked;\n }\n }\n e.Blocked = y;\n class T extends t {\n constructor(c, m) {\n super(e.Code.Unknown, e.Label.Unknown, c, m);\n }\n static {\n this.code = e.Code.Unknown;\n }\n }\n e.Unknown = T;\n class A extends t {\n constructor(c, m) {\n super(e.Code.Field, e.Label.Field, c, m);\n }\n static {\n this.code = e.Code.Field;\n }\n }\n e.Field = A;\n class D extends t {\n constructor(c, m) {\n super(e.Code.Calc, e.Label.Calc, c, m);\n }\n static {\n this.code = e.Code.Calc;\n }\n }\n e.Calc = D;\n class U extends t {\n constructor(c, m) {\n super(e.Code.Busy, e.Label.Busy, c, m);\n }\n static {\n this.code = e.Code.Busy;\n }\n }\n e.Busy = U;\n class I extends t {\n constructor(c, m) {\n super(e.Code.Python, e.Label.Python, c, m);\n }\n static {\n this.code = e.Code.Python;\n }\n }\n e.Python = I;\n class J extends t {\n constructor(c, m) {\n super(e.Code.Timeout, e.Label.Timeout, c, m);\n }\n static {\n this.code = e.Code.Timeout;\n }\n }\n e.Timeout = J;\n})(d || (d = {}));\nconst _ = {};\n_[d.Code.Parse] = d.Parse, _[d.Code.Null] = d.Null, _[d.Code.Div0] = d.Div0, _[d.Code.Value] = d.Value, _[d.Code.Ref] = d.Ref, _[d.Code.Name] = d.Name, _[d.Code.Num] = d.Num, _[d.Code.NA] = d.NA, _[d.Code.GettingData] = d.GettingData, _[d.Code.Spill] = d.Spill, _[d.Code.Connect] = d.Connect, _[d.Code.Blocked] = d.Blocked, _[d.Code.Unknown] = d.Unknown, _[d.Code.Field] = d.Field, _[d.Code.Calc] = d.Calc, _[d.Code.Busy] = d.Busy, _[d.Code.Python] = d.Python, _[d.Code.Timeout] = d.Timeout;\nconst et = /* @__PURE__ */ new Map(), Te = /* @__PURE__ */ new Map(), tt = /* @__PURE__ */ new Map(), rt = /* @__PURE__ */ new Map(), ke = Object.keys(_);\nfor (let e = 0; e < ke.length; e++) {\n const t = ke[e], r = _[t];\n tt.set(d.Label[t], r), rt.set(d.Code[t], r);\n const n = new r();\n et.set(n.getLabel(), n), Te.set(n.getCode(), n);\n}\nconst Et = Te.get(d.Code.Unknown);\nvar v;\n(v = d || (d = {})).BuiltIn = { Parse: new v.Parse(), Null: new v.Null(), Div0: new v.Div0(), Value: new v.Value(), Ref: new v.Ref(), Name: new v.Name(), Num: new v.Num(), NA: new v.NA(), GettingData: new v.GettingData(), Spill: new v.Spill(), Connect: new v.Connect(), Blocked: new v.Blocked(), Unknown: new v.Unknown(), Field: new v.Field(), Calc: new v.Calc(), Busy: new v.Busy(), Python: new v.Python(), Timeout: new v.Timeout() }, v.getBuiltInByLabel = (e) => et.get(e), v.newTypedError = (e, t, r) => {\n let n;\n return n = typeof e == "string" ? tt.get(e) : rt.get(e), n || (n = v.Unknown), new n(t, r);\n}, v.getBuiltInById = (e) => Te.get(e) || Et;\n/**\n * @license @sheetxl/utils - Utils - Utilities used by most SheetXL components. - v0.1.93\n *\n * (C) 2025-present SheetXL Inc. & Michael T. Ford\n * License: The license can be found at https://www.sheetxl.com/license.\n */\nconst S = { html: "text/html", plain: "text/plain", png: "image/png" }, St = Object.freeze({ left: 0, top: 0 }), xt = Object.freeze({ left: 0, top: 0, bottom: 0, right: 0 }), Ct = Object.freeze({ x: 0, y: 0, width: 0, height: 0 });\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyBounds: Ct, EmptyRect: xt, EmptyTopLeft: St }, Symbol.toStringTag, { value: "Module" }));\nconst j = { Column: "column", Row: "row" }, vt = Object.freeze({ colIndex: 0, rowIndex: 0 }), Tt = Object.freeze({ colStart: 0, rowStart: 0, colEnd: 0, rowEnd: 0 }), nt = (e, t) => e.colStart === t.colStart ? e.rowStart - t.rowStart : e.colStart - t.colStart, ot = (e, t) => e.rowStart === t.rowStart ? e.colStart - t.colStart : e.rowStart - t.rowStart, _t = (e, t) => e.rowEnd === t.rowEnd ? t.colEnd - e.colEnd : t.rowEnd - e.rowEnd, Ot = (e, t) => e.colEnd === t.colEnd ? t.rowEnd - e.rowEnd : t.colEnd - e.colEnd, Le = (e, t) => e.colIndex === t.colIndex ? e.rowIndex - t.rowIndex : e.colIndex - t.colIndex, Ae = (e, t) => e.rowIndex === t.rowIndex ? e.colIndex - t.colIndex : e.rowIndex - t.rowIndex, it = (e = j.Row, t = !1) => t ? e !== j.Column ? _t : Ot : e !== j.Column ? ot : nt, Me = (e, t) => e === t || !(!e || !t) && e.rowIndex === t.rowIndex && e.colIndex === t.colIndex, Se = (e, t) => e === t || !(!e || !t) && e.rowStart === t.rowStart && e.rowEnd === t.rowEnd && e.colStart === t.colStart && e.colEnd === t.colEnd, xe = (e, t) => !(!e || !t) && !(e.colStart > t.colEnd || t.colStart > e.colEnd) && !(e.rowStart > t.rowEnd || t.rowStart > e.rowEnd), je = (e, t) => {\n if (e === t) return !0;\n if (!e || !t || e.length !== t.length) return !1;\n for (let r = 0; r < e.length; r++) if (!Se(e[r], t[r])) return !1;\n return !0;\n}, he = (e, t, r) => {\n if (!e && !t) return null;\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n const n = Math.min(e.colStart, t.colStart), o = Math.min(e.rowStart, t.rowStart), i = Math.max(e.colEnd, t.colEnd), a = Math.max(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, Pe = (e, t) => {\n if (!t || t.length === 0) return e;\n const r = { ...e };\n for (let n = 0; n < t.length; n++) {\n const o = t[n];\n xe(r, o) && (r.rowStart = Math.min(r.rowStart, o.rowStart), r.colStart = Math.min(r.colStart, o.colStart), r.rowEnd = Math.max(r.rowEnd, o.rowEnd), r.colEnd = Math.max(r.colEnd, o.colEnd));\n }\n return r;\n}, It = [null, null], Nt = (e, t, r) => {\n if (e[0].value === e[1].value) return t;\n};\nfunction Fe(e, t = 2, r, n = j.Row, o) {\n let i = [...e];\n if (t <= 0 || e.length <= 1) return i;\n let a = n === j.Column, l = 0, u = !1;\n do {\n const f = i.sort(it(a ? j.Row : j.Column));\n i = [], i.push(f[0]);\n const h = f.length;\n let g = 0, p = f[0], y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n for (let U = 1; U < h; U++) {\n const I = f[U];\n let J = !1;\n if (J = a ? p && T === I.rowStart && D === I.rowEnd && A + 1 === I.colStart : p && y === I.colStart && A === I.colEnd && D + 1 === I.rowStart, J) {\n let E = { colStart: y, rowStart: T, colEnd: a ? I.colEnd : A, rowEnd: a ? D : I.rowEnd };\n if (p.value !== void 0 && (E.value = p.value), r) {\n const c = o ?? [null, null];\n c[0] = p, c[1] = I, E = r(c, E, n);\n }\n if (E) {\n i[g] = E, u = !0, p = E, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n continue;\n }\n }\n i[++g] = I, p = I, y = p.colStart, T = p.rowStart, A = p.colEnd, D = p.rowEnd;\n }\n l++, a = !a, l === 1 && (u = !0);\n } while (l < t && u && i.length > 1);\n return i;\n}\nObject.freeze(Object.defineProperty({ __proto__: null, EmptyCell: vt, EmptyRange: Tt, cellToRange: (e, t) => {\n if (!e) return null;\n let r = t;\n return r || (r = { ...e }, delete r.colIndex, delete r.rowIndex), r.colStart = e.colIndex ?? 0, r.rowStart = e.rowIndex ?? 0, r.colEnd = e.colIndex ?? 0, r.rowEnd = e.rowIndex ?? 0, r;\n}, columnFirstCellComparator: Le, columnFirstRangeComparator: nt, createCellComparator: (e = j.Row, t = !1) => t ? e !== j.Column ? (r, n) => r.rowIndex === n.rowIndex ? n.colIndex - r.colIndex : n.rowIndex - r.rowIndex : (r, n) => r.colIndex === n.colIndex ? n.rowIndex - r.rowIndex : n.colIndex - r.colIndex : e !== j.Column ? Ae : Le, createConflatingRanges: (e, t = !1) => {\n const r = [];\n let n, o, i = Number.MIN_SAFE_INTEGER, a = Number.MIN_SAFE_INTEGER;\n return { append: (l, u, f) => {\n let h = !0;\n const g = f !== void 0;\n if (g) {\n const T = e ? e(o, f, t) : o === f ? f : void 0;\n T === void 0 ? h = !1 : f = T;\n }\n if (h && u === a + 1 && l === i) return t ? n.rowEnd = u : n.colEnd = u, a = u, void (o = f);\n n && r.push(n);\n const p = t ? l : u, y = t ? u : l;\n n = { colStart: p, rowStart: y, colEnd: p, rowEnd: y }, g && (n.value = f), i = l, a = u, o = f;\n }, done: (l) => (n && (r.push(n), n = null), l ? Fe(r, 3, l === !0 ? Nt : l, t ? j.Column : j.Row, It) : r) };\n}, createRangeComparator: it, defaultRange: (e, t, r) => e ? r ? (r.colStart = e.colStart ?? t.colStart, r.rowStart = e.rowStart ?? t.rowStart, r.colEnd = e.colEnd ?? t.colEnd, r.rowEnd = e.rowEnd ?? t.rowEnd, r) : { colStart: e.colStart ?? t.colStart, rowStart: e.rowStart ?? t.rowStart, colEnd: e.colEnd ?? t.colEnd, rowEnd: e.rowEnd ?? t.rowEnd } : t, extendRangeToIntersectingRanges: Pe, extendRangeToUnionRanges: (e, t) => {\n if (!t || t.length === 0) return e;\n let r = e, n = null;\n for (; !Se(r, n); ) n = r, r = Pe(n, t);\n return r;\n}, indexOfCoords: (e, t) => {\n const r = { colStart: e.colIndex, rowStart: e.rowIndex, colEnd: e.colIndex, rowEnd: e.rowIndex };\n for (let n = t.length - 1; n >= 0; n--) if (xe(r, t[n])) return n;\n return -1;\n}, intersectRanges: (e, t, r) => {\n if (!e) return r ? t : { ...t };\n if (!t) return r ? e : { ...e };\n if (!e && !t || e.rowStart > t.rowEnd || e.rowEnd < t.rowStart || e.colStart > t.colEnd || e.colEnd < t.colStart) return null;\n const n = Math.max(e.colStart, t.colStart), o = Math.max(e.rowStart, t.rowStart), i = Math.min(e.colEnd, t.colEnd), a = Math.min(e.rowEnd, t.rowEnd);\n let l = r;\n return l ? (l.colStart = n, l.rowStart = o, l.colEnd = i, l.rowEnd = a) : l = { colStart: n, rowStart: o, colEnd: i, rowEnd: a }, l;\n}, isCellWithinRange: (e, t) => !(!e || !t) && !(e.rowIndex < t.rowStart || e.rowIndex > t.rowEnd) && !(e.colIndex < t.colStart || e.colIndex > t.colEnd), isEqualCells: Me, isEqualRanges: Se, isEqualRangesArrays: je, isEqualSelectionCoords: (e, t) => e === t || !(!e || !t) && e.rangeIndex === t.rangeIndex && !!Me(e.cell, t.cell) && je(e.ranges, t.ranges), isRangeWithinRange: (e, t) => !(e.rowStart < t.rowStart || e.rowEnd > t.rowEnd) && !(e.colStart < t.colStart || e.colEnd > t.colEnd), isRangesIntersect: xe, isSingleCell: (e) => !!e && e.rowEnd === e.rowStart && e.colStart === e.colEnd, isValidRange: (e) => !!e && !(typeof e.colStart != "number" || e.colStart < 0) && !(typeof e.colEnd != "number" || e.colEnd < e.colStart) && !(typeof e.rowStart != "number" || e.rowStart < 0) && !(typeof e.rowEnd != "number" || e.rowEnd < e.rowStart), mergeRangedValues: Fe, rowFirstCellComparator: Ae, rowFirstRangeComparator: ot, sanitizeRange: (e) => e ? { colStart: e.colIndex ?? e.colStart ?? 0, rowStart: e.rowIndex ?? e.rowStart ?? 0, colEnd: e.colIndex ?? e.colEnd ?? 0, rowEnd: e.rowIndex ?? e.rowEnd ?? 0 } : null, translateRange: (e, t = -e.rowStart, r = -e.colStart, n) => n ? (n.colStart = e.colStart + r, n.rowStart = e.rowStart + t, n.colEnd = e.colEnd + r, n.rowEnd = e.rowEnd + t, n) : { colStart: e.colStart + r, rowStart: e.rowStart + t, colEnd: e.colEnd + r, rowEnd: e.rowEnd + t }, unionRanges: he, unionRangesArrays: (e, t, r) => {\n if (!e || e.length === 0) return null;\n if (e.length === 1 && !t) return e[0];\n let n = e[0];\n for (let o = 1; o < e.length; o++) n = he(n, e[o], r);\n return t && (n = he(n, t, r)), n;\n} }, Symbol.toStringTag, { value: "Module" }));\nfunction Rt(e) {\n const t = Object.prototype.toString.call(e);\n return t === "[object RegExp]" || t === "[object Date]" || function(r) {\n return r.$$typeof === kt;\n }(e);\n}\nconst kt = typeof Symbol == "function" && Symbol.for ? Symbol.for("react.element") : 60103;\nfunction Lt(e) {\n return /* @__PURE__ */ function(t) {\n return !!t && typeof t == "object";\n }(e) && !Rt(e);\n}\nfunction ne(e, t) {\n return t.clone !== !1 && t.isMergeableObject(e) ? Y((r = e, Array.isArray(r) ? [] : {}), e, t) : e;\n var r;\n}\nfunction At(e, t, r) {\n return e.concat(t).map(function(n) {\n return ne(n, r);\n });\n}\nfunction De(e) {\n return Object.keys(e).concat(function(t) {\n return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(t).filter(function(r) {\n return Object.propertyIsEnumerable.call(t, r);\n }) : [];\n }(e));\n}\nfunction Ue(e, t) {\n try {\n return t in e;\n } catch {\n return !1;\n }\n}\nfunction Mt(e, t, r) {\n const n = {};\n return r.isMergeableObject(e) && De(e).forEach(function(o) {\n n[o] = ne(e[o], r);\n }), De(t).forEach(function(o) {\n (function(i, a) {\n return Ue(i, a) && !(Object.hasOwnProperty.call(i, a) && Object.propertyIsEnumerable.call(i, a));\n })(e, o) || (Ue(e, o) && r.isMergeableObject(t[o]) ? n[o] = function(i, a) {\n if (!a.customMerge) return Y;\n const l = a.customMerge(i);\n return typeof l == "function" ? l : Y;\n }(o, r)(e[o], t[o], r) : n[o] = ne(t[o], r));\n }), n;\n}\nfunction Y(e, t, r) {\n (r = r || {}).arrayMerge = r.arrayMerge || At, r.isMergeableObject = r.isMergeableObject || Lt, r.cloneUnlessOtherwiseSpecified = ne;\n const n = Array.isArray(t);\n return n === Array.isArray(e) ? n ? r.arrayMerge(e, t, r) : Mt(e, t, r) : ne(t, r);\n}\nY.all = function(e, t) {\n if (!Array.isArray(e)) throw new Error("first argument should be an array");\n return e.reduce(function(r, n) {\n return Y(r, n, t);\n }, {});\n};\nconst jt = Object.freeze([]), Pt = Object.freeze({}), Be = (e) => e, de = () => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {\n let t = 16 * Math.random() | 0;\n return (e === "x" ? t : 3 & t | 8).toString(16);\n}), Ft = (e) => 1 * e, at = (e, t) => e === t || !(!Array.isArray(e) || !Array.isArray(t) || e.length !== t.length) && e.every((r, n) => r === t[n]), re = (e) => typeof e == "object" && !Array.isArray(e) && e !== null, lt = (e) => typeof e != "object" || Array.isArray(e) || e === null ? e : (Object.keys(e).forEach(function(t) {\n e[t] && typeof e[t] == "object" ? lt(e[t]) : e[t] !== null && e[t] !== void 0 || delete e[t], typeof e[t] == "object" && Object.keys(e[t]).length === 0 && delete e[t];\n}), Object.keys(e).length === 0 ? null : e), Dt = (e, t) => !(e !== t && !at(e, t)) || !!e.isEqual?.(t), st = (e, t, r = Dt) => {\n if (e == null || e === t) return null;\n if (!e || typeof e != "object" || Array.isArray(e) || e.isImmutable?.()) return r(e, t) ? null : e;\n const n = Object.keys(e);\n if (n.length === 0) return null;\n let o = !1;\n for (let i = 0; i < n.length; i++) {\n const a = n[i];\n st(e[a], t?.[a], r) === null && (o = !0, delete e[a]);\n }\n return o && Object.keys(e).length === 0 ? null : void 0;\n}, $e = typeof performance == "object" && typeof performance.now == "function" ? () => performance.now() : () => Date.now(), ze = (e) => e == null, Ke = (e, t) => !(t.left > e.right || t.right < e.left || t.top > e.bottom || t.bottom < e.top), Ve = !(typeof window > "u" || !window.document || !window.document.createElement), k = { Windows: "windows", MacOS: "macos", IOS: "ios", Linux: "linux", Android: "android", Safari: "safari", Firefox: "firefox", Node: "node", Unknown: "unknown" }, oe = () => {\n if (ct()) return k.Node;\n const e = globalThis.navigator !== void 0 && globalThis.navigator.userAgent ? globalThis.navigator.userAgent.toLowerCase() : "";\n return e ? /(win32|win64|windows|wince)/i.test(e) ? k.Windows : /(macintosh|macintel|macppc|mac68k|macos)/i.test(e) ? k.MacOS : /(iphone|ipad|ipod)/i.test(e) ? k.IOS : /android/.test(e) ? k.Android : /linux/.test(e) ? k.Linux : /^((?!chrome|android|).)*safari/i.test(e) ? k.Safari : /^((?!chrome|android|Seamonkey).)*firefox/i.test(e) ? k.Firefox : k.Unknown : k.Unknown;\n};\nfunction ct() {\n return typeof process < "u" && process.release?.name === "node" || (typeof process < "u" && process.browser, !1);\n}\nconst qe = (e, t = !1) => (document.hasFocus() || t) && (e === document.activeElement || e?.contains(document.activeElement)), Ut = Object.freeze(Object.defineProperty({ __proto__: null, EmptyArray: jt, EmptyObject: Pt, OSType: k, arrayMove: function(e, t, r) {\n const n = e.slice();\n return n.splice(r < 0 ? n.length + r : r, 0, n.splice(t, 1)[0]), n;\n}, asNumber: (e) => {\n const t = Ft(e);\n return Number.isFinite(t) ? t : 0;\n}, camelToPrettyCase: (e) => e.length === 1 ? e.toUpperCase() : e.replace(/([A-Z])/g, " $1").replace(/^./, function(t) {\n return t.toUpperCase();\n}).trim(), canUseDOM: Ve, cancelTimeout: (e) => {\n cancelAnimationFrame(e.id);\n}, castToString: (e) => e == null || e === void 0 ? "" : typeof e != "string" ? "" + e : e, cloneObject: (e) => ze(e) ? e : JSON.parse(JSON.stringify(e)), consoleWithNoSource: (...e) => new Promise((t) => {\n setTimeout(() => {\n Function("console.log.apply(console, arguments)").apply(null, e), t();\n });\n}), debounce: function(e, t = 300, r = !1) {\n let n, o, i, a, l = 0;\n function u() {\n let h = Date.now() - l;\n h < t && h >= 0 ? n = setTimeout(u, t - h) : (n = null, r || (a = e.apply(i, o), i = o = null));\n }\n t == null && (t = 100);\n const f = function() {\n i = globalThis, o = arguments, l = Date.now();\n var h = r && !n;\n return n || (n = setTimeout(u, t)), h && (a = e.apply(i, o), i = o = null), a;\n };\n return f.clear = function() {\n n && (clearTimeout(n), n = null);\n }, f.flush = function() {\n n && (a = e.apply(i, o), i = o = null, clearTimeout(n), n = null);\n }, f;\n}, deepEqual: function e(t, r) {\n if (t === r) return !0;\n if (t && r && typeof t == "object" && typeof r == "object") {\n if (t.constructor !== r.constructor) return !1;\n let n, o, i;\n if (Array.isArray(t)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (!e(t[o], r[o])) return !1;\n return !0;\n }\n if (t instanceof Map && r instanceof Map) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n for (o of t.entries()) if (!e(o[1], r.get(o[0]))) return !1;\n return !0;\n }\n if (t instanceof Set && r instanceof Set) {\n if (t.size !== r.size) return !1;\n for (o of t.entries()) if (!r.has(o[0])) return !1;\n return !0;\n }\n if (ArrayBuffer.isView(t) && ArrayBuffer.isView(r)) {\n if (n = t.length, n != r.length) return !1;\n for (o = n; o-- !== 0; ) if (t[o] !== r[o]) return !1;\n return !0;\n }\n if (t.constructor === RegExp) return t.source === r.source && t.flags === r.flags;\n if (t.valueOf !== Object.prototype.valueOf) return t.valueOf() === r.valueOf();\n if (t.toString !== Object.prototype.toString) return t.toString() === r.toString();\n if (i = Object.keys(t), n = i.length, n !== Object.keys(r).length) return !1;\n for (o = n; o-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(r, i[o])) return !1;\n for (o = n; o-- !== 0; ) {\n let a = i[o];\n if ((a !== "_owner" || !t.$$typeof) && !e(t[a], r[a])) return !1;\n }\n return !0;\n }\n return t != t && r != r;\n}, deepFreeze: function e(t) {\n return Object.freeze(t), Object.keys(t).forEach((r) => {\n typeof t[r] != "object" || t[r] === null || Object.isFrozen(t[r]) || e(t[r]);\n }), t;\n}, deepMerge: Y, diffValues: (e, t) => {\n const r = {}, n = Object.keys(t), o = n.length;\n for (let i = 0; i < o; i++) {\n const a = n[i];\n e[a] !== t[a] && (e[a] === void 0 ? r[a] = t[a] : r[a] = e[a]);\n }\n return Object.keys(r).length === 0 ? null : r;\n}, findEqualOrGreater: function(e, t, r = Be) {\n let n = 0, o = e.length - 1;\n for (; n <= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a < t ? n = i + 1 : o = i - 1;\n }\n return n;\n}, findEqualOrLesser: function(e, t, r = Be) {\n let n = e.length - 1, o = 0;\n for (; n >= o; ) {\n let i = Math.floor((n + o) / 2), a = r(e[i]);\n if (a === t) return i;\n a > t ? n = i - 1 : o = i + 1;\n }\n return n;\n}, findNextStep: (e, t = !0, r = 15, n = 10, o = 400) => {\n const i = Math.max(e - n, 0) + (t ? 1 : -1);\n return Math.min(o, Math[t ? "ceil" : "floor"](i / r) * r + n);\n}, getBuildEnv: () => "browser2-build", getDPI: () => {\n let e = 1;\n return typeof window == "object" && (e = window.devicePixelRatio || 1), e;\n}, getFromPath: (e, t) => {\n const r = t.split(".");\n let n = e;\n for (let o = 0; o < r.length; o++) {\n const i = r[o];\n if (!n) return null;\n let a = n[i];\n if (typeof a == "function" && (a = a.bind(n)()), !a || !re(a)) return a;\n n = a;\n }\n return n ?? null;\n}, getOS: oe, hasFocus: qe, isDefined: (e) => e != null, isEmpty: (e) => e == null || e === "", isEqualArrays: at, isEqualBounds: (e, t) => e === t || !(e && !t || t && !e) && e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height, isEqualObjectKeys: (e, t) => {\n if (e === t) return !0;\n if (e && !t || t && !e) return !1;\n const r = Object.keys(e);\n if (r.length !== Object.keys(t).length) return !1;\n for (let n = 0; n < r.length; n++) if (e[r[n]] !== t[r[n]]) return !1;\n return !0;\n}, isNode: ct, isNullOrUndefined: ze, isNumeric: (e) => {\n const t = 1 * e;\n return Number.isFinite(t) && typeof t == "number";\n}, isObject: re, isPromiseLike: (e) => !!e && typeof e.then == "function", isRectInsideRect: (e, t) => e.top >= t.top && e.bottom <= t.bottom && e.left >= t.left && e.right <= t.right, isRectIntersect: Ke, mergeContentful: (...e) => {\n const t = e.length;\n if (t > 0 && e[t - 1] !== void 0 && !re(e[t - 1])) return e[t - 1];\n let r = e[0] || {};\n for (let n = 1; n < t; n++) r = Y(r, e[n] || {}, { arrayMerge: (o, i) => [...i] });\n return r;\n}, nextTick: (e) => {\n typeof window < "u" && typeof window.requestAnimationFrame == "function" ? window.requestAnimationFrame(() => {\n e();\n }) : (typeof setImmediate == "function" ? setImmediate : setTimeout)(() => {\n e();\n });\n}, openFileDialog: (e = "*.*") => new Promise((t, r) => {\n if (!Ve) return void r("Unable to open dialog with no dom.");\n const n = document.createElement("input");\n n.type = "file", n.accept = e;\n let o = null, i = !1;\n globalThis.addEventListener?.("focus", () => {\n setTimeout(() => {\n o || i || (i = !0, t(null));\n }, 1e3);\n }, { once: !0, passive: !0 }), n.onchange = () => {\n if (o = n.files[0], o) {\n if (i) return void console.warn("File open detected after faux cancel.", o);\n t(o);\n }\n }, n.autofocus = !0, n.click();\n}), rafThrottle: (e) => {\n let t, r = !1, n = function() {\n r = !1, e(t);\n };\n return function(o) {\n t = o, t && t.persist && t.persist(), r || (r = !0, requestAnimationFrame(n));\n };\n}, removeEmptyProperties: lt, removeEqualValues: st, removeListenerAll: (e) => {\n if (!e) return [];\n for (let t = 0; t < e.length; t++) e[t] && e[t]();\n return [];\n}, requestTimeout: (e, t) => {\n const r = $e(), n = { id: requestAnimationFrame(function o() {\n $e() - r >= t ? e.call(null) : n.id = requestAnimationFrame(o);\n }) };\n return n;\n}, roundAccurately: (e, t = 0) => {\n if (e == null || !isFinite(e)) return null;\n const r = 10 ** t;\n return Number(Math.round(e * r) / r);\n}, setToPath: (e, t, r) => {\n const n = t.split(".");\n let o = e;\n if (!o) throw new Error("Can not set path to a null path.");\n for (let i = 0; o && i < n.length - 1; i++) {\n const a = n[i];\n let l = o[a];\n if (l == null && (l = {}, o[a] = l), !re(l)) throw new Error("Can not set path to a non object path.");\n o = l;\n }\n if (typeof r != "number" && typeof r != "boolean" && typeof r != "string" && !re(r)) throw new Error(`Can not set path to ${r} that is not a a supported primitive.`);\n return o[n[n.length - 1]] = r, e;\n}, splitNumber: (e) => {\n let t = Math.abs(e);\n if (isNaN(t) || !isFinite(e)) return null;\n let r = 0 | t, n = t - r, o = 0, i = 0, a = 1;\n if (n > 5e-8) for (; i < 8 && Math.abs(o / a - n) > 5e-8; ) i++, a *= 10, o = Math.round(n * a);\n return { ip: Math.trunc(e), fp: o, ipLength: Math.ceil(Math.log10(r + 1)), fpLength: i };\n}, subtractRect: (e, t, r = !1) => {\n if (!t) return [e];\n if (!Ke(e, t)) return [];\n const n = [];\n let o = e;\n const i = () => {\n t.top > o.top && t.top < o.bottom && (n.push({ ...o, bottom: t.top }), o = { ...o, top: t.top });\n }, a = () => {\n t.bottom > o.top && t.bottom < o.bottom && (n.push({ ...o, top: t.bottom }), o = { ...o, bottom: t.bottom });\n }, l = () => {\n t.right > o.left && t.right < o.right && (n.push({ ...o, left: t.right }), o = { ...o, right: t.right });\n }, u = () => {\n t.left > o.left && t.left < o.right && (n.push({ ...o, right: t.left }), o = { ...o, left: t.left });\n };\n return r ? (u(), l(), i(), a()) : (i(), a(), l(), u()), n;\n}, textToKey: (e) => e.replace(/[^a-zA-Z0-9]/g, "").toLowerCase(), throttle: function(e, t) {\n let r = null;\n return (...n) => {\n const o = Date.now();\n (!r || o - r >= t) && (r = o, e(...n));\n };\n}, toSafeJSON: function e(t) {\n if (t === null || typeof t != "object") return t;\n if (typeof t.toJSON == "function") return t.toJSON();\n if (Array.isArray(t)) return t.map((n) => e(n));\n if (typeof t.toString == "function" && t.toString !== Object.prototype.toString) return t.toString();\n const r = {};\n for (const n in t) t.hasOwnProperty(n) && (r[n] = e(t[n]));\n return r;\n}, transpose: (e) => {\n if (!e) return e;\n const t = e.length, r = e[0].length, n = [];\n for (let o = 0; o < r; o++) n[o] = Array(t);\n for (let o = 0; o < t; o++) for (let i = 0; i < r; i++) n[i][o] = e[o][i];\n return n;\n}, uuidV4: de, validEnumValue: (e, t) => {\n if (!Object.values(e).includes(t)) throw new Error(`Invalid type: ${t ?? "null"}. Must be one of: ${Object.values(t).join(", ")}.`);\n}, whenFocus: async (e, t = !1) => new Promise((r) => {\n qe(e, t) ? r(!0) : e.addEventListener("focusin", () => {\n r(!0);\n }, { once: !0 }), e.focus();\n}) }, Symbol.toStringTag, { value: "Module" }));\nObject.freeze(Object.defineProperty({ __proto__: null, MESSAGE_ERROR_INVALID_ARG: (e) => `Invalid argument: \'${e}\'.` }, Symbol.toStringTag, { value: "Module" }));\nconst ut = (e) => {\n const t = new Uint8Array(e), r = t.byteLength;\n let n = "";\n for (let o = 0; o < r; o++) n += String.fromCharCode(t[o]);\n if (typeof window < "u" && typeof globalThis.btoa == "function") return globalThis.btoa(n);\n if (typeof Buffer < "u") return Buffer.from(n, "binary").toString("base64");\n throw new Error("Unsupported environment");\n}, Ce = (e) => new Promise((t, r) => {\n if (e) if (typeof FileReader < "u") {\n const n = new FileReader();\n n.onload = () => {\n t(n.result);\n }, n.onerror = () => {\n r(n.error);\n }, n.readAsText(e);\n } else if (typeof Buffer < "u") {\n const n = (o) => Buffer.from(o).toString("utf-8");\n e.arrayBuffer().then((o) => {\n t(n(o));\n }).catch((o) => {\n r(o);\n });\n } else r(new Error("Unsupported environment"));\n else t("");\n});\nObject.freeze(Object.defineProperty({ __proto__: null, DEFAULT_MIME_TYPE: "*/*", arrayBufferToBase64: ut, base64ToArrayBuffer: (e) => {\n const t = typeof window < "u" && typeof globalThis.atob == "function" ? globalThis.atob(e) : Buffer.from(e, "base64").toString("binary"), r = t.length, n = new Uint8Array(r);\n for (let o = 0; o < r; o++) n[o] = t.charCodeAt(o);\n return n.buffer;\n}, blobToString: Ce }, Symbol.toStringTag, { value: "Module" }));\nconst dt = "data:image/png;base64,", ft = "Unable to resolve image.", Ge = (e) => new Promise(async (t, r) => {\n let n = null;\n try {\n n = new Image(), n.src = e, n.addEventListener("load", function() {\n t({ width: n.naturalWidth, height: n.naturalHeight });\n }, { once: !0 }), n.addEventListener("error", function() {\n URL.revokeObjectURL(e), r("Invalid Image");\n }, { once: !0 }), await n.decode("sync");\n } catch {\n n?.src && URL.revokeObjectURL(n.src);\n }\n n || r(ft);\n}), we = "image/svg+xml";\nObject.freeze(Object.defineProperty({ __proto__: null, DATA_URL_PNG_PREFIX: dt, getImageDataUrl: (e, t = 1) => new Promise(async (r, n) => {\n let o = null;\n try {\n o = new Image(), o.src = e, o.addEventListener("load", function() {\n try {\n const i = document.createElement("canvas");\n i.width = o.naturalWidth, i.height = o.naturalHeight, i.getContext("2d").drawImage(o, 0, 0);\n const a = i.toDataURL("image/png", t);\n r({ elemImg: o, dataUrl: a });\n } catch (i) {\n URL.revokeObjectURL(e), n(i);\n }\n }, { once: !0 }), o.addEventListener("error", function() {\n URL.revokeObjectURL(e), n("Invalid Image");\n }, { once: !0 }), await o.decode("sync");\n } catch {\n o?.src && URL.revokeObjectURL(o.src);\n }\n o || n(ft);\n}), loadImageDetails: async (e, t = null) => {\n let r = null;\n const n = async () => {\n try {\n const i = t ?? "image/*", a = URL.createObjectURL(new Blob([e], { type: i })), l = await Ge(a);\n r = { mimeType: i, naturalDimensions: l, asUrl: a };\n } catch {\n }\n }, o = async () => {\n try {\n const i = new TextDecoder().decode(e), a = URL.createObjectURL(new Blob([i], { type: we })), l = await Ge(a);\n r = { mimeType: t ?? we, naturalDimensions: l, asUrl: a, asSVGText: i };\n } catch {\n }\n };\n if (t === we ? await o() : t.startsWith("image/") ? await n() : (await n(), r || await o()), !r) throw new Error("Failed to load image");\n return r;\n} }, Symbol.toStringTag, { value: "Module" }));\nvar We, Ye;\n(Ye = We || (We = {})).resolveTypedUpdates = (e, t, r, n) => {\n if (e === null) return e;\n if (e === void 0) return n;\n let o = e;\n if (t?.shorthand) {\n const u = t?.shorthand(e, r);\n u !== void 0 && (o = u);\n }\n if (o !== null && t?.getSubType) {\n const u = t.getSubType(o);\n u && (t = u);\n }\n const i = t?.properties, a = t?.arrayType ?? !1;\n let l = o;\n if (t && t.merge && l && n) l = t.merge(l, n, r);\n else if (!a && i) {\n const u = Object.keys({ ...o, ...n });\n l = null;\n for (let f = 0; f < u.length; f++) {\n const h = u[f];\n let g, p = o[h];\n if (p !== void 0) {\n const y = i[h];\n g = y ? (0, Ye.resolveTypedUpdates)(p, y, r, n?.[h]) : p;\n } else g = n?.[h];\n g != null && (l = l ?? {}, l[h] = g);\n }\n }\n return l;\n};\nconst Je = `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, ye = `You do not have permissions to access the clipboard.\nAll copy and paste operations will be limited to the browser tab.`, pt = { Safari: `The Safari browser does not support advanced copy and paste.\nCopy and paste will be limited to within the browser tab.\n\nPlease use Chrome or Edge if external copy and paste is required.`, Perms: ye, PermsWrite: oe() === k.Safari ? Je : ye, PermsRead: oe() === k.Safari ? Je : ye }, ge = async () => new Promise((e) => {\n document.hasFocus() ? e() : globalThis.addEventListener?.("focus", () => {\n e();\n }, { once: !0 }), document.activeElement.focus?.();\n}), be = async (e, t, r) => {\n if (oe() === k.Safari) return await r(new Error(pt.Safari));\n try {\n const n = async (a) => {\n try {\n return await a();\n } catch (l) {\n if (l.message?.includes("Document is not focused")) return !1;\n throw l;\n }\n }, o = await globalThis?.navigator?.permissions?.query({ name: e, allowWithoutGesture: !0, allowWithoutSanitization: !0 });\n let i = !1;\n if (o.state === "prompt" && (i = await n(t)), i || o.state !== "granted" || (i = await t()), !i) return await r(new Error(o.state));\n } catch (n) {\n return n.message === "No valid data on clipboard" || n.name === "DataError" ? void 0 : await r(n);\n }\n}, mt = async (e) => {\n try {\n return await e.read({ unsanitized: [S.html] });\n } catch {\n }\n return await e.read();\n}, Bt = async (e, t) => {\n if (!e) return null;\n const r = await mt(e);\n let n = !1;\n for (let o = 0; !n && r && o < r.length; o++) if (n = r[o].types.includes(t), n)\n return await r[o].getType(t);\n return n ? void 0 : null;\n};\nif (!globalThis.ClipboardItem) {\n const e = (r, n) => new Blob([n], { type: r });\n class t {\n constructor(n, o) {\n this._items = {}, this._types = Object.keys(n);\n const i = {}, a = Object.keys(n);\n for (let l = 0; l < a.length; l++) {\n const u = a[l];\n let f = n[u];\n i[u] = typeof f == "string" ? e(u, f) : f;\n }\n this._items = i, this._presentationStyle = o?.presentationStyle ?? "unspecified";\n }\n get types() {\n return this._types;\n }\n getType(n) {\n return Promise.resolve(this._items[n]);\n }\n supports(n) {\n return !0;\n }\n }\n globalThis.ClipboardItem = t;\n}\nconst ve = async (e, t = S.html) => new Promise(async (r, n) => {\n try {\n const o = await Bt(e, t);\n if (o) {\n const i = new FileReader();\n i.onload = () => {\n r(i.result);\n }, i.onerror = () => {\n r("");\n }, i.readAsText(o);\n } else r("");\n } catch (o) {\n n(o);\n }\n}), He = async (e, t = S.html) => {\n const r = await ve(e, t);\n if (!r) return null;\n let n = null;\n try {\n n = new DOMParser().parseFromString(r, S.html);\n } catch {\n console.warn("Can\'t parse html from clipboard.");\n }\n return n;\n}, $t = async (e) => {\n e && await e.writeText("");\n}, ie = "clipboard-uuid", Q = "web text/uuid", Xe = (e) => `<div style="display:none" ${ie}="${e}"/>`, zt = (e, t) => {\n let r = null;\n try {\n const n = new DOMParser().parseFromString(t, S.html);\n n.body.firstElementChild.setAttribute(ie, e), r = n.getElementsByTagName("body")[0].innerHTML;\n } catch (n) {\n console.warn("Can\'t embed uuid.", n);\n }\n return r;\n}, Ze = (e, t) => {\n if (!t || !e) return !1;\n try {\n const r = t.querySelectorAll(`[${ie}="${e}"]`);\n if (r && r.length === 1) return !0;\n if (t.querySelector("parsererror")) throw new Error("We are unable to parse node");\n return !1;\n } catch {\n return !1;\n }\n};\nclass Qe {\n constructor(t) {\n if (t?.nativeClipboard === void 0 || t?.nativeClipboard === !0) try {\n this._nativeClipboard = globalThis?.navigator.clipboard;\n } catch {\n t?.nativeClipboard === !0 && console.warn("NativeClipboard option set to true but no native clipboard available.");\n }\n else this._nativeClipboard = t?.nativeClipboard === !1 ? null : t?.nativeClipboard;\n this._disableCheckOnFocus = t?.disableCheckOnFocus ?? !1, this._init();\n }\n async _checkForChanges() {\n this._nativeClipboard && this._state && !this._disableCheckOnFocus && await be("clipboard-read", async () => {\n await ge();\n const t = await ve(this._nativeClipboard, Q);\n if (!this._state || t && t === this._state.uuid) return !0;\n const r = await He(this._nativeClipboard, S.html);\n return !this._state || (Ze(this._state.uuid, r) || this.clear(), !0);\n }, async (t) => {\n t?.message === "denied" || t.message?.includes("Document is not focused") || oe() === k.Safari || console.warn("Unable to detect clipboard changes: ", t);\n });\n }\n _init() {\n const t = this;\n this._listeners = /* @__PURE__ */ new Map(), this._listenersCapture = /* @__PURE__ */ new Map(), this._state = null, this._nativeClipboard && (this._onFocus = () => {\n t._checkForChanges();\n }, this._onBlur = () => {\n globalThis.addEventListener?.("focus", t._onFocus, { once: !0 });\n }, globalThis.addEventListener?.("blur", this._onBlur), this._nativeClipboard.addEventListener("clipboardchange", (r) => {\n t._checkForChanges();\n }));\n }\n async read() {\n if (!this._nativeClipboard) return this._state?.items ?? null;\n const t = this;\n return await be("clipboard-read", async () => {\n if (await ge(), this._state?.uuid) {\n const r = await ve(this._nativeClipboard, Q);\n if (r && r === t._state.uuid) return !0;\n const n = await He(this._nativeClipboard, S.html);\n if (Ze(t._state?.uuid, n)) return !0;\n }\n return t._state = { items: await mt(this._nativeClipboard), uuid: null, ref: null }, this.dispatchEvent(new Event("clipboardread")), !0;\n }, async (r) => {\n this.dispatchEvent(new Event("clipboarderrorread"));\n }), this._state?.items ?? [];\n }\n async write(t) {\n return this._write({ uuid: de(), items: t, ref: null });\n }\n async _write(t) {\n if (!this._nativeClipboard) return this._state = t, this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")), null;\n const r = this, n = [], o = t.uuid;\n let i = t.items ?? [];\n const a = () => {\n r._state = { uuid: o, ref: t.ref, items: n }, r.dispatchEvent(new Event("clipboardwrite")), r.dispatchEvent(new Event("clipboardchange"));\n };\n await be("clipboard-write", async () => {\n await ge(), o && i.length === 0 && (i.push(new ClipboardItem({ [Q]: new Blob([o], { type: Q }) })), i.push(new ClipboardItem({ [S.html]: new Blob([Xe(o)], { type: S.html }) })));\n for (let l = 0; l < Math.min(1, i.length); l++) {\n const u = i[l];\n let f = u.types.indexOf(S.html), h = null;\n if (f !== -1) {\n const y = await u.getType(S.html);\n h = await Ce(y), h && (h = zt(o, h));\n }\n if (!h && u.types.includes(S.plain)) {\n const y = await u.getType(S.plain);\n if (y) {\n let T = null;\n typeof y == "string" ? (console.warn("text as string", y), T = y) : T = await Ce(y), T && (h = `<div ${ie}="${o}">${T}</div>`);\n }\n }\n if (!h && u.types.includes(S.png)) {\n const y = await u.getType(S.png), T = ut(await y.arrayBuffer());\n h = `<div ${ie}="${o}"><img src="${dt + T}"/></div>`;\n }\n !h && o && (h = Xe(o));\n const g = new Blob([h ?? ""], { type: S.html }), p = {};\n for (let y = 0; y < u.types.length; y++) {\n const T = u.types[y];\n p[T] = y === f ? g : u.getType(T);\n }\n h && f === -1 && (p[S.html] = g), o && (p[Q] = new Blob([o], { type: Q })), n.push(new ClipboardItem(p));\n }\n try {\n n && n.length !== 0 ? await this._nativeClipboard.write(n) : await $t(this._nativeClipboard);\n } catch (l) {\n l.message?.includes("Document is not focused") || console.warn("Unable to write to native clipboard: ", l);\n }\n return a(), !0;\n }, async (l) => {\n this.dispatchEvent(new Event("clipboarderrorwrite")), a();\n });\n }\n async writeReference(t) {\n if (!t) return void this.clear();\n let r = null;\n const n = {};\n try {\n const i = await t.toText?.() ?? null;\n i && (n[S.plain] = new Blob([i ?? ""], { type: S.plain }));\n } catch (i) {\n r = i;\n }\n try {\n const i = await t.toHtml?.() ?? null;\n i && (n[S.html] = new Blob([i], { type: S.html }));\n } catch (i) {\n r = i, console.warn("export to html", i);\n }\n try {\n const i = await t.toImage?.() ?? null;\n i && (n[S.png] = i);\n } catch (i) {\n r = i, console.warn("export to png", i);\n }\n const o = this._write({ uuid: de(), ref: t, items: Object.keys(n).length > 0 ? [new ClipboardItem(n)] : null });\n if (r) throw r;\n return o;\n }\n clear(t = !1) {\n this._state && (this._state = null, t && this._write({ uuid: null, ref: null, items: null }), this.dispatchEvent(new Event("clipboardwrite")), this.dispatchEvent(new Event("clipboardchange")));\n }\n async readReference() {\n return await this.read(), this._state?.ref ?? null;\n }\n readText() {\n return new Promise(async (t, r) => {\n const n = await this.read();\n let o = null;\n for (let a = 0; !o && n && a < n.length; a++) n[a].types.includes(S.plain) && (o = await n[a].getType(S.plain));\n if (!o) return void t("");\n const i = new FileReader();\n i.onload = () => {\n t(i.result);\n }, i.readAsText(o), i.onerror = (a) => {\n r(a);\n };\n });\n }\n async writeText(t) {\n const r = [new ClipboardItem({ [S.plain]: new Blob([t], { type: S.plain }) })];\n return this._write({ uuid: de(), items: r, ref: null });\n }\n addEventListener(t, r, n = {}) {\n const o = n?.capture ? this._listenersCapture : this._listeners;\n let i = o.get(t);\n i || (i = /* @__PURE__ */ new Map(), o.set(t, i)), i.set(r, typeof n == "boolean" ? {} : n);\n }\n dispatchEvent(t) {\n if (!t) return;\n const r = (n) => {\n const o = n.get(t.type);\n o && o.forEach((i, a) => {\n try {\n typeof a == "function" ? a(t) : a.handleEvent && a.handleEvent(t), i.once && o.delete(a);\n } catch (l) {\n console.warn(l);\n }\n });\n };\n return r(this._listenersCapture), r(this._listeners), !0;\n }\n removeEventListener(t, r, n) {\n const o = n?.capture ? this._listenersCapture : this._listeners, i = o.get(t);\n i && (i.delete(r), i.size === 0 && o.delete(t));\n }\n close() {\n globalThis.removeEventListener?.("focus", this._onFocus), globalThis.removeEventListener?.("blur", this._onBlur);\n }\n}\nvar Ee;\n(Ee = Qe || (Qe = {})).ErrorMessages = pt, Ee.Global = new Ee();\nconst Kt = "__SHEETXL";\nlet ee = null, le = null;\nasync function Vt() {\n if (ee)\n return ee;\n if (le) {\n if (await le, !ee)\n throw new Error("ESBuild initialization promise resolved, but instance is not available.");\n return ee;\n }\n let e, t;\n le = new Promise((r, n) => {\n e = r, t = n;\n });\n try {\n const { initialize: r } = await Promise.resolve().then(function() {\n return rr;\n });\n return ee = await r(), e(), ee;\n } catch (r) {\n throw console.error("Failed to import or initialize esbuild:", r), le = null, t(r), r;\n }\n}\nconst qt = {\n // ESBuild.TsconfigRaw =\n compilerOptions: {\n target: "esnext"\n }\n};\nasync function Gt(e, t, r = "/script.js", n = Kt) {\n try {\n const o = await Vt(), i = "@sheetxl/primitives", a = `\n export const FormulaContext = globalThis.${n}?.FormulaContext;\n export const ScalarType = globalThis.${n}?.ScalarType;\n export const Observable = globalThis.${n}?.Observable;\n export const IRange = globalThis.${n}?.IRange;\n export const FormulaError = globalThis.${n}?.FormulaError;\n // Add more exports as needed\n `, l = {\n // ESBuild.Plugin = {\n name: "sheetxl-esbuild-in-memory",\n setup(f) {\n const h = "sheetxl-" + (/* @__PURE__ */ new Date()).getTime();\n f.onResolve({ filter: new RegExp(`^(${r.replace("/", "\\\\/")}|${i})$`) }, (g) => ({\n path: g.path,\n namespace: h\n })), f.onResolve({ filter: /.*/ }, (g) => {\n if (g.namespace !== h)\n return console.warn(`esbuild: Treating import "${g.path}" as external.`), { path: g.path, external: !0 };\n }), f.onLoad({ filter: /.*/, namespace: h }, (g) => {\n let p;\n if (g.path === r)\n p = t;\n else if (g.path === i)\n p = a;\n else\n return {\n errors: [{ text: `Cannot load unknown path in ${h}: ${g.path}` }]\n };\n return {\n contents: p,\n loader: "ts"\n // leave this as \'ts\' so esbuild generates proper sourcemaps\n };\n });\n }\n }, u = await o.build({\n entryPoints: [r],\n // Use the virtual entry point\n bundle: !0,\n // IMPORTANT: Enable bundling\n write: !1,\n // IMPORTANT: Return result in memory\n format: "esm",\n // Output format\n plugins: [l],\n // TODO - later change to external and prepend when executing from ui\n sourcemap: "inline",\n // Generate separate source map string\n tsconfigRaw: qt,\n // Pass the mapped options\n minify: !0,\n // sourcemap: \'external\', // Generate separate source map string\n // Or use \'inline\' if you prefer data URLs embedded in the code\n // To suppress warnings about dynamic import() if esbuild complains:\n // supported: { \'dynamic-import\': true },\n platform: "neutral"\n // not really needed\n });\n if (u.outputFiles && u.outputFiles.length > 0)\n return u.outputFiles[0].text;\n throw u.errors && u.errors.length > 0 ? new Error(`esbuild bundling failed: ${u.errors.map((f) => f.text).join(`\n`)}`) : new Error("esbuild did not produce an output file.");\n } catch (o) {\n throw console.error("esbuild bundling process failed:", o), o;\n }\n}\nconst Wt = `\n/**\n * Represents the completion of an asynchronous operation\n */\ninterface Promise<T> {\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally?: (() => void) | undefined | null): Promise<T>;\n}\n`, Yt = `\n interface FirstTest {\n isTrue?: boolean;\n }\n`, Jt = async () => Yt, ht = /* @__PURE__ */ new Map([\n ["IReferenceRange", "r"],\n ["IRange", "l"]\n]), wt = /* @__PURE__ */ new Map([\n ["IWorkbook", "workbook"],\n ["ISheet", "sheet"],\n ["ICellRanges", "ranges"],\n ["ICellRange", "range"],\n ["IFormulaContext", "context"]\n]), _e = (e, t) => {\n Array.from(t.keys()).forEach((n) => {\n const o = t.get(n);\n t.set(`${e}.${n}`, o);\n });\n}, Ht = /* @__PURE__ */ new Map([\n ["Scalar", "*"],\n ["FormulaError.Known", W.Error],\n ["Date", "Date"],\n ["JSON", "JSON"]\n]), Xt = /* @__PURE__ */ new Map([\n // Repeating\n]), Oe = "SheetXL";\n_e(Oe, ht);\n_e(Oe, wt);\n_e(Oe, Xt);\nconst Zt = /* @__PURE__ */ new Map([\n ["Promise", () => ({ async: !0 })],\n // [\'PromiseLike\', (): Partial<IFunction.ReturnTypeJSON> => {\n // return { async: true };\n // }],\n ["Observable", () => ({ stream: !0 })]\n]);\nlet se = null;\nasync function Qt() {\n if (se)\n return se;\n try {\n return await (await Promise.resolve().then(function() {\n return or;\n })).initialize();\n } catch (e) {\n throw se = null, e;\n } finally {\n se = null;\n }\n}\nasync function er(e) {\n const t = e?.source ?? null;\n if (!t) return null;\n const r = (e.disableBundle || e.declarationsOnly) ?? !1, n = [\n Jt(),\n //import(\'typescript\'), // when bundled, but node check causes issues. We could bundle replace isNode but felt hacky\n Qt()\n ], o = await Promise.all(n), i = o[0], a = o[1];\n let l = "", u = null;\n const f = [], h = {\n allowJs: !0,\n declaration: !1,\n sourceMap: !1,\n // was true but now bundler will do this\n inlineSourceMap: !1,\n inlineSources: !1,\n isolatedModules: !0,\n preserveConstEnums: !1,\n // types: [\'WebWorker\'],\n module: 99,\n //"esNext",\n noResolve: !0,\n emitDeclarationOnly: !1,\n target: a.ScriptTarget.ES2020\n // lib: [\'webworker\', \'es2020\', \'esnext.asynciterable\'], // Use the webworker lib instead of dom\n }, g = "script", p = `${g}.ts`, y = "lib.d.ts", T = "global.d.ts", A = {\n [p]: t,\n [y]: Wt,\n [T]: i\n }, D = {\n getSourceFile: (s, w, L, P) => a.createSourceFile(s, A[s], a.ScriptTarget.Latest, !0),\n fileExists: (s) => A[s] !== void 0,\n readFile: (s) => A[s],\n writeFile: (s, w) => {\n A[s] = w;\n },\n // not used\n getCurrentDirectory: () => "./",\n getCanonicalFileName: (s) => s,\n useCaseSensitiveFileNames: () => !0,\n getDefaultLibFileName: (s) => y,\n getNewLine: () => `\n`\n }, U = a.createProgram([p, T], h, D), I = U.getTypeChecker(), J = U.getSourceFile(p), E = U.emit();\n E.diagnostics.length > 0 && console.warn(E.diagnostics), l = A[`${g}.js`];\n const c = (s, w, L, P) => {\n if (!s) {\n $(s, new Error(`Type is not defined for \'${w?.name ?? "return"}\'.`));\n return;\n }\n if (s.kind === a.SyntaxKind.NumberKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.StringKeyword)\n w.scalar = W.String;\n else if (s.kind === a.SyntaxKind.BooleanKeyword)\n w.scalar = W.Boolean;\n else if (s.kind === a.SyntaxKind.UndefinedKeyword || s.kind === a.SyntaxKind.NullKeyword || s.kind === a.SyntaxKind.VoidKeyword) {\n if (P) {\n $(s, new Error(`\'undefined\' is not a valid type for input: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.scalar = W.Null;\n } else if (s.kind === a.SyntaxKind.BigIntKeyword)\n w.scalar = W.Number;\n else if (s.kind === a.SyntaxKind.AnyKeyword)\n w.scalar = W.Null;\n else if (s.kind === a.SyntaxKind.ArrayType) {\n const M = s.elementType;\n if (!M) {\n $(s, new Error(`\'Array\' must be typed: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w.arrayDepth = (w.arrayDepth ?? 0) + 1, c(M, w, L, P);\n } else if (s.kind !== a.SyntaxKind.TupleType) {\n if (s.kind === a.SyntaxKind.TypeReference) {\n const M = s.typeName?.getText?.() ?? null, K = ht.get(M);\n let V = !1;\n K && (w.range = K, V = !0);\n const q = Ht.get(M);\n if (q && (w.scalar = q), q !== void 0 && (V = !0), P) {\n const R = wt.get(M);\n if (R)\n return R;\n } else {\n const R = Zt.get(M);\n if (R) {\n const b = { ...w, ...R() };\n let N = 0;\n if (b.async && N++, b.stream && N++, N > 1) {\n $(s, new Error(`\'${M}\' cannot have multiple modifiers: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n w = b, V = !0;\n }\n }\n if (!V) {\n $("node", new Error(`\'${M}\' is not a valid type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n const H = s.typeArguments;\n if (H) {\n if (H.length !== 1) {\n $(s, new Error(`\'${M}\' must be typed with exactly 1 type: \'${s?.parent?.name?.escapedText}\'.`));\n return;\n }\n c(H[0], w, L, P);\n }\n }\n }\n }, m = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Export) !== 0, fe = (s) => (a.getCombinedModifierFlags(s) & a.ModifierFlags.Default) !== 0, B = [], $ = (s, w) => {\n B.push(w);\n };\n if (a.forEachChild(J, (s) => {\n if (m(s) && a.isFunctionDeclaration(s)) {\n const w = {}, L = {\n parameters: {}\n }, P = s?.name?.getText();\n try {\n w.name = P;\n const K = I.getSymbolAtLocation(s.name).getDocumentationComment(I);\n if (K && K.length > 0 && K[0].text) {\n let R = K[0].text;\n R = R.replace(/[\\r\\n]+/g, "\\\\n").trim(), L.summary = R;\n }\n const V = {};\n c(s.type, V, w, !1), w.returnType = V;\n const q = {};\n fe(s) && (q.default = !0, u = P), Object.keys(q).length > 0 && (w.behavior = q), w.parameters = [];\n const H = /* @__PURE__ */ new Map();\n for (let R = 0; R < s.parameters.length; R++) {\n const b = s.parameters[R], N = {};\n N.name = b.name?.getText();\n const X = c(b.type, N, w, !0);\n if (X) {\n if (w.parameters.length !== 0) {\n const F = s?.parent?.name?.getText();\n $(s, new Error(`\'${w.name}\' contexts must be the first parameter: \'${F}\'.`));\n return;\n }\n w.context = X;\n continue;\n }\n const z = !((b.initializer === void 0 || b.initializer === null) && (b.questionToken === void 0 || b.questionToken === null));\n let C;\n if (z && (N.optional = !0, b.initializer))\n try {\n b.initializer.kind === a.SyntaxKind.StringLiteral ? C = b.initializer.text : b.initializer.kind === a.SyntaxKind.NumericLiteral ? C = parseFloat(b.initializer.text) : b.initializer.kind === a.SyntaxKind.TrueKeyword || b.initializer.kind === a.SyntaxKind.FalseKeyword ? C = b.initializer.kind === a.SyntaxKind.TrueKeyword : b.initializer.kind === a.SyntaxKind.NullKeyword ? C = null : b.initializer.kind === a.SyntaxKind.ObjectLiteralExpression || b.initializer.kind === a.SyntaxKind.ArrayLiteralExpression ? C = b.initializer.getText() : C = b.initializer.getText?.();\n } catch (O) {\n console.warn(`Couldn\'t extract default value for parameter \'${N.name}\'`, O);\n }\n b.dotDotDotToken && (N.rest = !0), w.parameters.push(N);\n const x = { description: "" };\n L.parameters[N.name] = x;\n const G = I.getSymbolAtLocation(b.name).getDocumentationComment(I);\n G && G.length > 0 && G[0].text && (x.description = G[0].text), C !== void 0 && (x.defaultValue = C), H.set(N.name, N);\n }\n if (s.jsDoc && s.jsDoc.length > 0) {\n const R = s.jsDoc;\n for (let b = 0; b < R.length; b++) {\n const N = R[b]?.tags;\n if (N)\n for (let X = 0; X < N.length; X++) {\n const z = N[X];\n let C = z?.tagName?.text;\n if (!C) continue;\n C = C.toLowerCase();\n let x = z.comment;\n const G = C === "hidden";\n if (!(typeof x != "string" && !G) && (typeof x == "string" && (x = x.replace(/[\\r\\n]+/g, "\\\\n").trim()), !(!G && x && (x = x.split(/\\\\n/)[0], !x || x.length === 0)))) {\n if (x && typeof x == "string") {\n const O = /\\{@link(code|plain)?\\s+([^}|]+)(?:\\s*\\|\\s*([^}]+))?\\}/g;\n let F, Z = x, te = [];\n for (; (F = O.exec(x)) !== null; ) {\n const [pe, me, gt, Ne] = F, bt = [gt.trim()];\n Ne && bt.push(Ne.trim());\n }\n x = Z, te.length > 0 && C === "see" && (L.links || (L.links = []), L.links.push(...te));\n }\n if (C === "name") {\n const O = x;\n O !== P && (L.name = O);\n } else if (C === "description") {\n const O = x;\n } else if (C === "summary") {\n const O = x;\n O && (L.summary = O);\n } else if (C === "param") {\n const O = z.name?.text, F = H.get(O);\n if (!F) {\n B.push(new Error(`Parameter \'${O}\' not found in function \'${P}\'.`));\n continue;\n }\n if (z.typeExpression && z.typeExpression.type)\n try {\n const Z = z.typeExpression.type;\n if (Z.kind === a.SyntaxKind.UnionType) {\n const te = [];\n F.enums = te, Z.types.forEach((pe) => {\n if (pe.kind === a.SyntaxKind.LiteralType) {\n const me = pe.literal.text;\n me && te.push(me);\n }\n });\n }\n } catch (Z) {\n console.warn("Error parsing JSDoc type expression:", Z);\n }\n } else if (C === "returns" || C === "return")\n w.returnType.description = x;\n else if (C === "category")\n L.category = x;\n else if (C === "hidden") {\n let O = !0;\n const F = x?.toLowerCase();\n F === "false" ? O = !1 : F !== "true" && (O = x), O !== !1 && (L.hidden = O ?? !0);\n }\n }\n }\n }\n }\n Object.keys(w.returnType).length === 0 && delete w.returnType, f.push([w, L]);\n } catch (M) {\n $(s, new Error(`\'${P}\': ${M.message}`));\n }\n }\n }), B.length > 0)\n throw console.warn(B), new Error("There were compilation errors.", { cause: B });\n if (f.length === 0)\n throw new Error("No exported functions.");\n const yt = `${Ut.uuidV4()}-script`;\n try {\n !r && B.length === 0 && (l = await Gt(a, l, g));\n } catch {\n console.warn("Error bundling script");\n }\n const Ie = {\n functions: f,\n commitId: yt,\n source: t,\n name: "Script",\n language: "typescript",\n // default\n compiled: l\n };\n return u && (Ie.autoRun = u), Ie;\n}\nself.addEventListener("message", async (e) => {\n const { id: t, params: r } = e.data;\n try {\n const n = await er(r);\n self.postMessage({ id: t, result: n, error: null });\n } catch (n) {\n self.postMessage({\n id: t,\n result: null,\n error: {\n message: n.message,\n stack: n.stack,\n cause: n.cause\n }\n });\n }\n});\nlet ce = null;\nasync function tr() {\n return ce || (ce = new Promise(async (e, t) => {\n try {\n const r = "0.20.2", n = `https://esm.sh/esbuild-wasm@${r}`, o = `https://esm.sh/esbuild-wasm@${r}/esbuild.wasm`;\n console.log("🔄 Initializing esbuild...", o);\n const i = await import(\n /* webpackIgnore: true */\n /* @vite-ignore */\n n\n );\n console.log("🔄 Got esm...", o);\n const a = i.default;\n await a.initialize({\n wasmURL: o,\n // Provide the specific WASM URL\n worker: !1\n // Keep processing on the current thread\n }), console.log("🔄 Initialized esm...", o), e(a);\n } catch (r) {\n console.error("Error initializing esbuild:", r), t(r);\n }\n }), ce);\n}\nvar rr = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: tr\n});\nlet ue = null;\nasync function nr() {\n return ue || (ue = new Promise(async (e, t) => {\n console.log("🔄 Initializing Browser TypeScript module...");\n let r = null;\n try {\n r = await import("https://esm.sh/typescript@5.7.2");\n } catch (n) {\n console.error("Error initializing Browser TypeScript module:", n);\n }\n r || console.log("use script fallback"), e(r);\n }), ue);\n}\nvar or = /* @__PURE__ */ Object.freeze({\n __proto__: null,\n initialize: nr\n});\n', r = typeof self < "u" && self.Blob && new Blob(["URL.revokeObjectURL(import.meta.url);", t], { type: "text/javascript;charset=utf-8" });
56
+ function o(n2) {
57
+ let e2;
58
+ try {
59
+ if (e2 = r && (self.URL || self.webkitURL).createObjectURL(r), !e2) throw "";
60
+ const t2 = new Worker(e2, { type: "module", name: n2?.name });
61
+ return t2.addEventListener("error", () => {
62
+ (self.URL || self.webkitURL).revokeObjectURL(e2);
63
+ }), t2;
64
+ } catch {
65
+ return new Worker("data:text/javascript;charset=utf-8," + encodeURIComponent(t), { type: "module", name: n2?.name });
66
+ }
67
+ }
68
+ async function i() {
69
+ if (typeof process < "u" && process.versions?.node && typeof Worker > "u") return await a();
70
+ if (typeof Worker < "u") {
71
+ const e2 = new n(() => new o());
72
+ try {
73
+ return await e2.start(), e2;
74
+ } catch (n2) {
75
+ console.error("Failed to start TypescriptCompiler worker reverting to fallback:", n2);
76
+ }
77
+ }
78
+ return await a();
79
+ }
80
+ const a = async () => {
81
+ const { compileModule: n2 } = await import("./CfWoSrOmaP9LrFja.mjs"), t2 = new e((e2) => n2(e2));
82
+ return await t2.start(), t2;
83
+ };
84
+ export {
85
+ i as createCompilerWorker
86
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const e = { DAVERAGE: { s: "Averages the values in a column in a list or database that match conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DCOUNT: { s: "Counts the cells containing numbers in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DCOUNTA: { s: "Counts nonblank cells in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DGET: { s: "Extracts from a database a single record that matches the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DMAX: { s: "Returns the largest number in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DMIN: { s: "Returns the smallest number in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DPRODUCT: { s: "Multiplies the values in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DSTDEV: { s: "Estimates the standard deviation based on a sample from selected database entries", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DSTDEVP: { s: "Calculates the standard deviation based on the entire population of selected database entries", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DSUM: { s: "Adds the numbers in the field (column) of records in the database that match the conditions you specify", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DVAR: { s: "Estimates variance based on a sample from selected database entries", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" }, DVARP: { s: "Calculates variance based on the entire population of selected database entries", p: { database: { d: "is the range of cells that makes up the list or database. A database is a list of related data" }, field: { d: "is either the label of the column in double quotation marks or a number that represents the column's position in the list" }, criteria: { d: "is the range of cells that contains the conditions you specify. The range includes a column label and one cell below the label for a condition" } }, h: "Unimplemented" } };
8
+ export {
9
+ e as default
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const t = { CONVERT: { s: "Converts a number from one measurement system to another", p: { number: { d: "is the value in from_unit to convert." }, fromUnit: { d: "is the units for number." }, toUnit: { d: "is the units for the result" } } } };
8
+ export {
9
+ t as default
10
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license @sheetxl/sdk - A high-performance, embeddable spreadsheet engine. - v0.0.0
3
+ *
4
+ * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
+ * License: The license can be found at https://www.sheetxl.com/license.
6
+ */
7
+ const t = { BAHTTEXT: { s: "Converts a number to baht (Thai) text", p: { number: { d: "is the number to convert" } } } };
8
+ export {
9
+ t as default
10
+ };