@ctlyst.id/utils 1.3.7 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/index.d.mts +141 -0
  2. package/dist/index.d.ts +141 -0
  3. package/dist/index.js +682 -1
  4. package/dist/index.js.map +1 -0
  5. package/dist/index.mjs +570 -2014
  6. package/dist/index.mjs.map +1 -0
  7. package/package.json +18 -23
  8. package/dist/types/dom.d.ts +0 -7
  9. package/dist/types/hooks/index.d.ts +0 -11
  10. package/dist/types/hooks/use-callback-ref/index.d.ts +0 -1
  11. package/dist/types/hooks/use-callback-ref/use-callback-ref.d.ts +0 -3
  12. package/dist/types/hooks/use-clipboard/index.d.ts +0 -2
  13. package/dist/types/hooks/use-clipboard/use-clipboard.d.ts +0 -15
  14. package/dist/types/hooks/use-debounce/index.d.ts +0 -2
  15. package/dist/types/hooks/use-debounce/use-debounce.d.ts +0 -6
  16. package/dist/types/hooks/use-dimensions/index.d.ts +0 -2
  17. package/dist/types/hooks/use-dimensions/use-dimensions.d.ts +0 -5
  18. package/dist/types/hooks/use-disclosure/index.d.ts +0 -2
  19. package/dist/types/hooks/use-disclosure/use-disclosure.d.ts +0 -18
  20. package/dist/types/hooks/use-media-query/index.d.ts +0 -2
  21. package/dist/types/hooks/use-media-query/use-media-query.d.ts +0 -6
  22. package/dist/types/hooks/use-number-formatter/index.d.ts +0 -2
  23. package/dist/types/hooks/use-number-formatter/use-number-formatter.d.ts +0 -9
  24. package/dist/types/hooks/use-online-status/index.d.ts +0 -1
  25. package/dist/types/hooks/use-online-status/use-online-status.d.ts +0 -5
  26. package/dist/types/hooks/use-outside-click/index.d.ts +0 -2
  27. package/dist/types/hooks/use-outside-click/use-outside-click.d.ts +0 -8
  28. package/dist/types/hooks/use-safe-layout-effect/index.d.ts +0 -1
  29. package/dist/types/hooks/use-safe-layout-effect/use-safe-layout-effect.d.ts +0 -3
  30. package/dist/types/hooks/use-voucher-tnc/get-applies-to.d.ts +0 -2
  31. package/dist/types/hooks/use-voucher-tnc/get-bank-bin.d.ts +0 -2
  32. package/dist/types/hooks/use-voucher-tnc/get-period.d.ts +0 -2
  33. package/dist/types/hooks/use-voucher-tnc/get-usage-limit.d.ts +0 -2
  34. package/dist/types/hooks/use-voucher-tnc/index.d.ts +0 -2
  35. package/dist/types/hooks/use-voucher-tnc/use-voucher-method-terms.d.ts +0 -2
  36. package/dist/types/hooks/use-voucher-tnc/use-voucher-tnc.d.ts +0 -3
  37. package/dist/types/hooks/use-voucher-tnc/use-voucher-tnc.types.d.ts +0 -56
  38. package/dist/types/index.d.ts +0 -2
