@uniai-fe/util-react 0.1.0 → 0.1.1

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  var d3Array = require('d3-array');
4
4
 
5
- // src/chart/index.tsx
5
+ // src/chart/module.ts
6
6
  var getChartYTicks = ({
7
7
  data,
8
8
  length,
@@ -77,13 +77,9 @@ var getChartYTicks = ({
77
77
  const tickMax = ticksArr[ticksArr.length - 1];
78
78
  const quantiles = d3Array.extent(dataSet);
79
79
  let [min, max] = quantiles;
80
- if (typeof min === "undefined" || typeof max === "undefined")
81
- return ticksArr;
80
+ if (typeof min === "undefined" || typeof max === "undefined") return ticksArr;
82
81
  if (outliers)
83
- [min, max] = [
84
- d3Array.quantile(dataSet, 0.4) ?? min,
85
- d3Array.quantile(dataSet, 0.6) ?? max
86
- ];
82
+ [min, max] = [d3Array.quantile(dataSet, 0.4) ?? min, d3Array.quantile(dataSet, 0.6) ?? max];
87
83
  if (pad > 0) {
88
84
  const SCALE = typeof max === "number" && typeof min === "number" ? Math.max(Math.abs(max), Math.abs(min)) : 0;
89
85
  const OFFSET = SCALE < 10 && isPowTen ? 0.5 : SCALE < 100 && isPowTen ? 5 : SCALE < 1e3 && isPowTen ? 50 : Math.round((max - min) / ticksArr.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chart/index.tsx"],"names":["extent","quantile"],"mappings":";;;;;AAQO,IAAM,iBAAiB,CAAC;AAAA,EAC7B,IAAA;AAAA,EACA,MAAA;AAAA,EACA,GAAA,GAAM,GAAA;AAAA,EACN,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA,GAAQ,CAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,KAAiD;AAC/C,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,MAAA,IAAU,GAAG,OAAO,MAAA;AAC7C,EAAA,IAAI,OAAO,QAAA,KAAa,QAAA,IAAY,OAAO,QAAA,KAAa,QAAA;AACtD,IAAA,OAAO,MAAM,IAAA,CAAK,EAAE,QAAQ,MAAA,GAAS,CAAA,EAAG,CAAA,CAAE,GAAA;AAAA,MAAI,CAAC,GAAG,KAAA,KAChD,IAAA,CAAK,OAAQ,QAAA,GAAW,QAAA,IAAY,MAAA,GAAU,KAAA,GAAQ,QAAQ;AAAA,KAChE;AAEF,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,IAAA,CAAK,QAAQ,CAAA,CAAA,KAAK;AAChB,IAAA,IACE,OAAO,CAAA,KAAM,QAAA,IACb,OAAO,CAAA,KAAM,QAAA,IACb,EAAE,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAA,IAAQ,OAAA,IAAW,CAAA,CAAA;AAEpD,MAAA;AAEF,IAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,SAAA,IAChC,OAAO,CAAA,KAAM,QAAA,IAAY,CAAC,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAChD,MAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,SAAA,IAEtB,OAAO,MAAM,QAAA,IACb,CAAA,KAAM,QACN,OAAA,IAAW,CAAA,IACX,OAAQ,CAAA,CAAyB,KAAA,KAAU,QAAA;AAE3C,MAAA,OAAA,CAAQ,IAAA,CAAM,EAAwB,KAAK,CAAA;AAAA,EAC/C,CAAC,CAAA;AAED,EAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAEjC,EAAA,IAAI,MAAA,GAASA,eAAO,OAAO,CAAA;AAC3B,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU,MAAA,GAAS,CAAC,QAAA,EAAU,MAAA,CAAO,CAAC,CAAC,CAAA;AAC/D,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU,MAAA,GAAS,CAAC,MAAA,CAAO,CAAC,GAAG,QAAQ,CAAA;AAE/D,EAAA,IAAI,OAAO,OAAO,CAAC,CAAA,KAAM,eAAe,OAAO,MAAA,CAAO,CAAC,CAAA,KAAM,WAAA;AAC3D,IAAA,OAAO,MAAA;AAET,EAAA,MAAM,eAAe,OAAA,CAAQ,KAAA;AAAA,IAC3B,CAAA,CAAA,KACG,OAAO,KAAA,KAAU,QAAA,IAAY,QAAQ,CAAA,IACtC,MAAA,CAAO,CAAC,CAAA,CACL,MAAM,GAAG,CAAA,CACT,MAAA,CAAO,CAAC,GAAG,KAAA,KAAU,KAAA,KAAU,CAAC,CAAA,CAChC,MAAA,CAAO,OAAO,CAAA,CACd,MAAA,CAAO,OAAK,CAAA,CAAE,KAAA,CAAM,EAAE,CAAA,CAAE,KAAK,CAAA,CAAA,KAAK,CAAA,KAAM,GAAG,CAAC,EAAE,MAAA,GAAS;AAAA,GAC9D;AAEA,EAAA,MAAM,aAAA,GAAgB,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,CAAA;AAE1D,EAAA,MAAM,KAAA,GAAA,CAAS,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA,GAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,aAAa,CAAA;AAC1E,EAAA,MAAM,IAAA,GAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA,GAAQ,MAAA,CAAO,CAAC,CAAA,IAAK,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,aAAa,CAAA;AACzE,EAAA,MAAM,QAAA,GAAA,CAAY,OAAO,KAAA,IAAS,MAAA;AAElC,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,GAAS,CAAA,EAAG,CAAA,EAAA;AAC9B,IAAA,KAAA,CAAM,IAAA,CAAA,CAAM,QAAQ,CAAA,GAAI,QAAA,IAAY,KAAK,GAAA,CAAI,EAAA,EAAI,aAAa,CAAC,CAAA;AAEjE,EAAA,MAAM,CAAC,SAAS,CAAA,GAAI,KAAA;AACpB,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,CAAC,CAAA;AACvC,EAAA,IAAI,OAAO,SAAA,KAAc,WAAA,IAAe,OAAO,QAAA,KAAa,WAAA;AAC1D,IAAA,OAAO,MAAA;AAET,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,QAAA,GAAW,SAAS,CAAA;AACzC,EAAA,MAAM,SAAA,GACJ,OAAO,KAAA,KAAU,QAAA,GACb,QACA,GAAA,GAAM,CAAA,GACJ,CAAA,GACA,GAAA,GAAM,EAAA,IAAM,YAAA,GACV,CAAA,GACA,GAAA,GAAM,KACJ,CAAA,GACA,CAAA;AAEZ,EAAA,MAAM,WAAW,KAAA,CAAM,GAAA;AAAA,IAAI,UACzB,MAAA,CAAA,CAAQ,IAAA,GAAO,OAAO,OAAA,EAAS,OAAA,CAAQ,SAAS,CAAC;AAAA,GACnD;AAEA,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAM,UAAA,GAAa,CAAA;AACnB,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AACxC,IAAA,MAAM,MAAA,GAAS,SAAS,CAAC,CAAA;AACzB,IAAA,MAAM,WAAA,GACJ,OAAO,GAAA,KAAQ,QAAA,IAAY,OAAO,MAAA,KAAW,QAAA,GACzC,MAAM,MAAA,GACN,CAAA;AACN,IAAA,MAAM,QAAA,GACJ,cAAc,CAAA,GAAI,IAAA,CAAK,MAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAC,CAAA,GAAI,CAAA;AAEzD,IAAA,IAAI,QAAA,CAAS,SAAS,UAAA,EAAY;AAChC,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,SAAS,UAAU,CAAA;AACnD,MAAA,OAAO,SAAS,MAAA,CAAO,CAAC,GAAG,KAAA,KAAU,KAAA,GAAQ,SAAS,CAAC,CAAA;AAAA,IACzD;AAEA,IAAA,IAAI,WAAW,CAAA,EAAG;AAChB,MAAA,MAAM,IAAA,GAAO,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,UAAA,GAAa,QAAQ,CAAC,CAAA;AAC1D,MAAA,OAAO,SAAS,MAAA,CAAO,CAAC,GAAG,KAAA,KAAU,KAAA,GAAQ,SAAS,CAAC,CAAA;AAAA,IACzD;AAAA,EACF;AAEA,EAAA,IAAI,GAAA,KAAQ,GAAG,OAAO,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,KAAA,CAAM,CAAA,CAAA,KAAK;AACnC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACpB,IAAA,OAAO,MAAM,CAAA,IAAK,MAAA,CAAO,UAAU,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EAClD,CAAC,CAAA;AAED,EAAA,MAAM,CAAC,OAAO,CAAA,GAAI,QAAA;AAClB,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA;AAE5C,EAAA,MAAM,SAAA,GAAYA,eAAO,OAAO,CAAA;AAChC,EAAA,IAAI,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI,SAAA;AACjB,EAAA,IAAI,OAAO,GAAA,KAAQ,WAAA,IAAe,OAAO,GAAA,KAAQ,WAAA;AAC/C,IAAA,OAAO,QAAA;AAET,EAAA,IAAI,QAAA;AACF,IAAA,CAAC,GAAA,EAAK,GAAG,CAAA,GAAI;AAAA,MACXC,gBAAA,CAAS,OAAA,EAAS,GAAG,CAAA,IAAK,GAAA;AAAA,MAC1BA,gBAAA,CAAS,OAAA,EAAS,GAAG,CAAA,IAAK;AAAA,KAC5B;AAEF,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,MAAM,QACJ,OAAO,GAAA,KAAQ,QAAA,IAAY,OAAO,QAAQ,QAAA,GACtC,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,IAAI,GAAG,CAAA,EAAG,KAAK,GAAA,CAAI,GAAG,CAAC,CAAA,GACrC,CAAA;AACN,IAAA,MAAM,SACJ,KAAA,GAAQ,EAAA,IAAM,WACV,GAAA,GACA,KAAA,GAAQ,OAAO,QAAA,GACb,CAAA,GACA,KAAA,GAAQ,GAAA,IAAQ,WACd,EAAA,GACA,IAAA,CAAK,OAAO,GAAA,GAAM,GAAA,IAAO,SAAS,MAAM,CAAA;AAElD,IAAA,IAAI,OAAO,OAAA,KAAY,QAAA;AACrB,MAAA,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA;AAAA,QACnC,OAAA,GAAU,MAAA,GAAS,GAAA,GAAM,MAAA,CAAO;AAAA,OAClC;AACF,IAAA,IAAI,OAAO,OAAA,KAAY,QAAA;AACrB,MAAA,QAAA,CAAS,CAAC,IAAI,IAAA,CAAK,KAAA,CAAM,UAAU,MAAA,GAAS,GAAA,GAAM,OAAO,OAAO,CAAA;AAAA,EACpE;AAEA,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,IAAA,CAAK,CAAC,MAAM,KAAA,KAAU;AACzC,IAAA,IAAI,KAAA,KAAU,GAAG,OAAO,KAAA;AACxB,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,GAAQ,CAAC,CAAA;AAC/B,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,IAAI,CAAA;AAC9B,IAAA,IACE,OAAO,UAAU,QAAA,IACjB,KAAA,GAAQ,KACR,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA;AAEtB,MAAA,OAAO,KAAA;AAET,IAAA,OAAO,CAAA,KAAM,CAAA,IAAK,CAAA,KAAM,CAAA,IAAK,CAAA,KAAM,CAAA;AAAA,EACrC,CAAC,CAAA;AAED,EAAA,IAAI,GAAA,IAAO,QAAQ,CAAA,EAAG;AACpB,IAAA,OAAO,cAAA,CAAe;AAAA,MACpB,IAAA;AAAA,MACA,MAAA;AAAA,MACA,GAAA,EAAK,CAAA;AAAA,MACL,QAAA;AAAA,MACA,QAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,QAAA;AACT;AAEO,IAAM,eAAA,GAAkB,CAAC,CAAA,KAC9B,CAAC,MAAM,MAAA,CAAO,CAAC,CAAC,CAAA,IAAK,MAAA,CAAO,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,CAAA,GACvC,MAAA,CAAO,CAAC,CAAA,CACL,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EACZ,KAAA,CAAM,EAAE,CAAA,CACR,SAAA,CAAU,OAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,IAAI,CAAA,GACrC;AAEC,IAAM,iBAAiB,CAAC;AAAA,EAC7B,KAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,KAKuB;AACrB,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,KAAK,CAAA,EAAG;AAC9C,IAAA,MAAM,QAAQ,KAAA,GAAQ,GAAA;AACtB,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,KAAA,GAAQ,KAAK,OAAO,GAAA;AACnD,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,IAAY,KAAA,GAAQ,KAAK,OAAO,GAAA;AACnD,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA,IAAS,EAAA;AAClB;AAEO,IAAM,gBAAA,GAAmB,CAC9B,KAAA,KACkC;AAClC,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF;AACF","file":"index.cjs","sourcesContent":["import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type {\n GetChartYTicksProps,\n RechartsXAxisTickPayload,\n RechartsXAxisTickProps,\n} from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\"\n ? top - bottom\n : 0;\n const logScale =\n domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\")\n return ticksArr;\n\n if (outliers)\n [min, max] = [\n quantile(dataSet, 0.4) ?? min,\n quantile(dataSet, 0.6) ?? max,\n ];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (\n typeof digit === \"number\" &&\n digit < 1 &&\n String(d).includes(\".\")\n )\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
1
+ {"version":3,"sources":["../../src/chart/module.ts"],"names":["extent","quantile"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type { GetChartYTicksProps, RechartsXAxisTickProps } from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\" ? top - bottom : 0;\n const logScale = domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\") return ticksArr;\n\n if (outliers)\n [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (typeof digit === \"number\" && digit < 1 && String(d).includes(\".\"))\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
@@ -43,4 +43,4 @@ declare const getDomainLimit: ({ value, gap, min, max, }: {
43
43
  }) => number | string;
44
44
  declare const getXAxisTextAttr: (props: RechartsXAxisTickProps) => SVGAttributes<SVGTextElement>;
45
45
 
46
- export { getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr };
46
+ export { type GetChartYTicksProps, type RechartsXAxisTickPayload, type RechartsXAxisTickProps, type TickLayoutProps, getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr };
@@ -43,4 +43,4 @@ declare const getDomainLimit: ({ value, gap, min, max, }: {
43
43
  }) => number | string;
44
44
  declare const getXAxisTextAttr: (props: RechartsXAxisTickProps) => SVGAttributes<SVGTextElement>;
45
45
 
46
- export { getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr };
46
+ export { type GetChartYTicksProps, type RechartsXAxisTickPayload, type RechartsXAxisTickProps, type TickLayoutProps, getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr };
@@ -1,6 +1,6 @@
1
1
  import { extent, quantile } from 'd3-array';
2
2
 
3
- // src/chart/index.tsx
3
+ // src/chart/module.ts
4
4
  var getChartYTicks = ({
5
5
  data,
6
6
  length,
@@ -75,13 +75,9 @@ var getChartYTicks = ({
75
75
  const tickMax = ticksArr[ticksArr.length - 1];
76
76
  const quantiles = extent(dataSet);
77
77
  let [min, max] = quantiles;
78
- if (typeof min === "undefined" || typeof max === "undefined")
79
- return ticksArr;
78
+ if (typeof min === "undefined" || typeof max === "undefined") return ticksArr;
80
79
  if (outliers)
81
- [min, max] = [
82
- quantile(dataSet, 0.4) ?? min,
83
- quantile(dataSet, 0.6) ?? max
84
- ];
80
+ [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];
85
81
  if (pad > 0) {
86
82
  const SCALE = typeof max === "number" && typeof min === "number" ? Math.max(Math.abs(max), Math.abs(min)) : 0;
87
83
  const OFFSET = SCALE < 10 && isPowTen ? 0.5 : SCALE < 100 && isPowTen ? 5 : SCALE < 1e3 && isPowTen ? 50 : Math.round((max - min) / ticksArr.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/chart/index.tsx"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type {\n GetChartYTicksProps,\n RechartsXAxisTickPayload,\n RechartsXAxisTickProps,\n} from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\"\n ? top - bottom\n : 0;\n const logScale =\n domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\")\n return ticksArr;\n\n if (outliers)\n [min, max] = [\n quantile(dataSet, 0.4) ?? min,\n quantile(dataSet, 0.6) ?? max,\n ];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (\n typeof digit === \"number\" &&\n digit < 1 &&\n String(d).includes(\".\")\n )\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
1
+ {"version":3,"sources":["../../src/chart/module.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type { GetChartYTicksProps, RechartsXAxisTickProps } from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\" ? top - bottom : 0;\n const logScale = domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\") return ticksArr;\n\n if (outliers)\n [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (typeof digit === \"number\" && digit < 1 && String(d).includes(\".\"))\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
  var parse = require('html-react-parser');
5
+ var jsxRuntime = require('react/jsx-runtime');
5
6
 
6
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
8
 
8
- var React__default = /*#__PURE__*/_interopDefault(React);
9
9
  var parse__default = /*#__PURE__*/_interopDefault(parse);
10
10
 
11
- // src/convert/index.tsx
11
+ // src/convert/module.tsx
12
12
  var convertTextToHTML = (text, tagName, key) => {
13
13
  if (!text.includes(`<${tagName}>`)) return text;
14
14
  const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;
15
15
  const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, "g"));
16
16
  let isTagContents = false;
17
- return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, parts.map((part, index) => {
17
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parts.map((part, index) => {
18
18
  if (part === `<${tagName}>`) {
19
19
  isTagContents = true;
20
20
  return null;
@@ -24,9 +24,9 @@ var convertTextToHTML = (text, tagName, key) => {
24
24
  return null;
25
25
  }
26
26
  if (isTagContents)
27
- return /* @__PURE__ */ React__default.default.createElement("span", { key: `${HTML_KEY}/${index}`, className: tagName }, part);
28
- return /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: `${HTML_KEY}/${index}` }, part);
29
- }));
27
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: tagName, children: part }, `${HTML_KEY}/${index}`);
28
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: part }, `${HTML_KEY}/${index}`);
29
+ }) });
30
30
  };
31
31
  var convertTextToLineArray = (text) => {
32
32
  if (text.includes("<br")) return text.split(/<br\s*\/?>|<br>/);
@@ -40,12 +40,15 @@ var convertTextToJsx = ({
40
40
  }) => {
41
41
  if (typeof text !== "string") return text;
42
42
  if (/<[a-z][\s\S]*>/i.test(text)) {
43
- return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, parse__default.default(text));
43
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parse__default.default(text) });
44
44
  }
45
45
  const lines = convertTextToLineArray(text);
46
46
  if (lines.length > 1) {
47
47
  const LINE_KEY = "util/convert/text-to-jsx";
48
- return lines.map((line, index) => /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}` }, index !== 0 && /* @__PURE__ */ React__default.default.createElement("br", null), typeof callback === "function" ? callback(line) : line));
48
+ return lines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
49
+ index !== 0 && /* @__PURE__ */ jsxRuntime.jsx("br", {}),
50
+ typeof callback === "function" ? callback(line) : line
51
+ ] }, key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`));
49
52
  }
50
53
  return text;
51
54
  };
@@ -54,7 +57,10 @@ var convertArrayToJsx = (textArray, options) => {
54
57
  return convertTextToJsx({ text: textArray });
55
58
  const LINE_KEY = "util/convert/array-to-jsx";
56
59
  const commonKey = (content, index, additionalKey) => options?.key ? `${options.key}${additionalKey ? `/${additionalKey}` : ""}/${index}` : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : ""}/${index}`;
57
- return textArray.map((content, index) => /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: commonKey(content, index) }, index !== 0 && /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ React__default.default.createElement("br", { key: commonKey(content, i, "br") }))), content));
60
+ return textArray.map((content, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
61
+ index !== 0 && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx("br", {}, commonKey(content, i, "br"))) }),
62
+ content
63
+ ] }, commonKey(content, index)));
58
64
  };
59
65
 
60
66
  exports.convertArrayToJsx = convertArrayToJsx;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/convert/index.tsx"],"names":["React","Fragment","parse"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type {\n ConvertArrayToJsxOptions,\n ConvertTextToJsxParams,\n} from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n"]}
1
+ {"version":3,"sources":["../../src/convert/module.tsx"],"names":["Fragment","jsx","parse"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type { ConvertArrayToJsxOptions, ConvertTextToJsxParams } from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n"]}
@@ -16,4 +16,4 @@ declare const convertTextToLineArray: (text: string) => string[];
16
16
  declare const convertTextToJsx: ({ text, key, callback, }: ConvertTextToJsxParams) => string | React.ReactNode;
17
17
  declare const convertArrayToJsx: (textArray: React.ReactNode[] | string, options?: ConvertArrayToJsxOptions) => React.ReactNode;
18
18
 
19
- export { convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray };
19
+ export { type ConvertArrayToJsxOptions, type ConvertTextToJsxParams, convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray };
@@ -16,4 +16,4 @@ declare const convertTextToLineArray: (text: string) => string[];
16
16
  declare const convertTextToJsx: ({ text, key, callback, }: ConvertTextToJsxParams) => string | React.ReactNode;
17
17
  declare const convertArrayToJsx: (textArray: React.ReactNode[] | string, options?: ConvertArrayToJsxOptions) => React.ReactNode;
18
18
 
19
- export { convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray };
19
+ export { type ConvertArrayToJsxOptions, type ConvertTextToJsxParams, convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray };
@@ -1,13 +1,14 @@
1
- import React, { Fragment } from 'react';
1
+ import { Fragment as Fragment$1 } from 'react';
2
2
  import parse from 'html-react-parser';
3
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
4
 
4
- // src/convert/index.tsx
5
+ // src/convert/module.tsx
5
6
  var convertTextToHTML = (text, tagName, key) => {
6
7
  if (!text.includes(`<${tagName}>`)) return text;
7
8
  const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;
8
9
  const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, "g"));
9
10
  let isTagContents = false;
10
- return /* @__PURE__ */ React.createElement(React.Fragment, null, parts.map((part, index) => {
11
+ return /* @__PURE__ */ jsx(Fragment, { children: parts.map((part, index) => {
11
12
  if (part === `<${tagName}>`) {
12
13
  isTagContents = true;
13
14
  return null;
@@ -17,9 +18,9 @@ var convertTextToHTML = (text, tagName, key) => {
17
18
  return null;
18
19
  }
19
20
  if (isTagContents)
20
- return /* @__PURE__ */ React.createElement("span", { key: `${HTML_KEY}/${index}`, className: tagName }, part);
21
- return /* @__PURE__ */ React.createElement(Fragment, { key: `${HTML_KEY}/${index}` }, part);
22
- }));
21
+ return /* @__PURE__ */ jsx("span", { className: tagName, children: part }, `${HTML_KEY}/${index}`);
22
+ return /* @__PURE__ */ jsx(Fragment$1, { children: part }, `${HTML_KEY}/${index}`);
23
+ }) });
23
24
  };
24
25
  var convertTextToLineArray = (text) => {
25
26
  if (text.includes("<br")) return text.split(/<br\s*\/?>|<br>/);
@@ -33,12 +34,15 @@ var convertTextToJsx = ({
33
34
  }) => {
34
35
  if (typeof text !== "string") return text;
35
36
  if (/<[a-z][\s\S]*>/i.test(text)) {
36
- return /* @__PURE__ */ React.createElement(React.Fragment, null, parse(text));
37
+ return /* @__PURE__ */ jsx(Fragment, { children: parse(text) });
37
38
  }
38
39
  const lines = convertTextToLineArray(text);
39
40
  if (lines.length > 1) {
40
41
  const LINE_KEY = "util/convert/text-to-jsx";
41
- return lines.map((line, index) => /* @__PURE__ */ React.createElement(Fragment, { key: key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}` }, index !== 0 && /* @__PURE__ */ React.createElement("br", null), typeof callback === "function" ? callback(line) : line));
42
+ return lines.map((line, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
43
+ index !== 0 && /* @__PURE__ */ jsx("br", {}),
44
+ typeof callback === "function" ? callback(line) : line
45
+ ] }, key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`));
42
46
  }
43
47
  return text;
44
48
  };
@@ -47,7 +51,10 @@ var convertArrayToJsx = (textArray, options) => {
47
51
  return convertTextToJsx({ text: textArray });
48
52
  const LINE_KEY = "util/convert/array-to-jsx";
49
53
  const commonKey = (content, index, additionalKey) => options?.key ? `${options.key}${additionalKey ? `/${additionalKey}` : ""}/${index}` : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : ""}/${index}`;
