@ctlyst.id/utils 1.3.8 → 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 -2010
  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,2068 +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 ? [`Voucher berlaku untuk Kartu Kredit ${e} dengan Bank Identification Number (BIN): ${r}.`] : [],
361
- ...e && i ? [`Voucher berlaku untuk Kartu Debit ${e} dengan Bank Identification Number (BIN): ${i}.`] : []
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}.`] : []
362
422
  ];
363
423
  }
364
- function J(a) {
365
- "@babel/helpers - typeof";
366
- return J = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
367
- return typeof e;
368
- } : function(e) {
369
- return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
370
- }, J(a);
371
- }
372
- function A(a) {
373
- if (a === null || a === !0 || a === !1)
374
- return NaN;
375
- var e = Number(a);
376
- return isNaN(e) ? e : e < 0 ? Math.ceil(e) : Math.floor(e);
377
- }
378
- function M(a, e) {
379
- if (e.length < a)
380
- throw new TypeError(a + " argument" + (a > 1 ? "s" : "") + " required, but only " + e.length + " present");
381
- }
382
- function N(a) {
383
- M(1, arguments);
384
- var e = Object.prototype.toString.call(a);
385
- 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));
386
- }
387
- function ze(a, e) {
388
- M(2, arguments);
389
- var t = N(a).getTime(), n = A(e);
390
- return new Date(t + n);
391
- }
392
- var Ze = {};
393
- function ee() {
394
- return Ze;
395
- }
396
- function et(a) {
397
- var e = new Date(Date.UTC(a.getFullYear(), a.getMonth(), a.getDate(), a.getHours(), a.getMinutes(), a.getSeconds(), a.getMilliseconds()));
398
- return e.setUTCFullYear(a.getFullYear()), a.getTime() - e.getTime();
399
- }
400
- function tt(a) {
401
- return M(1, arguments), a instanceof Date || J(a) === "object" && Object.prototype.toString.call(a) === "[object Date]";
402
- }
403
- function at(a) {
404
- if (M(1, arguments), !tt(a) && typeof a != "number")
405
- return !1;
406
- var e = N(a);
407
- return !isNaN(Number(e));
408
- }
409
- function nt(a, e) {
410
- M(2, arguments);
411
- var t = A(e);
412
- return ze(a, -t);
413
- }
414
- var rt = 864e5;
415
- function it(a) {
416
- M(1, arguments);
417
- var e = N(a), t = e.getTime();
418
- e.setUTCMonth(0, 1), e.setUTCHours(0, 0, 0, 0);
419
- var n = e.getTime(), r = t - n;
420
- return Math.floor(r / rt) + 1;
421
- }
422
- function z(a) {
423
- M(1, arguments);
424
- var e = 1, t = N(a), n = t.getUTCDay(), r = (n < e ? 7 : 0) + n - e;
425
- return t.setUTCDate(t.getUTCDate() - r), t.setUTCHours(0, 0, 0, 0), t;
426
- }
427
- function ge(a) {
428
- M(1, arguments);
429
- var e = N(a), t = e.getUTCFullYear(), n = /* @__PURE__ */ new Date(0);
430
- n.setUTCFullYear(t + 1, 0, 4), n.setUTCHours(0, 0, 0, 0);
431
- var r = z(n), i = /* @__PURE__ */ new Date(0);
432
- i.setUTCFullYear(t, 0, 4), i.setUTCHours(0, 0, 0, 0);
433
- var o = z(i);
434
- return e.getTime() >= r.getTime() ? t + 1 : e.getTime() >= o.getTime() ? t : t - 1;
435
- }
436
- function ot(a) {
437
- M(1, arguments);
438
- var e = ge(a), t = /* @__PURE__ */ new Date(0);
439
- t.setUTCFullYear(e, 0, 4), t.setUTCHours(0, 0, 0, 0);
440
- var n = z(t);
441
- return n;
442
- }
443
- var ut = 6048e5;
444
- function st(a) {
445
- M(1, arguments);
446
- var e = N(a), t = z(e).getTime() - ot(e).getTime();
447
- return Math.round(t / ut) + 1;
448
- }
449
- function Z(a, e) {
450
- var t, n, r, i, o, u, s, d;
451
- M(1, arguments);
452
- 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);
453
- if (!(l >= 0 && l <= 6))
454
- throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");
455
- var f = N(a), m = f.getUTCDay(), g = (m < l ? 7 : 0) + m - l;
456
- return f.setUTCDate(f.getUTCDate() - g), f.setUTCHours(0, 0, 0, 0), f;
457
- }
458
- function ve(a, e) {
459
- var t, n, r, i, o, u, s, d;
460
- M(1, arguments);
461
- 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);
462
- if (!(m >= 1 && m <= 7))
463
- throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");
464
- var g = /* @__PURE__ */ new Date(0);
465
- g.setUTCFullYear(l + 1, 0, m), g.setUTCHours(0, 0, 0, 0);
466
- var w = Z(g, e), b = /* @__PURE__ */ new Date(0);
467
- b.setUTCFullYear(l, 0, m), b.setUTCHours(0, 0, 0, 0);
468
- var p = Z(b, e);
469
- return c.getTime() >= w.getTime() ? l + 1 : c.getTime() >= p.getTime() ? l : l - 1;
470
- }
471
- function dt(a, e) {
472
- var t, n, r, i, o, u, s, d;
473
- M(1, arguments);
474
- 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);
475
- m.setUTCFullYear(f, 0, l), m.setUTCHours(0, 0, 0, 0);
476
- var g = Z(m, e);
477
- return g;
478
- }
479
- var lt = 6048e5;
480
- function ct(a, e) {
481
- M(1, arguments);
482
- var t = N(a), n = Z(t, e).getTime() - dt(t, e).getTime();
483
- return Math.round(n / lt) + 1;
484
- }
485
- function h(a, e) {
486
- for (var t = a < 0 ? "-" : "", n = Math.abs(a).toString(); n.length < e; )
487
- n = "0" + n;
488
- return t + n;
489
- }
490
- var mt = {
491
- // Year
492
- y: function(e, t) {
493
- var n = e.getUTCFullYear(), r = n > 0 ? n : 1 - n;
494
- return h(t === "yy" ? r % 100 : r, t.length);
495
- },
496
- // Month
497
- M: function(e, t) {
498
- var n = e.getUTCMonth();
499
- return t === "M" ? String(n + 1) : h(n + 1, 2);
500
- },
501
- // Day of the month
502
- d: function(e, t) {
503
- return h(e.getUTCDate(), t.length);
504
- },
505
- // AM or PM
506
- a: function(e, t) {
507
- var n = e.getUTCHours() / 12 >= 1 ? "pm" : "am";
508
- switch (t) {
509
- case "a":
510
- case "aa":
511
- return n.toUpperCase();
512
- case "aaa":
513
- return n;
514
- case "aaaaa":
515
- return n[0];
516
- case "aaaa":
517
- default:
518
- return n === "am" ? "a.m." : "p.m.";
519
- }
520
- },
521
- // Hour [1-12]
522
- h: function(e, t) {
523
- return h(e.getUTCHours() % 12 || 12, t.length);
524
- },
525
- // Hour [0-23]
526
- H: function(e, t) {
527
- return h(e.getUTCHours(), t.length);
528
- },
529
- // Minute
530
- m: function(e, t) {
531
- return h(e.getUTCMinutes(), t.length);
532
- },
533
- // Second
534
- s: function(e, t) {
535
- return h(e.getUTCSeconds(), t.length);
536
- },
537
- // Fraction of second
538
- S: function(e, t) {
539
- var n = t.length, r = e.getUTCMilliseconds(), i = Math.floor(r * Math.pow(10, n - 3));
540
- return h(i, t.length);
541
- }
542
- };
543
- const L = mt;
544
- var H = {
545
- am: "am",
546
- pm: "pm",
547
- midnight: "midnight",
548
- noon: "noon",
549
- morning: "morning",
550
- afternoon: "afternoon",
551
- evening: "evening",
552
- night: "night"
553
- }, ft = {
554
- // Era
555
- G: function(e, t, n) {
556
- var r = e.getUTCFullYear() > 0 ? 1 : 0;
557
- switch (t) {
558
- case "G":
559
- case "GG":
560
- case "GGG":
561
- return n.era(r, {
562
- width: "abbreviated"
563
- });
564
- case "GGGGG":
565
- return n.era(r, {
566
- width: "narrow"
567
- });
568
- case "GGGG":
569
- default:
570
- return n.era(r, {
571
- width: "wide"
572
- });
573
- }
574
- },
575
- // Year
576
- y: function(e, t, n) {
577
- if (t === "yo") {
578
- var r = e.getUTCFullYear(), i = r > 0 ? r : 1 - r;
579
- return n.ordinalNumber(i, {
580
- unit: "year"
581
- });
582
- }
583
- return L.y(e, t);
584
- },
585
- // Local week-numbering year
586
- Y: function(e, t, n, r) {
587
- var i = ve(e, r), o = i > 0 ? i : 1 - i;
588
- if (t === "YY") {
589
- var u = o % 100;
590
- return h(u, 2);
591
- }
592
- return t === "Yo" ? n.ordinalNumber(o, {
593
- unit: "year"
594
- }) : h(o, t.length);
595
- },
596
- // ISO week-numbering year
597
- R: function(e, t) {
598
- var n = ge(e);
599
- return h(n, t.length);
600
- },
601
- // Extended year. This is a single number designating the year of this calendar system.
602
- // The main difference between `y` and `u` localizers are B.C. years:
603
- // | Year | `y` | `u` |
604
- // |------|-----|-----|
605
- // | AC 1 | 1 | 1 |
606
- // | BC 1 | 1 | 0 |
607
- // | BC 2 | 2 | -1 |
608
- // Also `yy` always returns the last two digits of a year,
609
- // while `uu` pads single digit years to 2 characters and returns other years unchanged.
610
- u: function(e, t) {
611
- var n = e.getUTCFullYear();
612
- return h(n, t.length);
613
- },
614
- // Quarter
615
- Q: function(e, t, n) {
616
- var r = Math.ceil((e.getUTCMonth() + 1) / 3);
617
- switch (t) {
618
- case "Q":
619
- return String(r);
620
- case "QQ":
621
- return h(r, 2);
622
- case "Qo":
623
- return n.ordinalNumber(r, {
624
- unit: "quarter"
625
- });
626
- case "QQQ":
627
- return n.quarter(r, {
628
- width: "abbreviated",
629
- context: "formatting"
630
- });
631
- case "QQQQQ":
632
- return n.quarter(r, {
633
- width: "narrow",
634
- context: "formatting"
635
- });
636
- case "QQQQ":
637
- default:
638
- return n.quarter(r, {
639
- width: "wide",
640
- context: "formatting"
641
- });
642
- }
643
- },
644
- // Stand-alone quarter
645
- q: function(e, t, n) {
646
- var r = Math.ceil((e.getUTCMonth() + 1) / 3);
647
- switch (t) {
648
- case "q":
649
- return String(r);
650
- case "qq":
651
- return h(r, 2);
652
- case "qo":
653
- return n.ordinalNumber(r, {
654
- unit: "quarter"
655
- });
656
- case "qqq":
657
- return n.quarter(r, {
658
- width: "abbreviated",
659
- context: "standalone"
660
- });
661
- case "qqqqq":
662
- return n.quarter(r, {
663
- width: "narrow",
664
- context: "standalone"
665
- });
666
- case "qqqq":
667
- default:
668
- return n.quarter(r, {
669
- width: "wide",
670
- context: "standalone"
671
- });
672
- }
673
- },
674
- // Month
675
- M: function(e, t, n) {
676
- var r = e.getUTCMonth();
677
- switch (t) {
678
- case "M":
679
- case "MM":
680
- return L.M(e, t);
681
- case "Mo":
682
- return n.ordinalNumber(r + 1, {
683
- unit: "month"
684
- });
685
- case "MMM":
686
- return n.month(r, {
687
- width: "abbreviated",
688
- context: "formatting"
689
- });
690
- case "MMMMM":
691
- return n.month(r, {
692
- width: "narrow",
693
- context: "formatting"
694
- });
695
- case "MMMM":
696
- default:
697
- return n.month(r, {
698
- width: "wide",
699
- context: "formatting"
700
- });
701
- }
702
- },
703
- // Stand-alone month
704
- L: function(e, t, n) {
705
- var r = e.getUTCMonth();
706
- switch (t) {
707
- case "L":
708
- return String(r + 1);
709
- case "LL":
710
- return h(r + 1, 2);
711
- case "Lo":
712
- return n.ordinalNumber(r + 1, {
713
- unit: "month"
714
- });
715
- case "LLL":
716
- return n.month(r, {
717
- width: "abbreviated",
718
- context: "standalone"
719
- });
720
- case "LLLLL":
721
- return n.month(r, {
722
- width: "narrow",
723
- context: "standalone"
724
- });
725
- case "LLLL":
726
- default:
727
- return n.month(r, {
728
- width: "wide",
729
- context: "standalone"
730
- });
731
- }
732
- },
733
- // Local week of year
734
- w: function(e, t, n, r) {
735
- var i = ct(e, r);
736
- return t === "wo" ? n.ordinalNumber(i, {
737
- unit: "week"
738
- }) : h(i, t.length);
739
- },
740
- // ISO week of year
741
- I: function(e, t, n) {
742
- var r = st(e);
743
- return t === "Io" ? n.ordinalNumber(r, {
744
- unit: "week"
745
- }) : h(r, t.length);
746
- },
747
- // Day of the month
748
- d: function(e, t, n) {
749
- return t === "do" ? n.ordinalNumber(e.getUTCDate(), {
750
- unit: "date"
751
- }) : L.d(e, t);
752
- },
753
- // Day of year
754
- D: function(e, t, n) {
755
- var r = it(e);
756
- return t === "Do" ? n.ordinalNumber(r, {
757
- unit: "dayOfYear"
758
- }) : h(r, t.length);
759
- },
760
- // Day of week
761
- E: function(e, t, n) {
762
- var r = e.getUTCDay();
763
- switch (t) {
764
- case "E":
765
- case "EE":
766
- case "EEE":
767
- return n.day(r, {
768
- width: "abbreviated",
769
- context: "formatting"
770
- });
771
- case "EEEEE":
772
- return n.day(r, {
773
- width: "narrow",
774
- context: "formatting"
775
- });
776
- case "EEEEEE":
777
- return n.day(r, {
778
- width: "short",
779
- context: "formatting"
780
- });
781
- case "EEEE":
782
- default:
783
- return n.day(r, {
784
- width: "wide",
785
- context: "formatting"
786
- });
787
- }
788
- },
789
- // Local day of week
790
- e: function(e, t, n, r) {
791
- var i = e.getUTCDay(), o = (i - r.weekStartsOn + 8) % 7 || 7;
792
- switch (t) {
793
- case "e":
794
- return String(o);
795
- case "ee":
796
- return h(o, 2);
797
- case "eo":
798
- return n.ordinalNumber(o, {
799
- unit: "day"
800
- });
801
- case "eee":
802
- return n.day(i, {
803
- width: "abbreviated",
804
- context: "formatting"
805
- });
806
- case "eeeee":
807
- return n.day(i, {
808
- width: "narrow",
809
- context: "formatting"
810
- });
811
- case "eeeeee":
812
- return n.day(i, {
813
- width: "short",
814
- context: "formatting"
815
- });
816
- case "eeee":
817
- default:
818
- return n.day(i, {
819
- width: "wide",
820
- context: "formatting"
821
- });
822
- }
823
- },
824
- // Stand-alone local day of week
825
- c: function(e, t, n, r) {
826
- var i = e.getUTCDay(), o = (i - r.weekStartsOn + 8) % 7 || 7;
827
- switch (t) {
828
- case "c":
829
- return String(o);
830
- case "cc":
831
- return h(o, t.length);
832
- case "co":
833
- return n.ordinalNumber(o, {
834
- unit: "day"
835
- });
836
- case "ccc":
837
- return n.day(i, {
838
- width: "abbreviated",
839
- context: "standalone"
840
- });
841
- case "ccccc":
842
- return n.day(i, {
843
- width: "narrow",
844
- context: "standalone"
845
- });
846
- case "cccccc":
847
- return n.day(i, {
848
- width: "short",
849
- context: "standalone"
850
- });
851
- case "cccc":
852
- default:
853
- return n.day(i, {
854
- width: "wide",
855
- context: "standalone"
856
- });
857
- }
858
- },
859
- // ISO day of week
860
- i: function(e, t, n) {
861
- var r = e.getUTCDay(), i = r === 0 ? 7 : r;
862
- switch (t) {
863
- case "i":
864
- return String(i);
865
- case "ii":
866
- return h(i, t.length);
867
- case "io":
868
- return n.ordinalNumber(i, {
869
- unit: "day"
870
- });
871
- case "iii":
872
- return n.day(r, {
873
- width: "abbreviated",
874
- context: "formatting"
875
- });
876
- case "iiiii":
877
- return n.day(r, {
878
- width: "narrow",
879
- context: "formatting"
880
- });
881
- case "iiiiii":
882
- return n.day(r, {
883
- width: "short",
884
- context: "formatting"
885
- });
886
- case "iiii":
887
- default:
888
- return n.day(r, {
889
- width: "wide",
890
- context: "formatting"
891
- });
892
- }
893
- },
894
- // AM or PM
895
- a: function(e, t, n) {
896
- var r = e.getUTCHours(), i = r / 12 >= 1 ? "pm" : "am";
897
- switch (t) {
898
- case "a":
899
- case "aa":
900
- return n.dayPeriod(i, {
901
- width: "abbreviated",
902
- context: "formatting"
903
- });
904
- case "aaa":
905
- return n.dayPeriod(i, {
906
- width: "abbreviated",
907
- context: "formatting"
908
- }).toLowerCase();
909
- case "aaaaa":
910
- return n.dayPeriod(i, {
911
- width: "narrow",
912
- context: "formatting"
913
- });
914
- case "aaaa":
915
- default:
916
- return n.dayPeriod(i, {
917
- width: "wide",
918
- context: "formatting"
919
- });
920
- }
921
- },
922
- // AM, PM, midnight, noon
923
- b: function(e, t, n) {
924
- var r = e.getUTCHours(), i;
925
- switch (r === 12 ? i = H.noon : r === 0 ? i = H.midnight : i = r / 12 >= 1 ? "pm" : "am", t) {
926
- case "b":
927
- case "bb":
928
- return n.dayPeriod(i, {
929
- width: "abbreviated",
930
- context: "formatting"
931
- });
932
- case "bbb":
933
- return n.dayPeriod(i, {
934
- width: "abbreviated",
935
- context: "formatting"
936
- }).toLowerCase();
937
- case "bbbbb":
938
- return n.dayPeriod(i, {
939
- width: "narrow",
940
- context: "formatting"
941
- });
942
- case "bbbb":
943
- default:
944
- return n.dayPeriod(i, {
945
- width: "wide",
946
- context: "formatting"
947
- });
948
- }
949
- },
950
- // in the morning, in the afternoon, in the evening, at night
951
- B: function(e, t, n) {
952
- var r = e.getUTCHours(), i;
953
- switch (r >= 17 ? i = H.evening : r >= 12 ? i = H.afternoon : r >= 4 ? i = H.morning : i = H.night, t) {
954
- case "B":
955
- case "BB":
956
- case "BBB":
957
- return n.dayPeriod(i, {
958
- width: "abbreviated",
959
- context: "formatting"
960
- });
961
- case "BBBBB":
962
- return n.dayPeriod(i, {
963
- width: "narrow",
964
- context: "formatting"
965
- });
966
- case "BBBB":
967
- default:
968
- return n.dayPeriod(i, {
969
- width: "wide",
970
- context: "formatting"
971
- });
972
- }
973
- },
974
- // Hour [1-12]
975
- h: function(e, t, n) {
976
- if (t === "ho") {
977
- var r = e.getUTCHours() % 12;
978
- return r === 0 && (r = 12), n.ordinalNumber(r, {
979
- unit: "hour"
980
- });
981
- }
982
- return L.h(e, t);
983
- },
984
- // Hour [0-23]
985
- H: function(e, t, n) {
986
- return t === "Ho" ? n.ordinalNumber(e.getUTCHours(), {
987
- unit: "hour"
988
- }) : L.H(e, t);
989
- },
990
- // Hour [0-11]
991
- K: function(e, t, n) {
992
- var r = e.getUTCHours() % 12;
993
- return t === "Ko" ? n.ordinalNumber(r, {
994
- unit: "hour"
995
- }) : h(r, t.length);
996
- },
997
- // Hour [1-24]
998
- k: function(e, t, n) {
999
- var r = e.getUTCHours();
1000
- return r === 0 && (r = 24), t === "ko" ? n.ordinalNumber(r, {
1001
- unit: "hour"
1002
- }) : h(r, t.length);
1003
- },
1004
- // Minute
1005
- m: function(e, t, n) {
1006
- return t === "mo" ? n.ordinalNumber(e.getUTCMinutes(), {
1007
- unit: "minute"
1008
- }) : L.m(e, t);
1009
- },
1010
- // Second
1011
- s: function(e, t, n) {
1012
- return t === "so" ? n.ordinalNumber(e.getUTCSeconds(), {
1013
- unit: "second"
1014
- }) : L.s(e, t);
1015
- },
1016
- // Fraction of second
1017
- S: function(e, t) {
1018
- return L.S(e, t);
1019
- },
1020
- // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)
1021
- X: function(e, t, n, r) {
1022
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1023
- if (o === 0)
1024
- return "Z";
1025
- switch (t) {
1026
- case "X":
1027
- return ce(o);
1028
- case "XXXX":
1029
- case "XX":
1030
- return B(o);
1031
- case "XXXXX":
1032
- case "XXX":
1033
- default:
1034
- return B(o, ":");
1035
- }
1036
- },
1037
- // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)
1038
- x: function(e, t, n, r) {
1039
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1040
- switch (t) {
1041
- case "x":
1042
- return ce(o);
1043
- case "xxxx":
1044
- case "xx":
1045
- return B(o);
1046
- case "xxxxx":
1047
- case "xxx":
1048
- default:
1049
- return B(o, ":");
1050
- }
1051
- },
1052
- // Timezone (GMT)
1053
- O: function(e, t, n, r) {
1054
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1055
- switch (t) {
1056
- case "O":
1057
- case "OO":
1058
- case "OOO":
1059
- return "GMT" + le(o, ":");
1060
- case "OOOO":
1061
- default:
1062
- return "GMT" + B(o, ":");
1063
- }
1064
- },
1065
- // Timezone (specific non-location)
1066
- z: function(e, t, n, r) {
1067
- var i = r._originalDate || e, o = i.getTimezoneOffset();
1068
- switch (t) {
1069
- case "z":
1070
- case "zz":
1071
- case "zzz":
1072
- return "GMT" + le(o, ":");
1073
- case "zzzz":
1074
- default:
1075
- 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
+ }
1076
466
  }
1077
- },
1078
- // Seconds timestamp
1079
- t: function(e, t, n, r) {
1080
- var i = r._originalDate || e, o = Math.floor(i.getTime() / 1e3);
1081
- return h(o, t.length);
1082
- },
1083
- // Milliseconds timestamp
1084
- T: function(e, t, n, r) {
1085
- var i = r._originalDate || e, o = i.getTime();
1086
- return h(o, t.length);
467
+ } else if (dateStart) {
468
+ period = `Voucher berlaku dari ${format(new Date(dateStart), "d MMM yyyy", { locale: id })}.`;
1087
469
  }
1088
- };
1089
- function le(a, e) {
1090
- var t = a > 0 ? "-" : "+", n = Math.abs(a), r = Math.floor(n / 60), i = n % 60;
1091
- if (i === 0)
1092
- return t + String(r);
1093
- var o = e || "";
1094
- return t + String(r) + o + h(i, 2);
470
+ return period;
1095
471
  }
1096
- function ce(a, e) {
1097
- if (a % 60 === 0) {
1098
- var t = a > 0 ? "-" : "+";
1099
- 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 "";
1100
478
  }
1101
- return B(a, e);
1102
- }
1103
- function B(a, e) {
1104
- var t = e || "", n = a > 0 ? "-" : "+", r = Math.abs(a), i = h(Math.floor(r / 60), 2), o = h(r % 60, 2);
1105
- return n + i + t + o;
1106
- }
1107
- const ht = ft;
1108
- var me = function(e, t) {
1109
- switch (e) {
1110
- case "P":
1111
- return t.date({
1112
- width: "short"
1113
- });
1114
- case "PP":
1115
- return t.date({
1116
- width: "medium"
1117
- });
1118
- case "PPP":
1119
- return t.date({
1120
- width: "long"
1121
- });
1122
- case "PPPP":
1123
- default:
1124
- return t.date({
1125
- width: "full"
1126
- });
479
+ let usageLimit = "";
480
+ if (isOneTimeUsage) {
481
+ usageLimit = "Voucher hanya dapat digunakan 1x per member selama masa berlaku.";
1127
482
  }
1128
- }, be = function(e, t) {
1129
- switch (e) {
1130
- case "p":
1131
- return t.time({
1132
- width: "short"
1133
- });
1134
- case "pp":
1135
- return t.time({
1136
- width: "medium"
1137
- });
1138
- case "ppp":
1139
- return t.time({
1140
- width: "long"
1141
- });
1142
- case "pppp":
1143
- default:
1144
- return t.time({
1145
- width: "full"
1146
- });
483
+ if (isOneTimeUsagePerCard) {
484
+ usageLimit = "Voucher hanya dapat digunakan 1x per kartu selama masa berlaku.";
1147
485
  }
1148
- }, gt = function(e, t) {
1149
- var n = e.match(/(P+)(p+)?/) || [], r = n[1], i = n[2];
1150
- if (!i)
1151
- return me(e, t);
1152
- var o;
1153
- switch (r) {
1154
- case "P":
1155
- o = t.dateTime({
1156
- width: "short"
1157
- });
1158
- break;
1159
- case "PP":
1160
- o = t.dateTime({
1161
- width: "medium"
1162
- });
1163
- break;
1164
- case "PPP":
1165
- o = t.dateTime({
1166
- width: "long"
1167
- });
1168
- break;
1169
- case "PPPP":
1170
- default:
1171
- o = t.dateTime({
1172
- width: "full"
1173
- });
1174
- break;
486
+ if (isOneTimeUsage && isOneTimeUsagePerCard) {
487
+ usageLimit = "Voucher hanya dapat digunakan 1x transaksi untuk 1 kartu dan 1 member selama masa berlaku.";
1175
488
  }
1176
- return o.replace("{{date}}", me(r, t)).replace("{{time}}", be(i, t));
1177
- }, vt = {
1178
- p: be,
1179
- P: gt
1180
- };
1181
- const bt = vt;
1182
- var pt = ["D", "DD"], wt = ["YY", "YYYY"];
1183
- function yt(a) {
1184
- return pt.indexOf(a) !== -1;
1185
- }
1186
- function Mt(a) {
1187
- return wt.indexOf(a) !== -1;
489
+ return usageLimit;
1188
490
  }
1189
- function fe(a, e, t) {
1190
- if (a === "YYYY")
1191
- 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"));
1192
- if (a === "YY")
1193
- 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"));
1194
- if (a === "D")
1195
- 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"));
1196
- if (a === "DD")
1197
- 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"));
1198
- }
1199
- var kt = {
1200
- lessThanXSeconds: {
1201
- one: "less than a second",
1202
- other: "less than {{count}} seconds"
1203
- },
1204
- xSeconds: {
1205
- one: "1 second",
1206
- other: "{{count}} seconds"
1207
- },
1208
- halfAMinute: "half a minute",
1209
- lessThanXMinutes: {
1210
- one: "less than a minute",
1211
- other: "less than {{count}} minutes"
1212
- },
1213
- xMinutes: {
1214
- one: "1 minute",
1215
- other: "{{count}} minutes"
1216
- },
1217
- aboutXHours: {
1218
- one: "about 1 hour",
1219
- other: "about {{count}} hours"
1220
- },
1221
- xHours: {
1222
- one: "1 hour",
1223
- other: "{{count}} hours"
1224
- },
1225
- xDays: {
1226
- one: "1 day",
1227
- other: "{{count}} days"
1228
- },
1229
- aboutXWeeks: {
1230
- one: "about 1 week",
1231
- other: "about {{count}} weeks"
1232
- },
1233
- xWeeks: {
1234
- one: "1 week",
1235
- other: "{{count}} weeks"
1236
- },
1237
- aboutXMonths: {
1238
- one: "about 1 month",
1239
- other: "about {{count}} months"
1240
- },
1241
- xMonths: {
1242
- one: "1 month",
1243
- other: "{{count}} months"
1244
- },
1245
- aboutXYears: {
1246
- one: "about 1 year",
1247
- other: "about {{count}} years"
1248
- },
1249
- xYears: {
1250
- one: "1 year",
1251
- other: "{{count}} years"
1252
- },
1253
- overXYears: {
1254
- one: "over 1 year",
1255
- other: "over {{count}} years"
1256
- },
1257
- almostXYears: {
1258
- one: "almost 1 year",
1259
- other: "almost {{count}} years"
1260
- }
1261
- }, Dt = function(e, t, n) {
1262
- var r, i = kt[e];
1263
- 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;
1264
- };
1265
- const Tt = Dt;
1266
- function V(a) {
1267
- return function() {
1268
- 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];
1269
- 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;
1270
509
  };
1271
- }
1272
- var Ct = {
1273
- full: "EEEE, MMMM do, y",
1274
- long: "MMMM do, y",
1275
- medium: "MMM d, y",
1276
- short: "MM/dd/yyyy"
1277
- }, Pt = {
1278
- full: "h:mm:ss a zzzz",
1279
- long: "h:mm:ss a z",
1280
- medium: "h:mm:ss a",
1281
- short: "h:mm a"
1282
- }, St = {
1283
- full: "{{date}} 'at' {{time}}",
1284
- long: "{{date}} 'at' {{time}}",
1285
- medium: "{{date}}, {{time}}",
1286
- short: "{{date}}, {{time}}"
1287
- }, xt = {
1288
- date: V({
1289
- formats: Ct,
1290
- defaultWidth: "full"
1291
- }),
1292
- time: V({
1293
- formats: Pt,
1294
- defaultWidth: "full"
1295
- }),
1296
- dateTime: V({
1297
- formats: St,
1298
- defaultWidth: "full"
1299
- })
1300
- };
1301
- const Ot = xt;
1302
- var Et = {
1303
- lastWeek: "'last' eeee 'at' p",
1304
- yesterday: "'yesterday at' p",
1305
- today: "'today at' p",
1306
- tomorrow: "'tomorrow at' p",
1307
- nextWeek: "eeee 'at' p",
1308
- other: "P"
1309
- }, $t = function(e, t, n, r) {
1310
- return Et[e];
1311
- };
1312
- const Wt = $t;
1313
- function $(a) {
1314
- return function(e, t) {
1315
- var n = t != null && t.context ? String(t.context) : "standalone", r;
1316
- if (n === "formatting" && a.formattingValues) {
1317
- var i = a.defaultFormattingWidth || a.defaultWidth, o = t != null && t.width ? String(t.width) : i;
1318
- 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}`;
1319
523
  } else {
1320
- var u = a.defaultWidth, s = t != null && t.width ? String(t.width) : a.defaultWidth;
1321
- r = a.values[s] || a.values[u];
1322
- }
1323
- var d = a.argumentCallback ? a.argumentCallback(e) : e;
1324
- return r[d];
1325
- };
1326
- }
1327
- var Nt = {
1328
- narrow: ["B", "A"],
1329
- abbreviated: ["BC", "AD"],
1330
- wide: ["Before Christ", "Anno Domini"]
1331
- }, Ut = {
1332
- narrow: ["1", "2", "3", "4"],
1333
- abbreviated: ["Q1", "Q2", "Q3", "Q4"],
1334
- wide: ["1st quarter", "2nd quarter", "3rd quarter", "4th quarter"]
1335
- }, Yt = {
1336
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
1337
- abbreviated: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
1338
- wide: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
1339
- }, _t = {
1340
- narrow: ["S", "M", "T", "W", "T", "F", "S"],
1341
- short: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
1342
- abbreviated: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
1343
- wide: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
1344
- }, Lt = {
1345
- narrow: {
1346
- am: "a",
1347
- pm: "p",
1348
- midnight: "mi",
1349
- noon: "n",
1350
- morning: "morning",
1351
- afternoon: "afternoon",
1352
- evening: "evening",
1353
- night: "night"
1354
- },
1355
- abbreviated: {
1356
- am: "AM",
1357
- pm: "PM",
1358
- midnight: "midnight",
1359
- noon: "noon",
1360
- morning: "morning",
1361
- afternoon: "afternoon",
1362
- evening: "evening",
1363
- night: "night"
1364
- },
1365
- wide: {
1366
- am: "a.m.",
1367
- pm: "p.m.",
1368
- midnight: "midnight",
1369
- noon: "noon",
1370
- morning: "morning",
1371
- afternoon: "afternoon",
1372
- evening: "evening",
1373
- night: "night"
1374
- }
1375
- }, Ft = {
1376
- narrow: {
1377
- am: "a",
1378
- pm: "p",
1379
- midnight: "mi",
1380
- noon: "n",
1381
- morning: "in the morning",
1382
- afternoon: "in the afternoon",
1383
- evening: "in the evening",
1384
- night: "at night"
1385
- },
1386
- abbreviated: {
1387
- am: "AM",
1388
- pm: "PM",
1389
- midnight: "midnight",
1390
- noon: "noon",
1391
- morning: "in the morning",
1392
- afternoon: "in the afternoon",
1393
- evening: "in the evening",
1394
- night: "at night"
1395
- },
1396
- wide: {
1397
- am: "a.m.",
1398
- pm: "p.m.",
1399
- midnight: "midnight",
1400
- noon: "noon",
1401
- morning: "in the morning",
1402
- afternoon: "in the afternoon",
1403
- evening: "in the evening",
1404
- night: "at night"
1405
- }
1406
- }, Rt = function(e, t) {
1407
- var n = Number(e), r = n % 100;
1408
- if (r > 20 || r < 10)
1409
- switch (r % 10) {
1410
- case 1:
1411
- return n + "st";
1412
- case 2:
1413
- return n + "nd";
1414
- case 3:
1415
- return n + "rd";
1416
- }
1417
- return n + "th";
1418
- }, Bt = {
1419
- ordinalNumber: Rt,
1420
- era: $({
1421
- values: Nt,
1422
- defaultWidth: "wide"
1423
- }),
1424
- quarter: $({
1425
- values: Ut,
1426
- defaultWidth: "wide",
1427
- argumentCallback: function(e) {
1428
- return e - 1;
1429
- }
1430
- }),
1431
- month: $({
1432
- values: Yt,
1433
- defaultWidth: "wide"
1434
- }),
1435
- day: $({
1436
- values: _t,
1437
- defaultWidth: "wide"
1438
- }),
1439
- dayPeriod: $({
1440
- values: Lt,
1441
- defaultWidth: "wide",
1442
- formattingValues: Ft,
1443
- defaultFormattingWidth: "wide"
1444
- })
1445
- };
1446
- const jt = Bt;
1447
- function W(a) {
1448
- return function(e) {
1449
- 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);
1450
- if (!i)
1451
- return null;
1452
- var o = i[0], u = n && a.parsePatterns[n] || a.parsePatterns[a.defaultParseWidth], s = Array.isArray(u) ? It(u, function(l) {
1453
- return l.test(o);
1454
- }) : At(u, function(l) {
1455
- return l.test(o);
1456
- }), d;
1457
- d = a.valueCallback ? a.valueCallback(s) : s, d = t.valueCallback ? t.valueCallback(d) : d;
1458
- var c = e.slice(o.length);
1459
- return {
1460
- value: d,
1461
- rest: c
1462
- };
1463
- };
1464
- }
1465
- function At(a, e) {
1466
- for (var t in a)
1467
- if (a.hasOwnProperty(t) && e(a[t]))
1468
- return t;
1469
- }
1470
- function It(a, e) {
1471
- for (var t = 0; t < a.length; t++)
1472
- if (e(a[t]))
1473
- return t;
1474
- }
1475
- function pe(a) {
1476
- return function(e) {
1477
- var t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, n = e.match(a.matchPattern);
1478
- if (!n)
1479
- return null;
1480
- var r = n[0], i = e.match(a.parsePattern);
1481
- if (!i)
1482
- return null;
1483
- var o = a.valueCallback ? a.valueCallback(i[0]) : i[0];
1484
- o = t.valueCallback ? t.valueCallback(o) : o;
1485
- var u = e.slice(r.length);
1486
- return {
1487
- value: o,
1488
- rest: u
1489
- };
1490
- };
1491
- }
1492
- var Ht = /^(\d+)(th|st|nd|rd)?/i, Vt = /\d+/i, qt = {
1493
- narrow: /^(b|a)/i,
1494
- abbreviated: /^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,
1495
- wide: /^(before christ|before common era|anno domini|common era)/i
1496
- }, Qt = {
1497
- any: [/^b/i, /^(a|c)/i]
1498
- }, Xt = {
1499
- narrow: /^[1234]/i,
1500
- abbreviated: /^q[1234]/i,
1501
- wide: /^[1234](th|st|nd|rd)? quarter/i
1502
- }, Gt = {
1503
- any: [/1/i, /2/i, /3/i, /4/i]
1504
- }, Kt = {
1505
- narrow: /^[jfmasond]/i,
1506
- abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,
1507
- wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i
1508
- }, Jt = {
1509
- 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],
1510
- 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]
1511
- }, zt = {
1512
- narrow: /^[smtwf]/i,
1513
- short: /^(su|mo|tu|we|th|fr|sa)/i,
1514
- abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,
1515
- wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i
1516
- }, Zt = {
1517
- narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],
1518
- any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]
1519
- }, ea = {
1520
- narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,
1521
- any: /^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i
1522
- }, ta = {
1523
- any: {
1524
- am: /^a/i,
1525
- pm: /^p/i,
1526
- midnight: /^mi/i,
1527
- noon: /^no/i,
1528
- morning: /morning/i,
1529
- afternoon: /afternoon/i,
1530
- evening: /evening/i,
1531
- night: /night/i
1532
- }
1533
- }, aa = {
1534
- ordinalNumber: pe({
1535
- matchPattern: Ht,
1536
- parsePattern: Vt,
1537
- valueCallback: function(e) {
1538
- return parseInt(e, 10);
1539
- }
1540
- }),
1541
- era: W({
1542
- matchPatterns: qt,
1543
- defaultMatchWidth: "wide",
1544
- parsePatterns: Qt,
1545
- defaultParseWidth: "any"
1546
- }),
1547
- quarter: W({
1548
- matchPatterns: Xt,
1549
- defaultMatchWidth: "wide",
1550
- parsePatterns: Gt,
1551
- defaultParseWidth: "any",
1552
- valueCallback: function(e) {
1553
- return e + 1;
1554
- }
1555
- }),
1556
- month: W({
1557
- matchPatterns: Kt,
1558
- defaultMatchWidth: "wide",
1559
- parsePatterns: Jt,
1560
- defaultParseWidth: "any"
1561
- }),
1562
- day: W({
1563
- matchPatterns: zt,
1564
- defaultMatchWidth: "wide",
1565
- parsePatterns: Zt,
1566
- defaultParseWidth: "any"
1567
- }),
1568
- dayPeriod: W({
1569
- matchPatterns: ea,
1570
- defaultMatchWidth: "any",
1571
- parsePatterns: ta,
1572
- defaultParseWidth: "any"
1573
- })
1574
- };
1575
- const na = aa;
1576
- var ra = {
1577
- code: "en-US",
1578
- formatDistance: Tt,
1579
- formatLong: Ot,
1580
- formatRelative: Wt,
1581
- localize: jt,
1582
- match: na,
1583
- options: {
1584
- weekStartsOn: 0,
1585
- firstWeekContainsDate: 1
1586
- }
1587
- };
1588
- const ia = ra;
1589
- var oa = /[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g, ua = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g, sa = /^'([^]*?)'?$/, da = /''/g, la = /[a-zA-Z]/;
1590
- function E(a, e, t) {
1591
- var n, r, i, o, u, s, d, c, l, f, m, g, w, b, p, D, C, x;
1592
- M(2, arguments);
1593
- 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);
1594
- if (!(S >= 1 && S <= 7))
1595
- throw new RangeError("firstWeekContainsDate must be between 1 and 7 inclusively");
1596
- 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);
1597
- if (!(U >= 0 && U <= 6))
1598
- throw new RangeError("weekStartsOn must be between 0 and 6 inclusively");
1599
- if (!O.localize)
1600
- throw new RangeError("locale must contain localize property");
1601
- if (!O.formatLong)
1602
- throw new RangeError("locale must contain formatLong property");
1603
- var Y = N(a);
1604
- if (!at(Y))
1605
- throw new RangeError("Invalid time value");
1606
- var I = et(Y), X = nt(Y, I), we = {
1607
- firstWeekContainsDate: S,
1608
- weekStartsOn: U,
1609
- locale: O,
1610
- _originalDate: Y
1611
- }, ye = v.match(ua).map(function(k) {
1612
- var _ = k[0];
1613
- if (_ === "p" || _ === "P") {
1614
- var G = bt[_];
1615
- return G(k, O.formatLong);
1616
- }
1617
- return k;
1618
- }).join("").match(oa).map(function(k) {
1619
- if (k === "''")
1620
- return "'";
1621
- var _ = k[0];
1622
- if (_ === "'")
1623
- return ca(k);
1624
- var G = ht[_];
1625
- if (G)
1626
- 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);
1627
- if (_.match(la))
1628
- throw new RangeError("Format string contains an unescaped latin alphabet character `" + _ + "`");
1629
- return k;
1630
- }).join("");
1631
- return ye;
1632
- }
1633
- function ca(a) {
1634
- var e = a.match(sa);
1635
- return e ? e[1].replace(da, "'") : a;
1636
- }
1637
- var ma = {
1638
- lessThanXSeconds: {
1639
- one: "kurang dari 1 detik",
1640
- other: "kurang dari {{count}} detik"
1641
- },
1642
- xSeconds: {
1643
- one: "1 detik",
1644
- other: "{{count}} detik"
1645
- },
1646
- halfAMinute: "setengah menit",
1647
- lessThanXMinutes: {
1648
- one: "kurang dari 1 menit",
1649
- other: "kurang dari {{count}} menit"
1650
- },
1651
- xMinutes: {
1652
- one: "1 menit",
1653
- other: "{{count}} menit"
1654
- },
1655
- aboutXHours: {
1656
- one: "sekitar 1 jam",
1657
- other: "sekitar {{count}} jam"
1658
- },
1659
- xHours: {
1660
- one: "1 jam",
1661
- other: "{{count}} jam"
1662
- },
1663
- xDays: {
1664
- one: "1 hari",
1665
- other: "{{count}} hari"
1666
- },
1667
- aboutXWeeks: {
1668
- one: "sekitar 1 minggu",
1669
- other: "sekitar {{count}} minggu"
1670
- },
1671
- xWeeks: {
1672
- one: "1 minggu",
1673
- other: "{{count}} minggu"
1674
- },
1675
- aboutXMonths: {
1676
- one: "sekitar 1 bulan",
1677
- other: "sekitar {{count}} bulan"
1678
- },
1679
- xMonths: {
1680
- one: "1 bulan",
1681
- other: "{{count}} bulan"
1682
- },
1683
- aboutXYears: {
1684
- one: "sekitar 1 tahun",
1685
- other: "sekitar {{count}} tahun"
1686
- },
1687
- xYears: {
1688
- one: "1 tahun",
1689
- other: "{{count}} tahun"
1690
- },
1691
- overXYears: {
1692
- one: "lebih dari 1 tahun",
1693
- other: "lebih dari {{count}} tahun"
1694
- },
1695
- almostXYears: {
1696
- one: "hampir 1 tahun",
1697
- other: "hampir {{count}} tahun"
1698
- }
1699
- }, fa = function(e, t, n) {
1700
- var r, i = ma[e];
1701
- 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;
1702
- };
1703
- const ha = fa;
1704
- var ga = {
1705
- full: "EEEE, d MMMM yyyy",
1706
- long: "d MMMM yyyy",
1707
- medium: "d MMM yyyy",
1708
- short: "d/M/yyyy"
1709
- }, va = {
1710
- full: "HH.mm.ss",
1711
- long: "HH.mm.ss",
1712
- medium: "HH.mm",
1713
- short: "HH.mm"
1714
- }, ba = {
1715
- full: "{{date}} 'pukul' {{time}}",
1716
- long: "{{date}} 'pukul' {{time}}",
1717
- medium: "{{date}}, {{time}}",
1718
- short: "{{date}}, {{time}}"
1719
- }, pa = {
1720
- date: V({
1721
- formats: ga,
1722
- defaultWidth: "full"
1723
- }),
1724
- time: V({
1725
- formats: va,
1726
- defaultWidth: "full"
1727
- }),
1728
- dateTime: V({
1729
- formats: ba,
1730
- defaultWidth: "full"
1731
- })
1732
- };
1733
- const wa = pa;
1734
- var ya = {
1735
- lastWeek: "eeee 'lalu pukul' p",
1736
- yesterday: "'Kemarin pukul' p",
1737
- today: "'Hari ini pukul' p",
1738
- tomorrow: "'Besok pukul' p",
1739
- nextWeek: "eeee 'pukul' p",
1740
- other: "P"
1741
- }, Ma = function(e, t, n, r) {
1742
- return ya[e];
1743
- };
1744
- const ka = Ma;
1745
- var Da = {
1746
- narrow: ["SM", "M"],
1747
- abbreviated: ["SM", "M"],
1748
- wide: ["Sebelum Masehi", "Masehi"]
1749
- }, Ta = {
1750
- narrow: ["1", "2", "3", "4"],
1751
- abbreviated: ["K1", "K2", "K3", "K4"],
1752
- wide: ["Kuartal ke-1", "Kuartal ke-2", "Kuartal ke-3", "Kuartal ke-4"]
1753
- }, Ca = {
1754
- narrow: ["J", "F", "M", "A", "M", "J", "J", "A", "S", "O", "N", "D"],
1755
- abbreviated: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agt", "Sep", "Okt", "Nov", "Des"],
1756
- wide: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]
1757
- }, Pa = {
1758
- narrow: ["M", "S", "S", "R", "K", "J", "S"],
1759
- short: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
1760
- abbreviated: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"],
1761
- wide: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"]
1762
- }, Sa = {
1763
- narrow: {
1764
- am: "AM",
1765
- pm: "PM",
1766
- midnight: "tengah malam",
1767
- noon: "tengah hari",
1768
- morning: "pagi",
1769
- afternoon: "siang",
1770
- evening: "sore",
1771
- night: "malam"
1772
- },
1773
- abbreviated: {
1774
- am: "AM",
1775
- pm: "PM",
1776
- midnight: "tengah malam",
1777
- noon: "tengah hari",
1778
- morning: "pagi",
1779
- afternoon: "siang",
1780
- evening: "sore",
1781
- night: "malam"
1782
- },
1783
- wide: {
1784
- am: "AM",
1785
- pm: "PM",
1786
- midnight: "tengah malam",
1787
- noon: "tengah hari",
1788
- morning: "pagi",
1789
- afternoon: "siang",
1790
- evening: "sore",
1791
- night: "malam"
1792
- }
1793
- }, xa = {
1794
- narrow: {
1795
- am: "AM",
1796
- pm: "PM",
1797
- midnight: "tengah malam",
1798
- noon: "tengah hari",
1799
- morning: "pagi",
1800
- afternoon: "siang",
1801
- evening: "sore",
1802
- night: "malam"
1803
- },
1804
- abbreviated: {
1805
- am: "AM",
1806
- pm: "PM",
1807
- midnight: "tengah malam",
1808
- noon: "tengah hari",
1809
- morning: "pagi",
1810
- afternoon: "siang",
1811
- evening: "sore",
1812
- night: "malam"
1813
- },
1814
- wide: {
1815
- am: "AM",
1816
- pm: "PM",
1817
- midnight: "tengah malam",
1818
- noon: "tengah hari",
1819
- morning: "pagi",
1820
- afternoon: "siang",
1821
- evening: "sore",
1822
- night: "malam"
1823
- }
1824
- }, Oa = function(e, t) {
1825
- var n = Number(e);
1826
- return "ke-" + n;
1827
- }, Ea = {
1828
- ordinalNumber: Oa,
1829
- era: $({
1830
- values: Da,
1831
- defaultWidth: "wide"
1832
- }),
1833
- quarter: $({
1834
- values: Ta,
1835
- defaultWidth: "wide",
1836
- argumentCallback: function(e) {
1837
- return e - 1;
524
+ methodTerm = `Potongan ${formattedLimitFee}`;
1838
525
  }
1839
- }),
1840
- month: $({
1841
- values: Ca,
1842
- defaultWidth: "wide"
1843
- }),
1844
- day: $({
1845
- values: Pa,
1846
- defaultWidth: "wide"
1847
- }),
1848
- dayPeriod: $({
1849
- values: Sa,
1850
- defaultWidth: "wide",
1851
- formattingValues: xa,
1852
- defaultFormattingWidth: "wide"
1853
- })
1854
- };
1855
- const $a = Ea;
1856
- var Wa = /^ke-(\d+)?/i, Na = /\d+/i, Ua = {
1857
- narrow: /^(sm|m)/i,
1858
- abbreviated: /^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,
1859
- wide: /^(sebelum masehi|sebelum era umum|masehi|era umum)/i
1860
- }, Ya = {
1861
- any: [/^s/i, /^(m|e)/i]
1862
- }, _a = {
1863
- narrow: /^[1234]/i,
1864
- abbreviated: /^K-?\s[1234]/i,
1865
- wide: /^Kuartal ke-?\s?[1234]/i
1866
- }, La = {
1867
- any: [/1/i, /2/i, /3/i, /4/i]
1868
- }, Fa = {
1869
- narrow: /^[jfmasond]/i,
1870
- abbreviated: /^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,
1871
- wide: /^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i
1872
- }, Ra = {
1873
- 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],
1874
- 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]
1875
- }, Ba = {
1876
- narrow: /^[srkjm]/i,
1877
- short: /^(min|sen|sel|rab|kam|jum|sab)/i,
1878
- abbreviated: /^(min|sen|sel|rab|kam|jum|sab)/i,
1879
- wide: /^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i
1880
- }, ja = {
1881
- narrow: [/^m/i, /^s/i, /^s/i, /^r/i, /^k/i, /^j/i, /^s/i],
1882
- any: [/^m/i, /^sen/i, /^sel/i, /^r/i, /^k/i, /^j/i, /^sa/i]
1883
- }, Aa = {
1884
- narrow: /^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,
1885
- any: /^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i
1886
- }, Ia = {
1887
- any: {
1888
- am: /^a/i,
1889
- pm: /^pm/i,
1890
- midnight: /^tengah m/i,
1891
- noon: /^tengah h/i,
1892
- morning: /pagi/i,
1893
- afternoon: /siang/i,
1894
- evening: /sore/i,
1895
- night: /malam/i
1896
- }
1897
- }, Ha = {
1898
- ordinalNumber: pe({
1899
- matchPattern: Wa,
1900
- parsePattern: Na,
1901
- valueCallback: function(e) {
1902
- 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})`;
1903
530
  }
1904
- }),
1905
- era: W({
1906
- matchPatterns: Ua,
1907
- defaultMatchWidth: "wide",
1908
- parsePatterns: Ya,
1909
- defaultParseWidth: "any"
1910
- }),
1911
- quarter: W({
1912
- matchPatterns: _a,
1913
- defaultMatchWidth: "wide",
1914
- parsePatterns: La,
1915
- defaultParseWidth: "any",
1916
- valueCallback: function(e) {
1917
- 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})`;
1918
535
  }
1919
- }),
1920
- month: W({
1921
- matchPatterns: Fa,
1922
- defaultMatchWidth: "wide",
1923
- parsePatterns: Ra,
1924
- defaultParseWidth: "any"
1925
- }),
1926
- day: W({
1927
- matchPatterns: Ba,
1928
- defaultMatchWidth: "wide",
1929
- parsePatterns: ja,
1930
- defaultParseWidth: "any"
1931
- }),
1932
- dayPeriod: W({
1933
- matchPatterns: Aa,
1934
- defaultMatchWidth: "any",
1935
- parsePatterns: Ia,
1936
- defaultParseWidth: "any"
1937
- })
1938
- };
1939
- const Va = Ha;
1940
- var qa = {
1941
- code: "id",
1942
- formatDistance: ha,
1943
- formatLong: wa,
1944
- formatRelative: ka,
1945
- localize: $a,
1946
- match: Va,
1947
- options: {
1948
- weekStartsOn: 1,
1949
- firstWeekContainsDate: 1
1950
536
  }
1951
- };
1952
- const F = qa;
1953
- function Qa(a) {
1954
- let e = "";
1955
- const { dateStart: t, dateEnd: n } = a;
1956
- if (t && n) {
1957
- 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];
1958
- 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(
1959
- new Date(n),
1960
- "d MMM yyyy",
1961
- { locale: F }
1962
- )}.` : s === f && (d === m ? e = `Voucher berlaku dari ${E(new Date(t), "d", { locale: F })} - ${E(
1963
- new Date(n),
1964
- "d MMM yyyy",
1965
- {
1966
- locale: F
1967
- }
1968
- )}.` : e = `Voucher berlaku dari ${E(new Date(t), "d MMM", { locale: F })} - ${E(
1969
- new Date(n),
1970
- "d MMM yyyy",
1971
- { locale: F }
1972
- )}.`);
1973
- } else
1974
- t && (e = `Voucher berlaku dari ${E(new Date(t), "d MMM yyyy", { locale: F })}.`);
1975
- return e;
1976
- }
1977
- function Xa(a) {
1978
- const { isOneTimeUsage: e, isOneTimeUsagePerCard: t } = a;
1979
- if (!e && !t)
1980
- return "";
1981
- let n = "";
1982
- 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;
1983
- }
1984
- function Ga(a) {
1985
- let e = "";
1986
- const {
1987
- type: t,
1988
- discountType: n,
1989
- discountValue: r,
1990
- isCheckedMaxFee: i,
1991
- maxDiscountAmount: o,
1992
- transactionTerms: u,
1993
- termsMinTotalAmount: s,
1994
- termsMinQty: d,
1995
- limitFee: c
1996
- } = 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) });
1997
- 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) {
1998
538
  case 0:
1999
- e += " tanpa minimum pembelian.";
539
+ methodTerm += " tanpa minimum pembelian.";
2000
540
  break;
2001
541
  case 1:
2002
- e += ` dengan min. pembelian ${w}.`;
542
+ methodTerm += ` dengan min. pembelian ${formattedMinTotalAmount}.`;
2003
543
  break;
2004
544
  case 2:
2005
- e += ` dengan min. pembelian ${d ? b : 0} item.`;
545
+ methodTerm += ` dengan min. pembelian ${termsMinQty ? formattedMinTotalQty : 0} item.`;
2006
546
  break;
2007
547
  default:
2008
- e += "";
548
+ methodTerm += "";
2009
549
  }
2010
- return e;
2011
- }
2012
- const Ka = (a) => {
2013
- if (a) {
2014
- const e = [], {
2015
- dateEnd: t,
2016
- dateStart: n,
2017
- type: r,
2018
- discountType: i,
2019
- discountValue: o,
2020
- isCheckedMaxFee: u,
2021
- maxDiscountAmount: s,
2022
- transactionTerms: d,
2023
- termsMinTotalAmount: c,
2024
- termsMinQty: l,
2025
- limitFee: f,
2026
- collections: m,
2027
- brands: g,
2028
- eligibilityType: w,
2029
- isOneTimeUsage: b,
2030
- quota: p,
2031
- isOneTimeUsagePerCard: D,
2032
- payment: C,
2033
- isGiftCard: x
2034
- } = 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({
2035
- type: r,
2036
- discountType: i,
2037
- discountValue: o,
2038
- isCheckedMaxFee: u,
2039
- maxDiscountAmount: s,
2040
- transactionTerms: d,
2041
- termsMinTotalAmount: c,
2042
- termsMinQty: l,
2043
- limitFee: f
2044
- }), I = Xa({ isOneTimeUsage: b, isOneTimeUsagePerCard: D }), X = Je({ bankName: v, creditBinGroup: P, debitBinGroup: O });
2045
- 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;
2046
604
  }
2047
605
  return [];
2048
- }, on = Ka;
606
+ };
607
+ var use_voucher_tnc_default = useVoucherTnc;
2049
608
  export {
2050
- ie as DiscountType,
2051
- y as VoucherType,
2052
- Te as canUseDOM,
2053
- he as getOwnerDocument,
2054
- Ce as isBrowser,
2055
- De as isElement,
2056
- te as isValidEvent,
2057
- re as useCallbackRef,
2058
- za as useClipboard,
2059
- Za as useDebounce,
2060
- en as useDimensions,
2061
- tn as useDisclosure,
2062
- an as useMediaQuery,
2063
- q as useNumberFormatter,
2064
- nn as useOnlineStatus,
2065
- rn as useOutsideClick,
2066
- Ie as useSafeLayoutEffect,
2067
- 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
2068
627
  };
628
+ //# sourceMappingURL=index.mjs.map