@owp/core 2.3.1 → 2.4.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/_virtual/index11.js +2 -2
- package/dist/_virtual/index12.js +2 -2
- package/dist/_virtual/index13.js +2 -2
- package/dist/_virtual/index14.js +2 -2
- package/dist/_virtual/index16.js +5 -2
- package/dist/_virtual/index16.js.map +1 -1
- package/dist/_virtual/index17.js +5 -2
- package/dist/_virtual/index17.js.map +1 -1
- package/dist/_virtual/index18.js +4 -4
- package/dist/_virtual/index19.js +4 -4
- package/dist/_virtual/index20.js +2 -5
- package/dist/_virtual/index20.js.map +1 -1
- package/dist/_virtual/index5.js +2 -5
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +2 -2
- package/dist/_virtual/index7.js +2 -2
- package/dist/components/OwpCommonCode/OwpCommonCodeRadioGroup.js +38 -38
- package/dist/components/OwpCommonCode/OwpCommonCodeRadioGroup.js.map +1 -1
- package/dist/components/OwpFieldHelperText/OwpFieldHelperText.js +34 -0
- package/dist/components/OwpFieldHelperText/OwpFieldHelperText.js.map +1 -0
- package/dist/components/OwpLayout/OwpLayout.js +39 -39
- package/dist/components/OwpLayout/OwpLayout.js.map +1 -1
- package/dist/components/OwpRequiredHelperText/OwpRequiredHelperText.js +38 -0
- package/dist/components/OwpRequiredHelperText/OwpRequiredHelperText.js.map +1 -0
- package/dist/components/OwpTable/OwpFieldTable.js +99 -0
- package/dist/components/OwpTable/OwpFieldTable.js.map +1 -0
- package/dist/components/OwpTextField/OwpTextMaskField.js +138 -87
- package/dist/components/OwpTextField/OwpTextMaskField.js.map +1 -1
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js +169 -148
- package/dist/components/OwpTreeGrid/OwpTreeGrid.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js +1 -1
- package/dist/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.js.map +1 -1
- package/dist/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.js +1 -1
- package/dist/components/OwpTreeGrid/internal/hooks/useOwpTreeGridOverlayFrame.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js +84 -0
- package/dist/components/OwpTreeGrid/internal/treeGridColumnEditRules.js.map +1 -0
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js +114 -103
- package/dist/components/OwpTreeGrid/internal/treeGridRuntime.js.map +1 -1
- package/dist/components/OwpTreeGrid/internal/utils/perf.js.map +1 -0
- package/dist/hooks/useCurrentUserSeq.js +20 -6
- package/dist/hooks/useCurrentUserSeq.js.map +1 -1
- package/dist/hooks.js +50 -49
- package/dist/index.js +74 -70
- package/dist/index.js.map +1 -1
- package/dist/layout/Layout.js +24 -24
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/components/toggles/NavigationSearchToggle.js +3 -3
- package/dist/layout/themeLayouts.js.map +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE128/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE39/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/CODE93/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/ITF/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/MSI/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/codabar/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js +1 -1
- package/dist/node_modules/.pnpm/jsbarcode@3.12.1/node_modules/jsbarcode/bin/renderers/index.js +1 -1
- package/dist/node_modules/.pnpm/prop-types@15.8.1/node_modules/prop-types/index.js +1 -1
- package/dist/node_modules/.pnpm/react-is@16.13.1/node_modules/react-is/index.js +1 -1
- package/dist/node_modules/.pnpm/react-overlays@5.2.1_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/react-overlays/esm/Portal.js +1 -1
- package/dist/owp-app.css +1 -1
- package/dist/types/components/OwpFieldHelperText/OwpFieldHelperText.d.ts +14 -0
- package/dist/types/components/OwpFieldHelperText/index.d.ts +2 -0
- package/dist/types/components/OwpRequiredHelperText/OwpRequiredHelperText.d.ts +18 -0
- package/dist/types/components/OwpRequiredHelperText/index.d.ts +2 -0
- package/dist/types/components/OwpTable/{OwpVerticalTable.d.ts → OwpFieldTable.d.ts} +9 -8
- package/dist/types/components/OwpTable/index.d.ts +1 -1
- package/dist/types/components/OwpTextField/OwpTextMaskField.d.ts +5 -3
- package/dist/types/components/OwpTreeGrid/OwpTreeGrid.d.ts +7 -1
- package/dist/types/components/OwpTreeGrid/index.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridLoadingOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/OwpTreeGridNoDataOverlay.d.ts +1 -1
- package/dist/types/components/OwpTreeGrid/internal/treeGridColumnEditRules.d.ts +60 -0
- package/dist/types/components/OwpTreeGrid/internal/treeGridRuntime.d.ts +7 -2
- package/dist/types/hooks/useCurrentUserSeq.d.ts +11 -2
- package/dist/types/index.d.ts +3 -1
- package/dist/types/layout/Layout.d.ts +2 -0
- package/dist/types/layout/themeLayouts.d.ts +2 -0
- package/package.json +3 -3
- package/dist/components/OwpTable/OwpVerticalTable.js +0 -96
- package/dist/components/OwpTable/OwpVerticalTable.js.map +0 -1
- package/dist/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.js.map +0 -1
- package/dist/components/OwpTreeGrid/utils/perf.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js +0 -39
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js +0 -36
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js +0 -52
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js +0 -35
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js +0 -227
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js +0 -48
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/mask-element.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js +0 -56
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/action-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js +0 -41
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/change-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js +0 -47
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/continuous-tail-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js +0 -10
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/holder.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js +0 -76
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/core/utils.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js +0 -51
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/index.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js +0 -257
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/base.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js +0 -121
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/date.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js +0 -227
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/dynamic.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js +0 -74
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/enum.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js +0 -52
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/factory.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js +0 -28
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/function.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js +0 -217
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/number.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js +0 -108
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/chunk-tail-details.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js +0 -105
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/cursor.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js +0 -107
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/fixed-definition.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js +0 -138
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern/input-definition.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js +0 -327
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pattern.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js +0 -28
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/pipe.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js +0 -83
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/range.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js +0 -26
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/regexp.js.map +0 -1
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js +0 -109
- package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/masked/repeat.js.map +0 -1
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/input.js +0 -28
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/input.js.map +0 -1
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js +0 -136
- package/dist/node_modules/.pnpm/react-imask@7.6.1_react@19.2.4/node_modules/react-imask/esm/mixin.js.map +0 -1
- /package/dist/components/OwpTreeGrid/{utils → internal/utils}/perf.js +0 -0
- /package/dist/types/components/OwpTreeGrid/{hooks → internal/hooks}/useOwpTreeGridOverlayFrame.d.ts +0 -0
- /package/dist/types/components/OwpTreeGrid/{utils → internal/utils}/perf.d.ts +0 -0
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
var D = Object.defineProperty;
|
|
2
|
-
var o = (r, e) => D(r, "name", { value: e, configurable: !0 });
|
|
3
|
-
import { jsxs as f, jsx as s } from "../../node_modules/.pnpm/@emotion_react@11.14.0_@types_react@19.2.14_react@19.2.4/node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js";
|
|
4
|
-
import { TableCell as u, TableBody as x, Checkbox as S } from "@mui/material";
|
|
5
|
-
import { clsx as T } from "../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.js";
|
|
6
|
-
import N from "dayjs";
|
|
7
|
-
import { Fragment as H } from "react";
|
|
8
|
-
import { StyledTableRow as M, StyledTable as c } from "./OwpTable.js";
|
|
9
|
-
import { isNaN as k } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/predicate/isNaN.js";
|
|
10
|
-
import { toNumber as F } from "../../node_modules/.pnpm/es-toolkit@1.39.10/node_modules/es-toolkit/dist/compat/util/toNumber.js";
|
|
11
|
-
const y = 28, V = {
|
|
12
|
-
"&&": {
|
|
13
|
-
fontFamily: "inherit",
|
|
14
|
-
fontSize: "1.7rem",
|
|
15
|
-
fontWeight: 600,
|
|
16
|
-
lineHeight: "normal",
|
|
17
|
-
minHeight: "unset",
|
|
18
|
-
padding: "7px 10px"
|
|
19
|
-
}
|
|
20
|
-
}, E = {
|
|
21
|
-
borderRadius: 0,
|
|
22
|
-
overflow: "visible"
|
|
23
|
-
}, h = {
|
|
24
|
-
borderTop: "1px solid #CDD8E4"
|
|
25
|
-
}, j = /* @__PURE__ */ o((r, e) => r == null ? void 0 : r[e], "getVerticalTableValue"), z = /* @__PURE__ */ o((r, e) => typeof e == "function" ? e(r) : k(F(r)) ? r === "Y" : !!Number(r), "getCheckboxChecked"), B = /* @__PURE__ */ o((r) => r.withTime ? "YYYY-MM-DD HH:mm" : r.withTimeAndSec ? "YYYY-MM-DD HH:mm:ss" : "YYYY-MM-DD", "getDateFormat"), L = /* @__PURE__ */ o((r, e, m) => {
|
|
26
|
-
const i = j(e, r.key);
|
|
27
|
-
return typeof r.render == "function" ? r.render() : r.useCheckbox ? /* @__PURE__ */ s(
|
|
28
|
-
S,
|
|
29
|
-
{
|
|
30
|
-
checked: z(i, r.validate),
|
|
31
|
-
sx: { "& .MuiSvgIcon-root": { fontSize: (m == null ? void 0 : m.fontSize) ?? y } }
|
|
32
|
-
}
|
|
33
|
-
) : r.useDate ? i && N(i).format(B(r)) : r.disableLocaleString ? i : i == null ? void 0 : i.toLocaleString();
|
|
34
|
-
}, "renderVerticalTableCellValue");
|
|
35
|
-
function W({
|
|
36
|
-
layout: r,
|
|
37
|
-
titleWidth: e,
|
|
38
|
-
titleSx: m,
|
|
39
|
-
treeGridTitleCellSx: i,
|
|
40
|
-
cellSx: a,
|
|
41
|
-
data: d,
|
|
42
|
-
colGroupSlot: b,
|
|
43
|
-
className: w,
|
|
44
|
-
tableLayout: Y = "fixed",
|
|
45
|
-
canUseTreeGridStyle: n = !1
|
|
46
|
-
}) {
|
|
47
|
-
return /* @__PURE__ */ f(
|
|
48
|
-
c,
|
|
49
|
-
{
|
|
50
|
-
canUseTreeGridStyle: n,
|
|
51
|
-
className: T("w-full", w),
|
|
52
|
-
containerProps: { sx: n ? E : void 0 },
|
|
53
|
-
tableLayout: Y,
|
|
54
|
-
children: [
|
|
55
|
-
b,
|
|
56
|
-
/* @__PURE__ */ s(x, { children: r.map((C, p) => /* @__PURE__ */ s(M, { children: C.map((t, g) => /* @__PURE__ */ f(H, { children: [
|
|
57
|
-
/* @__PURE__ */ s(
|
|
58
|
-
u,
|
|
59
|
-
{
|
|
60
|
-
component: "th",
|
|
61
|
-
className: "whitespace-pre-wrap",
|
|
62
|
-
width: e ?? 200,
|
|
63
|
-
sx: {
|
|
64
|
-
...n ? V : {},
|
|
65
|
-
...n ? i ?? {} : {},
|
|
66
|
-
...n && p === 0 ? h : {},
|
|
67
|
-
...m ?? {}
|
|
68
|
-
},
|
|
69
|
-
rowSpan: t == null ? void 0 : t.rowSpan,
|
|
70
|
-
children: t.title
|
|
71
|
-
}
|
|
72
|
-
),
|
|
73
|
-
/* @__PURE__ */ s(
|
|
74
|
-
u,
|
|
75
|
-
{
|
|
76
|
-
className: "whitespace-pre-wrap",
|
|
77
|
-
sx: {
|
|
78
|
-
...n && p === 0 ? h : {},
|
|
79
|
-
...a ?? {}
|
|
80
|
-
},
|
|
81
|
-
style: (t == null ? void 0 : t.style) ?? {},
|
|
82
|
-
colSpan: t == null ? void 0 : t.colSpan,
|
|
83
|
-
rowSpan: t == null ? void 0 : t.rowSpan,
|
|
84
|
-
children: L(t, d, a)
|
|
85
|
-
}
|
|
86
|
-
)
|
|
87
|
-
] }, `owp-vertical-cell-${p}-${g}`)) }, `owp-vertical-col-${p}`)) })
|
|
88
|
-
]
|
|
89
|
-
}
|
|
90
|
-
);
|
|
91
|
-
}
|
|
92
|
-
o(W, "OwpVerticalTable");
|
|
93
|
-
export {
|
|
94
|
-
W as OwpVerticalTable
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=OwpVerticalTable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwpVerticalTable.js","sources":["../../../src/components/OwpTable/OwpVerticalTable.tsx"],"sourcesContent":["import { Checkbox, TableBody, TableCell, type TableCellProps } from '@mui/material';\nimport clsx from 'clsx';\nimport dayjs from 'dayjs';\nimport { isNaN, toNumber } from 'es-toolkit/compat';\nimport { Fragment, type CSSProperties, type ReactNode } from 'react';\nimport { StyledTable, StyledTableRow } from './OwpTable';\n\ntype OwpVerticalTableCell = {\n title: string;\n key: string;\n disableLocaleString?: boolean;\n useDate?: boolean;\n withTime?: boolean;\n withTimeAndSec?: boolean;\n useCheckbox?: boolean;\n colSpan?: number;\n rowSpan?: number;\n style?: CSSProperties;\n render?: () => ReactNode;\n validate?: (v?: number | string) => boolean;\n};\n\ntype OwpVerticalTableValue = string | number | '';\ntype OwpVerticalTableDataRecord = Record<string, OwpVerticalTableValue | undefined>;\n\ninterface OwpVerticalTableProps {\n layout: OwpVerticalTableCell[][];\n data?: OwpVerticalTableDataRecord;\n titleSx?: TableCellProps['sx'];\n treeGridTitleCellSx?: TableCellProps['sx'] & CSSProperties;\n cellSx?: TableCellProps['sx'] & CSSProperties;\n titleWidth?: number | string;\n colGroupSlot?: ReactNode;\n className?: string;\n tableLayout?: 'auto' | 'fixed';\n canUseTreeGridStyle?: boolean;\n}\n\nconst DEFAULT_CHECKBOX_FONT_SIZE = 28;\n\nconst defaultTreeGridTitleCellSx = {\n '&&': {\n fontFamily: 'inherit',\n fontSize: '1.7rem',\n fontWeight: 600,\n lineHeight: 'normal',\n minHeight: 'unset',\n padding: '7px 10px',\n },\n} as const;\n\nconst treeGridContainerSx = {\n borderRadius: 0,\n overflow: 'visible',\n} as const;\n\nconst treeGridFirstRowCellSx = {\n borderTop: '1px solid #CDD8E4',\n} as const;\n\nconst getVerticalTableValue = (data: OwpVerticalTableProps['data'], key: string) => {\n return data?.[key];\n};\n\nconst getCheckboxChecked = (\n value: OwpVerticalTableValue | undefined,\n validate?: OwpVerticalTableCell['validate'],\n) => {\n if (typeof validate === 'function') {\n return validate(value);\n }\n\n if (isNaN(toNumber(value))) {\n return value === 'Y';\n }\n\n return Boolean(Number(value));\n};\n\nconst getDateFormat = (cell: OwpVerticalTableCell) => {\n if (cell.withTime) {\n return 'YYYY-MM-DD HH:mm';\n }\n\n if (cell.withTimeAndSec) {\n return 'YYYY-MM-DD HH:mm:ss';\n }\n\n return 'YYYY-MM-DD';\n};\n\nconst renderVerticalTableCellValue = (\n cell: OwpVerticalTableCell,\n data: OwpVerticalTableProps['data'],\n cellSx?: OwpVerticalTableProps['cellSx'],\n): ReactNode => {\n const value = getVerticalTableValue(data, cell.key);\n\n if (typeof cell.render === 'function') {\n return cell.render();\n }\n\n if (cell.useCheckbox) {\n return (\n <Checkbox\n checked={getCheckboxChecked(value, cell.validate)}\n sx={{ '& .MuiSvgIcon-root': { fontSize: cellSx?.fontSize ?? DEFAULT_CHECKBOX_FONT_SIZE } }}\n />\n );\n }\n\n if (cell.useDate) {\n return value ? dayjs(value).format(getDateFormat(cell)) : value;\n }\n\n if (cell.disableLocaleString) {\n return value;\n }\n\n return value?.toLocaleString();\n};\n\n/**\n * OwpVerticalTable 컴포넌트\n * @param layout layout 값\n * @param titleWidth titleWidth 값\n * @param titleSx titleSx 값\n * @param treeGridTitleCellSx TreeGrid title cell sx 값\n * @param cellSx cellSx 값\n * @param data 데이터\n * @param colGroupSlot colGroupSlot 값\n * @param className className 값\n * @param tableLayout tableLayout 값\n * @param canUseTreeGridStyle TreeGrid 스타일 사용 여부\n */\nexport function OwpVerticalTable({\n layout,\n titleWidth,\n titleSx,\n treeGridTitleCellSx,\n cellSx,\n data,\n colGroupSlot,\n className,\n tableLayout = 'fixed',\n canUseTreeGridStyle = false,\n}: OwpVerticalTableProps) {\n return (\n <StyledTable\n canUseTreeGridStyle={canUseTreeGridStyle}\n className={clsx('w-full', className)}\n containerProps={{ sx: canUseTreeGridStyle ? treeGridContainerSx : undefined }}\n tableLayout={tableLayout}\n >\n {colGroupSlot}\n <TableBody>\n {layout.map((cols, rowIndex) => (\n <StyledTableRow key={`owp-vertical-col-${rowIndex}`}>\n {cols.map((col, colIndex) => (\n <Fragment key={`owp-vertical-cell-${rowIndex}-${colIndex}`}>\n <TableCell\n component=\"th\"\n className=\"whitespace-pre-wrap\"\n width={titleWidth ?? 200}\n sx={{\n ...(canUseTreeGridStyle ? defaultTreeGridTitleCellSx : {}),\n ...(canUseTreeGridStyle ? (treeGridTitleCellSx ?? {}) : {}),\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(titleSx ?? {}),\n }}\n rowSpan={col?.rowSpan}\n >\n {col.title}\n </TableCell>\n <TableCell\n className=\"whitespace-pre-wrap\"\n sx={{\n ...(canUseTreeGridStyle && rowIndex === 0 ? treeGridFirstRowCellSx : {}),\n ...(cellSx ?? {}),\n }}\n style={col?.style ?? {}}\n colSpan={col?.colSpan}\n rowSpan={col?.rowSpan}\n >\n {renderVerticalTableCellValue(col, data, cellSx)}\n </TableCell>\n </Fragment>\n ))}\n </StyledTableRow>\n ))}\n </TableBody>\n </StyledTable>\n );\n}\n"],"names":["DEFAULT_CHECKBOX_FONT_SIZE","defaultTreeGridTitleCellSx","treeGridContainerSx","treeGridFirstRowCellSx","getVerticalTableValue","__name","data","key","getCheckboxChecked","value","validate","isNaN","toNumber","getDateFormat","cell","renderVerticalTableCellValue","cellSx","jsx","Checkbox","dayjs","OwpVerticalTable","layout","titleWidth","titleSx","treeGridTitleCellSx","colGroupSlot","className","tableLayout","canUseTreeGridStyle","jsxs","StyledTable","clsx","TableBody","cols","rowIndex","StyledTableRow","col","colIndex","Fragment","TableCell"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useOwpTreeGridOverlayFrame.js","sources":["../../../../src/components/OwpTreeGrid/hooks/useOwpTreeGridOverlayFrame.ts"],"sourcesContent":["import { isEqual } from 'es-toolkit/compat';\nimport { type RefObject, useLayoutEffect, useState } from 'react';\n// Temporary TreeGrid perf instrumentation import. Remove with ../utils/perf after profiling is finished.\nimport {\n countTreeGridPerf,\n getTreeGridPerfTimestamp,\n isTreeGridPerfEnabled,\n measureTreeGridPerf,\n} from '../utils/perf';\n\nexport type OwpTreeGridOverlayFrame = {\n left: number;\n top: number;\n width: number;\n height: number;\n};\n\ntype UseOwpTreeGridOverlayFrameInput = {\n visible: boolean;\n containerRef: RefObject<HTMLDivElement | null>;\n treeGridInstanceRef: RefObject<TGrid>;\n debugId?: string;\n};\n\nexport const TREE_GRID_NO_DATA_OVERLAY_Z_INDEX = 2147483646;\nexport const TREE_GRID_LOADING_OVERLAY_Z_INDEX = 2147483647;\n\nconst getTreeGridMainTableElement = (containerElement: HTMLDivElement, grid: TGrid | null) => {\n const mainTagElement = grid?.MainTag as HTMLElement | null | undefined;\n const scopedRootElement = mainTagElement ?? containerElement;\n const mainTableElements = Array.from(\n scopedRootElement.querySelectorAll<HTMLTableElement>('table.TSMainTable'),\n );\n\n const tableElements =\n mainTableElements.length > 0\n ? mainTableElements\n : Array.from(scopedRootElement.querySelectorAll<HTMLTableElement>('table'));\n\n return tableElements.reduce<HTMLTableElement | null>((largestTableElement, tableElement) => {\n const tableRect = tableElement.getBoundingClientRect();\n const largestTableRect = largestTableElement?.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return largestTableElement;\n }\n\n if (!largestTableRect) {\n return tableElement;\n }\n\n return tableRect.width * tableRect.height > largestTableRect.width * largestTableRect.height\n ? tableElement\n : largestTableElement;\n }, null);\n};\n\nconst getTreeGridOverlayFrame = (\n containerElement: HTMLDivElement,\n grid: TGrid | null,\n): OwpTreeGridOverlayFrame => {\n const containerRect = containerElement.getBoundingClientRect();\n const fallbackWidth = containerElement.clientWidth || containerRect.width;\n const fallbackHeight = containerElement.clientHeight || containerRect.height;\n const mainTableElement = getTreeGridMainTableElement(containerElement, grid);\n\n if (!mainTableElement) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n const tableRect = mainTableElement.getBoundingClientRect();\n\n if (tableRect.width <= 0 || tableRect.height <= 0) {\n return {\n left: 0,\n top: 0,\n width: fallbackWidth,\n height: fallbackHeight,\n };\n }\n\n return {\n left: tableRect.left - containerRect.left,\n top: tableRect.top - containerRect.top,\n width: tableRect.width,\n height: tableRect.height,\n };\n};\n\n/**\n * TreeGrid overlay frame hook\n * @param visible overlay visibility\n * @param containerRef TreeGrid container ref\n * @param treeGridInstanceRef TreeGrid instance ref\n */\nconst useOwpTreeGridOverlayFrame = ({\n visible,\n containerRef,\n treeGridInstanceRef,\n debugId,\n}: UseOwpTreeGridOverlayFrameInput) => {\n const [overlayFrame, setOverlayFrame] = useState<OwpTreeGridOverlayFrame>({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n useLayoutEffect(() => {\n if (!visible) {\n return;\n }\n\n const containerElement = containerRef.current;\n\n if (!containerElement) {\n return;\n }\n\n let animationFrameId: number | undefined;\n let resizeObserver: ResizeObserver | undefined;\n let observedMainTableElement: HTMLTableElement | null = null;\n const scrollListenerOptions = { capture: true } as const;\n\n const syncObservedMainTableElement = (nextMainTableElement: HTMLTableElement | null) => {\n if (!resizeObserver || observedMainTableElement === nextMainTableElement) {\n observedMainTableElement = nextMainTableElement;\n return;\n }\n\n if (observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n observedMainTableElement = nextMainTableElement;\n\n if (observedMainTableElement) {\n resizeObserver.observe(observedMainTableElement);\n }\n };\n\n const updateOverlayFrame = () => {\n const startedAt =\n debugId && isTreeGridPerfEnabled() ? getTreeGridPerfTimestamp() : null;\n const treeGrid = treeGridInstanceRef.current;\n const mainTableElement = getTreeGridMainTableElement(containerElement, treeGrid);\n const nextOverlayFrame = getTreeGridOverlayFrame(containerElement, treeGrid);\n\n if (debugId) {\n countTreeGridPerf(debugId, 'overlay update');\n }\n\n syncObservedMainTableElement(mainTableElement);\n\n setOverlayFrame((currentOverlayFrame) =>\n isEqual(currentOverlayFrame, nextOverlayFrame) ? currentOverlayFrame : nextOverlayFrame,\n );\n\n if (debugId) {\n measureTreeGridPerf(debugId, 'overlay update end', startedAt);\n }\n };\n\n const scheduleOverlayFrameUpdate = () => {\n if (debugId) {\n countTreeGridPerf(debugId, 'overlay schedule');\n }\n\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n animationFrameId = window.requestAnimationFrame(() => {\n animationFrameId = undefined;\n updateOverlayFrame();\n });\n };\n\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(scheduleOverlayFrameUpdate);\n resizeObserver.observe(containerElement);\n }\n\n const mutationObserver = new MutationObserver(scheduleOverlayFrameUpdate);\n mutationObserver.observe(containerElement, { childList: true, subtree: true });\n window.addEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.addEventListener('scroll', scheduleOverlayFrameUpdate, scrollListenerOptions);\n updateOverlayFrame();\n\n return () => {\n if (animationFrameId !== undefined) {\n window.cancelAnimationFrame(animationFrameId);\n }\n\n window.removeEventListener('resize', scheduleOverlayFrameUpdate);\n containerElement.removeEventListener(\n 'scroll',\n scheduleOverlayFrameUpdate,\n scrollListenerOptions,\n );\n mutationObserver.disconnect();\n\n if (resizeObserver && observedMainTableElement) {\n resizeObserver.unobserve(observedMainTableElement);\n }\n\n resizeObserver?.disconnect();\n };\n }, [containerRef, treeGridInstanceRef, visible, debugId]);\n\n return overlayFrame;\n};\n\nexport { useOwpTreeGridOverlayFrame };\n"],"names":["TREE_GRID_NO_DATA_OVERLAY_Z_INDEX","TREE_GRID_LOADING_OVERLAY_Z_INDEX","getTreeGridMainTableElement","__name","containerElement","grid","scopedRootElement","mainTableElements","largestTableElement","tableElement","tableRect","largestTableRect","getTreeGridOverlayFrame","containerRect","fallbackWidth","fallbackHeight","mainTableElement","useOwpTreeGridOverlayFrame","visible","containerRef","treeGridInstanceRef","debugId","overlayFrame","setOverlayFrame","useState","useLayoutEffect","animationFrameId","resizeObserver","observedMainTableElement","scrollListenerOptions","syncObservedMainTableElement","nextMainTableElement","updateOverlayFrame","startedAt","isTreeGridPerfEnabled","getTreeGridPerfTimestamp","treeGrid","nextOverlayFrame","countTreeGridPerf","currentOverlayFrame","isEqual","measureTreeGridPerf","scheduleOverlayFrameUpdate","mutationObserver"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"perf.js","sources":["../../../../src/components/OwpTreeGrid/utils/perf.ts"],"sourcesContent":["/** Temporary TreeGrid perf instrumentation. Remove after profiling is no longer needed. */\ntype TreeGridPerfWindow = Window & {\n __OWP_TREE_GRID_PERF__?: boolean;\n};\n\nexport const TREE_GRID_PERF_FLAG = '__OWP_TREE_GRID_PERF__';\n\n/**\n * TreeGrid 성능 계측 활성 여부\n */\nexport const isTreeGridPerfEnabled = () => {\n return typeof window !== 'undefined' && Boolean((window as TreeGridPerfWindow)[TREE_GRID_PERF_FLAG]);\n};\n\n/**\n * TreeGrid 성능 계측 타임스탬프 반환\n */\nexport const getTreeGridPerfTimestamp = () => {\n return typeof performance !== 'undefined' ? performance.now() : Date.now();\n};\n\n/**\n * TreeGrid 성능 계측 카운트 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n */\nexport const countTreeGridPerf = (gridId: string, label: string) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n console.count(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 디버그 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param payload 부가 정보\n */\nexport const logTreeGridPerf = (\n gridId: string,\n label: string,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled()) {\n return;\n }\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, payload);\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`);\n};\n\n/**\n * TreeGrid 성능 계측 측정 로그\n * @param gridId TreeGrid 인스턴스 ID\n * @param label 계측 라벨\n * @param startedAt 시작 시각\n * @param payload 부가 정보\n */\nexport const measureTreeGridPerf = (\n gridId: string,\n label: string,\n startedAt: number | null,\n payload?: Record<string, unknown>,\n) => {\n if (!isTreeGridPerfEnabled() || startedAt === null) {\n return;\n }\n\n const durationMs = Number((getTreeGridPerfTimestamp() - startedAt).toFixed(1));\n\n if (payload) {\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs, ...payload });\n return;\n }\n\n console.info(`[OwpTreeGrid:${gridId}] ${label}`, { durationMs });\n};\n"],"names":["TREE_GRID_PERF_FLAG","isTreeGridPerfEnabled","__name","getTreeGridPerfTimestamp","countTreeGridPerf","gridId","label","logTreeGridPerf","payload","measureTreeGridPerf","startedAt","durationMs"],"mappings":";;AAKO,MAAMA,IAAsB,0BAKtBC,IAAwB,gBAAAC,EAAA,MAC5B,OAAO,SAAW,OAAe,EAAS,OAA8BF,CAAmB,GAD/D,0BAOxBG,IAA2B,gBAAAD,EAAA,MAC/B,OAAO,cAAgB,MAAc,YAAY,IAAA,IAAQ,KAAK,IAAA,GAD/B,6BAS3BE,IAAoB,gBAAAF,EAAA,CAACG,GAAgBC,MAAkB;AAClE,EAAKL,OAIL,QAAQ,MAAM,gBAAgBI,CAAM,KAAKC,CAAK,EAAE;AAClD,GANiC,sBAcpBC,IAAkB,gBAAAL,EAAA,CAC7BG,GACAC,GACAE,MACG;AACH,MAAKP,KAIL;AAAA,QAAIO,GAAS;AACX,cAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAIE,CAAO;AACxD;AAAA,IACF;AAEA,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,EAAE;AAAA;AACjD,GAf+B,oBAwBlBG,IAAsB,gBAAAP,EAAA,CACjCG,GACAC,GACAI,GACAF,MACG;AACH,MAAI,CAACP,EAAA,KAA2BS,MAAc;AAC5C;AAGF,QAAMC,IAAa,QAAQR,EAAA,IAA6BO,GAAW,QAAQ,CAAC,CAAC;AAE7E,MAAIF,GAAS;AACX,YAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY,GAAGH,EAAA,CAAS;AAC3E;AAAA,EACF;AAEA,UAAQ,KAAK,gBAAgBH,CAAM,KAAKC,CAAK,IAAI,EAAE,YAAAK,GAAY;AACjE,GAlBmC;"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
var f = Object.defineProperty;
|
|
2
|
-
var c = (l, t) => f(l, "name", { value: t, configurable: !0 });
|
|
3
|
-
import u from "./html-mask-element.js";
|
|
4
|
-
import a from "../core/holder.js";
|
|
5
|
-
import "./mask-element.js";
|
|
6
|
-
const r = class r extends u {
|
|
7
|
-
/** Returns HTMLElement selection start */
|
|
8
|
-
get _unsafeSelectionStart() {
|
|
9
|
-
const t = this.rootElement, e = t.getSelection && t.getSelection(), n = e && e.anchorOffset, o = e && e.focusOffset;
|
|
10
|
-
return o == null || n == null || n < o ? n : o;
|
|
11
|
-
}
|
|
12
|
-
/** Returns HTMLElement selection end */
|
|
13
|
-
get _unsafeSelectionEnd() {
|
|
14
|
-
const t = this.rootElement, e = t.getSelection && t.getSelection(), n = e && e.anchorOffset, o = e && e.focusOffset;
|
|
15
|
-
return o == null || n == null || n > o ? n : o;
|
|
16
|
-
}
|
|
17
|
-
/** Sets HTMLElement selection */
|
|
18
|
-
_unsafeSelect(t, e) {
|
|
19
|
-
if (!this.rootElement.createRange) return;
|
|
20
|
-
const n = this.rootElement.createRange();
|
|
21
|
-
n.setStart(this.input.firstChild || this.input, t), n.setEnd(this.input.lastChild || this.input, e);
|
|
22
|
-
const o = this.rootElement, s = o.getSelection && o.getSelection();
|
|
23
|
-
s && (s.removeAllRanges(), s.addRange(n));
|
|
24
|
-
}
|
|
25
|
-
/** HTMLElement value */
|
|
26
|
-
get value() {
|
|
27
|
-
return this.input.textContent || "";
|
|
28
|
-
}
|
|
29
|
-
set value(t) {
|
|
30
|
-
this.input.textContent = t;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
c(r, "HTMLContenteditableMaskElement");
|
|
34
|
-
let i = r;
|
|
35
|
-
a.HTMLContenteditableMaskElement = i;
|
|
36
|
-
export {
|
|
37
|
-
i as default
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=html-contenteditable-mask-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-contenteditable-mask-element.js","sources":["../../../../../../../../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-contenteditable-mask-element.js"],"sourcesContent":["import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /** Returns HTMLElement selection start */\n get _unsafeSelectionStart() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Returns HTMLElement selection end */\n get _unsafeSelectionEnd() {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /** Sets HTMLElement selection */\n _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /** HTMLElement value */\n get value() {\n return this.input.textContent || '';\n }\n set value(value) {\n this.input.textContent = value;\n }\n}\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n\nexport { HTMLContenteditableMaskElement as default };\n"],"names":["_HTMLContenteditableMaskElement","HTMLMaskElement","root","selection","anchorOffset","focusOffset","start","end","range","value","__name","HTMLContenteditableMaskElement","IMask"],"mappings":";;;;;AAIA,MAAMA,IAAN,MAAMA,UAAuCC,EAAgB;AAAA;AAAA,EAE3D,IAAI,wBAAwB;AAC1B,UAAMC,IAAO,KAAK,aACZC,IAAYD,EAAK,gBAAgBA,EAAK,aAAY,GAClDE,IAAeD,KAAaA,EAAU,cACtCE,IAAcF,KAAaA,EAAU;AAC3C,WAAIE,KAAe,QAAQD,KAAgB,QAAQA,IAAeC,IACzDD,IAEFC;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,sBAAsB;AACxB,UAAMH,IAAO,KAAK,aACZC,IAAYD,EAAK,gBAAgBA,EAAK,aAAY,GAClDE,IAAeD,KAAaA,EAAU,cACtCE,IAAcF,KAAaA,EAAU;AAC3C,WAAIE,KAAe,QAAQD,KAAgB,QAAQA,IAAeC,IACzDD,IAEFC;AAAA,EACT;AAAA;AAAA,EAGA,cAAcC,GAAOC,GAAK;AACxB,QAAI,CAAC,KAAK,YAAY,YAAa;AACnC,UAAMC,IAAQ,KAAK,YAAY,YAAW;AAC1C,IAAAA,EAAM,SAAS,KAAK,MAAM,cAAc,KAAK,OAAOF,CAAK,GACzDE,EAAM,OAAO,KAAK,MAAM,aAAa,KAAK,OAAOD,CAAG;AACpD,UAAML,IAAO,KAAK,aACZC,IAAYD,EAAK,gBAAgBA,EAAK,aAAY;AACxD,IAAIC,MACFA,EAAU,gBAAe,GACzBA,EAAU,SAASK,CAAK;AAAA,EAE5B;AAAA;AAAA,EAGA,IAAI,QAAQ;AACV,WAAO,KAAK,MAAM,eAAe;AAAA,EACnC;AAAA,EACA,IAAI,MAAMC,GAAO;AACf,SAAK,MAAM,cAAcA;AAAA,EAC3B;AACF;AA9C6DC,EAAAV,GAAA;AAA7D,IAAMW,IAANX;AA+CAY,EAAM,iCAAiCD;","x_google_ignoreList":[0]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
var l = Object.defineProperty;
|
|
2
|
-
var i = (u, t) => l(u, "name", { value: t, configurable: !0 });
|
|
3
|
-
import s from "./html-mask-element.js";
|
|
4
|
-
import a from "../core/holder.js";
|
|
5
|
-
import "./mask-element.js";
|
|
6
|
-
const e = class e extends s {
|
|
7
|
-
/** InputElement to use mask on */
|
|
8
|
-
constructor(t) {
|
|
9
|
-
super(t), this.input = t;
|
|
10
|
-
}
|
|
11
|
-
/** Returns InputElement selection start */
|
|
12
|
-
get _unsafeSelectionStart() {
|
|
13
|
-
return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;
|
|
14
|
-
}
|
|
15
|
-
/** Returns InputElement selection end */
|
|
16
|
-
get _unsafeSelectionEnd() {
|
|
17
|
-
return this.input.selectionEnd;
|
|
18
|
-
}
|
|
19
|
-
/** Sets InputElement selection */
|
|
20
|
-
_unsafeSelect(t, r) {
|
|
21
|
-
this.input.setSelectionRange(t, r);
|
|
22
|
-
}
|
|
23
|
-
get value() {
|
|
24
|
-
return this.input.value;
|
|
25
|
-
}
|
|
26
|
-
set value(t) {
|
|
27
|
-
this.input.value = t;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
i(e, "HTMLInputMaskElement");
|
|
31
|
-
let n = e;
|
|
32
|
-
a.HTMLMaskElement = s;
|
|
33
|
-
export {
|
|
34
|
-
n as default
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=html-input-mask-element.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-input-mask-element.js","sources":["../../../../../../../../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-input-mask-element.js"],"sourcesContent":["import HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\nimport './mask-element.js';\n\n/** Bridge between InputElement and {@link Masked} */\nclass HTMLInputMaskElement extends HTMLMaskElement {\n /** InputElement to use mask on */\n\n constructor(input) {\n super(input);\n this.input = input;\n }\n\n /** Returns InputElement selection start */\n get _unsafeSelectionStart() {\n return this.input.selectionStart != null ? this.input.selectionStart : this.value.length;\n }\n\n /** Returns InputElement selection end */\n get _unsafeSelectionEnd() {\n return this.input.selectionEnd;\n }\n\n /** Sets InputElement selection */\n _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n get value() {\n return this.input.value;\n }\n set value(value) {\n this.input.value = value;\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLInputMaskElement as default };\n"],"names":["_HTMLInputMaskElement","HTMLMaskElement","input","start","end","value","__name","HTMLInputMaskElement","IMask"],"mappings":";;;;;AAKA,MAAMA,IAAN,MAAMA,UAA6BC,EAAgB;AAAA;AAAA,EAGjD,YAAYC,GAAO;AACjB,UAAMA,CAAK,GACX,KAAK,QAAQA;AAAA,EACf;AAAA;AAAA,EAGA,IAAI,wBAAwB;AAC1B,WAAO,KAAK,MAAM,kBAAkB,OAAO,KAAK,MAAM,iBAAiB,KAAK,MAAM;AAAA,EACpF;AAAA;AAAA,EAGA,IAAI,sBAAsB;AACxB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,cAAcC,GAAOC,GAAK;AACxB,SAAK,MAAM,kBAAkBD,GAAOC,CAAG;AAAA,EACzC;AAAA,EACA,IAAI,QAAQ;AACV,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EACA,IAAI,MAAMC,GAAO;AACf,SAAK,MAAM,QAAQA;AAAA,EACrB;AACF;AA5BmDC,EAAAN,GAAA;AAAnD,IAAMO,IAANP;AA6BAQ,EAAM,kBAAkBP;","x_google_ignoreList":[0]}
|
package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
var d = Object.defineProperty;
|
|
2
|
-
var o = (h, t) => d(h, "name", { value: t, configurable: !0 });
|
|
3
|
-
import u from "./mask-element.js";
|
|
4
|
-
import p from "../core/holder.js";
|
|
5
|
-
const r = 90, _ = 89, i = class i extends u {
|
|
6
|
-
/** HTMLElement to use mask on */
|
|
7
|
-
constructor(t) {
|
|
8
|
-
super(), this.input = t, this._onKeydown = this._onKeydown.bind(this), this._onInput = this._onInput.bind(this), this._onBeforeinput = this._onBeforeinput.bind(this), this._onCompositionEnd = this._onCompositionEnd.bind(this);
|
|
9
|
-
}
|
|
10
|
-
get rootElement() {
|
|
11
|
-
var t, e, s;
|
|
12
|
-
return (t = (e = (s = this.input).getRootNode) == null ? void 0 : e.call(s)) != null ? t : document;
|
|
13
|
-
}
|
|
14
|
-
/** Is element in focus */
|
|
15
|
-
get isActive() {
|
|
16
|
-
return this.input === this.rootElement.activeElement;
|
|
17
|
-
}
|
|
18
|
-
/** Binds HTMLElement events to mask internal events */
|
|
19
|
-
bindEvents(t) {
|
|
20
|
-
this.input.addEventListener("keydown", this._onKeydown), this.input.addEventListener("input", this._onInput), this.input.addEventListener("beforeinput", this._onBeforeinput), this.input.addEventListener("compositionend", this._onCompositionEnd), this.input.addEventListener("drop", t.drop), this.input.addEventListener("click", t.click), this.input.addEventListener("focus", t.focus), this.input.addEventListener("blur", t.commit), this._handlers = t;
|
|
21
|
-
}
|
|
22
|
-
_onKeydown(t) {
|
|
23
|
-
if (this._handlers.redo && (t.keyCode === r && t.shiftKey && (t.metaKey || t.ctrlKey) || t.keyCode === _ && t.ctrlKey))
|
|
24
|
-
return t.preventDefault(), this._handlers.redo(t);
|
|
25
|
-
if (this._handlers.undo && t.keyCode === r && (t.metaKey || t.ctrlKey))
|
|
26
|
-
return t.preventDefault(), this._handlers.undo(t);
|
|
27
|
-
t.isComposing || this._handlers.selectionChange(t);
|
|
28
|
-
}
|
|
29
|
-
_onBeforeinput(t) {
|
|
30
|
-
if (t.inputType === "historyUndo" && this._handlers.undo)
|
|
31
|
-
return t.preventDefault(), this._handlers.undo(t);
|
|
32
|
-
if (t.inputType === "historyRedo" && this._handlers.redo)
|
|
33
|
-
return t.preventDefault(), this._handlers.redo(t);
|
|
34
|
-
}
|
|
35
|
-
_onCompositionEnd(t) {
|
|
36
|
-
this._handlers.input(t);
|
|
37
|
-
}
|
|
38
|
-
_onInput(t) {
|
|
39
|
-
t.isComposing || this._handlers.input(t);
|
|
40
|
-
}
|
|
41
|
-
/** Unbinds HTMLElement events to mask internal events */
|
|
42
|
-
unbindEvents() {
|
|
43
|
-
this.input.removeEventListener("keydown", this._onKeydown), this.input.removeEventListener("input", this._onInput), this.input.removeEventListener("beforeinput", this._onBeforeinput), this.input.removeEventListener("compositionend", this._onCompositionEnd), this.input.removeEventListener("drop", this._handlers.drop), this.input.removeEventListener("click", this._handlers.click), this.input.removeEventListener("focus", this._handlers.focus), this.input.removeEventListener("blur", this._handlers.commit), this._handlers = {};
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
o(i, "HTMLMaskElement");
|
|
47
|
-
let n = i;
|
|
48
|
-
p.HTMLMaskElement = n;
|
|
49
|
-
export {
|
|
50
|
-
n as default
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=html-mask-element.js.map
|
package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"html-mask-element.js","sources":["../../../../../../../../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/html-mask-element.js"],"sourcesContent":["import MaskElement from './mask-element.js';\nimport IMask from '../core/holder.js';\n\nconst KEY_Z = 90;\nconst KEY_Y = 89;\n\n/** Bridge between HTMLElement and {@link Masked} */\nclass HTMLMaskElement extends MaskElement {\n /** HTMLElement to use mask on */\n\n constructor(input) {\n super();\n this.input = input;\n this._onKeydown = this._onKeydown.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onBeforeinput = this._onBeforeinput.bind(this);\n this._onCompositionEnd = this._onCompositionEnd.bind(this);\n }\n get rootElement() {\n var _this$input$getRootNo, _this$input$getRootNo2, _this$input;\n return (_this$input$getRootNo = (_this$input$getRootNo2 = (_this$input = this.input).getRootNode) == null ? void 0 : _this$input$getRootNo2.call(_this$input)) != null ? _this$input$getRootNo : document;\n }\n\n /** Is element in focus */\n get isActive() {\n return this.input === this.rootElement.activeElement;\n }\n\n /** Binds HTMLElement events to mask internal events */\n bindEvents(handlers) {\n this.input.addEventListener('keydown', this._onKeydown);\n this.input.addEventListener('input', this._onInput);\n this.input.addEventListener('beforeinput', this._onBeforeinput);\n this.input.addEventListener('compositionend', this._onCompositionEnd);\n this.input.addEventListener('drop', handlers.drop);\n this.input.addEventListener('click', handlers.click);\n this.input.addEventListener('focus', handlers.focus);\n this.input.addEventListener('blur', handlers.commit);\n this._handlers = handlers;\n }\n _onKeydown(e) {\n if (this._handlers.redo && (e.keyCode === KEY_Z && e.shiftKey && (e.metaKey || e.ctrlKey) || e.keyCode === KEY_Y && e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n if (this._handlers.undo && e.keyCode === KEY_Z && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (!e.isComposing) this._handlers.selectionChange(e);\n }\n _onBeforeinput(e) {\n if (e.inputType === 'historyUndo' && this._handlers.undo) {\n e.preventDefault();\n return this._handlers.undo(e);\n }\n if (e.inputType === 'historyRedo' && this._handlers.redo) {\n e.preventDefault();\n return this._handlers.redo(e);\n }\n }\n _onCompositionEnd(e) {\n this._handlers.input(e);\n }\n _onInput(e) {\n if (!e.isComposing) this._handlers.input(e);\n }\n\n /** Unbinds HTMLElement events to mask internal events */\n unbindEvents() {\n this.input.removeEventListener('keydown', this._onKeydown);\n this.input.removeEventListener('input', this._onInput);\n this.input.removeEventListener('beforeinput', this._onBeforeinput);\n this.input.removeEventListener('compositionend', this._onCompositionEnd);\n this.input.removeEventListener('drop', this._handlers.drop);\n this.input.removeEventListener('click', this._handlers.click);\n this.input.removeEventListener('focus', this._handlers.focus);\n this.input.removeEventListener('blur', this._handlers.commit);\n this._handlers = {};\n }\n}\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nexport { HTMLMaskElement as default };\n"],"names":["KEY_Z","KEY_Y","_HTMLMaskElement","MaskElement","input","_this$input$getRootNo","_this$input$getRootNo2","_this$input","handlers","e","__name","HTMLMaskElement","IMask"],"mappings":";;;;AAGA,MAAMA,IAAQ,IACRC,IAAQ,IAGRC,IAAN,MAAMA,UAAwBC,EAAY;AAAA;AAAA,EAGxC,YAAYC,GAAO;AACjB,UAAK,GACL,KAAK,QAAQA,GACb,KAAK,aAAa,KAAK,WAAW,KAAK,IAAI,GAC3C,KAAK,WAAW,KAAK,SAAS,KAAK,IAAI,GACvC,KAAK,iBAAiB,KAAK,eAAe,KAAK,IAAI,GACnD,KAAK,oBAAoB,KAAK,kBAAkB,KAAK,IAAI;AAAA,EAC3D;AAAA,EACA,IAAI,cAAc;AAChB,QAAIC,GAAuBC,GAAwBC;AACnD,YAAQF,KAAyBC,KAA0BC,IAAc,KAAK,OAAO,gBAAgB,OAAO,SAASD,EAAuB,KAAKC,CAAW,MAAM,OAAOF,IAAwB;AAAA,EACnM;AAAA;AAAA,EAGA,IAAI,WAAW;AACb,WAAO,KAAK,UAAU,KAAK,YAAY;AAAA,EACzC;AAAA;AAAA,EAGA,WAAWG,GAAU;AACnB,SAAK,MAAM,iBAAiB,WAAW,KAAK,UAAU,GACtD,KAAK,MAAM,iBAAiB,SAAS,KAAK,QAAQ,GAClD,KAAK,MAAM,iBAAiB,eAAe,KAAK,cAAc,GAC9D,KAAK,MAAM,iBAAiB,kBAAkB,KAAK,iBAAiB,GACpE,KAAK,MAAM,iBAAiB,QAAQA,EAAS,IAAI,GACjD,KAAK,MAAM,iBAAiB,SAASA,EAAS,KAAK,GACnD,KAAK,MAAM,iBAAiB,SAASA,EAAS,KAAK,GACnD,KAAK,MAAM,iBAAiB,QAAQA,EAAS,MAAM,GACnD,KAAK,YAAYA;AAAA,EACnB;AAAA,EACA,WAAWC,GAAG;AACZ,QAAI,KAAK,UAAU,SAASA,EAAE,YAAYT,KAASS,EAAE,aAAaA,EAAE,WAAWA,EAAE,YAAYA,EAAE,YAAYR,KAASQ,EAAE;AACpH,aAAAA,EAAE,eAAc,GACT,KAAK,UAAU,KAAKA,CAAC;AAE9B,QAAI,KAAK,UAAU,QAAQA,EAAE,YAAYT,MAAUS,EAAE,WAAWA,EAAE;AAChE,aAAAA,EAAE,eAAc,GACT,KAAK,UAAU,KAAKA,CAAC;AAE9B,IAAKA,EAAE,eAAa,KAAK,UAAU,gBAAgBA,CAAC;AAAA,EACtD;AAAA,EACA,eAAeA,GAAG;AAChB,QAAIA,EAAE,cAAc,iBAAiB,KAAK,UAAU;AAClD,aAAAA,EAAE,eAAc,GACT,KAAK,UAAU,KAAKA,CAAC;AAE9B,QAAIA,EAAE,cAAc,iBAAiB,KAAK,UAAU;AAClD,aAAAA,EAAE,eAAc,GACT,KAAK,UAAU,KAAKA,CAAC;AAAA,EAEhC;AAAA,EACA,kBAAkBA,GAAG;AACnB,SAAK,UAAU,MAAMA,CAAC;AAAA,EACxB;AAAA,EACA,SAASA,GAAG;AACV,IAAKA,EAAE,eAAa,KAAK,UAAU,MAAMA,CAAC;AAAA,EAC5C;AAAA;AAAA,EAGA,eAAe;AACb,SAAK,MAAM,oBAAoB,WAAW,KAAK,UAAU,GACzD,KAAK,MAAM,oBAAoB,SAAS,KAAK,QAAQ,GACrD,KAAK,MAAM,oBAAoB,eAAe,KAAK,cAAc,GACjE,KAAK,MAAM,oBAAoB,kBAAkB,KAAK,iBAAiB,GACvE,KAAK,MAAM,oBAAoB,QAAQ,KAAK,UAAU,IAAI,GAC1D,KAAK,MAAM,oBAAoB,SAAS,KAAK,UAAU,KAAK,GAC5D,KAAK,MAAM,oBAAoB,SAAS,KAAK,UAAU,KAAK,GAC5D,KAAK,MAAM,oBAAoB,QAAQ,KAAK,UAAU,MAAM,GAC5D,KAAK,YAAY,CAAA;AAAA,EACnB;AACF;AAzE0CC,EAAAR,GAAA;AAA1C,IAAMS,IAANT;AA0EAU,EAAM,kBAAkBD;","x_google_ignoreList":[0]}
|
package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
var n = Object.defineProperty;
|
|
2
|
-
var h = (r, t) => n(r, "name", { value: t, configurable: !0 });
|
|
3
|
-
const s = class s {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.states = [], this.currentIndex = 0;
|
|
6
|
-
}
|
|
7
|
-
get currentState() {
|
|
8
|
-
return this.states[this.currentIndex];
|
|
9
|
-
}
|
|
10
|
-
get isEmpty() {
|
|
11
|
-
return this.states.length === 0;
|
|
12
|
-
}
|
|
13
|
-
push(t) {
|
|
14
|
-
this.currentIndex < this.states.length - 1 && (this.states.length = this.currentIndex + 1), this.states.push(t), this.states.length > s.MAX_LENGTH && this.states.shift(), this.currentIndex = this.states.length - 1;
|
|
15
|
-
}
|
|
16
|
-
go(t) {
|
|
17
|
-
return this.currentIndex = Math.min(Math.max(this.currentIndex + t, 0), this.states.length - 1), this.currentState;
|
|
18
|
-
}
|
|
19
|
-
undo() {
|
|
20
|
-
return this.go(-1);
|
|
21
|
-
}
|
|
22
|
-
redo() {
|
|
23
|
-
return this.go(1);
|
|
24
|
-
}
|
|
25
|
-
clear() {
|
|
26
|
-
this.states.length = 0, this.currentIndex = 0;
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
h(s, "InputHistory");
|
|
30
|
-
let e = s;
|
|
31
|
-
e.MAX_LENGTH = 100;
|
|
32
|
-
export {
|
|
33
|
-
e as default
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=input-history.js.map
|
package/dist/node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-history.js","sources":["../../../../../../../../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input-history.js"],"sourcesContent":["class InputHistory {\n constructor() {\n this.states = [];\n this.currentIndex = 0;\n }\n get currentState() {\n return this.states[this.currentIndex];\n }\n get isEmpty() {\n return this.states.length === 0;\n }\n push(state) {\n // if current index points before the last element then remove the future\n if (this.currentIndex < this.states.length - 1) this.states.length = this.currentIndex + 1;\n this.states.push(state);\n if (this.states.length > InputHistory.MAX_LENGTH) this.states.shift();\n this.currentIndex = this.states.length - 1;\n }\n go(steps) {\n this.currentIndex = Math.min(Math.max(this.currentIndex + steps, 0), this.states.length - 1);\n return this.currentState;\n }\n undo() {\n return this.go(-1);\n }\n redo() {\n return this.go(+1);\n }\n clear() {\n this.states.length = 0;\n this.currentIndex = 0;\n }\n}\nInputHistory.MAX_LENGTH = 100;\n\nexport { InputHistory as default };\n"],"names":["_InputHistory","state","steps","__name","InputHistory"],"mappings":";;AAAA,MAAMA,IAAN,MAAMA,EAAa;AAAA,EACjB,cAAc;AACZ,SAAK,SAAS,CAAA,GACd,KAAK,eAAe;AAAA,EACtB;AAAA,EACA,IAAI,eAAe;AACjB,WAAO,KAAK,OAAO,KAAK,YAAY;AAAA,EACtC;AAAA,EACA,IAAI,UAAU;AACZ,WAAO,KAAK,OAAO,WAAW;AAAA,EAChC;AAAA,EACA,KAAKC,GAAO;AAEV,IAAI,KAAK,eAAe,KAAK,OAAO,SAAS,MAAG,KAAK,OAAO,SAAS,KAAK,eAAe,IACzF,KAAK,OAAO,KAAKA,CAAK,GAClB,KAAK,OAAO,SAASD,EAAa,cAAY,KAAK,OAAO,MAAK,GACnE,KAAK,eAAe,KAAK,OAAO,SAAS;AAAA,EAC3C;AAAA,EACA,GAAGE,GAAO;AACR,gBAAK,eAAe,KAAK,IAAI,KAAK,IAAI,KAAK,eAAeA,GAAO,CAAC,GAAG,KAAK,OAAO,SAAS,CAAC,GACpF,KAAK;AAAA,EACd;AAAA,EACA,OAAO;AACL,WAAO,KAAK,GAAG,EAAE;AAAA,EACnB;AAAA,EACA,OAAO;AACL,WAAO,KAAK,GAAG,CAAE;AAAA,EACnB;AAAA,EACA,QAAQ;AACN,SAAK,OAAO,SAAS,GACrB,KAAK,eAAe;AAAA,EACtB;AACF;AAhCmBC,EAAAH,GAAA;AAAnB,IAAMI,IAANJ;AAiCAI,EAAa,aAAa;","x_google_ignoreList":[0]}
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
var _ = Object.defineProperty;
|
|
2
|
-
var l = (p, t) => _(p, "name", { value: t, configurable: !0 });
|
|
3
|
-
import { DIRECTION as r } from "../core/utils.js";
|
|
4
|
-
import m from "../core/action-details.js";
|
|
5
|
-
import d, { maskedClass as c } from "../masked/factory.js";
|
|
6
|
-
import k from "./mask-element.js";
|
|
7
|
-
import g from "./html-input-mask-element.js";
|
|
8
|
-
import C from "./html-contenteditable-mask-element.js";
|
|
9
|
-
import o from "../core/holder.js";
|
|
10
|
-
import f from "./input-history.js";
|
|
11
|
-
import "./html-mask-element.js";
|
|
12
|
-
const u = class u {
|
|
13
|
-
/**
|
|
14
|
-
View element
|
|
15
|
-
*/
|
|
16
|
-
/** Internal {@link Masked} model */
|
|
17
|
-
constructor(t, s) {
|
|
18
|
-
this.el = t instanceof k ? t : t.isContentEditable && t.tagName !== "INPUT" && t.tagName !== "TEXTAREA" ? new C(t) : new g(t), this.masked = d(s), this._listeners = {}, this._value = "", this._unmaskedValue = "", this._rawInputValue = "", this.history = new f(), this._saveSelection = this._saveSelection.bind(this), this._onInput = this._onInput.bind(this), this._onChange = this._onChange.bind(this), this._onDrop = this._onDrop.bind(this), this._onFocus = this._onFocus.bind(this), this._onClick = this._onClick.bind(this), this._onUndo = this._onUndo.bind(this), this._onRedo = this._onRedo.bind(this), this.alignCursor = this.alignCursor.bind(this), this.alignCursorFriendly = this.alignCursorFriendly.bind(this), this._bindEvents(), this.updateValue(), this._onChange();
|
|
19
|
-
}
|
|
20
|
-
maskEquals(t) {
|
|
21
|
-
var s;
|
|
22
|
-
return t == null || ((s = this.masked) == null ? void 0 : s.maskEquals(t));
|
|
23
|
-
}
|
|
24
|
-
/** Masked */
|
|
25
|
-
get mask() {
|
|
26
|
-
return this.masked.mask;
|
|
27
|
-
}
|
|
28
|
-
set mask(t) {
|
|
29
|
-
if (this.maskEquals(t)) return;
|
|
30
|
-
if (!(t instanceof o.Masked) && this.masked.constructor === c(t)) {
|
|
31
|
-
this.masked.updateOptions({
|
|
32
|
-
mask: t
|
|
33
|
-
});
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const s = t instanceof o.Masked ? t : d({
|
|
37
|
-
mask: t
|
|
38
|
-
});
|
|
39
|
-
s.unmaskedValue = this.masked.unmaskedValue, this.masked = s;
|
|
40
|
-
}
|
|
41
|
-
/** Raw value */
|
|
42
|
-
get value() {
|
|
43
|
-
return this._value;
|
|
44
|
-
}
|
|
45
|
-
set value(t) {
|
|
46
|
-
this.value !== t && (this.masked.value = t, this.updateControl("auto"));
|
|
47
|
-
}
|
|
48
|
-
/** Unmasked value */
|
|
49
|
-
get unmaskedValue() {
|
|
50
|
-
return this._unmaskedValue;
|
|
51
|
-
}
|
|
52
|
-
set unmaskedValue(t) {
|
|
53
|
-
this.unmaskedValue !== t && (this.masked.unmaskedValue = t, this.updateControl("auto"));
|
|
54
|
-
}
|
|
55
|
-
/** Raw input value */
|
|
56
|
-
get rawInputValue() {
|
|
57
|
-
return this._rawInputValue;
|
|
58
|
-
}
|
|
59
|
-
set rawInputValue(t) {
|
|
60
|
-
this.rawInputValue !== t && (this.masked.rawInputValue = t, this.updateControl(), this.alignCursor());
|
|
61
|
-
}
|
|
62
|
-
/** Typed unmasked value */
|
|
63
|
-
get typedValue() {
|
|
64
|
-
return this.masked.typedValue;
|
|
65
|
-
}
|
|
66
|
-
set typedValue(t) {
|
|
67
|
-
this.masked.typedValueEquals(t) || (this.masked.typedValue = t, this.updateControl("auto"));
|
|
68
|
-
}
|
|
69
|
-
/** Display value */
|
|
70
|
-
get displayValue() {
|
|
71
|
-
return this.masked.displayValue;
|
|
72
|
-
}
|
|
73
|
-
/** Starts listening to element events */
|
|
74
|
-
_bindEvents() {
|
|
75
|
-
this.el.bindEvents({
|
|
76
|
-
selectionChange: this._saveSelection,
|
|
77
|
-
input: this._onInput,
|
|
78
|
-
drop: this._onDrop,
|
|
79
|
-
click: this._onClick,
|
|
80
|
-
focus: this._onFocus,
|
|
81
|
-
commit: this._onChange,
|
|
82
|
-
undo: this._onUndo,
|
|
83
|
-
redo: this._onRedo
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
/** Stops listening to element events */
|
|
87
|
-
_unbindEvents() {
|
|
88
|
-
this.el && this.el.unbindEvents();
|
|
89
|
-
}
|
|
90
|
-
/** Fires custom event */
|
|
91
|
-
_fireEvent(t, s) {
|
|
92
|
-
const e = this._listeners[t];
|
|
93
|
-
e && e.forEach((i) => i(s));
|
|
94
|
-
}
|
|
95
|
-
/** Current selection start */
|
|
96
|
-
get selectionStart() {
|
|
97
|
-
return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;
|
|
98
|
-
}
|
|
99
|
-
/** Current cursor position */
|
|
100
|
-
get cursorPos() {
|
|
101
|
-
return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;
|
|
102
|
-
}
|
|
103
|
-
set cursorPos(t) {
|
|
104
|
-
!this.el || !this.el.isActive || (this.el.select(t, t), this._saveSelection());
|
|
105
|
-
}
|
|
106
|
-
/** Stores current selection */
|
|
107
|
-
_saveSelection() {
|
|
108
|
-
this.displayValue !== this.el.value && console.warn("Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly."), this._selection = {
|
|
109
|
-
start: this.selectionStart,
|
|
110
|
-
end: this.cursorPos
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
/** Syncronizes model value from view */
|
|
114
|
-
updateValue() {
|
|
115
|
-
this.masked.value = this.el.value, this._value = this.masked.value, this._unmaskedValue = this.masked.unmaskedValue, this._rawInputValue = this.masked.rawInputValue;
|
|
116
|
-
}
|
|
117
|
-
/** Syncronizes view from model value, fires change events */
|
|
118
|
-
updateControl(t) {
|
|
119
|
-
const s = this.masked.unmaskedValue, e = this.masked.value, i = this.masked.rawInputValue, n = this.displayValue, a = this.unmaskedValue !== s || this.value !== e || this._rawInputValue !== i;
|
|
120
|
-
this._unmaskedValue = s, this._value = e, this._rawInputValue = i, this.el.value !== n && (this.el.value = n), t === "auto" ? this.alignCursor() : t != null && (this.cursorPos = t), a && this._fireChangeEvents(), !this._historyChanging && (a || this.history.isEmpty) && this.history.push({
|
|
121
|
-
unmaskedValue: s,
|
|
122
|
-
selection: {
|
|
123
|
-
start: this.selectionStart,
|
|
124
|
-
end: this.cursorPos
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
/** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */
|
|
129
|
-
updateOptions(t) {
|
|
130
|
-
const {
|
|
131
|
-
mask: s,
|
|
132
|
-
...e
|
|
133
|
-
} = t, i = !this.maskEquals(s), n = this.masked.optionsIsChanged(e);
|
|
134
|
-
i && (this.mask = s), n && this.masked.updateOptions(e), (i || n) && this.updateControl();
|
|
135
|
-
}
|
|
136
|
-
/** Updates cursor */
|
|
137
|
-
updateCursor(t) {
|
|
138
|
-
t != null && (this.cursorPos = t, this._delayUpdateCursor(t));
|
|
139
|
-
}
|
|
140
|
-
/** Delays cursor update to support mobile browsers */
|
|
141
|
-
_delayUpdateCursor(t) {
|
|
142
|
-
this._abortUpdateCursor(), this._changingCursorPos = t, this._cursorChanging = setTimeout(() => {
|
|
143
|
-
this.el && (this.cursorPos = this._changingCursorPos, this._abortUpdateCursor());
|
|
144
|
-
}, 10);
|
|
145
|
-
}
|
|
146
|
-
/** Fires custom events */
|
|
147
|
-
_fireChangeEvents() {
|
|
148
|
-
this._fireEvent("accept", this._inputEvent), this.masked.isComplete && this._fireEvent("complete", this._inputEvent);
|
|
149
|
-
}
|
|
150
|
-
/** Aborts delayed cursor update */
|
|
151
|
-
_abortUpdateCursor() {
|
|
152
|
-
this._cursorChanging && (clearTimeout(this._cursorChanging), delete this._cursorChanging);
|
|
153
|
-
}
|
|
154
|
-
/** Aligns cursor to nearest available position */
|
|
155
|
-
alignCursor() {
|
|
156
|
-
this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, r.LEFT));
|
|
157
|
-
}
|
|
158
|
-
/** Aligns cursor only if selection is empty */
|
|
159
|
-
alignCursorFriendly() {
|
|
160
|
-
this.selectionStart === this.cursorPos && this.alignCursor();
|
|
161
|
-
}
|
|
162
|
-
/** Adds listener on custom event */
|
|
163
|
-
on(t, s) {
|
|
164
|
-
return this._listeners[t] || (this._listeners[t] = []), this._listeners[t].push(s), this;
|
|
165
|
-
}
|
|
166
|
-
/** Removes custom event listener */
|
|
167
|
-
off(t, s) {
|
|
168
|
-
if (!this._listeners[t]) return this;
|
|
169
|
-
if (!s)
|
|
170
|
-
return delete this._listeners[t], this;
|
|
171
|
-
const e = this._listeners[t].indexOf(s);
|
|
172
|
-
return e >= 0 && this._listeners[t].splice(e, 1), this;
|
|
173
|
-
}
|
|
174
|
-
/** Handles view input event */
|
|
175
|
-
_onInput(t) {
|
|
176
|
-
this._inputEvent = t, this._abortUpdateCursor();
|
|
177
|
-
const s = new m({
|
|
178
|
-
// new state
|
|
179
|
-
value: this.el.value,
|
|
180
|
-
cursorPos: this.cursorPos,
|
|
181
|
-
// old state
|
|
182
|
-
oldValue: this.displayValue,
|
|
183
|
-
oldSelection: this._selection
|
|
184
|
-
}), e = this.masked.rawInputValue, i = this.masked.splice(s.startChangePos, s.removed.length, s.inserted, s.removeDirection, {
|
|
185
|
-
input: !0,
|
|
186
|
-
raw: !0
|
|
187
|
-
}).offset, n = e === this.masked.rawInputValue ? s.removeDirection : r.NONE;
|
|
188
|
-
let a = this.masked.nearestInputPos(s.startChangePos + i, n);
|
|
189
|
-
n !== r.NONE && (a = this.masked.nearestInputPos(a, r.NONE)), this.updateControl(a), delete this._inputEvent;
|
|
190
|
-
}
|
|
191
|
-
/** Handles view change event and commits model value */
|
|
192
|
-
_onChange() {
|
|
193
|
-
this.displayValue !== this.el.value && this.updateValue(), this.masked.doCommit(), this.updateControl(), this._saveSelection();
|
|
194
|
-
}
|
|
195
|
-
/** Handles view drop event, prevents by default */
|
|
196
|
-
_onDrop(t) {
|
|
197
|
-
t.preventDefault(), t.stopPropagation();
|
|
198
|
-
}
|
|
199
|
-
/** Restore last selection on focus */
|
|
200
|
-
_onFocus(t) {
|
|
201
|
-
this.alignCursorFriendly();
|
|
202
|
-
}
|
|
203
|
-
/** Restore last selection on focus */
|
|
204
|
-
_onClick(t) {
|
|
205
|
-
this.alignCursorFriendly();
|
|
206
|
-
}
|
|
207
|
-
_onUndo() {
|
|
208
|
-
this._applyHistoryState(this.history.undo());
|
|
209
|
-
}
|
|
210
|
-
_onRedo() {
|
|
211
|
-
this._applyHistoryState(this.history.redo());
|
|
212
|
-
}
|
|
213
|
-
_applyHistoryState(t) {
|
|
214
|
-
t && (this._historyChanging = !0, this.unmaskedValue = t.unmaskedValue, this.el.select(t.selection.start, t.selection.end), this._saveSelection(), this._historyChanging = !1);
|
|
215
|
-
}
|
|
216
|
-
/** Unbind view events and removes element reference */
|
|
217
|
-
destroy() {
|
|
218
|
-
this._unbindEvents(), this._listeners.length = 0, delete this.el;
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
l(u, "InputMask");
|
|
222
|
-
let h = u;
|
|
223
|
-
o.InputMask = h;
|
|
224
|
-
export {
|
|
225
|
-
h as default
|
|
226
|
-
};
|
|
227
|
-
//# sourceMappingURL=input.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sources":["../../../../../../../../../../node_modules/.pnpm/imask@7.6.1/node_modules/imask/esm/controls/input.js"],"sourcesContent":["import { DIRECTION } from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport createMask, { maskedClass } from '../masked/factory.js';\nimport MaskElement from './mask-element.js';\nimport HTMLInputMaskElement from './html-input-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\nimport InputHistory from './input-history.js';\nimport './html-mask-element.js';\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nclass InputMask {\n /**\n View element\n */\n\n /** Internal {@link Masked} model */\n\n constructor(el, opts) {\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLInputMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n this._rawInputValue = '';\n this.history = new InputHistory();\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onUndo = this._onUndo.bind(this);\n this._onRedo = this._onRedo.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n maskEquals(mask) {\n var _this$masked;\n return mask == null || ((_this$masked = this.masked) == null ? void 0 : _this$masked.maskEquals(mask));\n }\n\n /** Masked */\n get mask() {\n return this.masked.mask;\n }\n set mask(mask) {\n if (this.maskEquals(mask)) return;\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n // TODO \"any\" no idea\n this.masked.updateOptions({\n mask\n });\n return;\n }\n const masked = mask instanceof IMask.Masked ? mask : createMask({\n mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value() {\n return this._value;\n }\n set value(str) {\n if (this.value === str) return;\n this.masked.value = str;\n this.updateControl('auto');\n }\n\n /** Unmasked value */\n get unmaskedValue() {\n return this._unmaskedValue;\n }\n set unmaskedValue(str) {\n if (this.unmaskedValue === str) return;\n this.masked.unmaskedValue = str;\n this.updateControl('auto');\n }\n\n /** Raw input value */\n get rawInputValue() {\n return this._rawInputValue;\n }\n set rawInputValue(str) {\n if (this.rawInputValue === str) return;\n this.masked.rawInputValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue() {\n return this.masked.typedValue;\n }\n set typedValue(val) {\n if (this.masked.typedValueEquals(val)) return;\n this.masked.typedValue = val;\n this.updateControl('auto');\n }\n\n /** Display value */\n get displayValue() {\n return this.masked.displayValue;\n }\n\n /** Starts listening to element events */\n _bindEvents() {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n undo: this._onUndo,\n redo: this._onRedo\n });\n }\n\n /** Stops listening to element events */\n _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n\n /** Fires custom event */\n _fireEvent(ev, e) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(l => l(e));\n }\n\n /** Current selection start */\n get selectionStart() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n }\n set cursorPos(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /** Stores current selection */\n _saveSelection( /* ev */\n ) {\n if (this.displayValue !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n this._unmaskedValue = this.masked.unmaskedValue;\n this._rawInputValue = this.masked.rawInputValue;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl(cursorPos) {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const newRawInputValue = this.masked.rawInputValue;\n const newDisplayValue = this.displayValue;\n const isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue || this._rawInputValue !== newRawInputValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n this._rawInputValue = newRawInputValue;\n if (this.el.value !== newDisplayValue) this.el.value = newDisplayValue;\n if (cursorPos === 'auto') this.alignCursor();else if (cursorPos != null) this.cursorPos = cursorPos;\n if (isChanged) this._fireChangeEvents();\n if (!this._historyChanging && (isChanged || this.history.isEmpty)) this.history.push({\n unmaskedValue: newUnmaskedValue,\n selection: {\n start: this.selectionStart,\n end: this.cursorPos\n }\n });\n }\n\n /** Updates options with deep equal check, recreates {@link Masked} model if mask type changes */\n updateOptions(opts) {\n const {\n mask,\n ...restOpts\n } = opts; // TODO types, yes, mask is optional\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = this.masked.optionsIsChanged(restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts); // TODO\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /** Delays cursor update to support mobile browsers */\n _delayUpdateCursor(cursorPos) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /** Fires custom events */\n _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /** Aborts delayed cursor update */\n _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off(ev, handler) {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput(e) {\n this._inputEvent = e;\n this._abortUpdateCursor();\n const details = new ActionDetails({\n // new state\n value: this.el.value,\n cursorPos: this.cursorPos,\n // old state\n oldValue: this.displayValue,\n oldSelection: this._selection\n });\n const oldRawValue = this.masked.rawInputValue;\n const offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection, {\n input: true,\n raw: true\n }).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n let cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n this.updateControl(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange() {\n if (this.displayValue !== this.el.value) this.updateValue();\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus(ev) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick(ev) {\n this.alignCursorFriendly();\n }\n _onUndo() {\n this._applyHistoryState(this.history.undo());\n }\n _onRedo() {\n this._applyHistoryState(this.history.redo());\n }\n _applyHistoryState(state) {\n if (!state) return;\n this._historyChanging = true;\n this.unmaskedValue = state.unmaskedValue;\n this.el.select(state.selection.start, state.selection.end);\n this._saveSelection();\n this._historyChanging = false;\n }\n\n /** Unbind view events and removes element reference */\n destroy() {\n this._unbindEvents();\n this._listeners.length = 0;\n delete this.el;\n }\n}\nIMask.InputMask = InputMask;\n\nexport { InputMask as default };\n"],"names":["_InputMask","el","opts","MaskElement","HTMLContenteditableMaskElement","HTMLInputMaskElement","createMask","InputHistory","mask","_this$masked","IMask","maskedClass","masked","str","val","ev","e","listeners","l","pos","cursorPos","newUnmaskedValue","newValue","newRawInputValue","newDisplayValue","isChanged","restOpts","updateMask","updateOpts","DIRECTION","handler","hIndex","details","ActionDetails","oldRawValue","offset","removeDirection","state","__name","InputMask"],"mappings":"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","x_google_ignoreList":[0]}
|