50
- return textArray.map((content, index) => /* @__PURE__ */ React.createElement(Fragment, { key: commonKey(content, index) }, index !== 0 && /* @__PURE__ */ React.createElement(React.Fragment, null, new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ React.createElement("br", { key: commonKey(content, i, "br") }))), content));
54
+ return textArray.map((content, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
55
+ index !== 0 && /* @__PURE__ */ jsx(Fragment, { children: new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ jsx("br", {}, commonKey(content, i, "br"))) }),
56
+ content
57
+ ] }, commonKey(content, index)));
51
58
  };
52
59
 
53
60
  export { convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/convert/index.tsx"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type {\n ConvertArrayToJsxOptions,\n ConvertTextToJsxParams,\n} from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n"]}
1
+ {"version":3,"sources":["../../src/convert/module.tsx"],"names":["Fragment"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type { ConvertArrayToJsxOptions, ConvertTextToJsxParams } from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n"]}
@@ -6,7 +6,7 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
6
 
7
7
  var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
8
8
 
9
- // src/file/index.tsx
9
+ // src/file/module.ts
10
10
  var fileDownload = ({ url, name }) => fetch(url).then((res) => {
11
11
  const contentType = res.headers.get("content-type") || "";
12
12
  if (!res.ok || contentType.includes("text/html")) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/file/index.tsx"],"names":["Decimal"],"mappings":";;;;;;;;;AAGO,IAAM,YAAA,GAAe,CAAC,EAAE,GAAA,EAAK,IAAA,OAClC,KAAA,CAAM,GAAG,CAAA,CACN,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AACvD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,IAAM,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,EAAG;AAChD,IAAA,MAAM,IAAI,MAAM,2HAA4B,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAI,IAAA,EAAK;AAClB,CAAC,CAAA,CACA,KAAK,CAAA,IAAA,KAAQ;AACZ,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACzC,EAAA,MAAA,CAAO,IAAA,GAAO,SAAA;AACd,EAAA,MAAA,CAAO,QAAA,GAAW,OAAO,IAAI,CAAA;AAC7B,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,MAAA,CAAO,KAAA,EAAM;AACb,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,GAAA,CAAI,gBAAgB,SAAS,CAAA;AAC/B,CAAC,CAAA,CACA,MAAM,CAAA,GAAA,KAAO;AACZ,EAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AACpC,EAAA,KAAA,CAAM,0FAAoB,CAAA;AAC5B,CAAC;AAEE,IAAM,QAAA,GAAW,CAAC,IAAA,EAAe,IAAA,GAAgB,IAAA,KAAiB;AACvE,EAAA,IAAI,OAAO,SAAS,QAAA,IAAa,IAAA,IAAQ,MAAM,MAAA,CAAO,IAAI,CAAC,CAAA,EAAI,OAAO,EAAA;AAEtE,EAAA,MAAM,MAAA,GAAS,IAAA;AACf,EAAA,MAAM,WAAW,MAAA,GAAS,MAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,IAAIA,wBAAA,CAAQ,IAAI,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AAExB,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,MAAA,SAAe,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,OAAO,IAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AACvD","file":"index.cjs","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n"]}
1
+ {"version":3,"sources":["../../src/file/module.ts"],"names":["Decimal"],"mappings":";;;;;;;;;AAGO,IAAM,YAAA,GAAe,CAAC,EAAE,GAAA,EAAK,IAAA,OAClC,KAAA,CAAM,GAAG,CAAA,CACN,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AACvD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,IAAM,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,EAAG;AAChD,IAAA,MAAM,IAAI,MAAM,2HAA4B,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAI,IAAA,EAAK;AAClB,CAAC,CAAA,CACA,KAAK,CAAA,IAAA,KAAQ;AACZ,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACzC,EAAA,MAAA,CAAO,IAAA,GAAO,SAAA;AACd,EAAA,MAAA,CAAO,QAAA,GAAW,OAAO,IAAI,CAAA;AAC7B,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,MAAA,CAAO,KAAA,EAAM;AACb,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,GAAA,CAAI,gBAAgB,SAAS,CAAA;AAC/B,CAAC,CAAA,CACA,MAAM,CAAA,GAAA,KAAO;AACZ,EAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AACpC,EAAA,KAAA,CAAM,0FAAoB,CAAA;AAC5B,CAAC;AAEE,IAAM,QAAA,GAAW,CAAC,IAAA,EAAe,IAAA,GAAgB,IAAA,KAAiB;AACvE,EAAA,IAAI,OAAO,SAAS,QAAA,IAAa,IAAA,IAAQ,MAAM,MAAA,CAAO,IAAI,CAAC,CAAA,EAAI,OAAO,EAAA;AAEtE,EAAA,MAAM,MAAA,GAAS,IAAA;AACf,EAAA,MAAM,WAAW,MAAA,GAAS,MAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,IAAIA,wBAAA,CAAQ,IAAI,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AAExB,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,MAAA,SAAe,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,OAAO,IAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AACvD","file":"index.cjs","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n"]}
@@ -6,4 +6,4 @@ type FileDownloadParams = {
6
6
  declare const fileDownload: ({ url, name }: FileDownloadParams) => Promise<void>;
7
7
  declare const fileSize: (size: unknown, unit?: boolean) => string;
8
8
 
9
- export { fileDownload, fileSize };
9
+ export { type FileDownloadParams, fileDownload, fileSize };
@@ -6,4 +6,4 @@ type FileDownloadParams = {
6
6
  declare const fileDownload: ({ url, name }: FileDownloadParams) => Promise<void>;
7
7
  declare const fileSize: (size: unknown, unit?: boolean) => string;
8
8
 
9
- export { fileDownload, fileSize };
9
+ export { type FileDownloadParams, fileDownload, fileSize };
@@ -1,6 +1,6 @@
1
1
  import Decimal from 'decimal.js';
2
2
 
3
- // src/file/index.tsx
3
+ // src/file/module.ts
4
4
  var fileDownload = ({ url, name }) => fetch(url).then((res) => {
5
5
  const contentType = res.headers.get("content-type") || "";
6
6
  if (!res.ok || contentType.includes("text/html")) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/file/index.tsx"],"names":[],"mappings":";;;AAGO,IAAM,YAAA,GAAe,CAAC,EAAE,GAAA,EAAK,IAAA,OAClC,KAAA,CAAM,GAAG,CAAA,CACN,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AACvD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,IAAM,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,EAAG;AAChD,IAAA,MAAM,IAAI,MAAM,2HAA4B,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAI,IAAA,EAAK;AAClB,CAAC,CAAA,CACA,KAAK,CAAA,IAAA,KAAQ;AACZ,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACzC,EAAA,MAAA,CAAO,IAAA,GAAO,SAAA;AACd,EAAA,MAAA,CAAO,QAAA,GAAW,OAAO,IAAI,CAAA;AAC7B,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,MAAA,CAAO,KAAA,EAAM;AACb,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,GAAA,CAAI,gBAAgB,SAAS,CAAA;AAC/B,CAAC,CAAA,CACA,MAAM,CAAA,GAAA,KAAO;AACZ,EAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AACpC,EAAA,KAAA,CAAM,0FAAoB,CAAA;AAC5B,CAAC;AAEE,IAAM,QAAA,GAAW,CAAC,IAAA,EAAe,IAAA,GAAgB,IAAA,KAAiB;AACvE,EAAA,IAAI,OAAO,SAAS,QAAA,IAAa,IAAA,IAAQ,MAAM,MAAA,CAAO,IAAI,CAAC,CAAA,EAAI,OAAO,EAAA;AAEtE,EAAA,MAAM,MAAA,GAAS,IAAA;AACf,EAAA,MAAM,WAAW,MAAA,GAAS,MAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,IAAI,OAAA,CAAQ,IAAI,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AAExB,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,MAAA,SAAe,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,OAAO,IAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AACvD","file":"index.mjs","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n"]}
1
+ {"version":3,"sources":["../../src/file/module.ts"],"names":[],"mappings":";;;AAGO,IAAM,YAAA,GAAe,CAAC,EAAE,GAAA,EAAK,IAAA,OAClC,KAAA,CAAM,GAAG,CAAA,CACN,IAAA,CAAK,CAAA,GAAA,KAAO;AACX,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AACvD,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,IAAM,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,EAAG;AAChD,IAAA,MAAM,IAAI,MAAM,2HAA4B,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,IAAI,IAAA,EAAK;AAClB,CAAC,CAAA,CACA,KAAK,CAAA,IAAA,KAAQ;AACZ,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACzC,EAAA,MAAA,CAAO,IAAA,GAAO,SAAA;AACd,EAAA,MAAA,CAAO,QAAA,GAAW,OAAO,IAAI,CAAA;AAC7B,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,MAAA,CAAO,KAAA,EAAM;AACb,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,MAAM,CAAA;AAChC,EAAA,GAAA,CAAI,gBAAgB,SAAS,CAAA;AAC/B,CAAC,CAAA,CACA,MAAM,CAAA,GAAA,KAAO;AACZ,EAAA,OAAA,CAAQ,KAAA,CAAM,mBAAmB,GAAG,CAAA;AACpC,EAAA,KAAA,CAAM,0FAAoB,CAAA;AAC5B,CAAC;AAEE,IAAM,QAAA,GAAW,CAAC,IAAA,EAAe,IAAA,GAAgB,IAAA,KAAiB;AACvE,EAAA,IAAI,OAAO,SAAS,QAAA,IAAa,IAAA,IAAQ,MAAM,MAAA,CAAO,IAAI,CAAC,CAAA,EAAI,OAAO,EAAA;AAEtE,EAAA,MAAM,MAAA,GAAS,IAAA;AACf,EAAA,MAAM,WAAW,MAAA,GAAS,MAAA;AAC1B,EAAA,MAAM,QAAA,GAAW,SAAS,MAAA,GAAS,MAAA;AAEnC,EAAA,MAAM,IAAA,GAAO,IAAI,OAAA,CAAQ,IAAI,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AACxB,EAAA,MAAM,EAAA,GAAK,EAAA,CAAG,GAAA,CAAI,MAAM,CAAA;AAExB,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,MAAA,SAAe,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,IAAI,IAAA,CAAK,UAAS,GAAI,QAAA,SAAiB,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA;AACvD,EAAA,OAAO,IAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAA,CAAA,GAAO,CAAA,EAAG,EAAA,CAAG,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AACvD","file":"index.mjs","sourcesContent":["import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n"]}
package/dist/index.cjs CHANGED
@@ -1,23 +1,23 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
  var parse = require('html-react-parser');
5
+ var jsxRuntime = require('react/jsx-runtime');
5
6
  var Decimal = require('decimal.js');
6
7
  var d3Array = require('d3-array');
7
8
 
8
9
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
10
 
10
- var React__default = /*#__PURE__*/_interopDefault(React);
11
11
  var parse__default = /*#__PURE__*/_interopDefault(parse);
12
12
  var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
13
13
 
14
- // src/convert/index.tsx
14
+ // src/convert/module.tsx
15
15
  var convertTextToHTML = (text, tagName, key) => {
16
16
  if (!text.includes(`<${tagName}>`)) return text;
17
17
  const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;
18
18
  const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, "g"));
19
19
  let isTagContents = false;
20
- return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, parts.map((part, index) => {
20
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parts.map((part, index) => {
21
21
  if (part === `<${tagName}>`) {
22
22
  isTagContents = true;
23
23
  return null;
@@ -27,9 +27,9 @@ var convertTextToHTML = (text, tagName, key) => {
27
27
  return null;
28
28
  }
29
29
  if (isTagContents)
30
- return /* @__PURE__ */ React__default.default.createElement("span", { key: `${HTML_KEY}/${index}`, className: tagName }, part);
31
- return /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: `${HTML_KEY}/${index}` }, part);
32
- }));
30
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: tagName, children: part }, `${HTML_KEY}/${index}`);
31
+ return /* @__PURE__ */ jsxRuntime.jsx(react.Fragment, { children: part }, `${HTML_KEY}/${index}`);
32
+ }) });
33
33
  };
