spotlibs-components 0.1.10 → 0.1.11

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 (87) hide show
  1. package/dist/{chunk-OGJBPTUP.mjs → chunk-F6KSEYVB.mjs} +3 -3
  2. package/dist/{chunk-OGJBPTUP.mjs.map → chunk-F6KSEYVB.mjs.map} +1 -1
  3. package/dist/chunk-UFE7HFT2.mjs +60 -0
  4. package/dist/chunk-UFE7HFT2.mjs.map +1 -0
  5. package/dist/{chunk-NXFLMH2Q.mjs → chunk-YOSPWY5K.mjs} +3 -4
  6. package/dist/{chunk-NXFLMH2Q.mjs.map → chunk-YOSPWY5K.mjs.map} +1 -1
  7. package/dist/{atoms → components/atoms}/icons/index.mjs +2 -2
  8. package/dist/components/index.d.mts +449 -0
  9. package/dist/components/index.mjs +7241 -0
  10. package/dist/components/index.mjs.map +1 -0
  11. package/dist/{mui → components/mui}/index.mjs +1 -1
  12. package/dist/components/types.d.mts +4 -0
  13. package/dist/{types-B0iF5xX8.d.mts → types-BkrxwBFm.d.mts} +329 -178
  14. package/dist/utils/index.d.mts +186 -0
  15. package/dist/utils/index.mjs +477 -0
  16. package/dist/utils/index.mjs.map +1 -0
  17. package/package.json +12 -2
  18. package/src/utils/admin-kuota-nasional/constant.js +95 -0
  19. package/src/utils/asset.js +10 -0
  20. package/src/utils/booleanUtils.js +19 -0
  21. package/src/utils/briguna-digital/constant.js +12 -0
  22. package/src/utils/compress.js +24 -0
  23. package/src/utils/compressImage.js +20 -0
  24. package/src/utils/constants.js +20 -0
  25. package/src/utils/cookies.js +102 -0
  26. package/src/utils/crypto.js +104 -0
  27. package/src/utils/decodeString.js +17 -0
  28. package/src/utils/disableFormElements.js +19 -0
  29. package/src/utils/excelUtils.js +60 -0
  30. package/src/utils/exception.js +86 -0
  31. package/src/utils/formatString.js +151 -0
  32. package/src/utils/formatters/account.js +98 -0
  33. package/src/utils/formatters/currency.js +125 -0
  34. package/src/utils/formatters/date.js +219 -0
  35. package/src/utils/formatters/index.js +47 -0
  36. package/src/utils/formatters/string.js +114 -0
  37. package/src/utils/generateImportExcel.js +546 -0
  38. package/src/utils/generateTimestamp.js +4 -0
  39. package/src/utils/handleApiError.js +17 -0
  40. package/src/utils/index.js +92 -0
  41. package/src/utils/json.js +55 -0
  42. package/src/utils/localStorage.js +8 -0
  43. package/src/utils/logger.js +46 -0
  44. package/src/utils/schema/globalSchema.js +10 -0
  45. package/src/utils/signature.js +75 -0
  46. package/src/utils/specifics/korporasi/prakarsaKorporasiUtils.js +87 -0
  47. package/src/utils/specifics/mikro/validationMaintenanceAgunanUtils.js +214 -0
  48. package/src/utils/static-data/korporasi/prakarsa/analisa-risiko-kredit-nasabah/analisa-kinerja-keuangan/listStaticData.js +290 -0
  49. package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-arus-kas/listStaticData.js +7 -0
  50. package/src/utils/static-data/korporasi/prakarsa/appendix/proyeksi-laporan-keuangan/listStaticData.js +75 -0
  51. package/src/utils/static-data/korporasi/prakarsa/appendix/total-exposure-group/listStaticData.js +7 -0
  52. package/src/utils/static-data/korporasi/prakarsa/create/listStaticData.js +21 -0
  53. package/src/utils/static-data/korporasi/prakarsa/generals/listExcelConfigData.js +11 -0
  54. package/src/utils/static-data/korporasi/prakarsa/pengajuan-fasilitas-kredit/fasilitas-kredit/listStaticData.js +69 -0
  55. package/src/utils/static-data/korporasi-internasional/eksternal/listStaticData.js +193 -0
  56. package/src/utils/static-data/korporasi-internasional/master/listStaticData.js +24 -0
  57. package/src/utils/static-data/korporasi-internasional/uji-kepatuhan/listStaticData.js +250 -0
  58. package/src/utils/status.js +160 -0
  59. package/src/utils/store/adminKuotaNasional.js +7 -0
  60. package/src/utils/store/authStore.js +13 -0
  61. package/src/utils/store/bankGaransiStore.js +10 -0
  62. package/src/utils/store/korporasi/approval/interface/interfaceStore.js +10 -0
  63. package/src/utils/store/korporasi/general/generalKorporasiStore.js +13 -0
  64. package/src/utils/store/korporasi/loan-disbursement/loanDisbursementStore.js +77 -0
  65. package/src/utils/store/korporasi/prakarsa/fasilitas-kredit/fasilitasKreditStore.js +141 -0
  66. package/src/utils/store/migrasi-mandiri/migrasiMandiriStore.js +53 -0
  67. package/src/utils/store/monitoring-konsumer/monitoring-leads-KPP/monitoring-leads-kpp-internal.js +34 -0
  68. package/src/utils/store/prakarsaBankGaransiStore.js +21 -0
  69. package/src/utils/store/prognosa-crr/settingPrognosaROStore.js +9 -0
  70. package/src/utils/store/prognosaRMStore.js +30 -0
  71. package/src/utils/store/restrukStore.js +26 -0
  72. package/src/utils/store/verificationAccessLink.js +11 -0
  73. package/src/utils/store/warkat-bg-wholesale/warkatBgWholesaleStore.js +22 -0
  74. package/src/utils/stringUtils.js +226 -0
  75. package/src/utils/tipeBank.js +14 -0
  76. package/dist/index.css +0 -32
  77. package/dist/index.css.map +0 -1
  78. package/dist/index.d.mts +0 -1726
  79. package/dist/index.mjs +0 -18560
  80. package/dist/index.mjs.map +0 -1
  81. package/dist/types.d.mts +0 -4
  82. /package/dist/{atoms → components/atoms}/icons/index.d.mts +0 -0
  83. /package/dist/{atoms → components/atoms}/icons/index.mjs.map +0 -0
  84. /package/dist/{mui → components/mui}/index.d.mts +0 -0
  85. /package/dist/{mui → components/mui}/index.mjs.map +0 -0
  86. /package/dist/{types.mjs → components/types.mjs} +0 -0
  87. /package/dist/{types.mjs.map → components/types.mjs.map} +0 -0