package/dist/index.mjs CHANGED
@@ -1,2072 +1,628 @@
1
- import { useRef as oe, useEffect as R, useCallback as Q, useState as j, useLayoutEffect as Me, useId as ke } from "react";
2
- const De = (a) => a != null && typeof a == "object" && "nodeType" in a && a.nodeType === Node.ELEMENT_NODE, he = (a) => De(a) ? a.ownerDocument ?? document : document, te = (a, e) => {
3
- var n;
4
- const t = a.target;
5
- return a.button > 0 || t && !he(t).contains(t) ? !1 : !((n = e.current) != null && n.contains(t));
6
- }, Te = () => !!(typeof window < "u" && window.document && window.document.createElement), Ce = Te(), Pe = (a, e = []) => {
7
- const t = oe(a);
8
- return R(() => {
9
- t.current = a;
10
- }), Q((...n) => {
11
- var r;
12
- return (r = t.current) == null ? void 0 : r.call(t, ...n);
13
- }, e);
14
- }, re = Pe;
15
- function Se(a) {
16
- return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
17
- }
18
- var xe = function() {
19
- var a = document.getSelection();
20
- if (!a.rangeCount)
21
- return function() {
22
- };
23
- for (var e = document.activeElement, t = [], n = 0; n < a.rangeCount; n++)
24
- t.push(a.getRangeAt(n));
25
- switch (e.tagName.toUpperCase()) {
26
- case "INPUT":
27
- case "TEXTAREA":
28
- e.blur();
29
- break;
30
- default:
31
- e = null;
32
- break;
1
+ // src/dom.ts
2
+ var isElement = (el) => {
3
+ return el != null && typeof el === "object" && "nodeType" in el && el.nodeType === Node.ELEMENT_NODE;
4
+ };
5
+ var getOwnerDocument = (node) => {
6
+ var _a;
7
+ return isElement(node) ? (_a = node.ownerDocument) != null ? _a : document : document;
8
+ };
9
+ var isValidEvent = (event, ref) => {
10
+ var _a;
11
+ const target = event.target;
12
+ if (event.button > 0) return false;
13
+ if (target) {
14
+ const doc = getOwnerDocument(target);
15
+ if (!doc.contains(target)) return false;
33
16
  }
34
- return a.removeAllRanges(), function() {
35
- a.type === "Caret" && a.removeAllRanges(), a.rangeCount || t.forEach(function(r) {
36
- a.addRange(r);
37
- }), e && e.focus();
38
- };
39
- }, Oe = xe, ue = {
40
- "text/plain": "Text",
41
- "text/html": "Url",
42
- default: "Text"
43
- }, Ee = "Copy to clipboard: #{key}, Enter";
44
- function $e(a) {
45
- var e = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C";
46
- return a.replace(/#{\s*key\s*}/g, e);
47
- }
48
- function We(a, e) {
49
- var t, n, r, i, o, u, s = !1;
50
- e || (e = {}), t = e.debug || !1;
51
- try {
52
- r = Oe(), i = document.createRange(), o = document.getSelection(), u = document.createElement("span"), u.textContent = a, u.ariaHidden = "true", u.style.all = "unset", u.style.position = "fixed", u.style.top = 0, u.style.clip = "rect(0, 0, 0, 0)", u.style.whiteSpace = "pre", u.style.webkitUserSelect = "text", u.style.MozUserSelect = "text", u.style.msUserSelect = "text", u.style.userSelect = "text", u.addEventListener("copy", function(c) {
53
- if (c.stopPropagation(), e.format)
54
- if (c.preventDefault(), typeof c.clipboardData > "u") {
55
- t && console.warn("unable to use e.clipboardData"), t && console.warn("trying IE specific stuff"), window.clipboardData.clearData();
56
- var l = ue[e.format] || ue.default;
57
- window.clipboardData.setData(l, a);
58
- } else
59
- c.clipboardData.clearData(), c.clipboardData.setData(e.format, a);
60
- e.onCopy && (c.preventDefault(), e.onCopy(c.clipboardData));
61
- }), document.body.appendChild(u), i.selectNodeContents(u), o.addRange(i);
62
- var d = document.execCommand("copy");
63
- if (!d)
64
- throw new Error("copy command was unsuccessful");
65
- s = !0;
66
- } catch (c) {
67
- t && console.error("unable to copy using execCommand: ", c), t && console.warn("trying IE specific stuff");
68
- try {
69
- window.clipboardData.setData(e.format || "text", a), e.onCopy && e.onCopy(window.clipboardData), s = !0;
70
- } catch (l) {
71
- t && console.error("unable to copy using clipboardData: ", l), t && console.error("falling back to prompt"), n = $e("message" in e ? e.message : Ee), window.prompt(n, a);
17
+ return !((_a = ref.current) == null ? void 0 : _a.contains(target));
18
+ };
19
+ var canUseDOM = () => {
20
+ return !!(typeof window !== "undefined" && window.document && window.document.createElement);
21
+ };
22
+ var isBrowser = canUseDOM();
23
+
24
+ // src/hooks/use-callback-ref/use-callback-ref.ts
25
+ import { useCallback, useEffect, useRef } from "react";
26
+ var useCallbackRef = (callback, deps = []) => {
27
+ const callbackRef = useRef(callback);
28
+ useEffect(() => {
29
+ callbackRef.current = callback;
30
+ });
31
+ return useCallback((...args) => {
32
+ var _a;
33
+ return (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef, ...args);
34
+ }, deps);
35
+ };
36
+ var use_callback_ref_default = useCallbackRef;
37
+
38
+ // src/hooks/use-clipboard/use-clipboard.ts
39
+ import copy from "copy-to-clipboard";
40
+ import { useCallback as useCallback2, useEffect as useEffect2, useState } from "react";
41
+ var useClipboard = ({ value = "", optionsOrTimeout = {} } = {}) => {
42
+ const [hasCopied, setHasCopied] = useState(false);
43
+ const [valueState, setValueState] = useState(value);
44
+ useEffect2(() => setValueState(value), [value]);
45
+ const { timeout = 1500, ...copyOptions } = typeof optionsOrTimeout === "number" ? { timeout: optionsOrTimeout } : optionsOrTimeout;
46
+ const onCopy = useCallback2(() => {
47
+ const didCopy = copy(valueState, copyOptions);
48
+ setHasCopied(didCopy);
49
+ }, [valueState, copyOptions]);
50
+ useEffect2(() => {
51
+ let timeoutId = null;
52
+ if (hasCopied) {
53
+ timeoutId = window.setTimeout(() => {
54
+ setHasCopied(false);
55
+ }, timeout);
72
56
  }
73
- } finally {
74
- o && (typeof o.removeRange == "function" ? o.removeRange(i) : o.removeAllRanges()), u && document.body.removeChild(u), r();
75
- }
76
- return s;
77
- }
78
- var Ne = We;
79
- const Ue = /* @__PURE__ */ Se(Ne), Ye = ({ value: a = "", optionsOrTimeout: e = {} } = {}) => {
80
- const [t, n] = j(!1), [r, i] = j(a);
81
- R(() => i(a), [a]);
82
- const { timeout: o = 1500, ...u } = typeof e == "number" ? { timeout: e } : e, s = Q(() => {
83
- const d = Ue(r, u);
84
- n(d);
85
- }, [r, u]);
86
- return R(() => {
87
- let d = null;
88
- return t && (d = window.setTimeout(() => {
89
- n(!1);
90
- }, o)), () => {
91
- d && window.clearTimeout(d);
92
- };
93
- }, [o, t]), {
94
- value: r,
95
- setValue: i,
96
- onCopy: s,
97
- hasCopied: t
98
- };
99
- }, za = Ye, _e = ({ value: a, delay: e = 500 }) => {
100
- const [t, n] = j(a);
101
- return R(() => {
102
- const r = setTimeout(() => n(a), e || 500);
103
57
  return () => {
104
- clearTimeout(r);
58
+ if (timeoutId) {
59
+ window.clearTimeout(timeoutId);
60
+ }
105
61
  };
106
- }, [JSON.stringify(a), e]), t;
107
- }, Za = _e;
108
- var Le = process.env.NODE_ENV === "production", ae = "Invariant failed";
109
- function se(a, e) {
110
- if (!a) {
111
- if (Le)
112
- throw new Error(ae);
113
- var t = typeof e == "function" ? e() : e, n = t ? "".concat(ae, ": ").concat(t) : ae;
114
- throw new Error(n);
115
- }
116
- }
117
- var K = function(e) {
118
- var t = e.top, n = e.right, r = e.bottom, i = e.left, o = n - i, u = r - t, s = {
119
- top: t,
120
- right: n,
121
- bottom: r,
122
- left: i,
123
- width: o,
124
- height: u,
125
- x: i,
126
- y: t,
127
- center: {
128
- x: (n + i) / 2,
129
- y: (r + t) / 2
130
- }
131
- };
132
- return s;
133
- }, Fe = function(e, t) {
62
+ }, [timeout, hasCopied]);
134
63
  return {
135
- top: e.top - t.top,
136
- left: e.left - t.left,
137
- bottom: e.bottom + t.bottom,
138
- right: e.right + t.right
64
+ value: valueState,
65
+ setValue: setValueState,
66
+ onCopy,
67
+ hasCopied
139
68
  };
140
- }, de = function(e, t) {
141
- return {
142
- top: e.top + t.top,
143
- left: e.left + t.left,
144
- bottom: e.bottom - t.bottom,
145
- right: e.right - t.right
146
- };
147
- }, ne = {
148
- top: 0,
149
- right: 0,
150
- bottom: 0,
151
- left: 0
152
- }, Re = function(e) {
153
- var t = e.borderBox, n = e.margin, r = n === void 0 ? ne : n, i = e.border, o = i === void 0 ? ne : i, u = e.padding, s = u === void 0 ? ne : u, d = K(Fe(t, r)), c = K(de(t, o)), l = K(de(c, s));
154
- return {
155
- marginBox: d,
156
- borderBox: K(t),
157
- paddingBox: c,
158
- contentBox: l,
159
- margin: r,
160
- border: o,
161
- padding: s
162
- };
163
- }, T = function(e) {
164
- var t = e.slice(0, -2), n = e.slice(-2);
165
- if (n !== "px")
166
- return 0;
167
- var r = Number(t);
168
- return isNaN(r) && (process.env.NODE_ENV !== "production" ? se(!1, "Could not parse value [raw: " + e + ", without suffix: " + t + "]") : se(!1)), r;
169
- }, Be = function(e, t) {
170
- var n = {
171
- top: T(t.marginTop),
172
- right: T(t.marginRight),
173
- bottom: T(t.marginBottom),
174
- left: T(t.marginLeft)
175
- }, r = {
176
- top: T(t.paddingTop),
177
- right: T(t.paddingRight),
178
- bottom: T(t.paddingBottom),
179
- left: T(t.paddingLeft)
180
- }, i = {
181
- top: T(t.borderTopWidth),
182
- right: T(t.borderRightWidth),
183
- bottom: T(t.borderBottomWidth),
184
- left: T(t.borderLeftWidth)
185
- };
186
- return Re({
187
- borderBox: e,
188
- margin: n,
189
- padding: r,
190
- border: i
191
- });
192
- }, je = function(e) {
193
- var t = e.getBoundingClientRect(), n = window.getComputedStyle(e);
194
- return Be(t, n);
195
69
  };
196
- const Ae = Ce ? Me : R, Ie = Ae, He = (a, e) => {
197
- const [t, n] = j(null), r = oe();
198
- return Ie(() => {
199
- const i = () => {
200
- const o = a.current;
201
- o && (r.current = requestAnimationFrame(() => {
202
- const u = je(o);
203
- n(u);
204
- }));
70
+ var use_clipboard_default = useClipboard;
71
+
72
+ // src/hooks/use-debounce/use-debounce.ts
73
+ import { useEffect as useEffect3, useState as useState2 } from "react";
74
+ var useDebounce = ({ value, delay = 500 }) => {
75
+ const [debouncedValue, setDebouncedValue] = useState2(value);
76
+ useEffect3(() => {
77
+ const timer = setTimeout(() => setDebouncedValue(value), delay || 500);
78
+ return () => {
79
+ clearTimeout(timer);
80
+ };
81
+ }, [JSON.stringify(value), delay]);
82
+ return debouncedValue;
83
+ };
84
+ var use_debounce_default = useDebounce;
85
+
86
+ // src/hooks/use-dimensions/use-dimensions.ts
87
+ import { getBox } from "css-box-model";
88
+ import { useRef as useRef2, useState as useState3 } from "react";
89
+
90
+ // src/hooks/use-safe-layout-effect/use-safe-layout-effect.ts
91
+ import { useEffect as useEffect4, useLayoutEffect } from "react";
92
+ var useSafeLayoutEffect = isBrowser ? useLayoutEffect : useEffect4;
93
+ var use_safe_layout_effect_default = useSafeLayoutEffect;
94
+
95
+ // src/hooks/use-dimensions/use-dimensions.ts
96
+ var useDimensions = (ref, observe) => {
97
+ const [dimensions, setDimensions] = useState3(null);
98
+ const rafId = useRef2();
99
+ use_safe_layout_effect_default(() => {
100
+ const measure = () => {
101
+ const node = ref.current;
102
+ if (!node) return;
103
+ rafId.current = requestAnimationFrame(() => {
104
+ const boxModel = getBox(node);
105
+ setDimensions(boxModel);
106
+ });
205
107
  };
206
- return i(), e && (window.addEventListener("resize", i), window.addEventListener("scroll", i)), () => {
207
- e && (window.removeEventListener("resize", i), window.removeEventListener("scroll", i)), r.current && cancelAnimationFrame(r.current);
108
+ measure();
109
+ if (observe) {
110
+ window.addEventListener("resize", measure);
111
+ window.addEventListener("scroll", measure);
112
+ }
113
+ return () => {
114
+ if (observe) {
115
+ window.removeEventListener("resize", measure);
116
+ window.removeEventListener("scroll", measure);
117
+ }
118
+ if (rafId.current) {
119
+ cancelAnimationFrame(rafId.current);
120
+ }
208
121
  };
209
- }, [e]), t;
210
- }, en = He, Ve = ({
211
- onClose: a,
212
- onOpen: e,
213
- isOpen: t,
214
- defaultIsOpen: n,
215
- id: r
122
+ }, [observe]);
123
+ return dimensions;
124
+ };
125
+ var use_dimensions_default = useDimensions;
126
+
127
+ // src/hooks/use-disclosure/use-disclosure.ts
128
+ import { useCallback as useCallback3, useId, useState as useState4 } from "react";
129
+ var useDisclosure = ({
130
+ onClose: onCloseProp,
131
+ onOpen: onOpenProp,
132
+ isOpen: isOpenProp,
133
+ defaultIsOpen: defaultIsOpenProp,
134
+ id: idProp
216
135
  } = {}) => {
217
- const [i, o] = j(n || !1), u = t !== void 0 ? t : i, s = t !== void 0, d = ke(), c = r ?? `disclosure-${d}`, l = re(e), f = re(a), m = Q(() => {
218
- s || o(!1), f == null || f();
219
- }, [s, f]), g = Q(() => {
220
- s || o(!0), l == null || l();
221
- }, [s, l]), w = Q(() => {
222
- u ? m() : g();
223
- }, [u, g, m]);
224
- return {
225
- onClose: m,
226
- onOpen: g,
227
- onToggle: w,
228
- getButtonProps: ({ onClick: D, ...C } = {}) => ({
229
- ...C,
230
- "aria-expanded": u,
231
- "aria-controls": c,
232
- onClick(x) {
233
- D == null || D(x), w();
136
+ const [isOpenState, setIsOpenState] = useState4(defaultIsOpenProp || false);
137
+ const isOpen = isOpenProp !== void 0 ? isOpenProp : isOpenState;
138
+ const isControlled = isOpenProp !== void 0;
139
+ const uid = useId();
140
+ const id2 = idProp != null ? idProp : `disclosure-${uid}`;
141
+ const handleOpen = use_callback_ref_default(onOpenProp);
142
+ const handleClose = use_callback_ref_default(onCloseProp);
143
+ const onClose = useCallback3(() => {
144
+ if (!isControlled) {
145
+ setIsOpenState(false);
146
+ }
147
+ handleClose == null ? void 0 : handleClose();
148
+ }, [isControlled, handleClose]);
149
+ const onOpen = useCallback3(() => {
150
+ if (!isControlled) {
151
+ setIsOpenState(true);
152
+ }
153
+ handleOpen == null ? void 0 : handleOpen();
154
+ }, [isControlled, handleOpen]);
155
+ const onToggle = useCallback3(() => {
156
+ if (isOpen) {
157
+ onClose();
158
+ } else {
159
+ onOpen();
160
+ }
161
+ }, [isOpen, onOpen, onClose]);
162
+ const getButtonProps = ({ onClick, ...rest } = {}) => {
163
+ return {
164
+ ...rest,
165
+ "aria-expanded": isOpen,
166
+ "aria-controls": id2,
167
+ onClick(event) {
168
+ onClick == null ? void 0 : onClick(event);
169
+ onToggle();
234
170
  }
235
- }),
236
- getDisclosureProps: ({ ...D } = {}) => ({
237
- ...D,
238
- hidden: !u,
239
- id: c
240
- }),
241
- isOpen: u
171
+ };
172
+ };
173
+ const getDisclosureProps = ({ ...rest } = {}) => {
174
+ return {
175
+ ...rest,
176
+ hidden: !isOpen,
177
+ id: id2
178
+ };
242
179
  };
243
- }, tn = Ve, qe = (a, e = {}) => {
244
- const { ssr: t = !0, fallback: n } = e, r = Array.isArray(a) ? a : [a];
245
- let i = Array.isArray(n) ? n : [n];
246
- i = i.filter((s) => s != null);
247
- const [o, u] = j(() => r.map((s, d) => ({
248
- media: s,
249
- matches: t ? !!i[d] : window.matchMedia(s).matches
250
- })));
251
- return R(() => {
252
- const s = window;
253
- u(
254
- r.map((l) => ({
255
- media: l,
256
- matches: s.matchMedia(l).matches
180
+ return {
181
+ onClose,
182
+ onOpen,
183
+ onToggle,
184
+ getButtonProps,
185
+ getDisclosureProps,
186
+ isOpen
187
+ };
188
+ };
189
+ var use_disclosure_default = useDisclosure;
190
+
191
+ // src/hooks/use-media-query/use-media-query.ts
192
+ import { useEffect as useEffect5, useState as useState5 } from "react";
193
+ var useMediaQuery = (query, options = {}) => {
194
+ const { ssr = true, fallback } = options;
195
+ const queries = Array.isArray(query) ? query : [query];
196
+ let fallbackValues = Array.isArray(fallback) ? fallback : [fallback];
197
+ fallbackValues = fallbackValues.filter((v) => v != null);
198
+ const [value, setValue] = useState5(() => {
199
+ return queries.map((data, index) => ({
200
+ media: data,
201
+ matches: ssr ? !!fallbackValues[index] : window.matchMedia(data).matches
202
+ }));
203
+ });
204
+ useEffect5(() => {
205
+ const win = window;
206
+ setValue(
207
+ queries.map((data) => ({
208
+ media: data,
209
+ matches: win.matchMedia(data).matches
257
210
  }))
258
211
  );
259
- const d = r.map((l) => s.matchMedia(l)), c = (l) => {
260
- u((f) => f.slice().map((m) => m.media === l.media ? { ...m, matches: l.matches } : m));
212
+ const mql = queries.map((data) => win.matchMedia(data));
213
+ const handler = (evt) => {
214
+ setValue((prev) => {
215
+ return prev.slice().map((item) => {
216
+ if (item.media === evt.media) return { ...item, matches: evt.matches };
217
+ return item;
218
+ });
219
+ });
261
220
  };
262
- return d.forEach((l) => {
263
- l.addEventListener("change", c);
264
- }), () => {
265
- d.forEach((l) => {
266
- l.removeEventListener("change", c);
221
+ mql.forEach((data) => {
222
+ data.addEventListener("change", handler);
223
+ });
224
+ return () => {
225
+ mql.forEach((data) => {
226
+ data.removeEventListener("change", handler);
267
227
  });
268
228
  };
269
- }, [window]), o.map((s) => s.matches);
270
- }, an = qe, Qe = ({
271
- value: a,
272
- thousandSeparator: e = ".",
273
- decimalLength: t,
274
- decimalSeparator: n = ",",
275
- prefix: r = ""
229
+ }, [window]);
230
+ return value.map((item) => item.matches);
231
+ };
232
+ var use_media_query_default = useMediaQuery;
233
+
234
+ // src/hooks/use-number-formatter/use-number-formatter.ts
235
+ var useNumberFormatter = ({
236
+ value,
237
+ thousandSeparator = ".",
238
+ decimalLength,
239
+ decimalSeparator = ",",
240
+ prefix = ""
276
241
  }) => {
277
- const o = ((u) => {
278
- const s = u.toString().split("."), d = s[0].replace(/\B(?=(\d{3})+(?!\d))/g, e);
279
- let c = "";
280
- return t !== void 0 ? s.length > 1 && t > 0 ? c = n + s[1].padEnd(t, "0").slice(0, t) : t > 0 && (c = n + "0".repeat(t)) : s.length > 1 && (c = n + s[1]), d + c;
281
- })(a);
282
- return o.charAt(0) === "-" ? o.replace(/^-/g, `-${r}`) : `${r}${o}`;
283
- }, q = Qe, Xe = () => {
284
- const [a, e] = j(navigator.onLine);
285
- return R(() => {
286
- const t = () => e(navigator.onLine);
287
- return window.addEventListener("online", t), window.addEventListener("offline", t), () => {
288
- window.removeEventListener("online", t), window.removeEventListener("offline", t);
242
+ const formatNumber = (number) => {
243
+ const parts = number.toString().split(".");
244
+ const integerPart = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, thousandSeparator);
245
+ let decimalPart = "";
246
+ if (decimalLength !== void 0) {
247
+ if (parts.length > 1 && decimalLength > 0) {
248
+ decimalPart = decimalSeparator + parts[1].padEnd(decimalLength, "0").slice(0, decimalLength);
249
+ } else if (decimalLength > 0) {
250
+ decimalPart = decimalSeparator + "0".repeat(decimalLength);
251
+ }
252
+ } else if (parts.length > 1) {
253
+ decimalPart = decimalSeparator + parts[1];
254
+ }
255
+ return integerPart + decimalPart;
256
+ };
257
+ const formattedValue = formatNumber(value);
258
+ if (formattedValue.charAt(0) === `-`) {
259
+ return formattedValue.replace(/^-/g, `-${prefix}`);
260
+ }
261
+ return `${prefix}${formattedValue}`;
262
+ };
263
+ var use_number_formatter_default = useNumberFormatter;
264
+
265
+ // src/hooks/use-online-status/use-online-status.ts
266
+ import { useEffect as useEffect6, useState as useState6 } from "react";
267
+ var useOnlineStatus = () => {
268
+ const [isOnline, setIsOnline] = useState6(navigator.onLine);
269
+ useEffect6(() => {
270
+ const handleEvent = () => setIsOnline(navigator.onLine);
271
+ window.addEventListener("online", handleEvent);
272
+ window.addEventListener("offline", handleEvent);
273
+ return () => {
274
+ window.removeEventListener("online", handleEvent);
275
+ window.removeEventListener("offline", handleEvent);
276
+ };
277
+ }, []);
278
+ return { isOnline, isOffline: !isOnline };
279
+ };
280
+ var use_online_status_default = useOnlineStatus;
281
+
282
+ // src/hooks/use-outside-click/use-outside-click.ts
283
+ import { useEffect as useEffect7, useRef as useRef3 } from "react";
284
+ var useOutsideClick = ({ enabled = true, ref, handler }) => {
285
+ const savedHandler = use_callback_ref_default(handler);
286
+ const stateRef = useRef3({
287
+ isPointerDown: false,
288
+ ignoreEmulatedMouseEvents: false
289
+ });
290
+ const state = stateRef.current;
291
+ useEffect7(() => {
292
+ if (!enabled) return void 0;
293
+ const onPointerDown = (e) => {
294
+ if (isValidEvent(e, ref)) {
295
+ state.isPointerDown = true;
296
+ }
289
297
  };
290
- }, []), { isOnline: a, isOffline: !a };
291
- }, nn = Xe, Ge = ({ enabled: a = !0, ref: e, handler: t }) => {
292
- const n = re(t), i = oe({
293
- isPointerDown: !1,
294
- ignoreEmulatedMouseEvents: !1
295
- }).current;
296
- R(() => {
297
- if (!a)
298
- return;
299
- const o = (c) => {
300
- te(c, e) && (i.isPointerDown = !0);
301
- }, u = (c) => {
302
- if (i.ignoreEmulatedMouseEvents) {
303
- i.ignoreEmulatedMouseEvents = !1;
298
+ const onMouseUp = (event) => {
299
+ if (state.ignoreEmulatedMouseEvents) {
300
+ state.ignoreEmulatedMouseEvents = false;
304
301
  return;
305
302
  }
306
- i.isPointerDown && t && te(c, e) && (i.isPointerDown = !1, n(c));
307
- }, s = (c) => {
308
- i.ignoreEmulatedMouseEvents = !0, t && i.isPointerDown && te(c, e) && (i.isPointerDown = !1, n(c));
309
- }, d = he(e.current);
310
- return d.addEventListener("mousedown", o, !0), d.addEventListener("mouseup", u, !0), d.addEventListener("touchstart", o, !0), d.addEventListener("touchend", s, !0), () => {
311
- d.removeEventListener("mousedown", o, !0), d.removeEventListener("mouseup", u, !0), d.removeEventListener("touchstart", o, !0), d.removeEventListener("touchend", s, !0);
303
+ if (state.isPointerDown && handler && isValidEvent(event, ref)) {
304
+ state.isPointerDown = false;
305
+ savedHandler(event);
306
+ }
307
+ };
308
+ const onTouchEnd = (event) => {
309
+ state.ignoreEmulatedMouseEvents = true;
310
+ if (handler && state.isPointerDown && isValidEvent(event, ref)) {
311
+ state.isPointerDown = false;
312
+ savedHandler(event);
313
+ }
314
+ };
315
+ const doc = getOwnerDocument(ref.current);
316
+ doc.addEventListener("mousedown", onPointerDown, true);
317
+ doc.addEventListener("mouseup", onMouseUp, true);
318
+ doc.addEventListener("touchstart", onPointerDown, true);
319
+ doc.addEventListener("touchend", onTouchEnd, true);
320
+ return () => {
321
+ doc.removeEventListener("mousedown", onPointerDown, true);
322
+ doc.removeEventListener("mouseup", onMouseUp, true);
323
+ doc.removeEventListener("touchstart", onPointerDown, true);
324
+ doc.removeEventListener("touchend", onTouchEnd, true);
312
325
  };
313
- }, [t, e, n, i, a]);
314
- }, rn = Ge;
315
- var y = /* @__PURE__ */ ((a) => (a.product = "Product", a.order = "Order", a.gift = "Gift", a.freeShipping = "Free Shipping", a.freeInsurance = "Free Insurance", a.bundling = "Bundling", a.payment = "Payment", a))(y || {}), ie = /* @__PURE__ */ ((a) => (a.percentage = "percentage", a.amount = "amount", a))(ie || {});
316
- function Ke(a) {
317
- let e = "";
318
- const { type: t, eligibilityType: n, payment: r } = a, i = a.collections ?? [], o = a.brands ?? [];
319
- if (t === y.product)
320
- i.length > 0 ? e = `Voucher hanya berlaku untuk produk tertentu dari collection ${i.map((u) => u.name).join(", ")}.` : o.length > 0 ? e = `Voucher hanya berlaku untuk produk tertentu dari brand ${o.map((u) => u.name).join(", ")}.` : n === "selected_products" && (e = "Hanya berlaku untuk produk tertentu.");
321
- else if (t === y.payment) {
322
- const { bankName: u, paymentMethod: s, creditBinGroup: d, debitBinGroup: c } = r || {}, l = (s || []).some((v) => (v || "").includes("(Full Payment)")), f = (s || []).some((v) => (v || "").includes("(Cicilan 3x)")), m = (s || []).some((v) => (v || "").includes("(Cicilan 6x)")), g = (s || []).some((v) => (v || "").includes("(Cicilan 12x)")), w = (s || []).some((v) => (v || "").includes("(Cicilan 18x)")), b = f || m || g || w, p = l || b, C = [
323
- ...(s || []).some((v) => (v || "").includes("Debit Card")) && (c || []).length > 0 ? ["Kartu Debit"] : [],
324
- ...p && (d || []).length > 0 ? ["Kartu Kredit"] : []
326
+ }, [handler, ref, savedHandler, state, enabled]);
327
+ };
328
+ var use_outside_click_default = useOutsideClick;
329
+
330
+ // src/hooks/use-voucher-tnc/use-voucher-tnc.types.ts
331
+ var VoucherType = /* @__PURE__ */ ((VoucherType2) => {
332
+ VoucherType2["product"] = "Product";
333
+ VoucherType2["order"] = "Order";
334
+ VoucherType2["gift"] = "Gift";
335
+ VoucherType2["freeShipping"] = "Free Shipping";
336
+ VoucherType2["freeInsurance"] = "Free Insurance";
337
+ VoucherType2["bundling"] = "Bundling";
338
+ VoucherType2["payment"] = "Payment";
339
+ return VoucherType2;
340
+ })(VoucherType || {});
341
+ var DiscountType = /* @__PURE__ */ ((DiscountType2) => {
342
+ DiscountType2["percentage"] = "percentage";
343
+ DiscountType2["amount"] = "amount";
344
+ return DiscountType2;
345
+ })(DiscountType || {});
346
+
347
+ // src/hooks/use-voucher-tnc/get-applies-to.ts
348
+ function getAppliesTo(args) {
349
+ var _a, _b;
350
+ let appliesTo = "";
351
+ const { type, eligibilityType, payment } = args;
352
+ const collections = (_a = args.collections) != null ? _a : [];
353
+ const brands = (_b = args.brands) != null ? _b : [];
354
+ if (type === "Product" /* product */) {
355
+ if (collections.length > 0) {
356
+ appliesTo = `Voucher hanya berlaku untuk produk tertentu dari collection ${collections.map((value) => value.name).join(", ")}.`;
357
+ } else if (brands.length > 0) {
358
+ appliesTo = `Voucher hanya berlaku untuk produk tertentu dari brand ${brands.map((value) => value.name).join(", ")}.`;
359
+ } else if (eligibilityType === "selected_products") {
360
+ appliesTo = `Hanya berlaku untuk produk tertentu.`;
361
+ }
362
+ } else if (type === "Payment" /* payment */) {
363
+ const { bankName, paymentMethod, creditBinGroup, debitBinGroup } = payment || {};
364
+ const isFullPayment = (paymentMethod || []).some((pay) => (pay || "").includes("(Full Payment)"));
365
+ const isInstallment3 = (paymentMethod || []).some((pay) => (pay || "").includes("(Cicilan 3x)"));
366
+ const isInstallment6 = (paymentMethod || []).some((pay) => (pay || "").includes("(Cicilan 6x)"));
367
+ const isInstallment12 = (paymentMethod || []).some((pay) => (pay || "").includes("(Cicilan 12x)"));
368
+ const isInstallment18 = (paymentMethod || []).some((pay) => (pay || "").includes("(Cicilan 18x)"));
369
+ const isInstallment = isInstallment3 || isInstallment6 || isInstallment12 || isInstallment18;
370
+ const isCredit = isFullPayment || isInstallment;
371
+ const isDebit = (paymentMethod || []).some((pay) => (pay || "").includes("Debit Card"));
372
+ const debitAndCredit = [
373
+ ...isDebit && (debitBinGroup || []).length > 0 ? ["Kartu Debit"] : [],
374
+ ...isCredit && (creditBinGroup || []).length > 0 ? ["Kartu Kredit"] : []
325
375
  ];
326
- let x = "";
327
- if (p) {
328
- const v = [
329
- ...l ? ["sistem pembayaran penuh"] : [],
330
- ...b ? ["sistem cicilan"] : []
331
- ], P = [
332
- ...f ? ["3"] : [],
333
- ...m ? ["6"] : [],
334
- ...g ? ["12"] : [],
335
- ...w ? ["18"] : []
376
+ let txtCreditSystem = "";
377
+ if (isCredit) {
378
+ const creditSystem = [
379
+ ...isFullPayment ? ["sistem pembayaran penuh"] : [],
380
+ ...isInstallment ? ["sistem cicilan"] : []
381
+ ];
382
+ const installments = [
383
+ ...isInstallment3 ? ["3"] : [],
384
+ ...isInstallment6 ? ["6"] : [],
385
+ ...isInstallment12 ? ["12"] : [],
386
+ ...isInstallment18 ? ["18"] : []
336
387
  ];
337
- let O = P.join(" dan ");
338
- if (P.length > 2) {
339
- const S = P.join(", "), U = S.lastIndexOf(","), Y = S.slice(0, U), I = S.slice(U + 1, S.length);
340
- O = [Y, I].join(", dan");
388
+ let replacedStrInstallment = installments.join(" dan ");
389
+ if (installments.length > 2) {
390
+ const strInstallment = installments.join(", ");
391
+ const lastCharIndex = strInstallment.lastIndexOf(",");
392
+ const left = strInstallment.slice(0, lastCharIndex);
393
+ const right = strInstallment.slice(lastCharIndex + 1, strInstallment.length);
394
+ replacedStrInstallment = [left, right].join(", dan");
341
395
  }
342
- x = [
396
+ txtCreditSystem = [
343
397
  "dengan",
344
- v.join(" dan "),
345
- ...b ? [`(${O} bulan)`] : []
398
+ creditSystem.join(" dan "),
399
+ ...isInstallment ? [`(${replacedStrInstallment} bulan)`] : []
346
400
  ].join(" ");
347
401
  }
348
- C.length > 0 && (e = `${[
349
- "Voucher berlaku untuk pembayaran menggunakan",
350
- C.join(" dan "),
351
- u,
352
- x
353
- ].filter((v) => (v || "").length > 0).join(" ")}.`);
402
+ if (debitAndCredit.length > 0) {
403
+ appliesTo = `${[
404
+ "Voucher berlaku untuk pembayaran menggunakan",
405
+ debitAndCredit.join(" dan "),
406
+ bankName,
407
+ txtCreditSystem
408
+ ].filter((txt) => (txt || "").length > 0).join(" ")}.`;
409
+ }
354
410
  }
355
- return e;
356
- }
357
- function Je(a) {
358
- const { bankName: e, creditBinGroup: t, debitBinGroup: n } = a, r = (t || []).join(", "), i = (n || []).join(", ");
411
+ return appliesTo;
412
+ }
413
+
414
+ // src/hooks/use-voucher-tnc/get-bank-bin.ts
415
+ function getBankBin(args) {
416
+ const { bankName, creditBinGroup, debitBinGroup } = args;
417
+ const txtCreditBin = (creditBinGroup || []).join(", ");
418
+ const txtDebitBin = (debitBinGroup || []).join(", ");
359
419
  return [
360
- ...e && r ? [
361
- `Voucher berlaku untuk Kartu Kredit ${e} dengan 6-digit Bank Identification Number (BIN): ${r}.`
362
- ] : [],
363
- ...e && i ? [
364
- `Voucher berlaku untuk Kartu Debit ${e} dengan 6-digit Bank Identification Number (BIN): ${i}.`
365
- ] : []
420
+ ...bankName && txtCreditBin ? [`Voucher berlaku untuk Kartu Kredit ${bankName} dengan Bank Identification Number (BIN): ${txtCreditBin}.`] : [],
421
+ ...bankName && txtDebitBin ? [`Voucher berlaku untuk Kartu Debit ${bankName} dengan Bank Identification Number (BIN): ${txtDebitBin}.`] : []
366
422
  ];
367
423
  }
368
- function J(a) {
369
- "@babel/helpers - typeof";
370
- return J = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
371
- return typeof e;
372
- } : function(e) {
373
- return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
374
- }, J(a);
375
- }
376
- function A(a) {
377
- if (a === null || a === !0 || a === !1)
378
- return NaN;
379
- var e = Number(a);
380
- return isNaN(e) ? e : e < 0 ? Math.ceil(e) : Math.floor(e);
381
- }
382
- function M(a, e) {
383
- if (e.length < a)
384
- throw new TypeError(a + " argument" + (a > 1 ? "s" : "") + " required, but only " + e.length + " present");
385
- }
386
- function N(a) {
387
- M(1, arguments);
388
- var e = Object.prototype.toString.call(a);
389
- return a instanceof Date || J(a) === "object" && e === "[object Date]" ? new Date(a.getTime()) : typeof a == "number" || e === "[object Number]" ? new Date(a) : ((typeof a == "string" || e === "[object String]") && typeof console < "u" && (console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"), console.warn(new Error().stack)), /* @__PURE__ */ new Date(NaN));
390
- }
391
- function ze(a, e) {
392
- M(2, arguments);
393
- var t = N(a).getTime(), n = A(e);
394
- return new Date(t + n);
395
- }
396
- var Ze = {};
397
- function ee() {
398
- return Ze;
399
- }
400
- function et(a) {
401
- var e = new Date(Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds(), a.getMilliseconds()));
402
- return e.setUTCFullYear(a.getFullYear()), a.getTime() - e.getTime();
403
- }
404
- function tt(a) {
405
- return M(1, arguments), a instanceof Date || J(a) === "object" && Object.prototype.toString.call(a) === "[object Date]";
406
- }
407
- function at(a) {
408
- if (M(1, arguments), !tt(a) && typeof a != "number")
409
- return !1;
410
- var e = N(a);
411
- return !isNaN(Number(e));
412
- }
413
- function nt(a, e) {
414
- M(2, arguments);
415
- var t = A(e);
416
- return ze(a, -t);
417
- }
418
- var rt = 864e5;
419
- function it(a) {
420
- M(1, arguments);
421
- var e = N(a), t = e.getTime();
422
- e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0);
423
- var n = e.getTime(), r = t - n;
424
- return Math.floor(r / rt) + 1;
425
- }
426
- function z(a) {
427
- M(1, arguments);
428
- var e = 1, t = N(a), n = t.getUTCDay(), r = (n < e ? 7 : 0) + n - e;
429
- return t.setUTCDate(t.getUTCDate() - r), t.setUTCHours(0, 0, 0, 0), t;
430
- }
431
- function ge(a) {
432
- M(1, arguments);
433
- var e = N(a), t = e.getUTCFullYear(), n = /* @__PURE__ */ new Date(0);
434
- n.setUTCFullYear(t + 1, 0, 4), n.setUTCHours(0, 0, 0, 0);
435
- var r = z(n), i = /* @__PURE__ */ new Date(0);
436
- i.setUTCFullYear(t, 0, 4), i.setUTCHours(0, 0, 0, 0);
437
- var o = z(i);
438
- return e.getTime() >= r.getTime() ? t + 1 : e.getTime() >= o.getTime() ? t : t - 1;
439
- }
440
- function ot(a) {
441
- M(1, arguments);
442
- var e = ge(a), t = /* @__PURE__ */ new Date(0);
443
- t.setUTCFullYear(e, 0, 4), t.setUTCHours(0, 0, 0, 0);
444
- var n = z(t);
445
- return n;
446
- }
447
- var ut = 6048e5;
448
- function st(a) {
449
- M(1, arguments);
450
- var e = N(a), t = z(e).getTime() - ot(e).getTime();
451
- return Math.round(t / ut) + 1;
452
- }
453
- function Z(a, e) {
454
- var t, n, r, i, o, u, s, d;
455
- M(1, arguments);
456
- var c = ee(), l = A((t = (n = (r = (i = e == null ? void 0 : e.weekStartsOn) !== null && i !== void 0 ? i : e == null || (o = e.locale) === null || o === void 0 || (u = o.options) === null || u === void 0 ? void 0 : u.weekStartsOn) !== null && r !== void 0 ? r : c.weekStartsOn) !== null && n !== void 0 ? n : (s = c.locale) === null || s === void 0 || (d = s.options) === null || d === void 0 ? void 0 : d.weekStartsOn) !== null && t !== void 0 ? t : 0);
457
- if (!(l >= 0 && l <= 6))
458
- throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");
459
- var f = N(a), m = f.getUTCDay(), g = (m < l ? 7 : 0) + m - l;
460
- return f.setUTCDate(f.getUTCDate() - g), f.setUTCHours(0, 0, 0, 0), f;
461
- }
462
- function ve(a, e) {
463
- var t, n, r, i, o, u, s, d;
464
- M(1, arguments);
465
- var c = N(a), l = c.getUTCFullYear(), f = ee(), m = A((t = (n = (r = (i = e == null ? void 0 : e.firstWeekContainsDate) !== null && i !== void 0 ? i : e == null || (o = e.locale) === null || o === void 0 || (u = o.options) === null || u === void 0 ? void 0 : u.firstWeekContainsDate) !== null && r !== void 0 ? r : f.firstWeekContainsDate) !== null && n !== void 0 ? n : (s = f.locale) === null || s === void 0 || (d = s.options) === null || d === void 0 ? void 0 : d.firstWeekContainsDate) !== null && t !== void 0 ? t : 1);
466
- if (!(m >= 1 && m <= 7))
467
- throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");
468
- var g = /* @__PURE__ */ new Date(0);
469
- g.setUTCFullYear(l + 1, 0, m), g.setUTCHours(0, 0, 0, 0);
470
- var w = Z(g, e), b = /* @__PURE__ */ new Date(0);
471
- b.setUTCFullYear(l, 0, m), b.setUTCHours(0, 0, 0, 0);
472
- var p = Z(b, e);
473
- return c.getTime() >= w.getTime() ? l + 1 : c.getTime() >= p.getTime() ? l : l - 1;
474
- }
475
- function dt(a, e) {
476
- var t, n, r, i, o, u, s, d;
477
- M(1, arguments);
478
- var c = ee(), l = A((t = (n = (r = (i = e == null ? void 0 : e.firstWeekContainsDate) !== null && i !== void 0 ? i : e == null || (o = e.locale) === null || o === void 0 || (u = o.options) === null || u === void 0 ? void 0 : u.firstWeekContainsDate) !== null && r !== void 0 ? r : c.firstWeekContainsDate) !== null && n !== void 0 ? n : (s = c.locale) === null || s === void 0 || (d = s.options) === null || d === void 0 ? void 0 : d.firstWeekContainsDate) !== null && t !== void 0 ? t : 1), f = ve(a, e), m = /* @__PURE__ */ new Date(0);
479
- m.setUTCFullYear(f, 0, l), m.setUTCHours(0, 0, 0, 0);
480
- var g = Z(m, e);
481
- return g;
482
- }
483
- var lt = 6048e5;
484
- function ct(a, e) {
485
- M(1, arguments);
486
- var t = N(a), n = Z(t, e).getTime() - dt(t, e).getTime();
487
- return Math.round(n / lt) + 1;
488
- }
489
- function h(a, e) {
490
- for (var t = a < 0 ? "-" : "", n = Math.abs(a).toString(); n.length < e; )
491
- n = "0" + n;
492
- return t + n;
493
- }
494
- var mt = {
495
- // Year
496
- y: function(e, t) {
497
- var n = e.getUTCFullYear(), r = n > 0 ? n : 1 - n;
498
- return h(t === "yy" ? r % 100 : r, t.length);
499
- },
500
- // Month
501
- M: function(e, t) {
502
- var n = e.getUTCMonth();
503
- return t === "M" ? String(n + 1) : h(n + 1, 2);
504
- },
505
- // Day of the month
506
- d: function(e, t) {
507
- return h(e.getUTCDate(), t.length);
508
- },
509
- // AM or PM
510
- a: function(e, t) {
511
- var n = e.getUTCHours() / 12 >= 1 ? "pm" : "am";
512
- switch (t) {
513
- case "a":
514
- case "aa":
515
- return n.toUpperCase();
516
- case "aaa":
517
- return n;
518
- case "aaaaa":
519
- return n[0];
520
- case "aaaa":
521
- default:
522
- return n === "am" ? "a.m." : "p.m.";
523
- }
524
- },
525
- // Hour [1-12]
526
- h: function(e, t) {
527
- return h(e.getUTCHours() % 12 || 12, t.length);
528
- },
529
- // Hour [0-23]
530
- H: function(e, t) {
531
- return h(e.getUTCHours(), t.length);
532
- },
533
- // Minute
534
- m: function(e, t) {
535
- return h(e.getUTCMinutes(), t.length);
536
- },
537
- // Second
538
- s: function(e, t) {
539
- return h(e.getUTCSeconds(), t.length);
540
- },
541
- // Fraction of second
542
- S: function(e, t) {
543
- var n = t.length, r = e.getUTCMilliseconds(), i = Math.floor(r * Math.pow(10, n - 3));
544
- return h(i, t.length);
545
- }
546
- };
547
- const L = mt;
548
- var H = {
549
- am: "am",
550
- pm: "pm",
551
- midnight: "midnight",
552
- noon: "noon",
553
- morning: "morning",
554
- afternoon: "afternoon",
555
- evening: "evening",
556
- night: "night"
557
- }, ft = {
558
- // Era
559
- G: function(e, t, n) {
560
- var r = e.getUTCFullYear() > 0 ? 1 : 0;
561
- switch (t) {
562
- case "G":
563
- case "GG":
564
- case "GGG":
565
- return n.era(r, {
566
- width: "abbreviated"
567
- });
568
- case "GGGGG":
569
- return n.era(r, {
570
- width: "narrow"
571
- });
572
- case "GGGG":
573
- default:
574
- return n.era(r, {
575
- width: "wide"
576
- });
577
- }
578
- },
579
- // Year
580
- y: function(e, t, n) {
581
- if (t === "yo") {
582
- var r = e.getUTCFullYear(), i = r > 0 ? r : 1 - r;
583
- return n.ordinalNumber(i, {
584
- unit: "year"
585
- });
586
- }
587
- return L.y(e, t);
588
- },
589
- // Local week-numbering year
590
- Y: function(e, t, n, r) {
591
- var i = ve(e, r), o = i > 0 ? i : 1 - i;
592
- if (t === "YY") {
593
- var u = o % 100;
594
- return h(u, 2);
595
- }
596
- return t === "Yo" ? n.ordinalNumber(o, {
597
- unit: "year"
598
- }) : h(o, t.length);
599
- },
600
- // ISO week-numbering year
601
- R: function(e, t) {
602
- var n = ge(e);
603
- return h(n, t.length);
604
- },
605
- // Extended year. This is a single number designating the year of this calendar system.
606
- // The main difference between `y` and `u` localizers are B.C. years:
607
- // | Year | `y` | `u` |
608
- // |------|-----|-----|
609
- // | AC 1 | 1 | 1 |
610
- // | BC 1 | 1 | 0 |
611
- // | BC 2 | 2 | -1 |
612
- // Also `yy` always returns the last two digits of a year,
613
- // while `uu` pads single digit years to 2 characters and returns other years unchanged.
614
- u: function(e, t) {
615
- var n = e.getUTCFullYear();
616
- return h(n, t.length);
617
- },
618
- // Quarter
619
- Q: function(e, t, n) {
620
- var r = Math.ceil((e.getUTCMonth() + 1) / 3);
621
- switch (t) {
622
- case "Q":
623
- return String(r);
624
- case "QQ":
625
- return h(r, 2);
626
- case "Qo":
627
- return n.ordinalNumber(r, {
628
- unit: "quarter"
629
- });
630
- case "QQQ":
631
- return n.quarter(r, {
632
- width: "abbreviated",
633
- context: "formatting"
634
- });
635
- case "QQQQQ":
636
- return n.quarter(r, {
637
- width: "narrow",
638
- context: "formatting"
639
- });
640
- case "QQQQ":
641
- default:
642
- return n.quarter(r, {
643
- width: "wide",
644
- context: "formatting"
645
- });
646
- }
647
- },
648
- // Stand-alone quarter
649
- q: function(e, t, n) {
650
- var r = Math.ceil((e.getUTCMonth() + 1) / 3);
651
- switch (t) {
652
- case "q":
653
- return String(r);
654
- case "qq":
655
- return h(r, 2);
656
- case "qo":
657
- return n.ordinalNumber(r, {
658
- unit: "quarter"
659
- });
660
- case "qqq":
661
- return n.quarter(r, {
662
- width: "abbreviated",
663
- context: "standalone"
664
- });
665
- case "qqqqq":
666
- return n.quarter(r, {
667
- width: "narrow",
668
- context: "standalone"
669
- });
670
- case "qqqq":
671
- default:
672
- return n.quarter(r, {
673
- width: "wide",
674
- context: "standalone"
675
- });
676
- }
677
- },
678
- // Month
679
- M: function(e, t, n) {
680
- var r = e.getUTCMonth();
681
- switch (t) {
682
- case "M":
683
- case "MM":
684
- return L.M(e, t);
685
- case "Mo":
686
- return n.ordinalNumber(r + 1, {
687
- unit: "month"
688
- });
689
- case "MMM":
690
- return n.month(r, {
691
- width: "abbreviated",
692
- context: "formatting"
693
- });
694
- case "MMMMM":
695
- return n.month(r, {
696
- width: "narrow",
697
- context: "formatting"
698
- });
699
- case "MMMM":
700
- default:
701
- return n.month(r, {
702
- width: "wide",
703
- context: "formatting"
704
- });
705
- }
706
- },
707
- // Stand-alone month
708
- L: function(e, t, n) {
709
- var r = e.getUTCMonth();
710
- switch (t) {
711
- case "L":
712
- return String(r + 1);
713
- case "LL":
714
- return h(r + 1, 2);
715
- case "Lo":
716
- return n.ordinalNumber(r + 1, {
717
- unit: "month"
718
- });
719
- case "LLL":
720
- return n.month(r, {
721
- width: "abbreviated",
722
- context: "standalone"
723
- });
724
- case "LLLLL":
725
- return n.month(r, {
726
- width: "narrow",
727
- context: "standalone"
728
- });
729
- case "LLLL":
730
- default:
731
- return n.month(r, {
732
- width: "wide",
733
- context: "standalone"
734
- });
735
- }
736
- },
737
- // Local week of year
738
- w: function(e, t, n, r) {
739
- var i = ct(e, r);
740
- return t === "wo" ? n.ordinalNumber(i, {
741
- unit: "week"
742
- }) : h(i, t.length);
743
- },
744
- // ISO week of year
745
- I: function(e, t, n) {
746
- var r = st(e);
747
- return t === "Io" ? n.ordinalNumber(r, {
748
- unit: "week"
749
- }) : h(r, t.length);
750
- },
751
- // Day of the month
752
- d: function(e, t, n) {
753
- return t === "do" ? n.ordinalNumber(e.getUTCDate(), {
754
- unit: "date"
755
- }) : L.d(e, t);
756
- },
757
- // Day of year
758
- D: function(e, t, n) {
759
- var r = it(e);
760
- return t === "Do" ? n.ordinalNumber(r, {
761
- unit: "dayOfYear"
762
- }) : h(r, t.length);
763
- },
764
- // Day of week
765
- E: function(e, t, n) {
766
- var r = e.getUTCDay();
767
- switch (t) {
768
- case "E":
769
- case "EE":
770
- case "EEE":
771
- return n.day(r, {
772
- width: "abbreviated",
773
- context: "formatting"
774
- });
775
- case "EEEEE":
776
- return n.day(r, {
777
- width: "narrow",
778
- context: "formatting"
779
- });
780
- case "EEEEEE":
781
- return n.day(r, {
782
- width: "short",
783
- context: "formatting"
784
- });
785
- case "EEEE":
786
- default:
787
- return n.day(r, {
788
- width: "wide",
789
- context: "formatting"
790
- });
791
- }
792
- },
793
- // Local day of week
794
- e: function(e, t, n, r) {
795
- var i = e.getUTCDay(), o = (i - r.weekStartsOn + 8) % 7 || 7;
796
- switch (t) {
797
- case "e":
798
- return String(o);
799
- case "ee":
800
- return h(o, 2);
801
- case "eo":
802
- return n.ordinalNumber(o, {
803
- unit: "day"
804
- });
805
- case "eee":
806
- return n.day(i, {
807
- width: "abbreviated",
808
- context: "formatting"
809
- });
810
- case "eeeee":
811
- return n.day(i, {
812
- width: "narrow",
813
- context: "formatting"
814
- });
815
- case "eeeeee":
816
- return n.day(i, {
817
- width: "short",
818
- context: "formatting"
819
- });
820
- case "eeee":
821
- default:
822
- return n.day(i, {
823
- width: "wide",
824
- context: "formatting"
825
- });
826
- }
827
- },
828
- // Stand-alone local day of week
829
- c: function(e, t, n, r) {
830
- var i = e.getUTCDay(), o = (i - r.weekStartsOn + 8) % 7 || 7;
831
- switch (t) {
832
- case "c":
833
- return String(o);
834
- case "cc":
835
- return h(o, t.length);
836
- case "co":
837
- return n.ordinalNumber(o, {
838
- unit: "day"
839
- });
840
- case "ccc":
841
- return n.day(i, {
842
- width: "abbreviated",
843
- context: "standalone"
844
- });
845
- case "ccccc":
846
- return n.day(i, {
847
- width: "narrow",
848
- context: "standalone"
849
- });
850
- case "cccccc":
851
- return n.day(i, {
852
- width: "short",
853
- context: "standalone"
854
- });
855
- case "cccc":
856
- default:
857
- return n.day(i, {
858
- width: "wide",
859
- context: "standalone"
860
- });
861
- }
862
- },
863
- // ISO day of week
864
- i: function(e, t, n) {
865
- var r = e.getUTCDay(), i = r === 0 ? 7 : r;
866
- switch (t) {
867
- case "i":
868
- return String(i);
869
- case "ii":
870
- return h(i, t.length);
871
- case "io":
872
- return n.ordinalNumber(i, {
873
- unit: "day"
874
- });
875
- case "iii":
876
- return n.day(r, {
877
- width: "abbreviated",
878
- context: "formatting"
879
- });
880
- case "iiiii":
881
- return n.day(r, {
882
- width: "narrow",
883
- context: "formatting"
884
- });
885
- case "iiiiii":
886
- return n.day(r, {
887
- width: "short",
888
- context: "formatting"
889
- });
890
- case "iiii":
891
- default:
892
- return n.day(r, {
893
- width: "wide",
894
- context: "formatting"
895
- });
896
- }
897
- },
898
- // AM or PM
899
- a: function(e, t, n) {
900
- var r = e.getUTCHours(), i = r / 12 >= 1 ? "pm" : "am";
901
- switch (t) {
902
- case "a":
903
- case "aa":
904
- return n.dayPeriod(i, {
905
- width: "abbreviated",
906
- context: "formatting"
907
- });
908
- case "aaa":
909
- return n.dayPeriod(i, {
910
- width: "abbreviated",
911
- context: "formatting"
912
- }).toLowerCase();
913
- case "aaaaa":
914
- return n.dayPeriod(i, {
915
- width: "narrow",
916
- context: "formatting"
917
- });
918
- case "aaaa":
919
- default:
920
- return n.dayPeriod(i, {
921
- width: "wide",
922
- context: "formatting"
923
- });
924
- }
925
- },
926
- // AM, PM, midnight, noon
927
- b: function(e, t, n) {
928
- var r = e.getUTCHours(), i;
929
- switch (r === 12 ? i = H.noon : r === 0 ? i = H.midnight : i = r / 12 >= 1 ? "pm" : "am", t) {
930
- case "b":
931
- case "bb":
932
- return n.dayPeriod(i, {
933
- width: "abbreviated",
934
- context: "formatting"
935
- });
936
- case "bbb":
937
- return n.dayPeriod(i, {
938
- width: "abbreviated",
939
- context: "formatting"
940
- }).toLowerCase();
941
- case "bbbbb":
942
- return n.dayPeriod(i, {
943
- width: "narrow",
944
- context: "formatting"
945
- });
946
- case "bbbb":
947
- default:
948
- return n.dayPeriod(i, {
949
- width: "wide",
950
- context: "formatting"
951
- });
952
- }
953
- },
954
- // in the morning, in the afternoon, in the evening, at night
955
- B: function(e, t, n) {
956
- var r = e.getUTCHours(), i;
957
- switch (r >= 17 ? i = H.evening : r >= 12 ? i = H.afternoon : r >= 4 ? i = H.morning : i = H.night, t) {
958
- case "B":
959
- case "BB":
960
- case "BBB":
961
- return n.dayPeriod(i, {
962
- width: "abbreviated",
963
- context: "formatting"
964
- });
965
- case "BBBBB":
966
- return n.dayPeriod(i, {
967
- width: "narrow",
968
- context: "formatting"
969
- });
970
- case "BBBB":
971
- default:
972
- return n.dayPeriod(i, {
973
- width: "wide",
974
- context: "formatting"
975
- });
976
- }
977
- },
978
- // Hour [1-12]
979
- h: function(e, t, n) {
980
- if (t === "ho") {
981
- var r = e.getUTCHours() % 12;
982
- return r === 0 && (r = 12), n.ordinalNumber(r, {
983
- unit: "hour"
984
- });
985
- }
986
- return L.h(e, t);
987
- },
988
- // Hour [0-23]
989
- H: function(e, t, n) {
990
- return t === "Ho" ? n.ordinalNumber(e.getUTCHours(), {
991
- unit: "hour"
992
- }) : L.H(e, t);
993
- },
994
- // Hour [0-11]
995
- K: function(e, t, n) {
996
- var r = e.getUTCHours() % 12;
997
- return t === "Ko" ? n.ordinalNumber(r, {
998
- unit: "hour"
999
- }) : h(r, t.length);
1000
- },
1001
- // Hour [1-24]
1002
- k: function(e, t, n) {
1003
- var r = e.getUTCHours();
1004
- return r === 0 && (r = 24), t === "ko" ? n.ordinalNumber(r, {
1005
- unit: "hour"
1006
- }) : h(r, t.length);
1007
- },
1008
- // Minute
1009
- m: function(e, t, n) {
1010
- return t === "mo" ? n.ordinalNumber(e.getUTCMinutes(), {
1011
- unit: "minute"
1012
- }) : L.m(e, t);
1013
- },
1014
- // Second
1015
- s: function(e, t, n) {
1016
- return t === "so" ? n.ordinalNumber(e.getUTCSeconds(), {
1017
- unit: "second"
1018
- }) : L.s(e, t);
1019
- },
1020
- // Fraction of second
1021
- S: function(e, t) {
1022
- return L.S(e, t);
1023
- },
1024
- // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
1025
- X: function(e, t, n, r) {
1026
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1027
- if (o === 0)
1028
- return "Z";
1029
- switch (t) {
1030
- case "X":
1031
- return ce(o);
1032
- case "XXXX":
1033
- case "XX":
1034
- return B(o);
1035
- case "XXXXX":
1036
- case "XXX":
1037
- default:
1038
- return B(o, ":");
1039
- }
1040
- },
1041
- // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
1042
- x: function(e, t, n, r) {
1043
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1044
- switch (t) {
1045
- case "x":
1046
- return ce(o);
1047
- case "xxxx":
1048
- case "xx":
1049
- return B(o);
1050
- case "xxxxx":
1051
- case "xxx":
1052
- default:
1053
- return B(o, ":");
1054
- }
1055
- },
1056
- // Timezone (GMT)
1057
- O: function(e, t, n, r) {
1058
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1059
- switch (t) {
1060
- case "O":
1061
- case "OO":
1062
- case "OOO":
1063
- return "GMT" + le(o, ":");
1064
- case "OOOO":
1065
- default:
1066
- return "GMT" + B(o, ":");
1067
- }
1068
- },
1069
- // Timezone (specific non-location)
1070
- z: function(e, t, n, r) {
1071
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1072
- switch (t) {
1073
- case "z":
1074
- case "zz":
1075
- case "zzz":
1076
- return "GMT" + le(o, ":");
1077
- case "zzzz":
1078
- default:
1079
- return "GMT" + B(o, ":");
424
+
425
+ // src/hooks/use-voucher-tnc/get-period.ts
426
+ import { format } from "date-fns";
427
+ import { id } from "date-fns/locale";
428
+ function getPeriodText(args) {
429
+ let period = "";
430
+ const { dateStart, dateEnd } = args;
431
+ if (dateStart && dateEnd) {
432
+ const dateStartFormatter = format(new Date(dateStart), "yyyy-MM-dd HH:mm");
433
+ const dateEndFormatter = format(new Date(dateEnd), "yyyy-MM-dd HH:mm");
434
+ const dateStartSplitTime = dateStartFormatter.split(" ");
435
+ const dateStartSplit = dateStartSplitTime[0].split("-");
436
+ const dateStartYear = dateStartSplit[0];
437
+ const dateStartMonth = dateStartSplit[1];
438
+ const dateEndSplitTime = dateEndFormatter.split(" ");
439
+ const dateEndSplit = dateEndSplitTime[0].split("-");
440
+ const dateEndYear = dateEndSplit[0];
441
+ const dateEndMonth = dateEndSplit[1];
442
+ if (dateStartSplitTime[0] === dateEndSplitTime[0]) {
443
+ period = `Voucher hanya berlaku di tanggal ${format(new Date(dateStart), "d MMM yyyy", { locale: id })}.`;
444
+ } else if (dateStartYear !== dateEndYear) {
445
+ period = `Voucher berlaku dari ${format(new Date(dateStart), "d MMM yyyy", { locale: id })} - ${format(
446
+ new Date(dateEnd),
447
+ "d MMM yyyy",
448
+ { locale: id }
449
+ )}.`;
450
+ } else if (dateStartYear === dateEndYear) {
451
+ if (dateStartMonth === dateEndMonth) {
452
+ period = `Voucher berlaku dari ${format(new Date(dateStart), "d", { locale: id })} - ${format(
453
+ new Date(dateEnd),
454
+ "d MMM yyyy",
455
+ {
456
+ locale: id
457
+ }
458
+ )}.`;
459
+ } else {
460
+ period = `Voucher berlaku dari ${format(new Date(dateStart), "d MMM", { locale: id })} - ${format(
461
+ new Date(dateEnd),
462
+ "d MMM yyyy",
463
+ { locale: id }
464
+ )}.`;
465
+ }
1080
466
  }
1081
- },
1082
- // Seconds timestamp
1083
- t: function(e, t, n, r) {
1084
- var i = r._originalDate || e, o = Math.floor(i.getTime() / 1e3);
1085
- return h(o, t.length);
1086
- },
1087
- // Milliseconds timestamp
1088
- T: function(e, t, n, r) {
1089
- var i = r._originalDate || e, o = i.getTime();
1090
- return h(o, t.length);
467
+ } else if (dateStart) {
468
+ period = `Voucher berlaku dari ${format(new Date(dateStart), "d MMM yyyy", { locale: id })}.`;
1091
469
  }
1092
- };
1093
- function le(a, e) {
1094
- var t = a > 0 ? "-" : "+", n = Math.abs(a), r = Math.floor(n / 60), i = n % 60;
1095
- if (i === 0)
1096
- return t + String(r);
1097
- var o = e || "";
1098
- return t + String(r) + o + h(i, 2);
470
+ return period;
1099
471
  }
1100
- function ce(a, e) {
1101
- if (a % 60 === 0) {
1102
- var t = a > 0 ? "-" : "+";
1103
- return t + h(Math.abs(a) / 60, 2);
472
+
473
+ // src/hooks/use-voucher-tnc/get-usage-limit.ts
474
+ function getVoucherUsageLimit(args) {
475
+ const { isOneTimeUsage, isOneTimeUsagePerCard } = args;
476
+ if (!isOneTimeUsage && !isOneTimeUsagePerCard) {
477
+ return "";
1104
478
  }
1105
- return B(a, e);
1106
- }
1107
- function B(a, e) {
1108
- var t = e || "", n = a > 0 ? "-" : "+", r = Math.abs(a), i = h(Math.floor(r / 60), 2), o = h(r % 60, 2);
1109
- return n + i + t + o;
1110
- }
1111
- const ht = ft;
1112
- var me = function(e, t) {
1113
- switch (e) {
1114
- case "P":
1115
- return t.date({
1116
- width: "short"
1117
- });
1118
- case "PP":
1119
- return t.date({
1120
- width: "medium"
1121
- });
1122
- case "PPP":
1123
- return t.date({
1124
- width: "long"
1125
- });
1126
- case "PPPP":
1127
- default:
1128
- return t.date({
1129
- width: "full"
1130
- });
479
+ let usageLimit = "";
480
+ if (isOneTimeUsage) {
481
+ usageLimit = "Voucher hanya dapat digunakan 1x per member selama masa berlaku.";
1131
482
  }
1132
- }, be = function(e, t) {
1133
- switch (e) {
1134
- case "p":
1135
- return t.time({
1136
- width: "short"
1137
- });
1138
- case "pp":
1139
- return t.time({
1140
- width: "medium"
1141
- });
1142
- case "ppp":
1143
- return t.time({
1144
- width: "long"
1145
- });
1146
- case "pppp":
1147
- default:
1148
- return t.time({
1149
- width: "full"
1150
- });
483
+ if (isOneTimeUsagePerCard) {
484
+ usageLimit = "Voucher hanya dapat digunakan 1x per kartu selama masa berlaku.";
1151
485
  }
1152
- }, gt = function(e, t) {
1153
- var n = e.match(/(P+)(p+)?/) || [], r = n[1], i = n[2];
1154
- if (!i)
1155
- return me(e, t);
1156
- var o;
1157
- switch (r) {
1158
- case "P":
1159
- o = t.dateTime({
1160
- width: "short"
1161
- });
1162
- break;
1163
- case "PP":
1164
- o = t.dateTime({
1165
- width: "medium"
1166
- });
1167
- break;
1168
- case "PPP":
1169
- o = t.dateTime({
1170
- width: "long"
1171
- });
1172
- break;
1173
- case "PPPP":
1174
- default:
1175
- o = t.dateTime({
1176
- width: "full"
1177
- });
1178
- break;
486
+ if (isOneTimeUsage && isOneTimeUsagePerCard) {
487
+ usageLimit = "Voucher hanya dapat digunakan 1x transaksi untuk 1 kartu dan 1 member selama masa berlaku.";
1179
488
  }
1180
- return o.replace("{{date}}", me(r, t)).replace("{{time}}", be(i, t));
1181
- }, vt = {
1182
- p: be,
1183
- P: gt
1184
- };
1185
- const bt = vt;
1186
- var pt = ["D", "DD"], wt = ["YY", "YYYY"];
1187
- function yt(a) {
1188
- return pt.indexOf(a) !== -1;
1189
- }
1190
- function Mt(a) {
1191
- return wt.indexOf(a) !== -1;
489
+ return usageLimit;
1192
490
  }
1193
- function fe(a, e, t) {
1194
- if (a === "YYYY")
1195
- throw new RangeError("Use `yyyy` instead of `YYYY` (in `".concat(e, "`) for formatting years to the input `").concat(t, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
1196
- if (a === "YY")
1197
- throw new RangeError("Use `yy` instead of `YY` (in `".concat(e, "`) for formatting years to the input `").concat(t, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
1198
- if (a === "D")
1199
- throw new RangeError("Use `d` instead of `D` (in `".concat(e, "`) for formatting days of the month to the input `").concat(t, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
1200
- if (a === "DD")
1201
- throw new RangeError("Use `dd` instead of `DD` (in `".concat(e, "`) for formatting days of the month to the input `").concat(t, "`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md"));
1202
- }
1203
- var kt = {
1204
- lessThanXSeconds: {
1205
- one: "less than a second",
1206
- other: "less than {{count}} seconds"
1207
- },
1208
- xSeconds: {
1209
- one: "1 second",
1210
- other: "{{count}} seconds"
1211
- },
1212
- halfAMinute: "half a minute",
1213
- lessThanXMinutes: {
1214
- one: "less than a minute",
1215
- other: "less than {{count}} minutes"
1216
- },
1217
- xMinutes: {
1218
- one: "1 minute",
1219
- other: "{{count}} minutes"
1220
- },
1221
- aboutXHours: {
1222
- one: "about 1 hour",
1223
- other: "about {{count}} hours"
1224
- },
1225
- xHours: {
1226
- one: "1 hour",
1227
- other: "{{count}} hours"
1228
- },
1229
- xDays: {
1230
- one: "1 day",
1231
- other: "{{count}} days"
1232
- },
1233
- aboutXWeeks: {
1234
- one: "about 1 week",
1235
- other: "about {{count}} weeks"
1236
- },
1237
- xWeeks: {
1238
- one: "1 week",
1239
- other: "{{count}} weeks"
1240
- },
1241
- aboutXMonths: {
1242
- one: "about 1 month",
1243
- other: "about {{count}} months"
1244
- },
1245
- xMonths: {
1246
- one: "1 month",
1247
- other: "{{count}} months"
1248
- },
1249
- aboutXYears: {
1250
- one: "about 1 year",
1251
- other: "about {{count}} years"
1252
- },
1253
- xYears: {
1254
- one: "1 year",
1255
- other: "{{count}} years"
1256
- },
1257
- overXYears: {
1258
- one: "over 1 year",
1259
- other: "over {{count}} years"
1260
- },
1261
- almostXYears: {
1262
- one: "almost 1 year",
1263
- other: "almost {{count}} years"
1264
- }
1265
- }, Dt = function(e, t, n) {
1266
- var r, i = kt[e];
1267
- return typeof i == "string" ? r = i : t === 1 ? r = i.one : r = i.other.replace("{{count}}", t.toString()), n != null && n.addSuffix ? n.comparison && n.comparison > 0 ? "in " + r : r + " ago" : r;
1268
- };
1269
- const Tt = Dt;
1270
- function V(a) {
1271
- return function() {
1272
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, t = e.width ? String(e.width) : a.defaultWidth, n = a.formats[t] || a.formats[a.defaultWidth];
1273
- return n;
491
+
492
+ // src/hooks/use-voucher-tnc/use-voucher-method-terms.ts
493
+ function useVoucherMethodTerms(args) {
494
+ let methodTerm = "";
495
+ const {
496
+ type,
497
+ discountType,
498
+ discountValue,
499
+ isCheckedMaxFee,
500
+ maxDiscountAmount,
501
+ transactionTerms,
502
+ termsMinTotalAmount,
503
+ termsMinQty,
504
+ limitFee
505
+ } = args;
506
+ const safeNumber = (val) => {
507
+ if (typeof val === "number") return val;
508
+ return !Number.isNaN(Number(val)) ? Number(val) : 0;
1274
509
  };
1275
- }
1276
- var Ct = {
1277
- full: "EEEE, MMMM do, y",
1278
- long: "MMMM do, y",
1279
- medium: "MMM d, y",
1280
- short: "MM/dd/yyyy"
1281
- }, Pt = {
1282
- full: "h:mm:ss a zzzz",
1283
- long: "h:mm:ss a z",
1284
- medium: "h:mm:ss a",
1285
- short: "h:mm a"
1286
- }, St = {
1287
- full: "{{date}} 'at' {{time}}",
1288
- long: "{{date}} 'at' {{time}}",
1289
- medium: "{{date}}, {{time}}",
1290
- short: "{{date}}, {{time}}"
1291
- }, xt = {
1292
- date: V({
1293
- formats: Ct,
1294
- defaultWidth: "full"
1295
- }),
1296
- time: V({
1297
- formats: Pt,
1298
- defaultWidth: "full"
1299
- }),
1300
- dateTime: V({
1301
- formats: St,
1302
- defaultWidth: "full"
1303
- })
1304
- };
1305
- const Ot = xt;
1306
- var Et = {
1307
- lastWeek: "'last' eeee 'at' p",
1308
- yesterday: "'yesterday at' p",
1309
- today: "'today at' p",
1310
- tomorrow: "'tomorrow at' p",
1311
- nextWeek: "eeee 'at' p",
1312
- other: "P"
1313
- }, $t = function(e, t, n, r) {
1314
- return Et[e];
1315
- };
1316
- const Wt = $t;
1317
- function $(a) {
1318
- return function(e, t) {
1319
- var n = t != null && t.context ? String(t.context) : "standalone", r;
1320
- if (n === "formatting" && a.formattingValues) {
1321
- var i = a.defaultFormattingWidth || a.defaultWidth, o = t != null && t.width ? String(t.width) : i;
1322
- r = a.formattingValues[o] || a.formattingValues[i];
510
+ const formattedMaxDiscount = use_number_formatter_default({ value: safeNumber(maxDiscountAmount), prefix: "Rp" });
511
+ const formattedDiscountVal = use_number_formatter_default({ value: safeNumber(discountValue), prefix: "Rp" });
512
+ const formattedLimitFee = use_number_formatter_default({ value: safeNumber(limitFee), prefix: "Rp" });
513
+ const formattedMinTotalAmount = use_number_formatter_default({ value: safeNumber(termsMinTotalAmount), prefix: "Rp" });
514
+ const formattedMinTotalQty = use_number_formatter_default({ value: safeNumber(termsMinQty) });
515
+ if (type === "Product" /* product */ || type === "Order" /* order */ || type === "Gift" /* gift */ || type === "Payment" /* payment */) {
516
+ if (discountType === "percentage" /* percentage */ && type !== "Gift" /* gift */) {
517
+ methodTerm = `Diskon ${discountValue || 0}%`;
518
+ if (isCheckedMaxFee) {
519
+ methodTerm += ` (hingga ${formattedMaxDiscount})`;
520
+ }
521
+ } else if (discountType === "amount" /* amount */ && type !== "Gift" /* gift */) {
522
+ methodTerm = `Potongan ${formattedDiscountVal}`;
1323
523
  } else {
1324
- var u = a.defaultWidth, s = t != null && t.width ? String(t.width) : a.defaultWidth;
1325
- r = a.values[s] || a.values[u];
1326
- }
1327
- var d = a.argumentCallback ? a.argumentCallback(e) : e;
1328
- return r[d];
1329
- };
1330
- }
1331
- var Nt = {
1332
- narrow: ["B", "A"],
1333
- abbreviated: ["BC", "AD"],
1334
- wide: ["Before Christ", "Anno Domini"]
1335
- }, Ut = {
1336
- narrow: ["1", "2", "3", "4"],
1337
- abbreviated: ["Q1", "Q2", "Q3", "Q4"],
1338
- wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
1339
- }, Yt = {
1340
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
1341
- abbreviated: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1342
- wide: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
1343
- }, _t = {
1344
- narrow: ["S", "M", "T", "W", "T", "F", "S"],
1345
- short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
1346
- abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
1347
- wide: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
1348
- }, Lt = {
1349
- narrow: {
1350
- am: "a",
1351
- pm: "p",
1352
- midnight: "mi",
1353
- noon: "n",
1354
- morning: "morning",
1355
- afternoon: "afternoon",
1356
- evening: "evening",
1357
- night: "night"
1358
- },
1359
- abbreviated: {
1360
- am: "AM",
1361
- pm: "PM",
1362
- midnight: "midnight",
1363
- noon: "noon",
1364
- morning: "morning",
1365
- afternoon: "afternoon",
1366
- evening: "evening",
1367
- night: "night"
1368
- },
1369
- wide: {
1370
- am: "a.m.",
1371
- pm: "p.m.",
1372
- midnight: "midnight",
1373
- noon: "noon",
1374
- morning: "morning",
1375
- afternoon: "afternoon",
1376
- evening: "evening",
1377
- night: "night"
1378
- }
1379
- }, Ft = {
1380
- narrow: {
1381
- am: "a",
1382
- pm: "p",
1383
- midnight: "mi",
1384
- noon: "n",
1385
- morning: "in the morning",
1386
- afternoon: "in the afternoon",
1387
- evening: "in the evening",
1388
- night: "at night"
1389
- },
1390
- abbreviated: {
1391
- am: "AM",
1392
- pm: "PM",
1393
- midnight: "midnight",
1394
- noon: "noon",
1395
- morning: "in the morning",
1396
- afternoon: "in the afternoon",
1397
- evening: "in the evening",
1398
- night: "at night"
1399
- },
1400
- wide: {
1401
- am: "a.m.",
1402
- pm: "p.m.",
1403
- midnight: "midnight",
1404
- noon: "noon",
1405
- morning: "in the morning",
1406
- afternoon: "in the afternoon",
1407
- evening: "in the evening",
1408
- night: "at night"
1409
- }
1410
- }, Rt = function(e, t) {
1411
- var n = Number(e), r = n % 100;
1412
- if (r > 20 || r < 10)
1413
- switch (r % 10) {
1414
- case 1:
1415
- return n + "st";
1416
- case 2:
1417
- return n + "nd";
1418
- case 3:
1419
- return n + "rd";
1420
- }
1421
- return n + "th";
1422
- }, Bt = {
1423
- ordinalNumber: Rt,
1424
- era: $({
1425
- values: Nt,
1426
- defaultWidth: "wide"
1427
- }),
1428
- quarter: $({
1429
- values: Ut,
1430
- defaultWidth: "wide",
1431
- argumentCallback: function(e) {
1432
- return e - 1;
1433
- }
1434
- }),
1435
- month: $({
1436
- values: Yt,
1437
- defaultWidth: "wide"
1438
- }),
1439
- day: $({
1440
- values: _t,
1441
- defaultWidth: "wide"
1442
- }),
1443
- dayPeriod: $({
1444
- values: Lt,
1445
- defaultWidth: "wide",
1446
- formattingValues: Ft,
1447
- defaultFormattingWidth: "wide"
1448
- })
1449
- };
1450
- const jt = Bt;
1451
- function W(a) {
1452
- return function(e) {
1453
- var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = t.width, r = n && a.matchPatterns[n] || a.matchPatterns[a.defaultMatchWidth], i = e.match(r);
1454
- if (!i)
1455
- return null;
1456
- var o = i[0], u = n && a.parsePatterns[n] || a.parsePatterns[a.defaultParseWidth], s = Array.isArray(u) ? It(u, function(l) {
1457
- return l.test(o);
1458
- }) : At(u, function(l) {
1459
- return l.test(o);
1460
- }), d;
1461
- d = a.valueCallback ? a.valueCallback(s) : s, d = t.valueCallback ? t.valueCallback(d) : d;
1462
- var c = e.slice(o.length);
1463
- return {
1464
- value: d,
1465
- rest: c
1466
- };
1467
- };
1468
- }
1469
- function At(a, e) {
1470
- for (var t in a)
1471
- if (a.hasOwnProperty(t) && e(a[t]))
1472
- return t;
1473
- }
1474
- function It(a, e) {
1475
- for (var t = 0; t < a.length; t++)
1476
- if (e(a[t]))
1477
- return t;
1478
- }
1479
- function pe(a) {
1480
- return function(e) {
1481
- var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = e.match(a.matchPattern);
1482
- if (!n)
1483
- return null;
1484
- var r = n[0], i = e.match(a.parsePattern);
1485
- if (!i)
1486
- return null;
1487
- var o = a.valueCallback ? a.valueCallback(i[0]) : i[0];
1488
- o = t.valueCallback ? t.valueCallback(o) : o;
1489
- var u = e.slice(r.length);
1490
- return {
1491
- value: o,
1492
- rest: u
1493
- };
1494
- };
1495
- }
1496
- var Ht = /^(\d+)(th|st|nd|rd)?/i, Vt = /\d+/i, qt = {
1497
- narrow: /^(b|a)/i,
1498
- abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
1499
- wide: /^(before christ|before common era|anno domini|common era)/i
1500
- }, Qt = {
1501
- any: [/^b/i, /^(a|c)/i]
1502
- }, Xt = {
1503
- narrow: /^[1234]/i,
1504
- abbreviated: /^q[1234]/i,
1505
- wide: /^[1234](th|st|nd|rd)? quarter/i
1506
- }, Gt = {
1507
- any: [/1/i, /2/i, /3/i, /4/i]
1508
- }, Kt = {
1509
- narrow: /^[jfmasond]/i,
1510
- abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
1511
- wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
1512
- }, Jt = {
1513
- narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],
1514
- any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]
1515
- }, zt = {
1516
- narrow: /^[smtwf]/i,
1517
- short: /^(su|mo|tu|we|th|fr|sa)/i,
1518
- abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
1519
- wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
1520
- }, Zt = {
1521
- narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
1522
- any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
1523
- }, ea = {
1524
- narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
1525
- any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
1526
- }, ta = {
1527
- any: {
1528
- am: /^a/i,
1529
- pm: /^p/i,
1530
- midnight: /^mi/i,
1531
- noon: /^no/i,
1532
- morning: /morning/i,
1533
- afternoon: /afternoon/i,
1534
- evening: /evening/i,
1535
- night: /night/i
1536
- }
1537
- }, aa = {
1538
- ordinalNumber: pe({
1539
- matchPattern: Ht,
1540
- parsePattern: Vt,
1541
- valueCallback: function(e) {
1542
- return parseInt(e, 10);
1543
- }
1544
- }),
1545
- era: W({
1546
- matchPatterns: qt,
1547
- defaultMatchWidth: "wide",
1548
- parsePatterns: Qt,
1549
- defaultParseWidth: "any"
1550
- }),
1551
- quarter: W({
1552
- matchPatterns: Xt,
1553
- defaultMatchWidth: "wide",
1554
- parsePatterns: Gt,
1555
- defaultParseWidth: "any",
1556
- valueCallback: function(e) {
1557
- return e + 1;
1558
- }
1559
- }),
1560
- month: W({
1561
- matchPatterns: Kt,
1562
- defaultMatchWidth: "wide",
1563
- parsePatterns: Jt,
1564
- defaultParseWidth: "any"
1565
- }),
1566
- day: W({
1567
- matchPatterns: zt,
1568
- defaultMatchWidth: "wide",
1569
- parsePatterns: Zt,
1570
- defaultParseWidth: "any"
1571
- }),
1572
- dayPeriod: W({
1573
- matchPatterns: ea,
1574
- defaultMatchWidth: "any",
1575
- parsePatterns: ta,
1576
- defaultParseWidth: "any"
1577
- })
1578
- };
1579
- const na = aa;
1580
- var ra = {
1581
- code: "en-US",
1582
- formatDistance: Tt,
1583
- formatLong: Ot,
1584
- formatRelative: Wt,
1585
- localize: jt,
1586
- match: na,
1587
- options: {
1588
- weekStartsOn: 0,
1589
- firstWeekContainsDate: 1
1590
- }
1591
- };
1592
- const ia = ra;
1593
- var oa = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g, ua = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g, sa = /^'([^]*?)'?$/, da = /''/g, la = /[a-zA-Z]/;
1594
- function E(a, e, t) {
1595
- var n, r, i, o, u, s, d, c, l, f, m, g, w, b, p, D, C, x;
1596
- M(2, arguments);
1597
- var v = String(e), P = ee(), O = (n = (r = t == null ? void 0 : t.locale) !== null && r !== void 0 ? r : P.locale) !== null && n !== void 0 ? n : ia, S = A((i = (o = (u = (s = t == null ? void 0 : t.firstWeekContainsDate) !== null && s !== void 0 ? s : t == null || (d = t.locale) === null || d === void 0 || (c = d.options) === null || c === void 0 ? void 0 : c.firstWeekContainsDate) !== null && u !== void 0 ? u : P.firstWeekContainsDate) !== null && o !== void 0 ? o : (l = P.locale) === null || l === void 0 || (f = l.options) === null || f === void 0 ? void 0 : f.firstWeekContainsDate) !== null && i !== void 0 ? i : 1);
1598
- if (!(S >= 1 && S <= 7))
1599
- throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");
1600
- var U = A((m = (g = (w = (b = t == null ? void 0 : t.weekStartsOn) !== null && b !== void 0 ? b : t == null || (p = t.locale) === null || p === void 0 || (D = p.options) === null || D === void 0 ? void 0 : D.weekStartsOn) !== null && w !== void 0 ? w : P.weekStartsOn) !== null && g !== void 0 ? g : (C = P.locale) === null || C === void 0 || (x = C.options) === null || x === void 0 ? void 0 : x.weekStartsOn) !== null && m !== void 0 ? m : 0);
1601
- if (!(U >= 0 && U <= 6))
1602
- throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");
1603
- if (!O.localize)
1604
- throw new RangeError("locale must contain localize property");
1605
- if (!O.formatLong)
1606
- throw new RangeError("locale must contain formatLong property");
1607
- var Y = N(a);
1608
- if (!at(Y))
1609
- throw new RangeError("Invalid time value");
1610
- var I = et(Y), X = nt(Y, I), we = {
1611
- firstWeekContainsDate: S,
1612
- weekStartsOn: U,
1613
- locale: O,
1614
- _originalDate: Y
1615
- }, ye = v.match(ua).map(function(k) {
1616
- var _ = k[0];
1617
- if (_ === "p" || _ === "P") {
1618
- var G = bt[_];
1619
- return G(k, O.formatLong);
1620
- }
1621
- return k;
1622
- }).join("").match(oa).map(function(k) {
1623
- if (k === "''")
1624
- return "'";
1625
- var _ = k[0];
1626
- if (_ === "'")
1627
- return ca(k);
1628
- var G = ht[_];
1629
- if (G)
1630
- return !(t != null && t.useAdditionalWeekYearTokens) && Mt(k) && fe(k, e, String(a)), !(t != null && t.useAdditionalDayOfYearTokens) && yt(k) && fe(k, e, String(a)), G(X, k, O.localize, we);
1631
- if (_.match(la))
1632
- throw new RangeError("Format string contains an unescaped latin alphabet character `" + _ + "`");
1633
- return k;
1634
- }).join("");
1635
- return ye;
1636
- }
1637
- function ca(a) {
1638
- var e = a.match(sa);
1639
- return e ? e[1].replace(da, "'") : a;
1640
- }
1641
- var ma = {
1642
- lessThanXSeconds: {
1643
- one: "kurang dari 1 detik",
1644
- other: "kurang dari {{count}} detik"
1645
- },
1646
- xSeconds: {
1647
- one: "1 detik",
1648
- other: "{{count}} detik"
1649
- },
1650
- halfAMinute: "setengah menit",
1651
- lessThanXMinutes: {
1652
- one: "kurang dari 1 menit",
1653
- other: "kurang dari {{count}} menit"
1654
- },
1655
- xMinutes: {
1656
- one: "1 menit",
1657
- other: "{{count}} menit"
1658
- },
1659
- aboutXHours: {
1660
- one: "sekitar 1 jam",
1661
- other: "sekitar {{count}} jam"
1662
- },
1663
- xHours: {
1664
- one: "1 jam",
1665
- other: "{{count}} jam"
1666
- },
1667
- xDays: {
1668
- one: "1 hari",
1669
- other: "{{count}} hari"
1670
- },
1671
- aboutXWeeks: {
1672
- one: "sekitar 1 minggu",
1673
- other: "sekitar {{count}} minggu"
1674
- },
1675
- xWeeks: {
1676
- one: "1 minggu",
1677
- other: "{{count}} minggu"
1678
- },
1679
- aboutXMonths: {
1680
- one: "sekitar 1 bulan",
1681
- other: "sekitar {{count}} bulan"
1682
- },
1683
- xMonths: {
1684
- one: "1 bulan",
1685
- other: "{{count}} bulan"
1686
- },
1687
- aboutXYears: {
1688
- one: "sekitar 1 tahun",
1689
- other: "sekitar {{count}} tahun"
1690
- },
1691
- xYears: {
1692
- one: "1 tahun",
1693
- other: "{{count}} tahun"
1694
- },
1695
- overXYears: {
1696
- one: "lebih dari 1 tahun",
1697
- other: "lebih dari {{count}} tahun"
1698
- },
1699
- almostXYears: {
1700
- one: "hampir 1 tahun",
1701
- other: "hampir {{count}} tahun"
1702
- }
1703
- }, fa = function(e, t, n) {
1704
- var r, i = ma[e];
1705
- return typeof i == "string" ? r = i : t === 1 ? r = i.one : r = i.other.replace("{{count}}", t.toString()), n != null && n.addSuffix ? n.comparison && n.comparison > 0 ? "dalam waktu " + r : r + " yang lalu" : r;
1706
- };
1707
- const ha = fa;
1708
- var ga = {
1709
- full: "EEEE, d MMMM yyyy",
1710
- long: "d MMMM yyyy",
1711
- medium: "d MMM yyyy",
1712
- short: "d/M/yyyy"
1713
- }, va = {
1714
- full: "HH.mm.ss",
1715
- long: "HH.mm.ss",
1716
- medium: "HH.mm",
1717
- short: "HH.mm"
1718
- }, ba = {
1719
- full: "{{date}} 'pukul' {{time}}",
1720
- long: "{{date}} 'pukul' {{time}}",
1721
- medium: "{{date}}, {{time}}",
1722
- short: "{{date}}, {{time}}"
1723
- }, pa = {
1724
- date: V({
1725
- formats: ga,
1726
- defaultWidth: "full"
1727
- }),
1728
- time: V({
1729
- formats: va,
1730
- defaultWidth: "full"
1731
- }),
1732
- dateTime: V({
1733
- formats: ba,
1734
- defaultWidth: "full"
1735
- })
1736
- };
1737
- const wa = pa;
1738
- var ya = {
1739
- lastWeek: "eeee 'lalu pukul' p",
1740
- yesterday: "'Kemarin pukul' p",
1741
- today: "'Hari ini pukul' p",
1742
- tomorrow: "'Besok pukul' p",
1743
- nextWeek: "eeee 'pukul' p",
1744
- other: "P"
1745
- }, Ma = function(e, t, n, r) {
1746
- return ya[e];
1747
- };
1748
- const ka = Ma;
1749
- var Da = {
1750
- narrow: ["SM", "M"],
1751
- abbreviated: ["SM", "M"],
1752
- wide: ["Sebelum Masehi", "Masehi"]
1753
- }, Ta = {
1754
- narrow: ["1", "2", "3", "4"],
1755
- abbreviated: ["K1", "K2", "K3", "K4"],
1756
- wide: ["Kuartal ke-1", "Kuartal ke-2", "Kuartal ke-3", "Kuartal ke-4"]
1757
- }, Ca = {
1758
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
1759
- abbreviated: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"],
1760
- wide: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]
1761
- }, Pa = {
1762
- narrow: ["M", "S", "S", "R", "K", "J", "S"],
1763
- short: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
1764
- abbreviated: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
1765
- wide: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
1766
- }, Sa = {
1767
- narrow: {
1768
- am: "AM",
1769
- pm: "PM",
1770
- midnight: "tengah malam",
1771
- noon: "tengah hari",
1772
- morning: "pagi",
1773
- afternoon: "siang",
1774
- evening: "sore",
1775
- night: "malam"
1776
- },
1777
- abbreviated: {
1778
- am: "AM",
1779
- pm: "PM",
1780
- midnight: "tengah malam",
1781
- noon: "tengah hari",
1782
- morning: "pagi",
1783
- afternoon: "siang",
1784
- evening: "sore",
1785
- night: "malam"
1786
- },
1787
- wide: {
1788
- am: "AM",
1789
- pm: "PM",
1790
- midnight: "tengah malam",
1791
- noon: "tengah hari",
1792
- morning: "pagi",
1793
- afternoon: "siang",
1794
- evening: "sore",
1795
- night: "malam"
1796
- }
1797
- }, xa = {
1798
- narrow: {
1799
- am: "AM",
1800
- pm: "PM",
1801
- midnight: "tengah malam",
1802
- noon: "tengah hari",
1803
- morning: "pagi",
1804
- afternoon: "siang",
1805
- evening: "sore",
1806
- night: "malam"
1807
- },
1808
- abbreviated: {
1809
- am: "AM",
1810
- pm: "PM",
1811
- midnight: "tengah malam",
1812
- noon: "tengah hari",
1813
- morning: "pagi",
1814
- afternoon: "siang",
1815
- evening: "sore",
1816
- night: "malam"
1817
- },
1818
- wide: {
1819
- am: "AM",
1820
- pm: "PM",
1821
- midnight: "tengah malam",
1822
- noon: "tengah hari",
1823
- morning: "pagi",
1824
- afternoon: "siang",
1825
- evening: "sore",
1826
- night: "malam"
1827
- }
1828
- }, Oa = function(e, t) {
1829
- var n = Number(e);
1830
- return "ke-" + n;
1831
- }, Ea = {
1832
- ordinalNumber: Oa,
1833
- era: $({
1834
- values: Da,
1835
- defaultWidth: "wide"
1836
- }),
1837
- quarter: $({
1838
- values: Ta,
1839
- defaultWidth: "wide",
1840
- argumentCallback: function(e) {
1841
- return e - 1;
524
+ methodTerm = `Potongan ${formattedLimitFee}`;
1842
525
  }
1843
- }),
1844
- month: $({
1845
- values: Ca,
1846
- defaultWidth: "wide"
1847
- }),
1848
- day: $({
1849
- values: Pa,
1850
- defaultWidth: "wide"
1851
- }),
1852
- dayPeriod: $({
1853
- values: Sa,
1854
- defaultWidth: "wide",
1855
- formattingValues: xa,
1856
- defaultFormattingWidth: "wide"
1857
- })
1858
- };
1859
- const $a = Ea;
1860
- var Wa = /^ke-(\d+)?/i, Na = /\d+/i, Ua = {
1861
- narrow: /^(sm|m)/i,
1862
- abbreviated: /^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,
1863
- wide: /^(sebelum masehi|sebelum era umum|masehi|era umum)/i
1864
- }, Ya = {
1865
- any: [/^s/i, /^(m|e)/i]
1866
- }, _a = {
1867
- narrow: /^[1234]/i,
1868
- abbreviated: /^K-?\s[1234]/i,
1869
- wide: /^Kuartal ke-?\s?[1234]/i
1870
- }, La = {
1871
- any: [/1/i, /2/i, /3/i, /4/i]
1872
- }, Fa = {
1873
- narrow: /^[jfmasond]/i,
1874
- abbreviated: /^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,
1875
- wide: /^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i
1876
- }, Ra = {
1877
- narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],
1878
- any: [/^ja/i, /^f/i, /^ma/i, /^ap/i, /^me/i, /^jun/i, /^jul/i, /^ag/i, /^s/i, /^o/i, /^n/i, /^d/i]
1879
- }, Ba = {
1880
- narrow: /^[srkjm]/i,
1881
- short: /^(min|sen|sel|rab|kam|jum|sab)/i,
1882
- abbreviated: /^(min|sen|sel|rab|kam|jum|sab)/i,
1883
- wide: /^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i
1884
- }, ja = {
1885
- narrow: [/^m/i, /^s/i, /^s/i, /^r/i, /^k/i, /^j/i, /^s/i],
1886
- any: [/^m/i, /^sen/i, /^sel/i, /^r/i, /^k/i, /^j/i, /^sa/i]
1887
- }, Aa = {
1888
- narrow: /^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,
1889
- any: /^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i
1890
- }, Ia = {
1891
- any: {
1892
- am: /^a/i,
1893
- pm: /^pm/i,
1894
- midnight: /^tengah m/i,
1895
- noon: /^tengah h/i,
1896
- morning: /pagi/i,
1897
- afternoon: /siang/i,
1898
- evening: /sore/i,
1899
- night: /malam/i
1900
- }
1901
- }, Ha = {
1902
- ordinalNumber: pe({
1903
- matchPattern: Wa,
1904
- parsePattern: Na,
1905
- valueCallback: function(e) {
1906
- return parseInt(e, 10);
526
+ } else if (type === "Free Shipping" /* freeShipping */) {
527
+ methodTerm = "Shipping fee ditanggung oleh voil\xE0.id";
528
+ if (isCheckedMaxFee) {
529
+ methodTerm += ` (hingga ${formattedLimitFee})`;
1907
530
  }
1908
- }),
1909
- era: W({
1910
- matchPatterns: Ua,
1911
- defaultMatchWidth: "wide",
1912
- parsePatterns: Ya,
1913
- defaultParseWidth: "any"
1914
- }),
1915
- quarter: W({
1916
- matchPatterns: _a,
1917
- defaultMatchWidth: "wide",
1918
- parsePatterns: La,
1919
- defaultParseWidth: "any",
1920
- valueCallback: function(e) {
1921
- return e + 1;
531
+ } else if (type === "Free Insurance" /* freeInsurance */) {
532
+ methodTerm = "Insurance fee ditanggung oleh voil\xE0.id";
533
+ if (isCheckedMaxFee) {
534
+ methodTerm += ` (hingga ${formattedLimitFee})`;
1922
535
  }
1923
- }),
1924
- month: W({
1925
- matchPatterns: Fa,
1926
- defaultMatchWidth: "wide",
1927
- parsePatterns: Ra,
1928
- defaultParseWidth: "any"
1929
- }),
1930
- day: W({
1931
- matchPatterns: Ba,
1932
- defaultMatchWidth: "wide",
1933
- parsePatterns: ja,
1934
- defaultParseWidth: "any"
1935
- }),
1936
- dayPeriod: W({
1937
- matchPatterns: Aa,
1938
- defaultMatchWidth: "any",
1939
- parsePatterns: Ia,
1940
- defaultParseWidth: "any"
1941
- })
1942
- };
1943
- const Va = Ha;
1944
- var qa = {
1945
- code: "id",
1946
- formatDistance: ha,
1947
- formatLong: wa,
1948
- formatRelative: ka,
1949
- localize: $a,
1950
- match: Va,
1951
- options: {
1952
- weekStartsOn: 1,
1953
- firstWeekContainsDate: 1
1954
536
  }
1955
- };
1956
- const F = qa;
1957
- function Qa(a) {
1958
- let e = "";
1959
- const { dateStart: t, dateEnd: n } = a;
1960
- if (t && n) {
1961
- const r = E(new Date(t), "yyyy-MM-dd HH:mm"), i = E(new Date(n), "yyyy-MM-dd HH:mm"), o = r.split(" "), u = o[0].split("-"), s = u[0], d = u[1], c = i.split(" "), l = c[0].split("-"), f = l[0], m = l[1];
1962
- o[0] === c[0] ? e = `Voucher hanya berlaku di tanggal ${E(new Date(t), "d MMM yyyy", { locale: F })}.` : s !== f ? e = `Voucher berlaku dari ${E(new Date(t), "d MMM yyyy", { locale: F })} - ${E(
1963
- new Date(n),
1964
- "d MMM yyyy",
1965
- { locale: F }
1966
- )}.` : s === f && (d === m ? e = `Voucher berlaku dari ${E(new Date(t), "d", { locale: F })} - ${E(
1967
- new Date(n),
1968
- "d MMM yyyy",
1969
- {
1970
- locale: F
1971
- }
1972
- )}.` : e = `Voucher berlaku dari ${E(new Date(t), "d MMM", { locale: F })} - ${E(
1973
- new Date(n),
1974
- "d MMM yyyy",
1975
- { locale: F }
1976
- )}.`);
1977
- } else
1978
- t && (e = `Voucher berlaku dari ${E(new Date(t), "d MMM yyyy", { locale: F })}.`);
1979
- return e;
1980
- }
1981
- function Xa(a) {
1982
- const { isOneTimeUsage: e, isOneTimeUsagePerCard: t } = a;
1983
- if (!e && !t)
1984
- return "";
1985
- let n = "";
1986
- return e && (n = "Voucher hanya dapat digunakan 1x per member selama masa berlaku."), t && (n = "Voucher hanya dapat digunakan 1x per kartu selama masa berlaku."), e && t && (n = "Voucher hanya dapat digunakan 1x transaksi untuk 1 kartu dan 1 member selama masa berlaku."), n;
1987
- }
1988
- function Ga(a) {
1989
- let e = "";
1990
- const {
1991
- type: t,
1992
- discountType: n,
1993
- discountValue: r,
1994
- isCheckedMaxFee: i,
1995
- maxDiscountAmount: o,
1996
- transactionTerms: u,
1997
- termsMinTotalAmount: s,
1998
- termsMinQty: d,
1999
- limitFee: c
2000
- } = a, l = (p) => typeof p == "number" ? p : Number.isNaN(Number(p)) ? 0 : Number(p), f = q({ value: l(o), prefix: "Rp" }), m = q({ value: l(r), prefix: "Rp" }), g = q({ value: l(c), prefix: "Rp" }), w = q({ value: l(s), prefix: "Rp" }), b = q({ value: l(d) });
2001
- switch (t === y.product || t === y.order || t === y.gift || t === y.payment ? n === ie.percentage && t !== y.gift ? (e = `Diskon ${r || 0}%`, i && (e += ` (hingga ${f})`)) : n === ie.amount && t !== y.gift ? e = `Potongan ${m}` : e = `Potongan ${g}` : t === y.freeShipping ? (e = "Shipping fee ditanggung oleh voilà.id", i && (e += ` (hingga ${g})`)) : t === y.freeInsurance && (e = "Insurance fee ditanggung oleh voilà.id", i && (e += ` (hingga ${g})`)), u) {
537
+ switch (transactionTerms) {
2002
538
  case 0:
2003
- e += " tanpa minimum pembelian.";
539
+ methodTerm += " tanpa minimum pembelian.";
2004
540
  break;
2005
541
  case 1:
2006
- e += ` dengan min. pembelian ${w}.`;
542
+ methodTerm += ` dengan min. pembelian ${formattedMinTotalAmount}.`;
2007
543
  break;
2008
544
  case 2:
2009
- e += ` dengan min. pembelian ${d ? b : 0} item.`;
545
+ methodTerm += ` dengan min. pembelian ${termsMinQty ? formattedMinTotalQty : 0} item.`;
2010
546
  break;
2011
547
  default:
2012
- e += "";
548
+ methodTerm += "";
2013
549
  }
2014
- return e;
2015
- }
2016
- const Ka = (a) => {
2017
- if (a) {
2018
- const e = [], {
2019
- dateEnd: t,
2020
- dateStart: n,
2021
- type: r,
2022
- discountType: i,
2023
- discountValue: o,
2024
- isCheckedMaxFee: u,
2025
- maxDiscountAmount: s,
2026
- transactionTerms: d,
2027
- termsMinTotalAmount: c,
2028
- termsMinQty: l,
2029
- limitFee: f,
2030
- collections: m,
2031
- brands: g,
2032
- eligibilityType: w,
2033
- isOneTimeUsage: b,
2034
- quota: p,
2035
- isOneTimeUsagePerCard: D,
2036
- payment: C,
2037
- isGiftCard: x
2038
- } = a, { bankName: v = "", creditBinGroup: P = [], debitBinGroup: O = [] } = C || {}, S = Qa({ dateStart: n, dateEnd: t }), U = Ke({ type: r, collections: m, brands: g, eligibilityType: w, payment: C }), Y = Ga({
2039
- type: r,
2040
- discountType: i,
2041
- discountValue: o,
2042
- isCheckedMaxFee: u,
2043
- maxDiscountAmount: s,
2044
- transactionTerms: d,
2045
- termsMinTotalAmount: c,
2046
- termsMinQty: l,
2047
- limitFee: f
2048
- }), I = Xa({ isOneTimeUsage: b, isOneTimeUsagePerCard: D }), X = Je({ bankName: v, creditBinGroup: P, debitBinGroup: O });
2049
- return S && e.push(S), Y && e.push(Y), U && e.push(U), I && e.push(I), p > 0 && e.push("Kuota voucher terbatas."), (X || []).length > 0 && e.push(...X), (r === y.order || r === y.payment || r === y.freeInsurance || r === y.gift && !x) && e.push("Hanya berlaku untuk produk tertentu."), e;
550
+ return methodTerm;
551
+ }
552
+
553
+ // src/hooks/use-voucher-tnc/use-voucher-tnc.ts
554
+ var useVoucherTnc = (props) => {
555
+ if (props) {
556
+ const terms = [];
557
+ const {
558
+ dateEnd,
559
+ dateStart,
560
+ type,
561
+ discountType,
562
+ discountValue,
563
+ isCheckedMaxFee,
564
+ maxDiscountAmount,
565
+ transactionTerms,
566
+ termsMinTotalAmount,
567
+ termsMinQty,
568
+ limitFee,
569
+ collections,
570
+ brands,
571
+ eligibilityType,
572
+ isOneTimeUsage,
573
+ quota,
574
+ isOneTimeUsagePerCard,
575
+ payment,
576
+ isGiftCard
577
+ } = props;
578
+ const { bankName = "", creditBinGroup = [], debitBinGroup = [] } = payment || {};
579
+ const period = getPeriodText({ dateStart, dateEnd });
580
+ const appliesTo = getAppliesTo({ type, collections, brands, eligibilityType, payment });
581
+ const methodTerms = useVoucherMethodTerms({
582
+ type,
583
+ discountType,
584
+ discountValue,
585
+ isCheckedMaxFee,
586
+ maxDiscountAmount,
587
+ transactionTerms,
588
+ termsMinTotalAmount,
589
+ termsMinQty,
590
+ limitFee
591
+ });
592
+ const usageLimit = getVoucherUsageLimit({ isOneTimeUsage, isOneTimeUsagePerCard });
593
+ const bankBin = getBankBin({ bankName, creditBinGroup, debitBinGroup });
594
+ if (period) terms.push(period);
595
+ if (methodTerms) terms.push(methodTerms);
596
+ if (appliesTo) terms.push(appliesTo);
597
+ if (usageLimit) terms.push(usageLimit);
598
+ if (quota > 0) terms.push("Kuota voucher terbatas.");
599
+ if ((bankBin || []).length > 0) terms.push(...bankBin);
600
+ if (type === "Order" /* order */ || type === "Payment" /* payment */ || type === "Free Insurance" /* freeInsurance */ || type === "Gift" /* gift */ && !isGiftCard) {
601
+ terms.push("Hanya berlaku untuk produk tertentu.");
602
+ }
603
+ return terms;
2050
604
  }
2051
605
  return [];
2052
- }, on = Ka;
606
+ };
607
+ var use_voucher_tnc_default = useVoucherTnc;
2053
608
  export {
2054
- ie as DiscountType,
2055
- y as VoucherType,
2056
- Te as canUseDOM,
2057
- he as getOwnerDocument,
2058
- Ce as isBrowser,
2059
- De as isElement,
2060
- te as isValidEvent,
2061
- re as useCallbackRef,
2062
- za as useClipboard,
2063
- Za as useDebounce,
2064
- en as useDimensions,
2065
- tn as useDisclosure,
2066
- an as useMediaQuery,
2067
- q as useNumberFormatter,
2068
- nn as useOnlineStatus,
2069
- rn as useOutsideClick,
2070
- Ie as useSafeLayoutEffect,
2071
- on as useVoucherTnc
609
+ DiscountType,
610
+ VoucherType,
611
+ canUseDOM,
612
+ getOwnerDocument,
613
+ isBrowser,
614
+ isElement,
615
+ isValidEvent,
616
+ use_callback_ref_default as useCallbackRef,
617
+ use_clipboard_default as useClipboard,
618
+ use_debounce_default as useDebounce,
619
+ use_dimensions_default as useDimensions,
620
+ use_disclosure_default as useDisclosure,
621
+ use_media_query_default as useMediaQuery,
622
+ use_number_formatter_default as useNumberFormatter,
623
+ use_online_status_default as useOnlineStatus,
624
+ use_outside_click_default as useOutsideClick,
625
+ use_safe_layout_effect_default as useSafeLayoutEffect,
626
+ use_voucher_tnc_default as useVoucherTnc
2072
627
  };
628
+ //# sourceMappingURL=index.mjs.map