34
34
  var convertTextToLineArray = (text) => {
35
35
  if (text.includes("<br")) return text.split(/<br\s*\/?>|<br>/);
@@ -43,12 +43,15 @@ var convertTextToJsx = ({
43
43
  }) => {
44
44
  if (typeof text !== "string") return text;
45
45
  if (/<[a-z][\s\S]*>/i.test(text)) {
46
- return /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, parse__default.default(text));
46
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: parse__default.default(text) });
47
47
  }
48
48
  const lines = convertTextToLineArray(text);
49
49
  if (lines.length > 1) {
50
50
  const LINE_KEY = "util/convert/text-to-jsx";
51
- return lines.map((line, index) => /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}` }, index !== 0 && /* @__PURE__ */ React__default.default.createElement("br", null), typeof callback === "function" ? callback(line) : line));
51
+ return lines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
52
+ index !== 0 && /* @__PURE__ */ jsxRuntime.jsx("br", {}),
53
+ typeof callback === "function" ? callback(line) : line
54
+ ] }, key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`));
52
55
  }
53
56
  return text;
54
57
  };
@@ -57,7 +60,10 @@ var convertArrayToJsx = (textArray, options) => {
57
60
  return convertTextToJsx({ text: textArray });
58
61
  const LINE_KEY = "util/convert/array-to-jsx";
59
62
  const commonKey = (content, index, additionalKey) => options?.key ? `${options.key}${additionalKey ? `/${additionalKey}` : ""}/${index}` : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : ""}/${index}`;
60
- return textArray.map((content, index) => /* @__PURE__ */ React__default.default.createElement(React.Fragment, { key: commonKey(content, index) }, index !== 0 && /* @__PURE__ */ React__default.default.createElement(React__default.default.Fragment, null, new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ React__default.default.createElement("br", { key: commonKey(content, i, "br") }))), content));
63
+ return textArray.map((content, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
64
+ index !== 0 && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx("br", {}, commonKey(content, i, "br"))) }),
65
+ content
66
+ ] }, commonKey(content, index)));
61
67
  };
62
68
  function matchKeyword(origin, exp, renderKey) {
63
69
  const matches = Array.from(origin.matchAll(exp));
@@ -69,7 +75,7 @@ function matchKeyword(origin, exp, renderKey) {
69
75
  const offset = prevMatch ? prevMatch.index + prevMatch[0].length : 0;
70
76
  jsxArray.push(origin.slice(offset, match.index));
71
77
  jsxArray.push(
72
- /* @__PURE__ */ React__default.default.createElement("i", { className: "matched", key: `${renderKey}/${match}/${i}` }, match[0])
78
+ /* @__PURE__ */ jsxRuntime.jsx("i", { className: "matched", children: match[0] }, `${renderKey}/${match}/${i}`)
73
79
  );
74
80
  const isLastMatch = i === matches.length - 1;
75
81
  const hasTextAfterLastMatch = match.index + match[0].length < origin.length;
@@ -186,13 +192,9 @@ var getChartYTicks = ({
186
192
  const tickMax = ticksArr[ticksArr.length - 1];
187
193
  const quantiles = d3Array.extent(dataSet);
188
194
  let [min, max] = quantiles;
189
- if (typeof min === "undefined" || typeof max === "undefined")
190
- return ticksArr;
195
+ if (typeof min === "undefined" || typeof max === "undefined") return ticksArr;
191
196
  if (outliers)
192
- [min, max] = [
193
- d3Array.quantile(dataSet, 0.4) ?? min,
194
- d3Array.quantile(dataSet, 0.6) ?? max
195
- ];
197
+ [min, max] = [d3Array.quantile(dataSet, 0.4) ?? min, d3Array.quantile(dataSet, 0.6) ?? max];
196
198
  if (pad > 0) {
197
199
  const SCALE = typeof max === "number" && typeof min === "number" ? Math.max(Math.abs(max), Math.abs(min)) : 0;
198
200
  const OFFSET = SCALE < 10 && isPowTen ? 0.5 : SCALE < 100 && isPowTen ? 5 : SCALE < 1e3 && isPowTen ? 50 : Math.round((max - min) / ticksArr.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/convert/index.tsx","../src/match/index.tsx","../src/file/index.tsx","../src/chart/index.tsx"],"names":["React","Fragment","parse","Decimal","extent","quantile"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type {\n ConvertArrayToJsxOptions,\n ConvertTextToJsxParams,\n} from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n","import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n","import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n","import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type {\n GetChartYTicksProps,\n RechartsXAxisTickPayload,\n RechartsXAxisTickProps,\n} from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\"\n ? top - bottom\n : 0;\n const logScale =\n domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\")\n return ticksArr;\n\n if (outliers)\n [min, max] = [\n quantile(dataSet, 0.4) ?? min,\n quantile(dataSet, 0.6) ?? max,\n ];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (\n typeof digit === \"number\" &&\n digit < 1 &&\n String(d).includes(\".\")\n )\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/convert/module.tsx","../src/match/module.tsx","../src/file/module.ts","../src/chart/module.ts"],"names":["Fragment","jsx","parse","Decimal","extent","quantile"],"mappings":"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","file":"index.cjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type { ConvertArrayToJsxOptions, ConvertTextToJsxParams } from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n","import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n","import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n","import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type { GetChartYTicksProps, RechartsXAxisTickProps } from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\" ? top - bottom : 0;\n const logScale = domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\") return ticksArr;\n\n if (outliers)\n [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (typeof digit === \"number\" && digit < 1 && String(d).includes(\".\"))\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- export { convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray } from './convert/index.cjs';
2
- export { matchKeyword } from './match/index.cjs';
3
- export { fileDownload, fileSize } from './file/index.cjs';
4
- export { getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr } from './chart/index.cjs';
1
+ export { ConvertArrayToJsxOptions, ConvertTextToJsxParams, convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray } from './convert/index.cjs';
2
+ export { MatchKeywordResult, matchKeyword } from './match/index.cjs';
3
+ export { FileDownloadParams, fileDownload, fileSize } from './file/index.cjs';
4
+ export { GetChartYTicksProps, RechartsXAxisTickPayload, RechartsXAxisTickProps, TickLayoutProps, getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr } from './chart/index.cjs';
5
5
  import 'react';
6
6
  import 'recharts';
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export { convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray } from './convert/index.js';
2
- export { matchKeyword } from './match/index.js';
3
- export { fileDownload, fileSize } from './file/index.js';
4
- export { getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr } from './chart/index.js';
1
+ export { ConvertArrayToJsxOptions, ConvertTextToJsxParams, convertArrayToJsx, convertTextToHTML, convertTextToJsx, convertTextToLineArray } from './convert/index.js';
2
+ export { MatchKeywordResult, matchKeyword } from './match/index.js';
3
+ export { FileDownloadParams, fileDownload, fileSize } from './file/index.js';
4
+ export { GetChartYTicksProps, RechartsXAxisTickPayload, RechartsXAxisTickProps, TickLayoutProps, getChartYTicks, getDecimalIndex, getDomainLimit, getXAxisTextAttr } from './chart/index.js';
5
5
  import 'react';
6
6
  import 'recharts';
package/dist/index.mjs CHANGED
@@ -1,15 +1,16 @@
1
- import React, { Fragment } from 'react';
1
+ import { Fragment as Fragment$1 } from 'react';
2
2
  import parse from 'html-react-parser';
3
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
4
  import Decimal from 'decimal.js';
4
5
  import { extent, quantile } from 'd3-array';
5
6
 
6
- // src/convert/index.tsx
7
+ // src/convert/module.tsx
7
8
  var convertTextToHTML = (text, tagName, key) => {
8
9
  if (!text.includes(`<${tagName}>`)) return text;
9
10
  const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;
10
11
  const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, "g"));
11
12
  let isTagContents = false;
12
- return /* @__PURE__ */ React.createElement(React.Fragment, null, parts.map((part, index) => {
13
+ return /* @__PURE__ */ jsx(Fragment, { children: parts.map((part, index) => {
13
14
  if (part === `<${tagName}>`) {
14
15
  isTagContents = true;
15
16
  return null;
@@ -19,9 +20,9 @@ var convertTextToHTML = (text, tagName, key) => {
19
20
  return null;
20
21
  }
21
22
  if (isTagContents)
22
- return /* @__PURE__ */ React.createElement("span", { key: `${HTML_KEY}/${index}`, className: tagName }, part);
23
- return /* @__PURE__ */ React.createElement(Fragment, { key: `${HTML_KEY}/${index}` }, part);
24
- }));
23
+ return /* @__PURE__ */ jsx("span", { className: tagName, children: part }, `${HTML_KEY}/${index}`);
24
+ return /* @__PURE__ */ jsx(Fragment$1, { children: part }, `${HTML_KEY}/${index}`);
25
+ }) });
25
26
  };
26
27
  var convertTextToLineArray = (text) => {
27
28
  if (text.includes("<br")) return text.split(/<br\s*\/?>|<br>/);
@@ -35,12 +36,15 @@ var convertTextToJsx = ({
35
36
  }) => {
36
37
  if (typeof text !== "string") return text;
37
38
  if (/<[a-z][\s\S]*>/i.test(text)) {
38
- return /* @__PURE__ */ React.createElement(React.Fragment, null, parse(text));
39
+ return /* @__PURE__ */ jsx(Fragment, { children: parse(text) });
39
40
  }
40
41
  const lines = convertTextToLineArray(text);
41
42
  if (lines.length > 1) {
42
43
  const LINE_KEY = "util/convert/text-to-jsx";
43
- return lines.map((line, index) => /* @__PURE__ */ React.createElement(Fragment, { key: key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}` }, index !== 0 && /* @__PURE__ */ React.createElement("br", null), typeof callback === "function" ? callback(line) : line));
44
+ return lines.map((line, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
45
+ index !== 0 && /* @__PURE__ */ jsx("br", {}),
46
+ typeof callback === "function" ? callback(line) : line
47
+ ] }, key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`));
44
48
  }
45
49
  return text;
46
50
  };
@@ -49,7 +53,10 @@ var convertArrayToJsx = (textArray, options) => {
49
53
  return convertTextToJsx({ text: textArray });
50
54
  const LINE_KEY = "util/convert/array-to-jsx";
51
55
  const commonKey = (content, index, additionalKey) => options?.key ? `${options.key}${additionalKey ? `/${additionalKey}` : ""}/${index}` : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : ""}/${index}`;