@@ -0,0 +1,186 @@
1
+ declare function callAsset(uri?: string): string;
2
+
3
+ declare function generateVcifId(): string;
4
+
5
+ declare function getLocalStorageItem(key: any): any;
6
+
7
+ declare function getTipeBankKorporasi(data: any): string;
8
+
9
+ /**
10
+ * Account & ID Number Formatting Utilities
11
+ *
12
+ * Konsolidasi dari:
13
+ * - formatString.js (dashedAccount, dashedNPWP)
14
+ * - formatters.js (formatAccountNumber)
15
+ * - stringUtils.js (rekeningFormatter, npwpFormatter)
16
+ */
17
+ /**
18
+ * Format nomor rekening dengan dash separator.
19
+ * Mendukung berbagai panjang nomor rekening (progressive formatting).
20
+ * @param {string} value - Nomor rekening (bisa mengandung karakter non-numerik)
21
+ * @returns {string} Nomor rekening terformat (e.g., "0012-01-123456-01-1")
22
+ *
23
+ * @example
24
+ * formatAccountNumber("001201123456011") // "0012-01-123456-01-1"
25
+ * formatAccountNumber("00120112345601") // "0012-01-123456-01"
26
+ * formatAccountNumber("0012011") // "0012-01-1"
27
+ */
28
+ declare function formatAccountNumber(value: string): string;
29
+ /**
30
+ * Format nomor NPWP dengan dot dan dash separator.
31
+ * Mendukung format NPWP 15 digit dan 16 digit (format baru).
32
+ * @param {string} value - Nomor NPWP
33
+ * @returns {string} NPWP terformat (e.g., "01.234.567.8-901.234")
34
+ *
35
+ * @example
36
+ * formatNPWP("0123456789012345") // "01.234.567.8-901.2345"
37
+ * formatNPWP("012345678901234") // "01.234.567.8-901.234"
38
+ * formatNPWP("012345678") // "01.234.567.8"
39
+ */
40
+ declare function formatNPWP(value: string): string;
41
+
42
+ declare function formatCurrency$1(value: number | string, { locale, currency, minFractionDigits, maxFractionDigits, }?: {
43
+ locale: string;
44
+ currency: string;
45
+ minFractionDigits: number;
46
+ maxFractionDigits: number;
47
+ }): string;
48
+ declare function formatRupiah(value: number | string): string;
49
+ declare function formatNominal$1(value: number | string, { locale, minFractionDigits, maxFractionDigits, decimalSeparator, }?: {
50
+ locale: string;
51
+ minFractionDigits: number;
52
+ maxFractionDigits: number;
53
+ decimalSeparator: string;
54
+ }): string;
55
+ declare function formatDigit(value: number | string): string;
56
+
57
+ declare function toYearFirstDash(value: Date | string): string;
58
+ declare function toDateFirstSlash(value: Date | string): string;
59
+ declare function formatDateToDDSlashMMSlashYYYY(date: Date): string;
60
+ declare function formatDateToDDMMYYYY(date: Date): string;
61
+ declare function yearFirstDashToDateFirstDash(value: string): string;
62
+ declare function yearFirstDashToDateFirstSlash(value: string): string;
63
+ declare function dateFirstSlashToYearFirstDash(value: string): string;
64
+ declare function sevenDigitToDateFirstSlash(value: string): string;
65
+ declare function sevenDigitToYearFirstDash(value: string): string;
66
+ declare function sevenDigitToDateFirstDash(value: string): string;
67
+ declare function toDateTimeHourMinute(value: string): string;
68
+ declare function ddmmyyToSlashDate(value: string): string;
69
+
70
+ /**
71
+ * Konversi snake_case ke Title Case With Spaces.
72
+ * @param {string} snakeStr - Snake case string
73
+ * @returns {string} Title case with spaces
74
+ *
75
+ * @example
76
+ * snakeToCamelWithSpace("hello_world") // "Hello World"
77
+ * snakeToCamelWithSpace("user_full_name") // "User Full Name"
78
+ */
79
+ declare function snakeToCamelWithSpace(snakeStr: string): string;
80
+ /**
81
+ * Cek apakah target string mengandung salah satu dari values.
82
+ * @param {string} targetStr - String yang akan dicek
83
+ * @param {string[]} values - Array of substrings to match
84
+ * @returns {boolean} True jika salah satu value ditemukan
85
+ *
86
+ * @example
87
+ * matchWiths("hello world", ["hello", "foo"]) // true
88
+ * matchWiths("hello world", ["foo", "bar"]) // false
89
+ */
90
+ declare function matchWiths(targetStr: string, values?: string[]): boolean;
91
+ declare function formatResponseDesc$1(desc: string): string;
92
+ declare function titleCase$1(str: string): string;
93
+ declare function stringToBoolean$1(str: string): boolean | undefined;
94
+ declare function maskString(value: string, type: string): string;
95
+
96
+ declare function parseJSON(value: any): any;
97
+ declare function jsonToStringLimiter(value?: any): any;
98
+ declare function errorState(name: any, errors: any): any;
99
+ declare function ascendingStringify(obj: any): any;
100
+
101
+ declare function checkRoleUser(roles: any, listRole: any): boolean;
102
+ declare function toggleUsingDummyWbenchEndpoint(status: any): boolean;
103
+
104
+ declare const NOT_AUTHORIZE_RESPONSE_CODE: string[];
105
+ declare const PUBLIC_PATHS: string[];
106
+ declare const COOKIE_MAX_SIZE: 2000;
107
+ declare const CLIENT_PUBLIC_API_ROUTES: string[];
108
+ declare const CLIENT_ALLOWED_ORIGINS: (string | RegExp)[];
109
+
110
+ declare function disableFormElements(selector: any): void;
111
+ declare function disableFormBuilder(fields: any, roleAccess: any): any;
112
+
113
+ /**
114
+ * Cek apakah responseCode termasuk exception.
115
+ * @param {string} responseCode - Response code dari API
116
+ * @returns {boolean} True jika code ada di daftar exception
117
+ *
118
+ * @example
119
+ * isExceptionCode("00") // false (success)
120
+ * isExceptionCode("X0") // true (header exception)
121
+ * isExceptionCode("02") // true (not found)
122
+ */
123
+ declare function isExceptionCode(responseCode: string): boolean;
124
+ /**
125
+ * Get human-readable message dari exception code.
126
+ * @param {string} responseCode - Response code dari API
127
+ * @returns {string} Exception message
128
+ *
129
+ * @example
130
+ * getExceptionMessage("X1") // "Access denied"
131
+ * getExceptionMessage("99") // "Internal system error"
132
+ * getExceptionMessage("unknown") // "An unexpected error occurred"
133
+ */
134
+ declare function getExceptionMessage(responseCode: string): string;
135
+ /**
136
+ * Exception Utilities
137
+ *
138
+ * Standardized exception codes dan ApiException class untuk handling error dari backend API.
139
+ */
140
+ declare const HEADER_EXCEPTION: "X0";
141
+ declare const ACCESS_EXCEPTION: "X1";
142
+ declare const PARAMETER_EXCEPTION: "01";
143
+ declare const NOTFOUND_EXCEPTION: "02";
144
+ declare const INVALIDRULE_EXCEPTION: "03";
145
+ declare const THIRDPARTY_EXCEPTION: "04";
146
+ declare const WAITING_EXCEPTION: "05";
147
+ declare const UNSUPPORTED_EXCEPTION: "06";
148
+ declare const RUNTIME_EXCEPTION: "99";
149
+ declare const EXCEPTION_MESSAGES: {
150
+ X0: string;
151
+ X1: string;
152
+ "01": string;
153
+ "02": string;
154
+ "03": string;
155
+ "04": string;
156
+ "05": string;
157
+ "06": string;
158
+ "99": string;
159
+ };
160
+ /**
161
+ * Custom exception class untuk API errors.
162
+ * Menyimpan responseCode dan responseDesc dari backend.
163
+ *
164
+ * @example
165
+ * throw new ApiException("02", "Prakarsa tidak ditemukan");
166
+ *
167
+ * @example
168
+ * // Tanpa custom message — pakai default dari EXCEPTION_MESSAGES
169
+ * throw new ApiException("X1");
170
+ * // Error: [X1] Access denied
171
+ */
172
+ declare class ApiException extends Error {
173
+ constructor(responseCode: any, responseDesc: any);
174
+ responseCode: any;
175
+ responseDesc: any;
176
+ }
177
+
178
+ declare function dashedAccount(value: any): any;
179
+ declare function dashedNPWP(value: any): any;
180
+ declare function formatCurrency(value: any, country?: string, curr?: string, minFrac?: number, maxFrac?: number): string;
181
+ declare function formatResponseDesc(desc: any): any;
182
+ declare function formatNominal(value: any, locale?: string, minFrac?: number, maxFrac?: number, commaSeparator?: string): any;
183
+ declare function titleCase(str: any): any;
184
+ declare function stringToBoolean(str: any): boolean;
185
+
186
+ export { ACCESS_EXCEPTION, ApiException, CLIENT_ALLOWED_ORIGINS, CLIENT_PUBLIC_API_ROUTES, COOKIE_MAX_SIZE, EXCEPTION_MESSAGES, HEADER_EXCEPTION, INVALIDRULE_EXCEPTION, NOTFOUND_EXCEPTION, NOT_AUTHORIZE_RESPONSE_CODE, PARAMETER_EXCEPTION, PUBLIC_PATHS, RUNTIME_EXCEPTION, THIRDPARTY_EXCEPTION, UNSUPPORTED_EXCEPTION, WAITING_EXCEPTION, ascendingStringify, callAsset, checkRoleUser, dashedAccount, dashedNPWP, dateFirstSlashToYearFirstDash, ddmmyyToSlashDate, disableFormBuilder, disableFormElements, errorState, formatAccountNumber, formatCurrency$1 as formatCurrency, formatCurrency as formatCurrencyLegacy, formatDateToDDMMYYYY, formatDateToDDSlashMMSlashYYYY, formatDigit, formatNPWP, formatNominal$1 as formatNominal, formatNominal as formatNominalLegacy, formatResponseDesc$1 as formatResponseDesc, formatResponseDesc as formatResponseDescLegacy, formatRupiah, generateVcifId, getExceptionMessage, getLocalStorageItem, getTipeBankKorporasi, isExceptionCode, jsonToStringLimiter, maskString, matchWiths, parseJSON, sevenDigitToDateFirstDash, sevenDigitToDateFirstSlash, sevenDigitToYearFirstDash, snakeToCamelWithSpace, stringToBoolean$1 as stringToBoolean, stringToBoolean as stringToBooleanLegacy, titleCase$1 as titleCase, titleCase as titleCaseLegacy, toDateFirstSlash, toDateTimeHourMinute, toYearFirstDash, toggleUsingDummyWbenchEndpoint, yearFirstDashToDateFirstDash, yearFirstDashToDateFirstSlash };
@@ -0,0 +1,477 @@
1
+ "use client";
2
+ export { ascendingStringify, callAsset, errorState, jsonToStringLimiter, parseJSON } from '../chunk-UFE7HFT2.mjs';
3
+ import { __spreadProps, __spreadValues } from '../chunk-YOSPWY5K.mjs';
4
+
5
+ // src/utils/formatters/account.js
6
+ function formatAccountNumber(value) {
7
+ if (!value) return "";
8
+ const filteredValue = value.toString().replace(/[^0-9]/g, "");
9
+ if (filteredValue.length > 14) {
10
+ return filteredValue.replace(
11
+ /(\d{4})(\d{2})(\d{6})(\d{2})(\d{1})/,
12
+ "$1-$2-$3-$4-$5"
13
+ );
14
+ } else if (filteredValue.length > 12) {
15
+ return filteredValue.replace(
16
+ /(\d{4})(\d{2})(\d{6})(\d{1})/,
17
+ "$1-$2-$3-$4"
18
+ );
19
+ } else if (filteredValue.length > 6) {
20
+ return filteredValue.replace(
21
+ /(\d{4})(\d{2})(\d{1})/,
22
+ "$1-$2-$3"
23
+ );
24
+ } else if (filteredValue.length > 4) {
25
+ return filteredValue.replace(/(\d{4})(\d{1})/, "$1-$2");
26
+ }
27
+ return filteredValue;
28
+ }
29
+ function formatNPWP(value) {
30
+ if (!value) return "";
31
+ const filteredValue = value.toString().replace(/\D/g, "");
32
+ if (filteredValue.length > 15) {
33
+ return filteredValue.replace(
34
+ /(\d{2})(\d{3})(\d{3})(\d{1})(\d{3})(\d{4})/,
35
+ "$1.$2.$3.$4-$5.$6"
36
+ );
37
+ } else if (filteredValue.length > 12) {
38
+ return filteredValue.replace(
39
+ /(\d{2})(\d{3})(\d{3})(\d{1})(\d{3})/,
40
+ "$1.$2.$3.$4-$5"
41
+ );
42
+ } else if (filteredValue.length > 9) {
43
+ return filteredValue.replace(
44
+ /(\d{2})(\d{3})(\d{3})(\d{1})/,
45
+ "$1.$2.$3.$4"
46
+ );
47
+ } else if (filteredValue.length > 6) {
48
+ return filteredValue.replace(
49
+ /(\d{2})(\d{3})(\d{1})/,
50
+ "$1.$2.$3"
51
+ );
52
+ } else if (filteredValue.length > 2) {
53
+ return filteredValue.replace(
54
+ /(\d{2})(\d{3})/,
55
+ "$1.$2"
56
+ );
57
+ }
58
+ return filteredValue;
59
+ }
60
+
61
+ // src/utils/formatters/currency.js
62
+ var formatCurrency = (value, {
63
+ locale = "id-ID",
64
+ currency = "IDR",
65
+ minFractionDigits = 0,
66
+ maxFractionDigits = 0
67
+ } = {}) => {
68
+ if (value === void 0 || value === null) return "";
69
+ const num = Number(value);
70
+ if (isNaN(num)) return String(value);
71
+ const formattedValue = new Intl.NumberFormat(locale, {
72
+ style: "currency",
73
+ currency,
74
+ minimumFractionDigits: minFractionDigits,
75
+ maximumFractionDigits: maxFractionDigits
76
+ }).format(num);
77
+ return formattedValue.replace(/\s/g, "");
78
+ };
79
+ var formatRupiah = (value) => {
80
+ return formatCurrency(value);
81
+ };
82
+ var formatNominal = (value, {
83
+ locale = "id-ID",
84
+ minFractionDigits = 0,
85
+ maxFractionDigits = 0,
86
+ decimalSeparator = ","
87
+ } = {}) => {
88
+ if (value === void 0 || value === null || value === "") return "";
89
+ let numberValue;
90
+ if (typeof value === "number") {
91
+ numberValue = value;
92
+ } else if (typeof value === "string") {
93
+ if (value.includes(",")) {
94
+ numberValue = Number(value.replace(/\./g, "").replace(",", "."));
95
+ } else {
96
+ numberValue = Number(value);
97
+ }
98
+ } else {
99
+ return String(value);
100
+ }
101
+ if (isNaN(numberValue)) return String(value);
102
+ const formatted = numberValue.toLocaleString(locale, {
103
+ minimumFractionDigits: minFractionDigits,
104
+ maximumFractionDigits: maxFractionDigits
105
+ });
106
+ return formatted.replace(/,/g, decimalSeparator);
107
+ };
108
+ var formatDigit = (value) => {
109
+ const num = Number(value);
110
+ return new Intl.NumberFormat("id-ID", { minimumFractionDigits: 0 }).format(
111
+ num || 0
112
+ );
113
+ };
114
+
115
+ // src/utils/formatters/date.js
116
+ var toYearFirstDash = (value) => {
117
+ const date = new Date(value);
118
+ const year = date.getFullYear();
119
+ const month = String(date.getMonth() + 1).padStart(2, "0");
120
+ const day = String(date.getDate()).padStart(2, "0");
121
+ return `${year}-${month}-${day}`;
122
+ };
123
+ var toDateFirstSlash = (value) => {
124
+ const date = new Date(value);
125
+ const year = date.getFullYear();
126
+ const month = String(date.getMonth() + 1).padStart(2, "0");
127
+ const day = String(date.getDate()).padStart(2, "0");
128
+ return `${day}/${month}/${year}`;
129
+ };
130
+ var formatDateToDDSlashMMSlashYYYY = (date) => {
131
+ const day = String(date.getDate()).padStart(2, "0");
132
+ const month = String(date.getMonth() + 1).padStart(2, "0");
133
+ const year = date.getFullYear();
134
+ return `${day}/${month}/${year}`;
135
+ };
136
+ var formatDateToDDMMYYYY = (date) => {
137
+ const day = String(date.getDate()).padStart(2, "0");
138
+ const month = String(date.getMonth() + 1).padStart(2, "0");
139
+ const year = date.getFullYear();
140
+ return `${day}${month}${year}`;
141
+ };
142
+ var yearFirstDashToDateFirstDash = (value) => {
143
+ if (!value) return "";
144
+ const [year, month, day] = value.split("-");
145
+ return `${day}-${month}-${year}`;
146
+ };
147
+ var yearFirstDashToDateFirstSlash = (value) => {
148
+ if (!value) return "";
149
+ const parts = value.split("-");
150
+ if (parts.length === 3) {
151
+ const [year, month, day] = parts;
152
+ return `${day}/${month}/${year}`;
153
+ }
154
+ return value;
155
+ };
156
+ var dateFirstSlashToYearFirstDash = (value) => {
157
+ if (!value) return "";
158
+ const [day, month, year] = value.split("/");
159
+ return `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`;
160
+ };
161
+ var sevenDigitToDateFirstSlash = (value) => {
162
+ if (!value) return "";
163
+ const actualDate = value.substring(1);
164
+ const day = actualDate.substring(0, 2);
165
+ const month = actualDate.substring(2, 4);
166
+ const yearLastTwoDigits = actualDate.substring(4, 8);
167
+ const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
168
+ const year = yearPrefix + yearLastTwoDigits;
169
+ return `${day}/${month}/${year}`;
170
+ };
171
+ var sevenDigitToYearFirstDash = (value) => {
172
+ if (!value) return "";
173
+ const actualDate = value.substring(1);
174
+ const day = actualDate.slice(0, 2);
175
+ const month = actualDate.slice(2, 4);
176
+ const yearLastTwoDigits = actualDate.slice(4, 8);
177
+ const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
178
+ const year = yearPrefix + yearLastTwoDigits;
179
+ return `${year}-${month}-${day}`;
180
+ };
181
+ var sevenDigitToDateFirstDash = (value) => {
182
+ if (!value) return "";
183
+ const actualDate = value.substring(1);
184
+ const day = actualDate.slice(0, 2);
185
+ const month = actualDate.slice(2, 4);
186
+ const yearLastTwoDigits = actualDate.slice(4, 8);
187
+ const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? "19" : "20";
188
+ const year = yearPrefix + yearLastTwoDigits;
189
+ return `${day}-${month}-${year}`;
190
+ };
191
+ var toDateTimeHourMinute = (value) => {
192
+ if (!value) return "";
193
+ const date = new Date(value);
194
+ const day = String(date.getDate()).padStart(2, "0");
195
+ const month = String(date.getMonth() + 1).padStart(2, "0");
196
+ const year = date.getFullYear();
197
+ const hours = String(date.getHours()).padStart(2, "0");
198
+ const minutes = String(date.getMinutes()).padStart(2, "0");
199
+ return `${day}-${month}-${year} ${hours}:${minutes}`;
200
+ };
201
+ var ddmmyyToSlashDate = (value) => {
202
+ if (!value || value.length !== 6) return "";
203
+ const day = value.substring(0, 2);
204
+ const month = value.substring(2, 4);
205
+ const yearSuffix = value.substring(4, 6);
206
+ const year = parseInt(yearSuffix, 10) >= 70 ? "19" + yearSuffix : "20" + yearSuffix;
207
+ return `${day}/${month}/${year}`;
208
+ };
209
+
210
+ // src/utils/formatters/string.js
211
+ var formatResponseDesc = (desc) => {
212
+ if (!desc) return "";
213
+ return desc.replace(/_(\w)/g, (_match, p1) => " " + p1.toUpperCase()).replace(/brispot/gi, "BRISPOT");
214
+ };
215
+ var titleCase = (str) => {
216
+ if (!str) return "";
217
+ return str.toLowerCase().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
218
+ };
219
+ function snakeToCamelWithSpace(snakeStr) {
220
+ if (!snakeStr) return "";
221
+ return snakeStr.toLowerCase().replace(/_([a-z])/g, (_match, letter) => ` ${letter.toUpperCase()}`).replace(/^([a-z])/, (_, letter) => letter.toUpperCase());
222
+ }
223
+ var stringToBoolean = (str) => {
224
+ if (str === "true" || str === "false") {
225
+ return str === "true";
226
+ }
227
+ return void 0;
228
+ };
229
+ function matchWiths(targetStr, values = []) {
230
+ if (!targetStr) return false;
231
+ return values.some((v) => targetStr.includes(v));
232
+ }
233
+ var maskString = (value, type) => {
234
+ if (!value) return "";
235
+ const tempArr = value.split("");
236
+ let len = tempArr.length - 3;
237
+ if (type === "email") {
238
+ len = tempArr.indexOf("@");
239
+ }
240
+ tempArr.splice(3 - tempArr.length, len - 3, ..."*".repeat(len - 3).split(""));
241
+ return tempArr.join("");
242
+ };
243
+
244
+ // src/utils/booleanUtils.js
245
+ var checkRoleUser = (roles, listRole) => {
246
+ let result = false;
247
+ if (Array.isArray(roles) && Array.isArray(listRole)) {
248
+ if (roles.length !== 0 && listRole.length !== 0) {
249
+ for (let data of roles) {
250
+ if (listRole.includes(data)) {
251
+ result = true;
252
+ }
253
+ }
254
+ }
255
+ }
256
+ return result;
257
+ };
258
+ var toggleUsingDummyWbenchEndpoint = (status) => {
259
+ return status === true;
260
+ };
261
+
262
+ // src/utils/constants.js
263
+ var NOT_AUTHORIZE_RESPONSE_CODE = ["X0", "X1", "X2"];
264
+ var PUBLIC_PATHS = ["/auth/v1/login"];
265
+ var COOKIE_MAX_SIZE = 2e3;
266
+ var CLIENT_PUBLIC_API_ROUTES = [
267
+ "/api/auth/login",
268
+ "/api/auth/requestOtp",
269
+ "/api/auth/logout"
270
+ ];
271
+ var CLIENT_ALLOWED_ORIGINS = [
272
+ "http://localhost:3000",
273
+ "http://localhost:3001",
274
+ "http://127.0.0.1:3000",
275
+ "http://127.0.0.1:3001",
276
+ /\.bri\.co\.id$/
277
+ ];
278
+
279
+ // src/utils/disableFormElements.js
280
+ var disableFormElements = (selector) => {
281
+ const formElements = document.querySelectorAll(selector);
282
+ formElements.forEach((element) => {
283
+ element.disabled = true;
284
+ element.readOnly = true;
285
+ });
286
+ };
287
+ var disableFormBuilder = (fields, roleAccess) => {
288
+ return fields.map((field) => {
289
+ if (!field) return null;
290
+ return __spreadProps(__spreadValues({}, field), {
291
+ isDisabled: roleAccess ? true : field.isDisabled
292
+ });
293
+ });
294
+ };
295
+
296
+ // src/utils/generateTimestamp.js
297
+ function generateVcifId() {
298
+ const timestamp = Date.now();
299
+ return `VCIF${timestamp}`;
300
+ }
301
+
302
+ // src/utils/localStorage.js
303
+ function getLocalStorageItem(key) {
304
+ const value = localStorage.getItem(key);
305
+ try {
306
+ return JSON.parse(value);
307
+ } catch (err) {
308
+ return value;
309
+ }
310
+ }
311
+
312
+ // src/utils/tipeBank.js
313
+ var getTipeBankKorporasi = (data) => {
314
+ var _a, _b;
315
+ const adaInduk = data == null ? void 0 : data.some((item) => item.status_perusahaan === "Induk");
316
+ const dataInduk = data == null ? void 0 : data.filter((item) => item.status_perusahaan === "Induk");
317
+ let tipeBank = "";
318
+ if (adaInduk) {
319
+ tipeBank = (_a = dataInduk[0]) == null ? void 0 : _a.tipe_bank;
320
+ } else {
321
+ tipeBank = ((_b = data == null ? void 0 : data.find((item) => item.tipe_bank === "B")) == null ? void 0 : _b.tipe_bank) || "A";
322
+ }
323
+ return tipeBank;
324
+ };
325
+
326
+ // src/utils/exception.js
327
+ var HEADER_EXCEPTION = "X0";
328
+ var ACCESS_EXCEPTION = "X1";
329
+ var PARAMETER_EXCEPTION = "01";
330
+ var NOTFOUND_EXCEPTION = "02";
331
+ var INVALIDRULE_EXCEPTION = "03";
332
+ var THIRDPARTY_EXCEPTION = "04";
333
+ var WAITING_EXCEPTION = "05";
334
+ var UNSUPPORTED_EXCEPTION = "06";
335
+ var RUNTIME_EXCEPTION = "99";
336
+ var EXCEPTION_MESSAGES = {
337
+ [HEADER_EXCEPTION]: "Invalid request header",
338
+ [ACCESS_EXCEPTION]: "Access denied",
339
+ [PARAMETER_EXCEPTION]: "Invalid parameter",
340
+ [NOTFOUND_EXCEPTION]: "Data not found",
341
+ [INVALIDRULE_EXCEPTION]: "Validation rule failed",
342
+ [THIRDPARTY_EXCEPTION]: "Third-party service failure",
343
+ [WAITING_EXCEPTION]: "Process in progress, please wait",
344
+ [UNSUPPORTED_EXCEPTION]: "Unsupported operation",
345
+ [RUNTIME_EXCEPTION]: "Internal system error"
346
+ };
347
+ var ApiException = class extends Error {
348
+ constructor(responseCode, responseDesc) {
349
+ const desc = responseDesc || EXCEPTION_MESSAGES[responseCode] || "An unexpected error occurred";
350
+ super(`[${responseCode}] ${desc}`);
351
+ this.name = "ApiException";
352
+ this.responseCode = responseCode;
353
+ this.responseDesc = desc;
354
+ }
355
+ };
356
+ function isExceptionCode(responseCode) {
357
+ return Object.keys(EXCEPTION_MESSAGES).includes(responseCode);
358
+ }
359
+ function getExceptionMessage(responseCode) {
360
+ return EXCEPTION_MESSAGES[responseCode] || "An unexpected error occurred";
361
+ }
362
+
363
+ // src/utils/formatString.js
364
+ var formatCurrency2 = (value, country = "id-ID", curr = "IDR", minFrac = 0, maxFrac = 0) => {
365
+ if (value === void 0 || value === null) return "";
366
+ let formattedValue = new Intl.NumberFormat(country, {
367
+ style: "currency",
368
+ currency: curr,
369
+ minimumFractionDigits: minFrac,
370
+ maximumFractionDigits: maxFrac
371
+ }).format(value);
372
+ return formattedValue.replace(/\s/g, "");
373
+ };
374
+ var formatResponseDesc2 = (desc) => {
375
+ return desc.replace(/_(\w)/g, (_match, p1) => " " + p1.toUpperCase()).replace(/brispot/gi, "BRISPOT");
376
+ };
377
+ function dashedAccount(value) {
378
+ const filteredValue = value == null ? void 0 : value.replace(
379
+ /[A-Za-z\s!@#$%^&*_+{}()=`"[\]:;<>,?~\\|\\/-]/g,
380
+ ""
381
+ );
382
+ if ((filteredValue == null ? void 0 : filteredValue.length) > 14) {
383
+ const dashedValue = filteredValue.replace(
384
+ /(\d{4})(\d{2})(\d{6})(\d{2})(\d{1})/g,
385
+ "$1-$2-$3-$4-$5"
386
+ );
387
+ return dashedValue != null ? dashedValue : "";
388
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 12) {
389
+ const dashedValue = filteredValue.replace(
390
+ /(\d{4})(\d{2})(\d{6})(\d{1})/g,
391
+ "$1-$2-$3-$4"
392
+ );
393
+ return dashedValue != null ? dashedValue : "";
394
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 6) {
395
+ const dashedValue = filteredValue.replace(
396
+ /(\d{4})(\d{2})(\d{1})/g,
397
+ "$1-$2-$3"
398
+ );
399
+ return dashedValue != null ? dashedValue : "";
400
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 4) {
401
+ const dashedValue = filteredValue.replace(/(\d{4})(\d{1})/g, "$1-$2");
402
+ return dashedValue != null ? dashedValue : "";
403
+ } else {
404
+ return filteredValue != null ? filteredValue : "";
405
+ }
406
+ }
407
+ var formatNominal2 = (value, locale = "id-ID", minFrac = 0, maxFrac = 0, commaSeparator = ",") => {
408
+ if (value === void 0 || value === null || value === "") return "";
409
+ let numberValue;
410
+ if (typeof value === "number") {
411
+ numberValue = value;
412
+ } else if (typeof value === "string") {
413
+ if (value.includes(",")) {
414
+ numberValue = Number(value.replace(/\./g, "").replace(",", "."));
415
+ } else {
416
+ numberValue = Number(value);
417
+ }
418
+ } else {
419
+ return value;
420
+ }
421
+ if (isNaN(numberValue)) return value;
422
+ const formatted = numberValue.toLocaleString(locale, {
423
+ minimumFractionDigits: minFrac,
424
+ maximumFractionDigits: maxFrac
425
+ });
426
+ return formatted.replace(/,/g, commaSeparator);
427
+ };
428
+ var titleCase2 = (str) => {
429
+ return str.toLowerCase().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join(" ");
430
+ };
431
+ var stringToBoolean2 = (str) => {
432
+ if (str === "true" || str === "false") {
433
+ return str === "true";
434
+ } else {
435
+ return;
436
+ }
437
+ };
438
+ function dashedNPWP(value) {
439
+ const filteredValue = value == null ? void 0 : value.replace(/[^\d]/g, "");
440
+ if ((filteredValue == null ? void 0 : filteredValue.length) > 15) {
441
+ const dashedValue = filteredValue.replace(
442
+ /(\d{2})(\d{3})(\d{3})(\d{1})(\d{3})(\d{4})/,
443
+ "$1.$2.$3.$4-$5.$6"
444
+ );
445
+ return dashedValue != null ? dashedValue : "";
446
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 12) {
447
+ const dashedValue = filteredValue.replace(
448
+ /(\d{2})(\d{3})(\d{3})(\d{1})(\d{3})/,
449
+ "$1.$2.$3.$4-$5"
450
+ );
451
+ return dashedValue != null ? dashedValue : "";
452
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 9) {
453
+ const dashedValue = filteredValue.replace(
454
+ /(\d{2})(\d{3})(\d{3})(\d{1})/,
455
+ "$1.$2.$3.$4"
456
+ );
457
+ return dashedValue != null ? dashedValue : "";
458
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 6) {
459
+ const dashedValue = filteredValue.replace(
460
+ /(\d{2})(\d{3})(\d{1})/,
461
+ "$1.$2.$3"
462
+ );
463
+ return dashedValue != null ? dashedValue : "";
464
+ } else if ((filteredValue == null ? void 0 : filteredValue.length) > 2) {
465
+ const dashedValue = filteredValue.replace(
466
+ /(\d{2})(\d{3})/,
467
+ "$1.$2"
468
+ );
469
+ return dashedValue != null ? dashedValue : "";
470
+ } else {
471
+ return filteredValue != null ? filteredValue : "";
472
+ }
473
+ }
474
+
475
+ export { ACCESS_EXCEPTION, ApiException, CLIENT_ALLOWED_ORIGINS, CLIENT_PUBLIC_API_ROUTES, COOKIE_MAX_SIZE, EXCEPTION_MESSAGES, HEADER_EXCEPTION, INVALIDRULE_EXCEPTION, NOTFOUND_EXCEPTION, NOT_AUTHORIZE_RESPONSE_CODE, PARAMETER_EXCEPTION, PUBLIC_PATHS, RUNTIME_EXCEPTION, THIRDPARTY_EXCEPTION, UNSUPPORTED_EXCEPTION, WAITING_EXCEPTION, checkRoleUser, dashedAccount, dashedNPWP, dateFirstSlashToYearFirstDash, ddmmyyToSlashDate, disableFormBuilder, disableFormElements, formatAccountNumber, formatCurrency, formatCurrency2 as formatCurrencyLegacy, formatDateToDDMMYYYY, formatDateToDDSlashMMSlashYYYY, formatDigit, formatNPWP, formatNominal, formatNominal2 as formatNominalLegacy, formatResponseDesc, formatResponseDesc2 as formatResponseDescLegacy, formatRupiah, generateVcifId, getExceptionMessage, getLocalStorageItem, getTipeBankKorporasi, isExceptionCode, maskString, matchWiths, sevenDigitToDateFirstDash, sevenDigitToDateFirstSlash, sevenDigitToYearFirstDash, snakeToCamelWithSpace, stringToBoolean, stringToBoolean2 as stringToBooleanLegacy, titleCase, titleCase2 as titleCaseLegacy, toDateFirstSlash, toDateTimeHourMinute, toYearFirstDash, toggleUsingDummyWbenchEndpoint, yearFirstDashToDateFirstDash, yearFirstDashToDateFirstSlash };
476
+ //# sourceMappingURL=index.mjs.map
477
+ //# sourceMappingURL=index.mjs.map