@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.
- package/dist/chart/index.cjs +3 -7
- package/dist/chart/index.cjs.map +1 -1
- package/dist/chart/index.d.cts +1 -1
- package/dist/chart/index.d.ts +1 -1
- package/dist/chart/index.mjs +3 -7
- package/dist/chart/index.mjs.map +1 -1
- package/dist/convert/index.cjs +16 -10
- package/dist/convert/index.cjs.map +1 -1
- package/dist/convert/index.d.cts +1 -1
- package/dist/convert/index.d.ts +1 -1
- package/dist/convert/index.mjs +16 -9
- package/dist/convert/index.mjs.map +1 -1
- package/dist/file/index.cjs +1 -1
- package/dist/file/index.cjs.map +1 -1
- package/dist/file/index.d.cts +1 -1
- package/dist/file/index.d.ts +1 -1
- package/dist/file/index.mjs +1 -1
- package/dist/file/index.mjs.map +1 -1
- package/dist/index.cjs +19 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.mjs +19 -16
- package/dist/index.mjs.map +1 -1
- package/dist/match/index.cjs +3 -7
- package/dist/match/index.cjs.map +1 -1
- package/dist/match/index.d.cts +1 -1
- package/dist/match/index.d.ts +1 -1
- package/dist/match/index.mjs +3 -3
- package/dist/match/index.mjs.map +1 -1
- package/package.json +15 -10
package/dist/chart/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var d3Array = require('d3-array');
|
|
4
4
|
|
|
5
|
-
// src/chart/
|
|
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);
|
package/dist/chart/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/chart/index.tsx"],"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 {\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"]}
|
package/dist/chart/index.d.cts
CHANGED
|
@@ -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 };
|
package/dist/chart/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/chart/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { extent, quantile } from 'd3-array';
|
|
2
2
|
|
|
3
|
-
// src/chart/
|
|
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);
|
package/dist/chart/index.mjs.map
CHANGED
|
@@ -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"]}
|
package/dist/convert/index.cjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
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/
|
|
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__ */
|
|
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__ */
|
|
28
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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/
|
|
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"]}
|
package/dist/convert/index.d.cts
CHANGED
|
@@ -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 };
|
package/dist/convert/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/convert/index.mjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import
|
|
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/
|
|
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__ */
|
|
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__ */
|
|
21
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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/
|
|
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"]}
|
package/dist/file/index.cjs
CHANGED
|
@@ -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/
|
|
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")) {
|
package/dist/file/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/file/
|
|
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"]}
|
package/dist/file/index.d.cts
CHANGED
|
@@ -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 };
|
package/dist/file/index.d.ts
CHANGED
|
@@ -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 };
|
package/dist/file/index.mjs
CHANGED
package/dist/file/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/file/
|
|
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
|
|
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/
|
|
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__ */
|
|
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__ */
|
|
31
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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);
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
|
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/
|
|
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__ */
|
|
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__ */
|
|
23
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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);
|
package/dist/index.mjs.map
CHANGED
|
@@ -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"]}
|
package/dist/match/index.cjs
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
|
|
5
|
-
|
|
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__ */
|
|
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;
|
package/dist/match/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/match/
|
|
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"]}
|
package/dist/match/index.d.cts
CHANGED
package/dist/match/index.d.ts
CHANGED
package/dist/match/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
|
|
3
|
-
// src/match/
|
|
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__ */
|
|
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;
|
package/dist/match/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/match/
|
|
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.
|
|
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.
|
|
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.
|
|
85
|
+
"html-react-parser": "^5.2.8"
|
|
81
86
|
},
|
|
82
87
|
"devDependencies": {
|
|
83
88
|
"@types/d3-array": "^3.2.2",
|
|
84
|
-
"@types/node": "^
|
|
85
|
-
"@types/react": "^19.2.
|
|
86
|
-
"@types/react-dom": "^19.2.
|
|
87
|
-
"@types/recharts": "^
|
|
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.
|
|
95
|
+
"eslint": "^9.39.1",
|
|
91
96
|
"prettier": "^3.6.2",
|
|
92
|
-
"tsup": "^8.5.
|
|
97
|
+
"tsup": "^8.5.1",
|
|
93
98
|
"typescript": "~5.9.3"
|
|
94
99
|
}
|
|
95
100
|
}
|