52
- return textArray.map((content, index) => /* @__PURE__ */ React.createElement(Fragment, { key: commonKey(content, index) }, index !== 0 && /* @__PURE__ */ React.createElement(React.Fragment, null, new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ React.createElement("br", { key: commonKey(content, i, "br") }))), content));
56
+ return textArray.map((content, index) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
57
+ index !== 0 && /* @__PURE__ */ jsx(Fragment, { children: new Array(options?.phraseGap || 1).fill({}).map((_, i) => /* @__PURE__ */ jsx("br", {}, commonKey(content, i, "br"))) }),
58
+ content
59
+ ] }, commonKey(content, index)));
53
60
  };
54
61
  function matchKeyword(origin, exp, renderKey) {
55
62
  const matches = Array.from(origin.matchAll(exp));
@@ -61,7 +68,7 @@ function matchKeyword(origin, exp, renderKey) {
61
68
  const offset = prevMatch ? prevMatch.index + prevMatch[0].length : 0;
62
69
  jsxArray.push(origin.slice(offset, match.index));
63
70
  jsxArray.push(
64
- /* @__PURE__ */ React.createElement("i", { className: "matched", key: `${renderKey}/${match}/${i}` }, match[0])
71
+ /* @__PURE__ */ jsx("i", { className: "matched", children: match[0] }, `${renderKey}/${match}/${i}`)
65
72
  );
66
73
  const isLastMatch = i === matches.length - 1;
67
74
  const hasTextAfterLastMatch = match.index + match[0].length < origin.length;
@@ -178,13 +185,9 @@ var getChartYTicks = ({
178
185
  const tickMax = ticksArr[ticksArr.length - 1];
179
186
  const quantiles = extent(dataSet);
180
187
  let [min, max] = quantiles;
181
- if (typeof min === "undefined" || typeof max === "undefined")
182
- return ticksArr;
188
+ if (typeof min === "undefined" || typeof max === "undefined") return ticksArr;
183
189
  if (outliers)
184
- [min, max] = [
185
- quantile(dataSet, 0.4) ?? min,
186
- quantile(dataSet, 0.6) ?? max
187
- ];
190
+ [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];
188
191
  if (pad > 0) {
189
192
  const SCALE = typeof max === "number" && typeof min === "number" ? Math.max(Math.abs(max), Math.abs(min)) : 0;
190
193
  const OFFSET = SCALE < 10 && isPowTen ? 0.5 : SCALE < 100 && isPowTen ? 5 : SCALE < 1e3 && isPowTen ? 50 : Math.round((max - min) / ticksArr.length);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/convert/index.tsx","../src/match/index.tsx","../src/file/index.tsx","../src/chart/index.tsx"],"names":["React"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type {\n ConvertArrayToJsxOptions,\n ConvertTextToJsxParams,\n} from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n","import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n","import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n","import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type {\n GetChartYTicksProps,\n RechartsXAxisTickPayload,\n RechartsXAxisTickProps,\n} from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\"\n ? top - bottom\n : 0;\n const logScale =\n domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\")\n return ticksArr;\n\n if (outliers)\n [min, max] = [\n quantile(dataSet, 0.4) ?? min,\n quantile(dataSet, 0.6) ?? max,\n ];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (\n typeof digit === \"number\" &&\n digit < 1 &&\n String(d).includes(\".\")\n )\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/convert/module.tsx","../src/match/module.tsx","../src/file/module.ts","../src/chart/module.ts"],"names":["Fragment","jsx"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { Fragment } from \"react\";\nimport parse from \"html-react-parser\";\nimport type { ConvertArrayToJsxOptions, ConvertTextToJsxParams } from \"./types\";\n\nexport const convertTextToHTML = (\n text: string,\n tagName: string,\n key?: string,\n): React.ReactNode => {\n if (!text.includes(`<${tagName}>`)) return text;\n const HTML_KEY = key ? key : `util/convert/text-to-html/${tagName}`;\n const parts = text.split(new RegExp(`(<${tagName}>|</${tagName}>)`, \"g\"));\n\n let isTagContents = false;\n return (\n <>\n {parts.map((part, index) => {\n if (part === `<${tagName}>`) {\n isTagContents = true;\n return null;\n }\n if (part === `</${tagName}>`) {\n isTagContents = false;\n return null;\n }\n\n if (isTagContents)\n return (\n <span key={`${HTML_KEY}/${index}`} className={tagName}>\n {part}\n </span>\n );\n return <Fragment key={`${HTML_KEY}/${index}`}>{part}</Fragment>;\n })}\n </>\n );\n};\n\nexport const convertTextToLineArray = (text: string): string[] => {\n if (text.includes(\"<br\")) return text.split(/<br\\s*\\/?>|<br>/);\n if (text.includes(\"\\n\")) return text.split(\"\\n\");\n return [text];\n};\n\nexport const convertTextToJsx = ({\n text,\n key,\n callback,\n}: ConvertTextToJsxParams): string | React.ReactNode => {\n if (typeof text !== \"string\") return text;\n\n if (/<[a-z][\\s\\S]*>/i.test(text)) {\n return <>{parse(text)}</>;\n }\n\n const lines = convertTextToLineArray(text);\n\n if (lines.length > 1) {\n const LINE_KEY = \"util/convert/text-to-jsx\";\n return lines.map((line, index) => (\n <Fragment key={key ? `${key}/${index}` : `${LINE_KEY}/${line}/${index}`}>\n {index !== 0 && <br />}\n {typeof callback === \"function\" ? callback(line) : line}\n </Fragment>\n ));\n }\n\n return text;\n};\n\nexport const convertArrayToJsx = (\n textArray: React.ReactNode[] | string,\n options?: ConvertArrayToJsxOptions,\n): React.ReactNode => {\n if (typeof textArray === \"string\" || !Array.isArray(textArray))\n return convertTextToJsx({ text: textArray });\n\n const LINE_KEY = \"util/convert/array-to-jsx\";\n const commonKey = (\n content: React.ReactNode,\n index: number,\n additionalKey?: string,\n ) =>\n options?.key\n ? `${options.key}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`\n : `${LINE_KEY}/${String(content)}${additionalKey ? `/${additionalKey}` : \"\"}/${index}`;\n\n return textArray.map((content, index) => (\n <Fragment key={commonKey(content, index)}>\n {index !== 0 && (\n <>\n {new Array(options?.phraseGap || 1).fill({}).map((_, i) => (\n <br key={commonKey(content, i, \"br\")} />\n ))}\n </>\n )}\n {content}\n </Fragment>\n ));\n};\n","import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n","import Decimal from \"decimal.js\";\nimport type { FileDownloadParams } from \"./types\";\n\nexport const fileDownload = ({ url, name }: FileDownloadParams) =>\n fetch(url)\n .then(res => {\n const contentType = res.headers.get(\"content-type\") || \"\";\n if (!res.ok || contentType.includes(\"text/html\")) {\n throw new Error(\"파일을 찾을 수 없거나 다운로드할 수 없습니다.\");\n }\n return res.blob();\n })\n .then(blob => {\n const objectUrl = URL.createObjectURL(blob);\n const anchor = document.createElement(\"a\");\n anchor.href = objectUrl;\n anchor.download = String(name);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(objectUrl);\n })\n .catch(err => {\n console.error(\"Download error:\", err);\n alert(\"다운로드 중 오류가 발생했습니다.\");\n });\n\nexport const fileSize = (size: unknown, unit: boolean = true): string => {\n if (typeof size !== \"number\" || (size && isNaN(Number(size)))) return \"\";\n\n const AMOUNT = 1024;\n const K_AMOUNT = AMOUNT * AMOUNT;\n const M_AMOUNT = AMOUNT * AMOUNT * AMOUNT;\n\n const byte = new Decimal(size);\n const kb = byte.div(AMOUNT);\n const mb = kb.div(AMOUNT);\n const gb = mb.div(AMOUNT);\n\n if (byte.toNumber() < AMOUNT) return `${byte.toFixed(0)}B`;\n if (byte.toNumber() < K_AMOUNT) return `${kb.toFixed(0)}KB`;\n if (byte.toNumber() < M_AMOUNT) return `${mb.toFixed(0)}MB`;\n return unit ? `${gb.toFixed(0)}GB` : `${gb.toFixed(2)} GB`;\n};\n","import type { SVGAttributes } from \"react\";\nimport { extent, quantile } from \"d3-array\";\nimport type { GetChartYTicksProps, RechartsXAxisTickProps } from \"./types\";\n\nexport const getChartYTicks = ({\n data,\n length,\n pad = 0.5,\n limitMin,\n limitMax,\n digit = 2,\n outliers = false,\n log,\n}: GetChartYTicksProps): number[] | undefined => {\n if (data.length === 0 || length <= 1) return undefined;\n if (typeof limitMin === \"number\" && typeof limitMax === \"number\")\n return Array.from({ length: length + 1 }).map((_, index) =>\n Math.round(((limitMax - limitMin) / length) * index + limitMin),\n );\n\n const dataSet: number[] = [];\n\n data.forEach(d => {\n if (\n typeof d !== \"number\" &&\n typeof d !== \"string\" &&\n !(typeof d === \"object\" && d !== null && \"value\" in d)\n )\n return;\n\n if (typeof d === \"number\") dataSet.push(d);\n else if (typeof d === \"string\" && !isNaN(Number(d)))\n dataSet.push(Number(d));\n else if (\n typeof d === \"object\" &&\n d !== null &&\n \"value\" in d &&\n typeof (d as { value: unknown }).value === \"number\"\n )\n dataSet.push((d as { value: number }).value);\n });\n\n if (dataSet.length === 0) return undefined;\n\n let domain = extent(dataSet) as [number | undefined, number | undefined];\n if (typeof limitMin === \"number\") domain = [limitMin, domain[1]];\n if (typeof limitMax === \"number\") domain = [domain[0], limitMax];\n\n if (typeof domain[0] === \"undefined\" || typeof domain[1] === \"undefined\")\n return undefined;\n\n const isAllDecimal = dataSet.every(\n v =>\n (typeof digit === \"number\" && digit > 0) ||\n String(v)\n .split(\".\")\n .filter((_, index) => index === 1)\n .filter(Boolean)\n .filter(f => f.split(\"\").some(s => s !== \"0\")).length > 0,\n );\n\n const DECIMAL_LIMIT = typeof digit === \"number\" ? digit : 2;\n\n const floor = (domain[0] + 0.001 * domain[0]) * Math.pow(10, DECIMAL_LIMIT);\n const ceil = (domain[1] + 0.001 * domain[1]) * Math.pow(10, DECIMAL_LIMIT);\n const interval = (ceil - floor) / length;\n\n const ticks: number[] = [];\n for (let i = 0; i < length + 1; i++)\n ticks.push((floor + i * interval) / Math.pow(10, DECIMAL_LIMIT));\n\n const [firstTick] = ticks;\n const lastTick = ticks[ticks.length - 1];\n if (typeof firstTick === \"undefined\" || typeof lastTick === \"undefined\")\n return undefined;\n\n const gap = Math.abs(lastTick - firstTick);\n const precision =\n typeof digit === \"number\"\n ? digit\n : gap < 1\n ? 3\n : gap < 10 && isAllDecimal\n ? 2\n : gap < 25\n ? 1\n : 0;\n\n const ticksArr = ticks.map(tick =>\n Number((tick + Number.EPSILON).toFixed(precision)),\n );\n\n if (log) {\n const MAX_LENGTH = 8;\n const top = ticksArr[ticksArr.length - 1];\n const bottom = ticksArr[0];\n const domainRange =\n typeof top === \"number\" && typeof bottom === \"number\" ? top - bottom : 0;\n const logScale = domainRange > 0 ? Math.round(Math.log2(domainRange)) : 0;\n\n if (ticksArr.length > MAX_LENGTH) {\n const step = Math.ceil(ticksArr.length / MAX_LENGTH);\n return ticksArr.filter((_, index) => index % step === 0);\n }\n\n if (logScale > 0) {\n const step = Math.max(1, Math.floor(MAX_LENGTH / logScale));\n return ticksArr.filter((_, index) => index % step === 0);\n }\n }\n\n if (pad === 0) return ticksArr;\n\n const isPowTen = ticksArr.every(t => {\n const v = Math.abs(t);\n return v === 0 || Number.isInteger(Math.log10(v));\n });\n\n const [tickMin] = ticksArr;\n const tickMax = ticksArr[ticksArr.length - 1];\n\n const quantiles = extent(dataSet);\n let [min, max] = quantiles;\n if (typeof min === \"undefined\" || typeof max === \"undefined\") return ticksArr;\n\n if (outliers)\n [min, max] = [quantile(dataSet, 0.4) ?? min, quantile(dataSet, 0.6) ?? max];\n\n if (pad > 0) {\n const SCALE =\n typeof max === \"number\" && typeof min === \"number\"\n ? Math.max(Math.abs(max), Math.abs(min))\n : 0;\n const OFFSET =\n SCALE < 10 && isPowTen\n ? 0.5\n : SCALE < 100 && isPowTen\n ? 5\n : SCALE < 1000 && isPowTen\n ? 50\n : Math.round((max - min) / ticksArr.length);\n\n if (typeof tickMax === \"number\")\n ticksArr[ticksArr.length - 1] = Math.round(\n tickMax + OFFSET * pad + Number.EPSILON,\n );\n if (typeof tickMin === \"number\")\n ticksArr[0] = Math.round(tickMin - OFFSET * pad - Number.EPSILON);\n }\n\n const bad = ticksArr.some((tick, index) => {\n if (index === 0) return false;\n const prev = ticksArr[index - 1];\n const d = Math.abs(tick - prev);\n if (typeof digit === \"number\" && digit < 1 && String(d).includes(\".\"))\n return false;\n\n return d !== 1 && d !== 5 && d !== 0;\n });\n\n if (bad && pad !== 0) {\n return getChartYTicks({\n data,\n length,\n pad: 0,\n limitMin,\n limitMax,\n digit,\n outliers,\n log,\n });\n }\n\n return ticksArr;\n};\n\nexport const getDecimalIndex = (v: unknown): number =>\n !isNaN(Number(v)) && String(v).includes(\".\")\n ? String(v)\n .split(\".\")[1]\n .split(\"\")\n .findIndex(d => Number(d) !== 0) + 1\n : 0;\n\nexport const getDomainLimit = ({\n value,\n gap,\n min,\n max,\n}: {\n value: number | null;\n gap: number;\n min?: number;\n max?: number;\n}): number | string => {\n if (typeof value === \"number\" && !isNaN(value)) {\n const limit = value + gap;\n if (typeof min === \"number\" && limit < min) return min;\n if (typeof max === \"number\" && limit > max) return max;\n return limit;\n }\n return value ?? \"\";\n};\n\nexport const getXAxisTextAttr = (\n props: RechartsXAxisTickProps,\n): SVGAttributes<SVGTextElement> => {\n const {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n orientation,\n textAnchor,\n transform,\n } = props;\n\n return {\n width,\n height,\n x,\n y,\n stroke,\n fill,\n textAnchor,\n orientation,\n transform,\n };\n};\n"]}
@@ -1,12 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var jsxRuntime = require('react/jsx-runtime');
4
4
 
5
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
-
7
- var React__default = /*#__PURE__*/_interopDefault(React);
8
-
9
- // src/match/index.tsx
5
+ // src/match/module.tsx
10
6
  function matchKeyword(origin, exp, renderKey) {
11
7
  const matches = Array.from(origin.matchAll(exp));
12
8
  if (!matches.length) return origin;
@@ -17,7 +13,7 @@ function matchKeyword(origin, exp, renderKey) {
17
13
  const offset = prevMatch ? prevMatch.index + prevMatch[0].length : 0;
18
14
  jsxArray.push(origin.slice(offset, match.index));
19
15
  jsxArray.push(
20
- /* @__PURE__ */ React__default.default.createElement("i", { className: "matched", key: `${renderKey}/${match}/${i}` }, match[0])
16
+ /* @__PURE__ */ jsxRuntime.jsx("i", { className: "matched", children: match[0] }, `${renderKey}/${match}/${i}`)
21
17
  );
22
18
  const isLastMatch = i === matches.length - 1;
23
19
  const hasTextAfterLastMatch = match.index + match[0].length < origin.length;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/match/index.tsx"],"names":["React"],"mappings":";;;;;;;;;AAMO,SAAS,YAAA,CACd,MAAA,EACA,GAAA,EACA,SAAA,EACoB;AACpB,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,GAAG,CAAC,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,MAAA;AAE5B,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,MAAM,SAAA,GAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA;AACvC,IAAA,MAAM,SAAS,SAAA,GAAY,SAAA,CAAU,QAAS,SAAA,CAAU,CAAC,EAAE,MAAA,GAAS,CAAA;AAEpE,IAAA,QAAA,CAAS,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAC/C,IAAA,QAAA,CAAS,IAAA;AAAA,sBACPA,sBAAA,CAAA,aAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,KAAK,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAA,EACnD,KAAA,CAAM,CAAC,CACV;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AAC3C,IAAA,MAAM,wBACJ,KAAA,CAAM,KAAA,GAAS,MAAM,CAAC,CAAA,CAAE,SAAS,MAAA,CAAO,MAAA;AAE1C,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACxC,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,CAAM,QAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC5D;AAAA,EACF;AAEA,EAAA,OAAO,QAAA,CAAS,SAAS,QAAA,GAAW,MAAA;AACtC","file":"index.cjs","sourcesContent":["import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n"]}
1
+ {"version":3,"sources":["../../src/match/module.tsx"],"names":["jsx"],"mappings":";;;;;AAMO,SAAS,YAAA,CACd,MAAA,EACA,GAAA,EACA,SAAA,EACoB;AACpB,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,GAAG,CAAC,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,MAAA;AAE5B,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,MAAM,SAAA,GAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA;AACvC,IAAA,MAAM,SAAS,SAAA,GAAY,SAAA,CAAU,QAAS,SAAA,CAAU,CAAC,EAAE,MAAA,GAAS,CAAA;AAEpE,IAAA,QAAA,CAAS,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAC/C,IAAA,QAAA,CAAS,IAAA;AAAA,sBACPA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EACV,QAAA,EAAA,KAAA,CAAM,CAAC,CAAA,EAAA,EADkB,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAEtD;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AAC3C,IAAA,MAAM,wBACJ,KAAA,CAAM,KAAA,GAAS,MAAM,CAAC,CAAA,CAAE,SAAS,MAAA,CAAO,MAAA;AAE1C,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACxC,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,CAAM,QAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC5D;AAAA,EACF;AAEA,EAAA,OAAO,QAAA,CAAS,SAAS,QAAA,GAAW,MAAA;AACtC","file":"index.cjs","sourcesContent":["import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n"]}
@@ -7,4 +7,4 @@ type MatchKeywordResult = React.ReactNode[] | string;
7
7
  */
8
8
  declare function matchKeyword(origin: string, exp: RegExp, renderKey: string): MatchKeywordResult;
9
9
 
10
- export { matchKeyword };
10
+ export { type MatchKeywordResult, matchKeyword };
@@ -7,4 +7,4 @@ type MatchKeywordResult = React.ReactNode[] | string;
7
7
  */
8
8
  declare function matchKeyword(origin: string, exp: RegExp, renderKey: string): MatchKeywordResult;
9
9
 
10
- export { matchKeyword };
10
+ export { type MatchKeywordResult, matchKeyword };
@@ -1,6 +1,6 @@
1
- import React from 'react';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
 
3
- // src/match/index.tsx
3
+ // src/match/module.tsx
4
4
  function matchKeyword(origin, exp, renderKey) {
5
5
  const matches = Array.from(origin.matchAll(exp));
6
6
  if (!matches.length) return origin;
@@ -11,7 +11,7 @@ function matchKeyword(origin, exp, renderKey) {
11
11
  const offset = prevMatch ? prevMatch.index + prevMatch[0].length : 0;
12
12
  jsxArray.push(origin.slice(offset, match.index));
13
13
  jsxArray.push(
14
- /* @__PURE__ */ React.createElement("i", { className: "matched", key: `${renderKey}/${match}/${i}` }, match[0])
14
+ /* @__PURE__ */ jsx("i", { className: "matched", children: match[0] }, `${renderKey}/${match}/${i}`)
15
15
  );
16
16
  const isLastMatch = i === matches.length - 1;
17
17
  const hasTextAfterLastMatch = match.index + match[0].length < origin.length;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/match/index.tsx"],"names":[],"mappings":";;;AAMO,SAAS,YAAA,CACd,MAAA,EACA,GAAA,EACA,SAAA,EACoB;AACpB,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,GAAG,CAAC,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,MAAA;AAE5B,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,MAAM,SAAA,GAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA;AACvC,IAAA,MAAM,SAAS,SAAA,GAAY,SAAA,CAAU,QAAS,SAAA,CAAU,CAAC,EAAE,MAAA,GAAS,CAAA;AAEpE,IAAA,QAAA,CAAS,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAC/C,IAAA,QAAA,CAAS,IAAA;AAAA,sBACP,KAAA,CAAA,aAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EAAU,KAAK,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAA,EACnD,KAAA,CAAM,CAAC,CACV;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AAC3C,IAAA,MAAM,wBACJ,KAAA,CAAM,KAAA,GAAS,MAAM,CAAC,CAAA,CAAE,SAAS,MAAA,CAAO,MAAA;AAE1C,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACxC,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,CAAM,QAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC5D;AAAA,EACF;AAEA,EAAA,OAAO,QAAA,CAAS,SAAS,QAAA,GAAW,MAAA;AACtC","file":"index.mjs","sourcesContent":["import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n"]}
1
+ {"version":3,"sources":["../../src/match/module.tsx"],"names":[],"mappings":";;;AAMO,SAAS,YAAA,CACd,MAAA,EACA,GAAA,EACA,SAAA,EACoB;AACpB,EAAA,MAAM,UAAU,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,QAAA,CAAS,GAAG,CAAC,CAAA;AAC/C,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,MAAA;AAE5B,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,OAAA,CAAQ,QAAQ,CAAA,EAAA,EAAK;AACvC,IAAA,MAAM,KAAA,GAAQ,QAAQ,CAAC,CAAA;AACvB,IAAA,MAAM,SAAA,GAAY,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,CAAC,CAAA,GAAI,MAAA;AACvC,IAAA,MAAM,SAAS,SAAA,GAAY,SAAA,CAAU,QAAS,SAAA,CAAU,CAAC,EAAE,MAAA,GAAS,CAAA;AAEpE,IAAA,QAAA,CAAS,KAAK,MAAA,CAAO,KAAA,CAAM,MAAA,EAAQ,KAAA,CAAM,KAAK,CAAC,CAAA;AAC/C,IAAA,QAAA,CAAS,IAAA;AAAA,sBACP,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,SAAA,EACV,QAAA,EAAA,KAAA,CAAM,CAAC,CAAA,EAAA,EADkB,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,CAAC,CAAA,CAEtD;AAAA,KACF;AAEA,IAAA,MAAM,WAAA,GAAc,CAAA,KAAM,OAAA,CAAQ,MAAA,GAAS,CAAA;AAC3C,IAAA,MAAM,wBACJ,KAAA,CAAM,KAAA,GAAS,MAAM,CAAC,CAAA,CAAE,SAAS,MAAA,CAAO,MAAA;AAE1C,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACxC,MAAA,QAAA,CAAS,IAAA,CAAK,OAAO,KAAA,CAAM,KAAA,CAAM,QAAS,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,IAC5D;AAAA,EACF;AAEA,EAAA,OAAO,QAAA,CAAS,SAAS,QAAA,GAAW,MAAA;AACtC","file":"index.mjs","sourcesContent":["import React from \"react\";\nimport type { MatchKeywordResult } from \"./types\";\n\n/**\n * 일치 텍스트를 컴포넌트로 교체\n */\nexport function matchKeyword(\n origin: string,\n exp: RegExp,\n renderKey: string,\n): MatchKeywordResult {\n const matches = Array.from(origin.matchAll(exp));\n if (!matches.length) return origin;\n\n const jsxArray: React.ReactNode[] = [];\n for (let i = 0; i < matches.length; i++) {\n const match = matches[i];\n const prevMatch = i ? matches[i - 1] : undefined;\n const offset = prevMatch ? prevMatch.index! + prevMatch[0].length : 0;\n\n jsxArray.push(origin.slice(offset, match.index));\n jsxArray.push(\n <i className=\"matched\" key={`${renderKey}/${match}/${i}`}>\n {match[0]}\n </i>,\n );\n\n const isLastMatch = i === matches.length - 1;\n const hasTextAfterLastMatch =\n match.index! + match[0].length < origin.length;\n\n if (isLastMatch && hasTextAfterLastMatch) {\n jsxArray.push(origin.slice(match.index! + match[0].length));\n }\n }\n\n return jsxArray.length ? jsxArray : origin;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/util-react",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "React Utilities for UNIAI FE Projects",
5
5
  "type": "module",
6
6
  "private": false,
@@ -10,7 +10,7 @@
10
10
  "publishConfig": {
11
11
  "access": "public"
12
12
  },
13
- "packageManager": "pnpm@10.20.0",
13
+ "packageManager": "pnpm@10.22.0",
14
14
  "engines": {
15
15
  "node": ">=22",
16
16
  "pnpm": ">=10"
@@ -24,8 +24,13 @@
24
24
  "dist"
25
25
  ],
26
26
  "scripts": {
27
+ "lint": "eslint . --max-warnings=0",
28
+ "typecheck": "tsc --project tsconfig.build.json --noEmit",
27
29
  "build": "tsup",
28
- "dev": "tsup --watch",
30
+ "dev": "node ../../../scripts/tsup-watch-filter.mjs --watch",
31
+ "module:lint": "pnpm lint",
32
+ "module:typecheck": "pnpm typecheck",
33
+ "module:build": "pnpm build",
29
34
  "util-react:build": "pnpm run build",
30
35
  "util-react:dev": "pnpm run dev"
31
36
  },
@@ -77,19 +82,19 @@
77
82
  "dependencies": {
78
83
  "d3-array": "^3.2.4",
79
84
  "decimal.js": "^10.6.0",
80
- "html-react-parser": "^5.2.7"
85
+ "html-react-parser": "^5.2.8"
81
86
  },
82
87
  "devDependencies": {
83
88
  "@types/d3-array": "^3.2.2",
84
- "@types/node": "^22.15.30",
85
- "@types/react": "^19.2.2",
86
- "@types/react-dom": "^19.2.2",
87
- "@types/recharts": "^1.8.26",
89
+ "@types/node": "^24.10.1",
90
+ "@types/react": "^19.2.4",
91
+ "@types/react-dom": "^19.2.3",
92
+ "@types/recharts": "^2.0.1",
88
93
  "@uniai-fe/eslint-config": "workspace:*",
89
94
  "@uniai-fe/tsconfig": "workspace:*",
90
- "eslint": "^9.38.0",
95
+ "eslint": "^9.39.1",
91
96
  "prettier": "^3.6.2",
92
- "tsup": "^8.5.0",
97
+ "tsup": "^8.5.1",
93
98
  "typescript": "~5.9.3"
94
99
  }
95
100
  }