spotlibs-components 0.1.14 → 0.1.16

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.
@@ -0,0 +1,42 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function LayoutShell({ menuItems, username, fullname, currentPath, excludedRoutes, logoText, logoSrc, onLogout, onNavigate, children, }: {
4
+ menuItems?: any[];
5
+ username: any;
6
+ fullname: any;
7
+ currentPath?: string;
8
+ excludedRoutes?: string[];
9
+ logoText?: string;
10
+ logoSrc: any;
11
+ onLogout: any;
12
+ onNavigate: any;
13
+ children: any;
14
+ }): react_jsx_runtime.JSX.Element;
15
+
16
+ declare function AppSidebar({ menuItems, currentPath, logoText, onNavigate, }: {
17
+ menuItems?: any[];
18
+ currentPath?: string;
19
+ logoText?: string;
20
+ onNavigate: any;
21
+ }): react_jsx_runtime.JSX.Element;
22
+
23
+ declare function AppHeader({ username, fullname, logoSrc, onLogout, onNavigate }: {
24
+ username: any;
25
+ fullname: any;
26
+ logoSrc: any;
27
+ onLogout: any;
28
+ onNavigate: any;
29
+ }): react_jsx_runtime.JSX.Element;
30
+
31
+ declare function Backdrop({ onClick }: {
32
+ onClick: any;
33
+ }): react_jsx_runtime.JSX.Element;
34
+
35
+ declare function parseAccessMenu(encryptedValue: any, secretKey: any): any;
36
+
37
+ declare function SidebarProvider({ children }: {
38
+ children: any;
39
+ }): react_jsx_runtime.JSX.Element;
40
+ declare function useSidebar(): any;
41
+
42
+ export { AppHeader, AppSidebar, Backdrop, LayoutShell, SidebarProvider, parseAccessMenu, useSidebar };
@@ -0,0 +1,5 @@
1
+ "use client";
2
+ export { AppHeader, AppSidebar, Backdrop, LayoutShell, SidebarProvider, parseAccessMenu, useSidebar } from '../chunk-G2BF4U5I.mjs';
3
+ import '../chunk-YOSPWY5K.mjs';
4
+ //# sourceMappingURL=index.mjs.map
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.mjs"}
@@ -0,0 +1,61 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ declare function FilePdfIcon({ color }: {
4
+ color: any;
5
+ }): react_jsx_runtime.JSX.Element;
6
+
7
+ declare function AnalisisRisikoKreditNasabahIcon(): react_jsx_runtime.JSX.Element;
8
+
9
+ declare function AppendixIcon(): react_jsx_runtime.JSX.Element;
10
+
11
+ declare function BgBuilding(): react_jsx_runtime.JSX.Element;
12
+
13
+ declare function BgPerson(): react_jsx_runtime.JSX.Element;
14
+
15
+ declare function ChecklistDokumenPaketKreditIcon(): react_jsx_runtime.JSX.Element;
16
+
17
+ declare function CreditRiskRatingIcon(): react_jsx_runtime.JSX.Element;
18
+
19
+ declare function DokumenPenjagaanIcon(): react_jsx_runtime.JSX.Element;
20
+
21
+ declare function InformasiKursIcon(): react_jsx_runtime.JSX.Element;
22
+
23
+ declare function InformasiNasabahIcon(): react_jsx_runtime.JSX.Element;
24
+
25
+ declare function MatriksRiskDanMitigationIcon(): react_jsx_runtime.JSX.Element;
26
+
27
+ declare function NotulenRapatPraKomiteIcon(): react_jsx_runtime.JSX.Element;
28
+
29
+ declare function OfferingLetterIcon(): react_jsx_runtime.JSX.Element;
30
+
31
+ declare function PengajuanDanFasilitasKreditIcon(): react_jsx_runtime.JSX.Element;
32
+
33
+ declare function ProfitabilitasDanHubunganNasabahIcon(): react_jsx_runtime.JSX.Element;
34
+
35
+ declare function RekomendasiPutusanIcon(): react_jsx_runtime.JSX.Element;
36
+
37
+ declare function RingkasanEksekutifIcon(): react_jsx_runtime.JSX.Element;
38
+
39
+ declare function DefaultAvatarIcon({ width, height, strokeColor, fillColor1, fillColor2, fillColor3, }: {
40
+ width?: string;
41
+ height?: string;
42
+ strokeColor?: string;
43
+ fillColor1?: string;
44
+ fillColor2?: string;
45
+ fillColor3?: string;
46
+ }): react_jsx_runtime.JSX.Element;
47
+
48
+ declare function DefaultImageIcon({ width, height, bgColor, fillColor, }: {
49
+ width?: string;
50
+ height?: string;
51
+ bgColor?: string;
52
+ fillColor?: string;
53
+ }): react_jsx_runtime.JSX.Element;
54
+
55
+ declare function RekeningEscrowIcon(): react_jsx_runtime.JSX.Element;
56
+
57
+ declare function RekeningOprasionalIcon(): react_jsx_runtime.JSX.Element;
58
+
59
+ declare function RekeningTujuanIcon(): react_jsx_runtime.JSX.Element;
60
+
61
+ export { AnalisisRisikoKreditNasabahIcon as A, BgBuilding as B, ChecklistDokumenPaketKreditIcon as C, DefaultAvatarIcon as D, FilePdfIcon as F, InformasiKursIcon as I, MatriksRiskDanMitigationIcon as M, NotulenRapatPraKomiteIcon as N, OfferingLetterIcon as O, PengajuanDanFasilitasKreditIcon as P, RekeningEscrowIcon as R, AppendixIcon as a, BgPerson as b, CreditRiskRatingIcon as c, DefaultImageIcon as d, DokumenPenjagaanIcon as e, InformasiNasabahIcon as f, ProfitabilitasDanHubunganNasabahIcon as g, RekeningOprasionalIcon as h, RekeningTujuanIcon as i, RekomendasiPutusanIcon as j, RingkasanEksekutifIcon as k };
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { ReactNode } from 'react';
3
3
  import { SxProps } from '@mui/material/styles';
4
- import { Control, RegisterOptions } from 'react-hook-form';
4
+ import { Control, RegisterOptions, UseFormReturn } from 'react-hook-form';
5
5
 
6
6
  interface BaseAlertProps {
7
7
  /** Alert color variant */
@@ -195,7 +195,9 @@ type TypographyVariant =
195
195
  | "header2_semibold"
196
196
  | "header2_bold"
197
197
  | "body1_regular"
198
+ | "body1_semibold"
198
199
  | "body2_regular"
200
+ | "body2_semibold"
199
201
  | "caption_regular";
200
202
 
201
203
  type TypographyColor =
@@ -1044,49 +1046,6 @@ declare function BaseTextArea(
1044
1046
  props: BaseTextAreaProps,
1045
1047
  ): React.ReactElement | null;
1046
1048
 
1047
- interface BaseModalProps {
1048
- open?: boolean;
1049
-
1050
- onClose?: () => void;
1051
- onConfirm?: () => void;
1052
- onCancel?: () => void;
1053
-
1054
- icon?: React.ReactNode;
1055
-
1056
- title?: React.ReactNode;
1057
- description?: React.ReactNode;
1058
-
1059
- children?: React.ReactNode;
1060
- footer?: React.ReactNode;
1061
-
1062
- showConfirm?: boolean;
1063
- showCancel?: boolean;
1064
-
1065
- confirmLabel?: string;
1066
- cancelLabel?: string;
1067
-
1068
- confirmVariant?: string;
1069
- cancelVariant?: string;
1070
-
1071
- confirmColor?: string;
1072
- cancelColor?: string;
1073
-
1074
- confirmSize?: string;
1075
- cancelSize?: string;
1076
-
1077
- align?: "left" | "center" | "right";
1078
-
1079
- modalWidth?: string;
1080
-
1081
- showCloseIcon?: boolean;
1082
-
1083
- [key: string]: any;
1084
- }
1085
-
1086
- declare function BaseModal(
1087
- props: BaseModalProps,
1088
- ): React.ReactElement | null;
1089
-
1090
1049
  interface BaseModalAlertShowOptions {
1091
1050
  /** Icon type preset or custom image path */
1092
1051
  icon?: "success" | "error" | "info" | "warning" | "confirm" | string;
@@ -1307,4 +1266,82 @@ declare function BaseModalOTP(
1307
1266
  props: BaseModalOTPProps,
1308
1267
  ): React.ReactElement | null;
1309
1268
 
1310
- export { type BaseDatePickerProps as $, RadiusToken as A, BaseAlert as B, CONTENT_SPACING_TOKENS as C, DerivedColor as D, ShadowToken as E, Spacing as F, SpacingToken as G, type BaseAlertProps as H, type BaseButtonProps as I, type BaseCardProps as J, type BaseCheckboxOption as K, type BaseCheckboxProps as L, type BaseDatatableAlign as M, type BaseDatatableColumn as N, type BaseDatatableFeatures as O, PrimitiveColor as P, type BaseDatatableHeaderCell as Q, Radius as R, Shadow as S, TextFieldUpload as T, type BaseDatatableLayout as U, VariantStyles as V, type BaseDatatablePagination as W, type BaseDatatableProps as X, type BaseDatatableSelection as Y, type BaseDatatableSortPayload as Z, type BaseDatatableSortState as _, BaseButton as a, type BaseDropdownProps as a0, type BaseDropzoneProps as a1, type BaseModalAlertDialogProps as a2, type BaseModalAlertShowOptions as a3, type BaseModalLoadingDialogProps as a4, type BaseModalOTPProps as a5, type BaseModalPopupProps as a6, type BaseModalProps as a7, type BaseModalStepperProps as a8, type BaseModalStepperStep as a9, type BaseRadioButtonProps as aa, type BaseSkeletonProps as ab, type BaseSnackbarPosition as ac, type BaseSnackbarProps as ad, type BaseStepperDashboardStep as ae, type BaseStepperProps as af, type BaseStepperSimpleStep as ag, type BaseSwitchProps as ah, type BaseTextAreaProps as ai, type BaseTextFieldProps as aj, type ContentSpacingProps as ak, type DerivedColorType as al, type PrimitiveColorType as am, type RadiusLevel as an, type RadiusMap as ao, type RadiusTokenProps as ap, type ShadowElevation as aq, type ShadowLevel as ar, type ShadowMap as as, type ShadowTokenProps as at, type SpacingProps as au, type TextFieldUploadProps as av, type TypographyColor as aw, type TypographyProps as ax, type TypographyVariant as ay, BaseCard as b, BaseCheckbox as c, BaseDatatable as d, BaseDatePicker as e, BaseDropdown as f, BaseDropzone as g, BaseModal as h, BaseModalAlert as i, BaseModalAlertDialog as j, BaseModalAlertProvider as k, BaseModalLoading as l, BaseModalLoadingDialog as m, BaseModalLoadingProvider as n, BaseModalOTP as o, BaseModalPopup as p, BaseModalStepper as q, BaseRadioButton as r, BaseSkeleton as s, BaseSnackbar as t, BaseStepper as u, BaseSwitch as v, BaseTextArea as w, BaseTextField as x, BaseTypography as y, ContentSpacing as z };
1269
+ declare const FORM_TYPE: {
1270
+ TEXT_FIELD: "text-field";
1271
+ TEXT_AREA: "text-area";
1272
+ TEXT_FIELD_UPLOAD: "text-field-upload";
1273
+ DATE_PICKER: "date-picker";
1274
+ DATETIME_PICKER: "datetime-picker";
1275
+ TIME_PICKER: "time-picker";
1276
+ YEAR_PICKER: "year-picker";
1277
+ MONTH_PICKER: "month-picker";
1278
+ DAY_PICKER: "day-picker";
1279
+ DATE_RANGE: "date-range";
1280
+ DROPDOWN: "dropdown";
1281
+ DROPDOWN_ASYNC: "dropdown-async";
1282
+ CHECKBOX: "checkbox";
1283
+ RADIO: "radio";
1284
+ CUSTOM: "custom";
1285
+ };
1286
+
1287
+ interface FormBuilderFieldConfig {
1288
+ type: string;
1289
+ name?: string;
1290
+ title?: string;
1291
+ /** Per-field layout override */
1292
+ layout?: "vertical" | "horizontal";
1293
+ /** Per-field label width override */
1294
+ labelWidth?: string;
1295
+ /** Per-field divider override */
1296
+ divider?: boolean;
1297
+ [key: string]: any;
1298
+ }
1299
+
1300
+ interface FormBuilderProps<T = any> {
1301
+ /** MUI sx overrides for form element */
1302
+ sx?: SxProps;
1303
+ /** Array of field configurations */
1304
+ fields?: FormBuilderFieldConfig[];
1305
+ /** react-hook-form methods */
1306
+ methods?: UseFormReturn<T>;
1307
+ /** Form submit handler */
1308
+ onSubmit?: (data: T) => void;
1309
+ /** Gap between fields in px. Default: 16 */
1310
+ gap?: number;
1311
+ /** Number of grid columns. Default: 1 */
1312
+ columns?: number;
1313
+ /** Field layout direction. Default: "vertical" */
1314
+ layout?: "vertical" | "horizontal";
1315
+ /** Label width for horizontal layout. Default: "30%" */
1316
+ labelWidth?: string;
1317
+ /** Show border-bottom between fields. Default: false */
1318
+ divider?: boolean;
1319
+ /** CSS class for form element */
1320
+ className?: string;
1321
+ [key: string]: any;
1322
+ }
1323
+
1324
+ interface SubFormBuilderProps<T = any> {
1325
+ /** MUI sx overrides */
1326
+ sx?: SxProps;
1327
+ /** Array of field configurations */
1328
+ fields?: FormBuilderFieldConfig[];
1329
+ /** react-hook-form methods */
1330
+ methods?: UseFormReturn<T>;
1331
+ /** Gap between fields in px. Default: 16 */
1332
+ gap?: number;
1333
+ /** Number of grid columns. Default: 1 */
1334
+ columns?: number;
1335
+ /** Field layout direction. Default: "vertical" */
1336
+ layout?: "vertical" | "horizontal";
1337
+ /** Label width for horizontal layout. Default: "30%" */
1338
+ labelWidth?: string;
1339
+ /** Show border-bottom between fields. Default: false */
1340
+ divider?: boolean;
1341
+ [key: string]: any;
1342
+ }
1343
+
1344
+ declare function FormBuilder<T = any>(props: FormBuilderProps<T>): React.ReactElement;
1345
+ declare function SubFormBuilder<T = any>(props: SubFormBuilderProps<T>): React.ReactElement;
1346
+
1347
+ export { type BaseDatatableSortPayload as $, RadiusToken as A, BaseAlert as B, CONTENT_SPACING_TOKENS as C, DerivedColor as D, ShadowToken as E, FORM_TYPE as F, Spacing as G, SpacingToken as H, SubFormBuilder as I, type BaseAlertProps as J, type BaseButtonProps as K, type BaseCardProps as L, type BaseCheckboxOption as M, type BaseCheckboxProps as N, type BaseDatatableAlign as O, PrimitiveColor as P, type BaseDatatableColumn as Q, Radius as R, Shadow as S, TextFieldUpload as T, type BaseDatatableFeatures as U, VariantStyles as V, type BaseDatatableHeaderCell as W, type BaseDatatableLayout as X, type BaseDatatablePagination as Y, type BaseDatatableProps as Z, type BaseDatatableSelection as _, BaseButton as a, type BaseDatatableSortState as a0, type BaseDatePickerProps as a1, type BaseDropdownProps as a2, type BaseDropzoneProps as a3, type BaseModalAlertDialogProps as a4, type BaseModalAlertShowOptions as a5, type BaseModalLoadingDialogProps as a6, type BaseModalOTPProps as a7, type BaseModalPopupProps as a8, type BaseModalStepperProps as a9, type TypographyColor as aA, type TypographyProps as aB, type TypographyVariant as aC, type BaseModalStepperStep as aa, type BaseRadioButtonProps as ab, type BaseSkeletonProps as ac, type BaseSnackbarPosition as ad, type BaseSnackbarProps as ae, type BaseStepperDashboardStep as af, type BaseStepperProps as ag, type BaseStepperSimpleStep as ah, type BaseSwitchProps as ai, type BaseTextAreaProps as aj, type BaseTextFieldProps as ak, type ContentSpacingProps as al, type DerivedColorType as am, type FormBuilderFieldConfig as an, type FormBuilderProps as ao, type PrimitiveColorType as ap, type RadiusLevel as aq, type RadiusMap as ar, type RadiusTokenProps as as, type ShadowElevation as at, type ShadowLevel as au, type ShadowMap as av, type ShadowTokenProps as aw, type SpacingProps as ax, type SubFormBuilderProps as ay, type TextFieldUploadProps as az, BaseCard as b, BaseCheckbox as c, BaseDatatable as d, BaseDatePicker as e, BaseDropdown as f, BaseDropzone as g, BaseModalAlert as h, BaseModalAlertDialog as i, BaseModalAlertProvider as j, BaseModalLoading as k, BaseModalLoadingDialog as l, BaseModalLoadingProvider as m, BaseModalOTP as n, BaseModalPopup as o, BaseModalStepper as p, BaseRadioButton as q, BaseSkeleton as r, BaseSnackbar as s, BaseStepper as t, BaseSwitch as u, BaseTextArea as v, BaseTextField as w, BaseTypography as x, ContentSpacing as y, FormBuilder as z };
package/dist/types.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- export { H as BaseAlertProps, I as BaseButtonProps, J as BaseCardProps, K as BaseCheckboxOption, L as BaseCheckboxProps, M as BaseDatatableAlign, N as BaseDatatableColumn, O as BaseDatatableFeatures, Q as BaseDatatableHeaderCell, U as BaseDatatableLayout, W as BaseDatatablePagination, X as BaseDatatableProps, Y as BaseDatatableSelection, Z as BaseDatatableSortPayload, _ as BaseDatatableSortState, $ as BaseDatePickerProps, a0 as BaseDropdownProps, a1 as BaseDropzoneProps, a2 as BaseModalAlertDialogProps, a3 as BaseModalAlertShowOptions, a4 as BaseModalLoadingDialogProps, a5 as BaseModalOTPProps, a6 as BaseModalPopupProps, a7 as BaseModalProps, a8 as BaseModalStepperProps, a9 as BaseModalStepperStep, aa as BaseRadioButtonProps, ab as BaseSkeletonProps, ac as BaseSnackbarPosition, ad as BaseSnackbarProps, ae as BaseStepperDashboardStep, af as BaseStepperProps, ag as BaseStepperSimpleStep, ah as BaseSwitchProps, ai as BaseTextAreaProps, aj as BaseTextFieldProps, ak as ContentSpacingProps, al as DerivedColorType, am as PrimitiveColorType, an as RadiusLevel, ao as RadiusMap, ap as RadiusTokenProps, aq as ShadowElevation, ar as ShadowLevel, as as ShadowMap, at as ShadowTokenProps, au as SpacingProps, av as TextFieldUploadProps, aw as TypographyColor, ax as TypographyProps, ay as TypographyVariant } from './types-BtwscYRX.mjs';
1
+ export { J as BaseAlertProps, K as BaseButtonProps, L as BaseCardProps, M as BaseCheckboxOption, N as BaseCheckboxProps, O as BaseDatatableAlign, Q as BaseDatatableColumn, U as BaseDatatableFeatures, W as BaseDatatableHeaderCell, X as BaseDatatableLayout, Y as BaseDatatablePagination, Z as BaseDatatableProps, _ as BaseDatatableSelection, $ as BaseDatatableSortPayload, a0 as BaseDatatableSortState, a1 as BaseDatePickerProps, a2 as BaseDropdownProps, a3 as BaseDropzoneProps, a4 as BaseModalAlertDialogProps, a5 as BaseModalAlertShowOptions, a6 as BaseModalLoadingDialogProps, a7 as BaseModalOTPProps, a8 as BaseModalPopupProps, a9 as BaseModalStepperProps, aa as BaseModalStepperStep, ab as BaseRadioButtonProps, ac as BaseSkeletonProps, ad as BaseSnackbarPosition, ae as BaseSnackbarProps, af as BaseStepperDashboardStep, ag as BaseStepperProps, ah as BaseStepperSimpleStep, ai as BaseSwitchProps, aj as BaseTextAreaProps, ak as BaseTextFieldProps, al as ContentSpacingProps, am as DerivedColorType, an as FormBuilderFieldConfig, ao as FormBuilderProps, ap as PrimitiveColorType, aq as RadiusLevel, ar as RadiusMap, as as RadiusTokenProps, at as ShadowElevation, au as ShadowLevel, av as ShadowMap, aw as ShadowTokenProps, ax as SpacingProps, ay as SubFormBuilderProps, az as TextFieldUploadProps, aA as TypographyColor, aB as TypographyProps, aC as TypographyVariant } from './types-D0cyG_RH.mjs';
2
2
  import 'react';
3
3
  import '@mui/material/styles';
4
4
  import 'react-hook-form';
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- export { ascendingStringify, callAsset, errorState, jsonToStringLimiter, parseJSON } from '../chunk-UFE7HFT2.mjs';
2
+ export { ascendingStringify, errorState, jsonToStringLimiter, parseJSON } from '../chunk-E6DKJIAE.mjs';
3
3
  import { __spreadProps, __spreadValues } from '../chunk-YOSPWY5K.mjs';
4
4
 
5
5
  // src/utils/formatters/account.js
@@ -241,6 +241,13 @@ var maskString = (value, type) => {
241
241
  return tempArr.join("");
242
242
  };
243
243
 
244
+ // src/utils/asset.js
245
+ var callAsset = (uri = "") => {
246
+ var _a;
247
+ const basePath = typeof window === "undefined" ? "" : ((_a = window.__NEXT_DATA__) == null ? void 0 : _a.assetPrefix) || process.env.NEXT_PUBLIC_BASE_PATH || "";
248
+ return `${basePath}${uri}`;
249
+ };
250
+
244
251
  // src/utils/booleanUtils.js
245
252
  var checkRoleUser = (roles, listRole) => {
246
253
  let result = false;
@@ -472,6 +479,6 @@ function dashedNPWP(value) {
472
479
  }
473
480
  }
474
481
 
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 };
482
+ 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, callAsset, 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
483
  //# sourceMappingURL=index.mjs.map
477
484
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/formatters/account.js","../../src/utils/formatters/currency.js","../../src/utils/formatters/date.js","../../src/utils/formatters/string.js","../../src/utils/booleanUtils.js","../../src/utils/constants.js","../../src/utils/disableFormElements.js","../../src/utils/generateTimestamp.js","../../src/utils/localStorage.js","../../src/utils/tipeBank.js","../../src/utils/exception.js","../../src/utils/formatString.js"],"names":["formatCurrency","formatResponseDesc","formatNominal","titleCase","stringToBoolean"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\r\n * Account & ID Number Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (dashedAccount, dashedNPWP)\r\n * - formatters.js (formatAccountNumber)\r\n * - stringUtils.js (rekeningFormatter, npwpFormatter)\r\n */\r\n\r\n/**\r\n * Format nomor rekening dengan dash separator.\r\n * Mendukung berbagai panjang nomor rekening (progressive formatting).\r\n * @param {string} value - Nomor rekening (bisa mengandung karakter non-numerik)\r\n * @returns {string} Nomor rekening terformat (e.g., \"0012-01-123456-01-1\")\r\n *\r\n * @example\r\n * formatAccountNumber(\"001201123456011\") // \"0012-01-123456-01-1\"\r\n * formatAccountNumber(\"00120112345601\") // \"0012-01-123456-01\"\r\n * formatAccountNumber(\"0012011\") // \"0012-01-1\"\r\n */\r\nexport function formatAccountNumber(value) {\r\n if (!value) return \"\";\r\n\r\n // Remove non-numeric characters\r\n const filteredValue = value\r\n .toString()\r\n .replace(/[^0-9]/g, \"\");\r\n\r\n if (filteredValue.length > 14) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{2})(\\d{1})/,\r\n \"$1-$2-$3-$4-$5\"\r\n );\r\n } else if (filteredValue.length > 12) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{1})/,\r\n \"$1-$2-$3-$4\"\r\n );\r\n } else if (filteredValue.length > 6) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{1})/,\r\n \"$1-$2-$3\"\r\n );\r\n } else if (filteredValue.length > 4) {\r\n return filteredValue.replace(/(\\d{4})(\\d{1})/, \"$1-$2\");\r\n }\r\n\r\n return filteredValue;\r\n}\r\n\r\n/**\r\n * Format nomor NPWP dengan dot dan dash separator.\r\n * Mendukung format NPWP 15 digit dan 16 digit (format baru).\r\n * @param {string} value - Nomor NPWP\r\n * @returns {string} NPWP terformat (e.g., \"01.234.567.8-901.234\")\r\n *\r\n * @example\r\n * formatNPWP(\"0123456789012345\") // \"01.234.567.8-901.2345\"\r\n * formatNPWP(\"012345678901234\") // \"01.234.567.8-901.234\"\r\n * formatNPWP(\"012345678\") // \"01.234.567.8\"\r\n */\r\nexport function formatNPWP(value) {\r\n if (!value) return \"\";\r\n\r\n // Remove non-numeric characters\r\n const filteredValue = value\r\n .toString()\r\n .replace(/\\D/g, \"\");\r\n\r\n if (filteredValue.length > 15) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})(\\d{4})/,\r\n \"$1.$2.$3.$4-$5.$6\"\r\n );\r\n } else if (filteredValue.length > 12) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})/,\r\n \"$1.$2.$3.$4-$5\"\r\n );\r\n } else if (filteredValue.length > 9) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3.$4\"\r\n );\r\n } else if (filteredValue.length > 6) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3\"\r\n );\r\n } else if (filteredValue.length > 2) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})/,\r\n \"$1.$2\"\r\n );\r\n }\r\n\r\n return filteredValue;\r\n}\r\n","/**\r\n * Currency Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (formatCurrency, formatNominal)\r\n * - formatCurrency.js (formatCurrencyRupiah)\r\n * - stringUtils.js (toCurrency, digitFormatter)\r\n */\r\n\r\n/**\r\n * Format angka ke format mata uang dengan locale dan currency yang bisa dikustomisasi.\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @param {object} options - Opsi formatting\r\n * @param {string} options.locale - Locale (default: \"id-ID\")\r\n * @param {string} options.currency - Kode mata uang (default: \"IDR\")\r\n * @param {number} options.minFractionDigits - Minimum digit desimal (default: 0)\r\n * @param {number} options.maxFractionDigits - Maximum digit desimal (default: 0)\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatCurrency(500000) // \"Rp500.000\"\r\n * formatCurrency(500000, { minFractionDigits: 2 }) // \"Rp500.000,00\"\r\n * formatCurrency(1000, { currency: \"USD\", locale: \"en-US\" }) // \"$1,000\"\r\n */\r\nexport const formatCurrency = (\r\n value,\r\n {\r\n locale = \"id-ID\",\r\n currency = \"IDR\",\r\n minFractionDigits = 0,\r\n maxFractionDigits = 0,\r\n } = {}\r\n) => {\r\n if (value === undefined || value === null) return \"\";\r\n const num = Number(value);\r\n if (isNaN(num)) return String(value);\r\n\r\n const formattedValue = new Intl.NumberFormat(locale, {\r\n style: \"currency\",\r\n currency,\r\n minimumFractionDigits: minFractionDigits,\r\n maximumFractionDigits: maxFractionDigits,\r\n }).format(num);\r\n\r\n return formattedValue.replace(/\\s/g, \"\");\r\n};\r\n\r\n/**\r\n * Format angka ke format Rupiah (shorthand untuk formatCurrency dengan default IDR).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @returns {string} Nilai terformat dalam Rupiah\r\n *\r\n * @example\r\n * formatRupiah(500000) // \"Rp500.000\"\r\n * formatRupiah(1500000) // \"Rp1.500.000\"\r\n */\r\nexport const formatRupiah = (value) => {\r\n return formatCurrency(value);\r\n};\r\n\r\n/**\r\n * Format angka ke format nominal (tanpa simbol mata uang).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @param {object} options - Opsi formatting\r\n * @param {string} options.locale - Locale (default: \"id-ID\")\r\n * @param {number} options.minFractionDigits - Minimum digit desimal (default: 0)\r\n * @param {number} options.maxFractionDigits - Maximum digit desimal (default: 0)\r\n * @param {string} options.decimalSeparator - Separator desimal (default: \",\")\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatNominal(500000) // \"500.000\"\r\n * formatNominal(500000.95, { minFractionDigits: 2, maxFractionDigits: 2 }) // \"500.000,95\"\r\n * formatNominal(\"1.500.000,50\") // \"1.500.000,50\" (handles string input with Indonesian format)\r\n */\r\nexport const formatNominal = (\r\n value,\r\n {\r\n locale = \"id-ID\",\r\n minFractionDigits = 0,\r\n maxFractionDigits = 0,\r\n decimalSeparator = \",\",\r\n } = {}\r\n) => {\r\n if (value === undefined || value === null || value === \"\") return \"\";\r\n\r\n let numberValue;\r\n if (typeof value === \"number\") {\r\n numberValue = value;\r\n } else if (typeof value === \"string\") {\r\n // Handle Indonesian format string (1.500.000,50)\r\n if (value.includes(\",\")) {\r\n numberValue = Number(value.replace(/\\./g, \"\").replace(\",\", \".\"));\r\n } else {\r\n numberValue = Number(value);\r\n }\r\n } else {\r\n return String(value);\r\n }\r\n\r\n if (isNaN(numberValue)) return String(value);\r\n\r\n const formatted = numberValue.toLocaleString(locale, {\r\n minimumFractionDigits: minFractionDigits,\r\n maximumFractionDigits: maxFractionDigits,\r\n });\r\n\r\n return formatted.replace(/,/g, decimalSeparator);\r\n};\r\n\r\n/**\r\n * Format angka ke format digit (tanpa simbol mata uang, tanpa desimal).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatDigit(500000) // \"500.000\"\r\n * formatDigit(1500000) // \"1.500.000\"\r\n */\r\nexport const formatDigit = (value) => {\r\n const num = Number(value);\r\n return new Intl.NumberFormat(\"id-ID\", { minimumFractionDigits: 0 }).format(\r\n num || 0\r\n );\r\n};\r\n","/**\r\n * Date Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - stringUtils.js (semua date formatter functions)\r\n *\r\n * Konvensi penamaan:\r\n * - \"Dash\" = separator \"-\" (e.g., 2024-07-19)\r\n * - \"Slash\" = separator \"/\" (e.g., 19/07/2024)\r\n * - \"YearFirst\" = format YYYY-MM-DD\r\n * - \"DateFirst\" = format DD-MM-YYYY atau DD/MM/YYYY\r\n */\r\n\r\n/**\r\n * Konversi Date object ke format YYYY-MM-DD.\r\n * @param {Date|string} value - Date object atau date string\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * toYearFirstDash(new Date(2024, 6, 19)) // \"2024-07-19\"\r\n * toYearFirstDash(\"2024-07-19T00:00:00\") // \"2024-07-19\"\r\n */\r\nexport const toYearFirstDash = (value) => {\r\n const date = new Date(value);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n return `${year}-${month}-${day}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DD/MM/YYYY.\r\n * @param {Date|string} value - Date object atau date string\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * toDateFirstSlash(new Date(2024, 1, 1)) // \"01/02/2024\"\r\n * toDateFirstSlash(\"2024-02-01\") // \"01/02/2024\"\r\n */\r\nexport const toDateFirstSlash = (value) => {\r\n const date = new Date(value);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DD/MM/YYYY (alias).\r\n * @param {Date} date - Date object\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * formatDateToDDSlashMMSlashYYYY(new Date(2025, 2, 31)) // \"31/03/2025\"\r\n */\r\nexport const formatDateToDDSlashMMSlashYYYY = (date) => {\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DDMMYYYY (tanpa separator).\r\n * @param {Date} date - Date object\r\n * @returns {string} Format \"DDMMYYYY\"\r\n *\r\n * @example\r\n * formatDateToDDMMYYYY(new Date(2025, 2, 31)) // \"31032025\"\r\n */\r\nexport const formatDateToDDMMYYYY = (date) => {\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n return `${day}${month}${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format YYYY-MM-DD ke DD-MM-YYYY.\r\n * @param {string} value - Date string format \"YYYY-MM-DD\"\r\n * @returns {string} Format \"DD-MM-YYYY\"\r\n *\r\n * @example\r\n * yearFirstDashToDateFirstDash(\"2024-07-26\") // \"26-07-2024\"\r\n */\r\nexport const yearFirstDashToDateFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const [year, month, day] = value.split(\"-\");\r\n return `${day}-${month}-${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format YYYY-MM-DD ke DD/MM/YYYY.\r\n * @param {string} value - Date string format \"YYYY-MM-DD\"\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * yearFirstDashToDateFirstSlash(\"2024-07-19\") // \"19/07/2024\"\r\n */\r\nexport const yearFirstDashToDateFirstSlash = (value) => {\r\n if (!value) return \"\";\r\n const parts = value.split(\"-\");\r\n if (parts.length === 3) {\r\n const [year, month, day] = parts;\r\n return `${day}/${month}/${year}`;\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Konversi format DD/MM/YYYY ke YYYY-MM-DD.\r\n * @param {string} value - Date string format \"DD/MM/YYYY\"\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * dateFirstSlashToYearFirstDash(\"19/07/2024\") // \"2024-07-19\"\r\n */\r\nexport const dateFirstSlashToYearFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const [day, month, year] = value.split(\"/\");\r\n return `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit (e.g., \"0041125\") ke DD/MM/YYYY.\r\n * Format: [prefix 1 digit][DD][MM][YY atau YYYY]\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * sevenDigitToDateFirstSlash(\"0190724\") // \"19/07/2024\"\r\n * sevenDigitToDateFirstSlash(\"0041125\") // \"04/11/2025\"\r\n */\r\nexport const sevenDigitToDateFirstSlash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.substring(0, 2);\r\n const month = actualDate.substring(2, 4);\r\n const yearLastTwoDigits = actualDate.substring(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit ke YYYY-MM-DD.\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * sevenDigitToYearFirstDash(\"0190724\") // \"2024-07-19\"\r\n */\r\nexport const sevenDigitToYearFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.slice(0, 2);\r\n const month = actualDate.slice(2, 4);\r\n const yearLastTwoDigits = actualDate.slice(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${year}-${month}-${day}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit ke DD-MM-YYYY.\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"DD-MM-YYYY\"\r\n *\r\n * @example\r\n * sevenDigitToDateFirstDash(\"0041125\") // \"04-11-2025\"\r\n */\r\nexport const sevenDigitToDateFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.slice(0, 2);\r\n const month = actualDate.slice(2, 4);\r\n const yearLastTwoDigits = actualDate.slice(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${day}-${month}-${year}`;\r\n};\r\n\r\n/**\r\n * Konversi datetime string ke format DD-MM-YYYY HH:mm.\r\n * @param {string} value - DateTime string (e.g., \"2025-01-13 16:39:39\")\r\n * @returns {string} Format \"DD-MM-YYYY HH:mm\"\r\n *\r\n * @example\r\n * toDateTimeHourMinute(\"2025-01-13 16:39:39\") // \"13-01-2025 16:39\"\r\n */\r\nexport const toDateTimeHourMinute = (value) => {\r\n if (!value) return \"\";\r\n const date = new Date(value);\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n const hours = String(date.getHours()).padStart(2, \"0\");\r\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\r\n return `${day}-${month}-${year} ${hours}:${minutes}`;\r\n};\r\n\r\n/**\r\n * Konversi format DDMMYY (6 digit) ke DD/MM/YYYY.\r\n * @param {string} value - 6-digit date string (DDMMYY)\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * ddmmyyToSlashDate(\"190724\") // \"19/07/2024\"\r\n * ddmmyyToSlashDate(\"010170\") // \"01/01/1970\"\r\n */\r\nexport const ddmmyyToSlashDate = (value) => {\r\n if (!value || value.length !== 6) return \"\";\r\n const day = value.substring(0, 2);\r\n const month = value.substring(2, 4);\r\n const yearSuffix = value.substring(4, 6);\r\n const year =\r\n parseInt(yearSuffix, 10) >= 70 ? \"19\" + yearSuffix : \"20\" + yearSuffix;\r\n return `${day}/${month}/${year}`;\r\n};\r\n","/**\r\n * String Formatting & Transformation Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (formatResponseDesc, titleCase, stringToBoolean)\r\n * - convertSnakeToCamelWithSpace.js (snakeToCamelWithSpace)\r\n * - stringUtils.js (matchWiths, needToHide)\r\n */\r\n\r\n/**\r\n * Format response description: replace underscores with spaces dan capitalize.\r\n * @param {string} desc - Description string dari API response\r\n * @returns {string} Formatted description\r\n *\r\n * @example\r\n * formatResponseDesc(\"invalid_request_data\") // \"Invalid Request Data\"\r\n * formatResponseDesc(\"brispot_error\") // \"BRISPOT Error\"\r\n */\r\nexport const formatResponseDesc = (desc) => {\r\n if (!desc) return \"\";\r\n return desc\r\n .replace(/_(\\w)/g, (_match, p1) => \" \" + p1.toUpperCase())\r\n .replace(/brispot/gi, \"BRISPOT\");\r\n};\r\n\r\n/**\r\n * Konversi string ke Title Case.\r\n * @param {string} str - Input string\r\n * @returns {string} Title cased string\r\n *\r\n * @example\r\n * titleCase(\"hello world\") // \"Hello World\"\r\n * titleCase(\"JOHN DOE\") // \"John Doe\"\r\n */\r\nexport const titleCase = (str) => {\r\n if (!str) return \"\";\r\n return str\r\n .toLowerCase()\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n};\r\n\r\n/**\r\n * Konversi snake_case ke Title Case With Spaces.\r\n * @param {string} snakeStr - Snake case string\r\n * @returns {string} Title case with spaces\r\n *\r\n * @example\r\n * snakeToCamelWithSpace(\"hello_world\") // \"Hello World\"\r\n * snakeToCamelWithSpace(\"user_full_name\") // \"User Full Name\"\r\n */\r\nexport function snakeToCamelWithSpace(snakeStr) {\r\n if (!snakeStr) return \"\";\r\n return snakeStr\r\n .toLowerCase()\r\n .replace(/_([a-z])/g, (_match, letter) => ` ${letter.toUpperCase()}`)\r\n .replace(/^([a-z])/, (_, letter) => letter.toUpperCase());\r\n}\r\n\r\n/**\r\n * Konversi string \"true\"/\"false\" ke boolean.\r\n * @param {string} str - String \"true\" atau \"false\"\r\n * @returns {boolean|undefined} Boolean value atau undefined jika bukan \"true\"/\"false\"\r\n *\r\n * @example\r\n * stringToBoolean(\"true\") // true\r\n * stringToBoolean(\"false\") // false\r\n * stringToBoolean(\"other\") // undefined\r\n */\r\nexport const stringToBoolean = (str) => {\r\n if (str === \"true\" || str === \"false\") {\r\n return str === \"true\";\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Cek apakah target string mengandung salah satu dari values.\r\n * @param {string} targetStr - String yang akan dicek\r\n * @param {string[]} values - Array of substrings to match\r\n * @returns {boolean} True jika salah satu value ditemukan\r\n *\r\n * @example\r\n * matchWiths(\"hello world\", [\"hello\", \"foo\"]) // true\r\n * matchWiths(\"hello world\", [\"foo\", \"bar\"]) // false\r\n */\r\nexport function matchWiths(targetStr, values = []) {\r\n if (!targetStr) return false;\r\n return values.some((v) => targetStr.includes(v));\r\n}\r\n\r\n/**\r\n * Mask/hide sebagian karakter dari string (untuk privasi).\r\n * @param {string} value - String yang akan di-mask\r\n * @param {string} type - Tipe masking: \"email\" atau default\r\n * @returns {string} Masked string\r\n *\r\n * @example\r\n * maskString(\"johndoe@email.com\", \"email\") // \"joh****@email.com\"\r\n * maskString(\"081234567890\") // \"081*****890\"\r\n */\r\nexport const maskString = (value, type) => {\r\n if (!value) return \"\";\r\n const tempArr = value.split(\"\");\r\n let len = tempArr.length - 3;\r\n\r\n if (type === \"email\") {\r\n len = tempArr.indexOf(\"@\");\r\n }\r\n\r\n tempArr.splice(3 - tempArr.length, len - 3, ...\"*\".repeat(len - 3).split(\"\"));\r\n return tempArr.join(\"\");\r\n};\r\n","export const checkRoleUser = (roles, listRole) => {\r\n let result = false\r\n\r\n if (Array.isArray(roles) && Array.isArray(listRole)) {\r\n if(roles.length !== 0 && listRole.length !== 0){\r\n for(let data of roles){\r\n if(listRole.includes(data)){\r\n result = true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport const toggleUsingDummyWbenchEndpoint = (status) => {\r\n return status === true \r\n}","export const NOT_AUTHORIZE_RESPONSE_CODE = [\"X0\", \"X1\", \"X2\"];\r\n\r\nexport const PUBLIC_PATHS = [\"/auth/v1/login\"];\r\n\r\nexport const COOKIE_MAX_SIZE = 2000;\r\n\r\nexport const CLIENT_PUBLIC_API_ROUTES = [\r\n \"/api/auth/login\",\r\n \"/api/auth/requestOtp\",\r\n \"/api/auth/logout\",\r\n];\r\n\r\n// * Adjust these origins based on your local development setup if needed.\r\nexport const CLIENT_ALLOWED_ORIGINS = [\r\n \"http://localhost:3000\",\r\n \"http://localhost:3001\",\r\n \"http://127.0.0.1:3000\",\r\n \"http://127.0.0.1:3001\",\r\n /\\.bri\\.co\\.id$/,\r\n];\r\n","export const disableFormElements = (selector) => {\r\n const formElements = document.querySelectorAll(selector);\r\n \r\n formElements.forEach((element) => {\r\n element.disabled = true; \r\n element.readOnly = true; \r\n });\r\n};\r\n\r\nexport const disableFormBuilder = (fields, roleAccess) => {\r\n return fields.map((field) => {\r\n if (!field) return null;\r\n\r\n return {\r\n ...field,\r\n isDisabled: roleAccess ? true : field.isDisabled,\r\n };\r\n });\r\n};\r\n","export function generateVcifId() {\r\n const timestamp = Date.now(); \r\n return `VCIF${timestamp}`;\r\n}\r\n","export function getLocalStorageItem(key) {\r\n const value = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(value);\r\n } catch (err) {\r\n return value;\r\n }\r\n}\r\n","export const getTipeBankKorporasi = (data) => {\r\n const adaInduk = data?.some(item => item.status_perusahaan === \"Induk\");\r\n const dataInduk = data?.filter(item => item.status_perusahaan === \"Induk\");\r\n let tipeBank = '';\r\n\r\n // Menampilkan hasil\r\n if (adaInduk) {\r\n tipeBank = dataInduk[0]?.tipe_bank\r\n } else {\r\n tipeBank = data?.find(item => item.tipe_bank === \"B\")?.tipe_bank || \"A\";\r\n }\r\n\r\n return tipeBank\r\n}","/**\r\n * Exception Utilities\r\n *\r\n * Standardized exception codes dan ApiException class untuk handling error dari backend API.\r\n */\r\n\r\n// ─── Exception Codes ─────────────────────────────────────────────────────────\r\n\r\nexport const HEADER_EXCEPTION = \"X0\";\r\nexport const ACCESS_EXCEPTION = \"X1\";\r\nexport const PARAMETER_EXCEPTION = \"01\";\r\nexport const NOTFOUND_EXCEPTION = \"02\";\r\nexport const INVALIDRULE_EXCEPTION = \"03\";\r\nexport const THIRDPARTY_EXCEPTION = \"04\";\r\nexport const WAITING_EXCEPTION = \"05\";\r\nexport const UNSUPPORTED_EXCEPTION = \"06\";\r\nexport const RUNTIME_EXCEPTION = \"99\";\r\n\r\n// ─── Exception Messages ──────────────────────────────────────────────────────\r\n\r\nexport const EXCEPTION_MESSAGES = {\r\n [HEADER_EXCEPTION]: \"Invalid request header\",\r\n [ACCESS_EXCEPTION]: \"Access denied\",\r\n [PARAMETER_EXCEPTION]: \"Invalid parameter\",\r\n [NOTFOUND_EXCEPTION]: \"Data not found\",\r\n [INVALIDRULE_EXCEPTION]: \"Validation rule failed\",\r\n [THIRDPARTY_EXCEPTION]: \"Third-party service failure\",\r\n [WAITING_EXCEPTION]: \"Process in progress, please wait\",\r\n [UNSUPPORTED_EXCEPTION]: \"Unsupported operation\",\r\n [RUNTIME_EXCEPTION]: \"Internal system error\",\r\n};\r\n\r\n// ─── ApiException Class ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Custom exception class untuk API errors.\r\n * Menyimpan responseCode dan responseDesc dari backend.\r\n *\r\n * @example\r\n * throw new ApiException(\"02\", \"Prakarsa tidak ditemukan\");\r\n *\r\n * @example\r\n * // Tanpa custom message — pakai default dari EXCEPTION_MESSAGES\r\n * throw new ApiException(\"X1\");\r\n * // Error: [X1] Access denied\r\n */\r\nexport class ApiException extends Error {\r\n constructor(responseCode, responseDesc) {\r\n const desc =\r\n responseDesc ||\r\n EXCEPTION_MESSAGES[responseCode] ||\r\n \"An unexpected error occurred\";\r\n super(`[${responseCode}] ${desc}`);\r\n this.name = \"ApiException\";\r\n this.responseCode = responseCode;\r\n this.responseDesc = desc;\r\n }\r\n}\r\n\r\n/**\r\n * Cek apakah responseCode termasuk exception.\r\n * @param {string} responseCode - Response code dari API\r\n * @returns {boolean} True jika code ada di daftar exception\r\n *\r\n * @example\r\n * isExceptionCode(\"00\") // false (success)\r\n * isExceptionCode(\"X0\") // true (header exception)\r\n * isExceptionCode(\"02\") // true (not found)\r\n */\r\nexport function isExceptionCode(responseCode) {\r\n return Object.keys(EXCEPTION_MESSAGES).includes(responseCode);\r\n}\r\n\r\n/**\r\n * Get human-readable message dari exception code.\r\n * @param {string} responseCode - Response code dari API\r\n * @returns {string} Exception message\r\n *\r\n * @example\r\n * getExceptionMessage(\"X1\") // \"Access denied\"\r\n * getExceptionMessage(\"99\") // \"Internal system error\"\r\n * getExceptionMessage(\"unknown\") // \"An unexpected error occurred\"\r\n */\r\nexport function getExceptionMessage(responseCode) {\r\n return EXCEPTION_MESSAGES[responseCode] || \"An unexpected error occurred\";\r\n}\r\n","/* Formatting 500000 to Rp500.000,00\r\n implementasi di src/pages/prakarsa/prakarsa-korporasi/informasi-nasabah/pengecekan-kredit/dialog-lihat-sicd.jsx \r\n country dan curr disesuaikan dengan negara dan mata uang\r\n minFrac dan maxFrac disesuaikan dengan jumlah angka di belakang koma */\r\nexport const formatCurrency = (\r\n value,\r\n country = \"id-ID\",\r\n curr = \"IDR\",\r\n minFrac = 0,\r\n maxFrac = 0\r\n) => {\r\n if (value === undefined || value === null) return \"\";\r\n let formattedValue = new Intl.NumberFormat(country, {\r\n style: \"currency\",\r\n currency: curr,\r\n minimumFractionDigits: minFrac,\r\n maximumFractionDigits: maxFrac,\r\n }).format(value);\r\n\r\n return formattedValue.replace(/\\s/g, \"\");\r\n};\r\n\r\nexport const formatResponseDesc = (desc) => {\r\n return desc\r\n .replace(/_(\\w)/g, (_match, p1) => \" \" + p1.toUpperCase())\r\n .replace(/brispot/gi, \"BRISPOT\");\r\n};\r\n\r\nexport function dashedAccount(value) {\r\n // Remove numeric characters from the input\r\n const filteredValue = value?.replace(\r\n /[A-Za-z\\s!@#$%^&*_+{}()=`\"[\\]:;<>,?~\\\\|\\\\/-]/g,\r\n \"\"\r\n );\r\n // Replace the matched pattern with the matched group + a dash\r\n if (filteredValue?.length > 14) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{2})(\\d{1})/g,\r\n \"$1-$2-$3-$4-$5\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 12) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{1})/g,\r\n \"$1-$2-$3-$4\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 6) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{1})/g,\r\n \"$1-$2-$3\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 4) {\r\n const dashedValue = filteredValue.replace(/(\\d{4})(\\d{1})/g, \"$1-$2\");\r\n return dashedValue ?? \"\";\r\n } else {\r\n return filteredValue ?? \"\";\r\n }\r\n}\r\n\r\n/* Formatting 500000.95 to 500.000,95 \r\n implementasi di src/pages/prakarsa/prakarsa-bg/index.jsx \r\n minFrac dan maxFrac disesuaikan dengan jumlah angka di belakang koma */\r\nexport const formatNominal = (\r\n value,\r\n locale = \"id-ID\",\r\n minFrac = 0,\r\n maxFrac = 0,\r\n commaSeparator = \",\"\r\n) => {\r\n if (value === undefined || value === null || value === \"\") return \"\";\r\n\r\n let numberValue;\r\n if (typeof value === \"number\") {\r\n numberValue = value;\r\n } else if (typeof value === \"string\") {\r\n if (value.includes(\",\")) {\r\n numberValue = Number(value.replace(/\\./g, \"\").replace(\",\", \".\"));\r\n } else {\r\n numberValue = Number(value);\r\n }\r\n } else {\r\n return value;\r\n }\r\n \r\n if (isNaN(numberValue)) return value;\r\n \r\n const formatted = numberValue.toLocaleString(locale, {\r\n minimumFractionDigits: minFrac,\r\n maximumFractionDigits: maxFrac,\r\n });\r\n\r\n return formatted.replace(/,/g, commaSeparator);\r\n};\r\n\r\nexport const titleCase = (str) => {\r\n return str\r\n .toLowerCase()\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n};\r\n\r\nexport const stringToBoolean = (str) => {\r\n if (str === \"true\" || str === \"false\") {\r\n return str === \"true\";\r\n } else {\r\n return;\r\n }\r\n};\r\n\r\nexport function dashedNPWP(value) {\r\n // Hapus karakter non-numerik dari input\r\n const filteredValue = value?.replace(/[^\\d]/g, \"\");\r\n\r\n // Terapkan format sesuai panjang angka\r\n if (filteredValue?.length > 15) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})(\\d{4})/,\r\n \"$1.$2.$3.$4-$5.$6\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 12) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})/,\r\n \"$1.$2.$3.$4-$5\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 9) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3.$4\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 6) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 2) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})/,\r\n \"$1.$2\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else {\r\n return filteredValue ?? \"\";\r\n }\r\n}\r\n"]}
1
+ {"version":3,"sources":["../../src/utils/formatters/account.js","../../src/utils/formatters/currency.js","../../src/utils/formatters/date.js","../../src/utils/formatters/string.js","../../src/utils/asset.js","../../src/utils/booleanUtils.js","../../src/utils/constants.js","../../src/utils/disableFormElements.js","../../src/utils/generateTimestamp.js","../../src/utils/localStorage.js","../../src/utils/tipeBank.js","../../src/utils/exception.js","../../src/utils/formatString.js"],"names":["formatCurrency","formatResponseDesc","formatNominal","titleCase","stringToBoolean"],"mappings":";;;;AAoBO,SAAS,oBAAoB,KAAA,EAAO;AACzC,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAGnB,EAAA,MAAM,gBAAgB,KAAA,CACnB,QAAA,EAAS,CACT,OAAA,CAAQ,WAAW,EAAE,CAAA;AAExB,EAAA,IAAI,aAAA,CAAc,SAAS,EAAA,EAAI;AAC7B,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,qCAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,EAAA,EAAI;AACpC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,8BAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACnC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACnC,IAAA,OAAO,aAAA,CAAc,OAAA,CAAQ,gBAAA,EAAkB,OAAO,CAAA;AAAA,EACxD;AAEA,EAAA,OAAO,aAAA;AACT;AAaO,SAAS,WAAW,KAAA,EAAO;AAChC,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAGnB,EAAA,MAAM,gBAAgB,KAAA,CACnB,QAAA,EAAS,CACT,OAAA,CAAQ,OAAO,EAAE,CAAA;AAEpB,EAAA,IAAI,aAAA,CAAc,SAAS,EAAA,EAAI;AAC7B,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,4CAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,EAAA,EAAI;AACpC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,qCAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACnC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,8BAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACnC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA,MAAA,IAAW,aAAA,CAAc,MAAA,GAAS,CAAA,EAAG;AACnC,IAAA,OAAO,aAAA,CAAc,OAAA;AAAA,MACnB,gBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO,aAAA;AACT;;;ACzEO,IAAM,cAAA,GAAiB,CAC5B,KAAA,EACA;AAAA,EACE,MAAA,GAAS,OAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,iBAAA,GAAoB,CAAA;AAAA,EACpB,iBAAA,GAAoB;AACtB,CAAA,GAAI,EAAC,KACF;AACH,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,EAAA;AAClD,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,IAAI,KAAA,CAAM,GAAG,CAAA,EAAG,OAAO,OAAO,KAAK,CAAA;AAEnC,EAAA,MAAM,cAAA,GAAiB,IAAI,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AAAA,IACnD,KAAA,EAAO,UAAA;AAAA,IACP,QAAA;AAAA,IACA,qBAAA,EAAuB,iBAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA,CAAE,MAAA,CAAO,GAAG,CAAA;AAEb,EAAA,OAAO,cAAA,CAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACzC;AAWO,IAAM,YAAA,GAAe,CAAC,KAAA,KAAU;AACrC,EAAA,OAAO,eAAe,KAAK,CAAA;AAC7B;AAiBO,IAAM,aAAA,GAAgB,CAC3B,KAAA,EACA;AAAA,EACE,MAAA,GAAS,OAAA;AAAA,EACT,iBAAA,GAAoB,CAAA;AAAA,EACpB,iBAAA,GAAoB,CAAA;AAAA,EACpB,gBAAA,GAAmB;AACrB,CAAA,GAAI,EAAC,KACF;AACH,EAAA,IAAI,UAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAI,OAAO,EAAA;AAElE,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,WAAA,GAAc,KAAA;AAAA,EAChB,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AAEpC,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AACvB,MAAA,WAAA,GAAc,MAAA,CAAO,MAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO,OAAO,KAAK,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG,OAAO,OAAO,KAAK,CAAA;AAE3C,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,cAAA,CAAe,MAAA,EAAQ;AAAA,IACnD,qBAAA,EAAuB,iBAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA;AAED,EAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,gBAAgB,CAAA;AACjD;AAWO,IAAM,WAAA,GAAc,CAAC,KAAA,KAAU;AACpC,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,OAAO,IAAI,KAAK,YAAA,CAAa,OAAA,EAAS,EAAE,qBAAA,EAAuB,CAAA,EAAG,CAAA,CAAE,MAAA;AAAA,IAClE,GAAA,IAAO;AAAA,GACT;AACF;;;ACtGO,IAAM,eAAA,GAAkB,CAAC,KAAA,KAAU;AACxC,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,CAAA,CAAA;AAChC;AAWO,IAAM,gBAAA,GAAmB,CAAC,KAAA,KAAU;AACzC,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;AAUO,IAAM,8BAAA,GAAiC,CAAC,IAAA,KAAS;AACtD,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;AAUO,IAAM,oBAAA,GAAuB,CAAC,IAAA,KAAS;AAC5C,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,EAAG,KAAK,GAAG,IAAI,CAAA,CAAA;AAC9B;AAUO,IAAM,4BAAA,GAA+B,CAAC,KAAA,KAAU;AACrD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,CAAC,IAAA,EAAM,KAAA,EAAO,GAAG,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AAC1C,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;AAUO,IAAM,6BAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAC7B,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACtB,IAAA,MAAM,CAAC,IAAA,EAAM,KAAA,EAAO,GAAG,CAAA,GAAI,KAAA;AAC3B,IAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,KAAA;AACT;AAUO,IAAM,6BAAA,GAAgC,CAAC,KAAA,KAAU;AACtD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,CAAC,GAAA,EAAK,KAAA,EAAO,IAAI,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AAC1C,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAClE;AAYO,IAAM,0BAAA,GAA6B,CAAC,KAAA,KAAU;AACnD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AACpC,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AACvC,EAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AACnD,EAAA,MAAM,aAAa,QAAA,CAAS,iBAAA,EAAmB,EAAE,CAAA,IAAK,KAAK,IAAA,GAAO,IAAA;AAClE,EAAA,MAAM,OAAO,UAAA,GAAa,iBAAA;AAC1B,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;AAUO,IAAM,yBAAA,GAA4B,CAAC,KAAA,KAAU;AAClD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AACpC,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACnC,EAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAC/C,EAAA,MAAM,aAAa,QAAA,CAAS,iBAAA,EAAmB,EAAE,CAAA,IAAK,KAAK,IAAA,GAAO,IAAA;AAClE,EAAA,MAAM,OAAO,UAAA,GAAa,iBAAA;AAC1B,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,CAAA,CAAA;AAChC;AAUO,IAAM,yBAAA,GAA4B,CAAC,KAAA,KAAU;AAClD,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AACpC,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AACnC,EAAA,MAAM,iBAAA,GAAoB,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA;AAC/C,EAAA,MAAM,aAAa,QAAA,CAAS,iBAAA,EAAmB,EAAE,CAAA,IAAK,KAAK,IAAA,GAAO,IAAA;AAClE,EAAA,MAAM,OAAO,UAAA,GAAa,iBAAA;AAC1B,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;AAUO,IAAM,oBAAA,GAAuB,CAAC,KAAA,KAAU;AAC7C,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,KAAK,CAAA;AAC3B,EAAA,MAAM,GAAA,GAAM,OAAO,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AAClD,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACzD,EAAA,MAAM,IAAA,GAAO,KAAK,WAAA,EAAY;AAC9B,EAAA,MAAM,KAAA,GAAQ,OAAO,IAAA,CAAK,QAAA,EAAU,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACrD,EAAA,MAAM,OAAA,GAAU,OAAO,IAAA,CAAK,UAAA,EAAY,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACzD,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA;AACpD;AAWO,IAAM,iBAAA,GAAoB,CAAC,KAAA,KAAU;AAC1C,EAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,EAAA;AACzC,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AAClC,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,SAAA,CAAU,CAAA,EAAG,CAAC,CAAA;AACvC,EAAA,MAAM,IAAA,GACJ,SAAS,UAAA,EAAY,EAAE,KAAK,EAAA,GAAK,IAAA,GAAO,aAAa,IAAA,GAAO,UAAA;AAC9D,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,KAAK,IAAI,IAAI,CAAA,CAAA;AAChC;;;ACxMO,IAAM,kBAAA,GAAqB,CAAC,IAAA,KAAS;AAC1C,EAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAClB,EAAA,OAAO,IAAA,CACJ,OAAA,CAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,EAAA,KAAO,GAAA,GAAM,EAAA,CAAG,WAAA,EAAa,CAAA,CACxD,OAAA,CAAQ,aAAa,SAAS,CAAA;AACnC;AAWO,IAAM,SAAA,GAAY,CAAC,GAAA,KAAQ;AAChC,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,OAAO,GAAA,CACJ,aAAY,CACZ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,GAAG,CAAA;AACb;AAWO,SAAS,sBAAsB,QAAA,EAAU;AAC9C,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AACtB,EAAA,OAAO,QAAA,CACJ,aAAY,CACZ,OAAA,CAAQ,aAAa,CAAC,MAAA,EAAQ,WAAW,CAAA,CAAA,EAAI,MAAA,CAAO,aAAa,CAAA,CAAE,EACnE,OAAA,CAAQ,UAAA,EAAY,CAAC,CAAA,EAAG,MAAA,KAAW,MAAA,CAAO,WAAA,EAAa,CAAA;AAC5D;AAYO,IAAM,eAAA,GAAkB,CAAC,GAAA,KAAQ;AACtC,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,GAAA,KAAQ,OAAA,EAAS;AACrC,IAAA,OAAO,GAAA,KAAQ,MAAA;AAAA,EACjB;AACA,EAAA,OAAO,MAAA;AACT;AAYO,SAAS,UAAA,CAAW,SAAA,EAAW,MAAA,GAAS,EAAC,EAAG;AACjD,EAAA,IAAI,CAAC,WAAW,OAAO,KAAA;AACvB,EAAA,OAAO,OAAO,IAAA,CAAK,CAAC,MAAM,SAAA,CAAU,QAAA,CAAS,CAAC,CAAC,CAAA;AACjD;AAYO,IAAM,UAAA,GAAa,CAAC,KAAA,EAAO,IAAA,KAAS;AACzC,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AACnB,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAC9B,EAAA,IAAI,GAAA,GAAM,QAAQ,MAAA,GAAS,CAAA;AAE3B,EAAA,IAAI,SAAS,OAAA,EAAS;AACpB,IAAA,GAAA,GAAM,OAAA,CAAQ,QAAQ,GAAG,CAAA;AAAA,EAC3B;AAEA,EAAA,OAAA,CAAQ,MAAA,CAAO,CAAA,GAAI,OAAA,CAAQ,MAAA,EAAQ,MAAM,CAAA,EAAG,GAAG,GAAA,CAAI,MAAA,CAAO,GAAA,GAAM,CAAC,CAAA,CAAE,KAAA,CAAM,EAAE,CAAC,CAAA;AAC5E,EAAA,OAAO,OAAA,CAAQ,KAAK,EAAE,CAAA;AACxB;;;ACjHO,IAAM,SAAA,GAAY,CAAC,GAAA,GAAM,EAAA,KAAO;AAAvC,EAAA,IAAA,EAAA;AACE,EAAA,MAAM,QAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GACd,EAAA,GAAA,CAAA,CACC,EAAA,GAAA,MAAA,CAAO,aAAA,KAAP,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,WAAA,KACrB,OAAA,CAAQ,GAAA,CAAI,qBAAA,IACZ,EAAA;AAER,EAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,GAAG,CAAA,CAAA;AAC1B;;;ACTO,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,QAAA,KAAa;AAChD,EAAA,IAAI,MAAA,GAAS,KAAA;AAEb,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,KAAK,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACnD,IAAA,IAAG,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,QAAA,CAAS,WAAW,CAAA,EAAE;AAC7C,MAAA,KAAA,IAAQ,QAAQ,KAAA,EAAM;AACpB,QAAA,IAAG,QAAA,CAAS,QAAA,CAAS,IAAI,CAAA,EAAE;AACzB,UAAA,MAAA,GAAS,IAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,8BAAA,GAAiC,CAAC,MAAA,KAAW;AACxD,EAAA,OAAO,MAAA,KAAW,IAAA;AACpB;;;AClBO,IAAM,2BAAA,GAA8B,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI;AAErD,IAAM,YAAA,GAAe,CAAC,gBAAgB;AAEtC,IAAM,eAAA,GAAkB;AAExB,IAAM,wBAAA,GAA2B;AAAA,EACtC,iBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;AAGO,IAAM,sBAAA,GAAyB;AAAA,EACpC,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA;AACF;;;ACnBO,IAAM,mBAAA,GAAsB,CAAC,QAAA,KAAa;AAC/C,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,gBAAA,CAAiB,QAAQ,CAAA;AAEvD,EAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,OAAA,KAAY;AAChC,IAAA,OAAA,CAAQ,QAAA,GAAW,IAAA;AACnB,IAAA,OAAA,CAAQ,QAAA,GAAW,IAAA;AAAA,EACrB,CAAC,CAAA;AACH;AAEO,IAAM,kBAAA,GAAqB,CAAC,MAAA,EAAQ,UAAA,KAAe;AACxD,EAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,KAAU;AAC3B,IAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,IAAA,OAAO,iCACF,KAAA,CAAA,EADE;AAAA,MAEL,UAAA,EAAY,UAAA,GAAa,IAAA,GAAO,KAAA,CAAM;AAAA,KACxC,CAAA;AAAA,EACF,CAAC,CAAA;AACH;;;AClBO,SAAS,cAAA,GAAiB;AAC/B,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,EAAA,OAAO,OAAO,SAAS,CAAA,CAAA;AACzB;;;ACHO,SAAS,oBAAoB,GAAA,EAAK;AACvC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,OAAA,CAAQ,GAAG,CAAA;AACtC,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACzB,SAAS,GAAA,EAAK;AACZ,IAAA,OAAO,KAAA;AAAA,EACT;AACF;;;ACPO,IAAM,oBAAA,GAAuB,CAAC,IAAA,KAAS;AAA9C,EAAA,IAAA,EAAA,EAAA,EAAA;AACI,EAAA,MAAM,QAAA,GAAW,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,IAAA,CAAK,CAAA,IAAA,KAAQ,KAAK,iBAAA,KAAsB,OAAA,CAAA;AAC/D,EAAA,MAAM,SAAA,GAAY,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,MAAA,CAAO,CAAA,IAAA,KAAQ,KAAK,iBAAA,KAAsB,OAAA,CAAA;AAClE,EAAA,IAAI,QAAA,GAAW,EAAA;AAGf,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,QAAA,GAAA,CAAW,EAAA,GAAA,SAAA,CAAU,CAAC,CAAA,KAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAc,SAAA;AAAA,EAC7B,CAAA,MAAO;AACH,IAAA,QAAA,GAAA,CAAA,CAAW,kCAAM,IAAA,CAAK,CAAA,IAAA,KAAQ,KAAK,SAAA,KAAc,GAAA,CAAA,KAAtC,mBAA4C,SAAA,KAAa,GAAA;AAAA,EACxE;AAEA,EAAA,OAAO,QAAA;AACX;;;ACLO,IAAM,gBAAA,GAAmB;AACzB,IAAM,gBAAA,GAAmB;AACzB,IAAM,mBAAA,GAAsB;AAC5B,IAAM,kBAAA,GAAqB;AAC3B,IAAM,qBAAA,GAAwB;AAC9B,IAAM,oBAAA,GAAuB;AAC7B,IAAM,iBAAA,GAAoB;AAC1B,IAAM,qBAAA,GAAwB;AAC9B,IAAM,iBAAA,GAAoB;AAI1B,IAAM,kBAAA,GAAqB;AAAA,EAChC,CAAC,gBAAgB,GAAG,wBAAA;AAAA,EACpB,CAAC,gBAAgB,GAAG,eAAA;AAAA,EACpB,CAAC,mBAAmB,GAAG,mBAAA;AAAA,EACvB,CAAC,kBAAkB,GAAG,gBAAA;AAAA,EACtB,CAAC,qBAAqB,GAAG,wBAAA;AAAA,EACzB,CAAC,oBAAoB,GAAG,6BAAA;AAAA,EACxB,CAAC,iBAAiB,GAAG,kCAAA;AAAA,EACrB,CAAC,qBAAqB,GAAG,uBAAA;AAAA,EACzB,CAAC,iBAAiB,GAAG;AACvB;AAgBO,IAAM,YAAA,GAAN,cAA2B,KAAA,CAAM;AAAA,EACtC,WAAA,CAAY,cAAc,YAAA,EAAc;AACtC,IAAA,MAAM,IAAA,GACJ,YAAA,IACA,kBAAA,CAAmB,YAAY,CAAA,IAC/B,8BAAA;AACF,IAAA,KAAA,CAAM,CAAA,CAAA,EAAI,YAAY,CAAA,EAAA,EAAK,IAAI,CAAA,CAAE,CAAA;AACjC,IAAA,IAAA,CAAK,IAAA,GAAO,cAAA;AACZ,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AAAA,EACtB;AACF;AAYO,SAAS,gBAAgB,YAAA,EAAc;AAC5C,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,kBAAkB,CAAA,CAAE,SAAS,YAAY,CAAA;AAC9D;AAYO,SAAS,oBAAoB,YAAA,EAAc;AAChD,EAAA,OAAO,kBAAA,CAAmB,YAAY,CAAA,IAAK,8BAAA;AAC7C;;;ACjFO,IAAMA,eAAAA,GAAiB,CAC5B,KAAA,EACA,OAAA,GAAU,OAAA,EACV,OAAO,KAAA,EACP,OAAA,GAAU,CAAA,EACV,OAAA,GAAU,CAAA,KACP;AACH,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM,OAAO,EAAA;AAClD,EAAA,IAAI,cAAA,GAAiB,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS;AAAA,IAClD,KAAA,EAAO,UAAA;AAAA,IACP,QAAA,EAAU,IAAA;AAAA,IACV,qBAAA,EAAuB,OAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA;AAEf,EAAA,OAAO,cAAA,CAAe,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACzC;AAEO,IAAMC,mBAAAA,GAAqB,CAAC,IAAA,KAAS;AAC1C,EAAA,OAAO,IAAA,CACJ,OAAA,CAAQ,QAAA,EAAU,CAAC,MAAA,EAAQ,EAAA,KAAO,GAAA,GAAM,EAAA,CAAG,WAAA,EAAa,CAAA,CACxD,OAAA,CAAQ,aAAa,SAAS,CAAA;AACnC;AAEO,SAAS,cAAc,KAAA,EAAO;AAEnC,EAAA,MAAM,gBAAgB,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,OAAA;AAAA,IAC3B,+CAAA;AAAA,IACA;AAAA,GAAA;AAGF,EAAA,IAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,UAAS,EAAA,EAAI;AAC9B,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,sCAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,EAAA,EAAI;AACrC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,+BAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,CAAA,EAAG;AACpC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,wBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,CAAA,EAAG;AACpC,IAAA,MAAM,WAAA,GAAc,aAAA,CAAc,OAAA,CAAQ,iBAAA,EAAmB,OAAO,CAAA;AACpE,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAO;AACL,IAAA,OAAO,aAAA,IAAA,IAAA,GAAA,aAAA,GAAiB,EAAA;AAAA,EAC1B;AACF;AAKO,IAAMC,cAAAA,GAAgB,CAC3B,KAAA,EACA,MAAA,GAAS,OAAA,EACT,UAAU,CAAA,EACV,OAAA,GAAU,CAAA,EACV,cAAA,GAAiB,GAAA,KACd;AACH,EAAA,IAAI,UAAU,MAAA,IAAa,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,IAAI,OAAO,EAAA;AAElE,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,WAAA,GAAc,KAAA;AAAA,EAChB,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AACpC,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG;AACvB,MAAA,WAAA,GAAc,MAAA,CAAO,MAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAC,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,WAAA,GAAc,OAAO,KAAK,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA,MAAO;AACL,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG,OAAO,KAAA;AAE/B,EAAA,MAAM,SAAA,GAAY,WAAA,CAAY,cAAA,CAAe,MAAA,EAAQ;AAAA,IACnD,qBAAA,EAAuB,OAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GACxB,CAAA;AAED,EAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,IAAA,EAAM,cAAc,CAAA;AAC/C;AAEO,IAAMC,UAAAA,GAAY,CAAC,GAAA,KAAQ;AAChC,EAAA,OAAO,GAAA,CACJ,aAAY,CACZ,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,GAAG,CAAA;AACb;AAEO,IAAMC,gBAAAA,GAAkB,CAAC,GAAA,KAAQ;AACtC,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,GAAA,KAAQ,OAAA,EAAS;AACrC,IAAA,OAAO,GAAA,KAAQ,MAAA;AAAA,EACjB,CAAA,MAAO;AACL,IAAA;AAAA,EACF;AACF;AAEO,SAAS,WAAW,KAAA,EAAO;AAEhC,EAAA,MAAM,aAAA,GAAgB,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,EAAA,CAAA;AAG/C,EAAA,IAAA,CAAI,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,UAAS,EAAA,EAAI;AAC9B,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,4CAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,EAAA,EAAI;AACrC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,qCAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,CAAA,EAAG;AACpC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,8BAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,CAAA,EAAG;AACpC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,uBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAA,IAAA,CAAW,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAe,MAAA,IAAS,CAAA,EAAG;AACpC,IAAA,MAAM,cAAc,aAAA,CAAc,OAAA;AAAA,MAChC,gBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAO,WAAA,IAAA,IAAA,GAAA,WAAA,GAAe,EAAA;AAAA,EACxB,CAAA,MAAO;AACL,IAAA,OAAO,aAAA,IAAA,IAAA,GAAA,aAAA,GAAiB,EAAA;AAAA,EAC1B;AACF","file":"index.mjs","sourcesContent":["/**\r\n * Account & ID Number Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (dashedAccount, dashedNPWP)\r\n * - formatters.js (formatAccountNumber)\r\n * - stringUtils.js (rekeningFormatter, npwpFormatter)\r\n */\r\n\r\n/**\r\n * Format nomor rekening dengan dash separator.\r\n * Mendukung berbagai panjang nomor rekening (progressive formatting).\r\n * @param {string} value - Nomor rekening (bisa mengandung karakter non-numerik)\r\n * @returns {string} Nomor rekening terformat (e.g., \"0012-01-123456-01-1\")\r\n *\r\n * @example\r\n * formatAccountNumber(\"001201123456011\") // \"0012-01-123456-01-1\"\r\n * formatAccountNumber(\"00120112345601\") // \"0012-01-123456-01\"\r\n * formatAccountNumber(\"0012011\") // \"0012-01-1\"\r\n */\r\nexport function formatAccountNumber(value) {\r\n if (!value) return \"\";\r\n\r\n // Remove non-numeric characters\r\n const filteredValue = value\r\n .toString()\r\n .replace(/[^0-9]/g, \"\");\r\n\r\n if (filteredValue.length > 14) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{2})(\\d{1})/,\r\n \"$1-$2-$3-$4-$5\"\r\n );\r\n } else if (filteredValue.length > 12) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{1})/,\r\n \"$1-$2-$3-$4\"\r\n );\r\n } else if (filteredValue.length > 6) {\r\n return filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{1})/,\r\n \"$1-$2-$3\"\r\n );\r\n } else if (filteredValue.length > 4) {\r\n return filteredValue.replace(/(\\d{4})(\\d{1})/, \"$1-$2\");\r\n }\r\n\r\n return filteredValue;\r\n}\r\n\r\n/**\r\n * Format nomor NPWP dengan dot dan dash separator.\r\n * Mendukung format NPWP 15 digit dan 16 digit (format baru).\r\n * @param {string} value - Nomor NPWP\r\n * @returns {string} NPWP terformat (e.g., \"01.234.567.8-901.234\")\r\n *\r\n * @example\r\n * formatNPWP(\"0123456789012345\") // \"01.234.567.8-901.2345\"\r\n * formatNPWP(\"012345678901234\") // \"01.234.567.8-901.234\"\r\n * formatNPWP(\"012345678\") // \"01.234.567.8\"\r\n */\r\nexport function formatNPWP(value) {\r\n if (!value) return \"\";\r\n\r\n // Remove non-numeric characters\r\n const filteredValue = value\r\n .toString()\r\n .replace(/\\D/g, \"\");\r\n\r\n if (filteredValue.length > 15) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})(\\d{4})/,\r\n \"$1.$2.$3.$4-$5.$6\"\r\n );\r\n } else if (filteredValue.length > 12) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})/,\r\n \"$1.$2.$3.$4-$5\"\r\n );\r\n } else if (filteredValue.length > 9) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3.$4\"\r\n );\r\n } else if (filteredValue.length > 6) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3\"\r\n );\r\n } else if (filteredValue.length > 2) {\r\n return filteredValue.replace(\r\n /(\\d{2})(\\d{3})/,\r\n \"$1.$2\"\r\n );\r\n }\r\n\r\n return filteredValue;\r\n}\r\n","/**\r\n * Currency Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (formatCurrency, formatNominal)\r\n * - formatCurrency.js (formatCurrencyRupiah)\r\n * - stringUtils.js (toCurrency, digitFormatter)\r\n */\r\n\r\n/**\r\n * Format angka ke format mata uang dengan locale dan currency yang bisa dikustomisasi.\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @param {object} options - Opsi formatting\r\n * @param {string} options.locale - Locale (default: \"id-ID\")\r\n * @param {string} options.currency - Kode mata uang (default: \"IDR\")\r\n * @param {number} options.minFractionDigits - Minimum digit desimal (default: 0)\r\n * @param {number} options.maxFractionDigits - Maximum digit desimal (default: 0)\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatCurrency(500000) // \"Rp500.000\"\r\n * formatCurrency(500000, { minFractionDigits: 2 }) // \"Rp500.000,00\"\r\n * formatCurrency(1000, { currency: \"USD\", locale: \"en-US\" }) // \"$1,000\"\r\n */\r\nexport const formatCurrency = (\r\n value,\r\n {\r\n locale = \"id-ID\",\r\n currency = \"IDR\",\r\n minFractionDigits = 0,\r\n maxFractionDigits = 0,\r\n } = {}\r\n) => {\r\n if (value === undefined || value === null) return \"\";\r\n const num = Number(value);\r\n if (isNaN(num)) return String(value);\r\n\r\n const formattedValue = new Intl.NumberFormat(locale, {\r\n style: \"currency\",\r\n currency,\r\n minimumFractionDigits: minFractionDigits,\r\n maximumFractionDigits: maxFractionDigits,\r\n }).format(num);\r\n\r\n return formattedValue.replace(/\\s/g, \"\");\r\n};\r\n\r\n/**\r\n * Format angka ke format Rupiah (shorthand untuk formatCurrency dengan default IDR).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @returns {string} Nilai terformat dalam Rupiah\r\n *\r\n * @example\r\n * formatRupiah(500000) // \"Rp500.000\"\r\n * formatRupiah(1500000) // \"Rp1.500.000\"\r\n */\r\nexport const formatRupiah = (value) => {\r\n return formatCurrency(value);\r\n};\r\n\r\n/**\r\n * Format angka ke format nominal (tanpa simbol mata uang).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @param {object} options - Opsi formatting\r\n * @param {string} options.locale - Locale (default: \"id-ID\")\r\n * @param {number} options.minFractionDigits - Minimum digit desimal (default: 0)\r\n * @param {number} options.maxFractionDigits - Maximum digit desimal (default: 0)\r\n * @param {string} options.decimalSeparator - Separator desimal (default: \",\")\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatNominal(500000) // \"500.000\"\r\n * formatNominal(500000.95, { minFractionDigits: 2, maxFractionDigits: 2 }) // \"500.000,95\"\r\n * formatNominal(\"1.500.000,50\") // \"1.500.000,50\" (handles string input with Indonesian format)\r\n */\r\nexport const formatNominal = (\r\n value,\r\n {\r\n locale = \"id-ID\",\r\n minFractionDigits = 0,\r\n maxFractionDigits = 0,\r\n decimalSeparator = \",\",\r\n } = {}\r\n) => {\r\n if (value === undefined || value === null || value === \"\") return \"\";\r\n\r\n let numberValue;\r\n if (typeof value === \"number\") {\r\n numberValue = value;\r\n } else if (typeof value === \"string\") {\r\n // Handle Indonesian format string (1.500.000,50)\r\n if (value.includes(\",\")) {\r\n numberValue = Number(value.replace(/\\./g, \"\").replace(\",\", \".\"));\r\n } else {\r\n numberValue = Number(value);\r\n }\r\n } else {\r\n return String(value);\r\n }\r\n\r\n if (isNaN(numberValue)) return String(value);\r\n\r\n const formatted = numberValue.toLocaleString(locale, {\r\n minimumFractionDigits: minFractionDigits,\r\n maximumFractionDigits: maxFractionDigits,\r\n });\r\n\r\n return formatted.replace(/,/g, decimalSeparator);\r\n};\r\n\r\n/**\r\n * Format angka ke format digit (tanpa simbol mata uang, tanpa desimal).\r\n * @param {number|string} value - Nilai yang akan diformat\r\n * @returns {string} Nilai terformat\r\n *\r\n * @example\r\n * formatDigit(500000) // \"500.000\"\r\n * formatDigit(1500000) // \"1.500.000\"\r\n */\r\nexport const formatDigit = (value) => {\r\n const num = Number(value);\r\n return new Intl.NumberFormat(\"id-ID\", { minimumFractionDigits: 0 }).format(\r\n num || 0\r\n );\r\n};\r\n","/**\r\n * Date Formatting Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - stringUtils.js (semua date formatter functions)\r\n *\r\n * Konvensi penamaan:\r\n * - \"Dash\" = separator \"-\" (e.g., 2024-07-19)\r\n * - \"Slash\" = separator \"/\" (e.g., 19/07/2024)\r\n * - \"YearFirst\" = format YYYY-MM-DD\r\n * - \"DateFirst\" = format DD-MM-YYYY atau DD/MM/YYYY\r\n */\r\n\r\n/**\r\n * Konversi Date object ke format YYYY-MM-DD.\r\n * @param {Date|string} value - Date object atau date string\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * toYearFirstDash(new Date(2024, 6, 19)) // \"2024-07-19\"\r\n * toYearFirstDash(\"2024-07-19T00:00:00\") // \"2024-07-19\"\r\n */\r\nexport const toYearFirstDash = (value) => {\r\n const date = new Date(value);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n return `${year}-${month}-${day}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DD/MM/YYYY.\r\n * @param {Date|string} value - Date object atau date string\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * toDateFirstSlash(new Date(2024, 1, 1)) // \"01/02/2024\"\r\n * toDateFirstSlash(\"2024-02-01\") // \"01/02/2024\"\r\n */\r\nexport const toDateFirstSlash = (value) => {\r\n const date = new Date(value);\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DD/MM/YYYY (alias).\r\n * @param {Date} date - Date object\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * formatDateToDDSlashMMSlashYYYY(new Date(2025, 2, 31)) // \"31/03/2025\"\r\n */\r\nexport const formatDateToDDSlashMMSlashYYYY = (date) => {\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi Date object ke format DDMMYYYY (tanpa separator).\r\n * @param {Date} date - Date object\r\n * @returns {string} Format \"DDMMYYYY\"\r\n *\r\n * @example\r\n * formatDateToDDMMYYYY(new Date(2025, 2, 31)) // \"31032025\"\r\n */\r\nexport const formatDateToDDMMYYYY = (date) => {\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n return `${day}${month}${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format YYYY-MM-DD ke DD-MM-YYYY.\r\n * @param {string} value - Date string format \"YYYY-MM-DD\"\r\n * @returns {string} Format \"DD-MM-YYYY\"\r\n *\r\n * @example\r\n * yearFirstDashToDateFirstDash(\"2024-07-26\") // \"26-07-2024\"\r\n */\r\nexport const yearFirstDashToDateFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const [year, month, day] = value.split(\"-\");\r\n return `${day}-${month}-${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format YYYY-MM-DD ke DD/MM/YYYY.\r\n * @param {string} value - Date string format \"YYYY-MM-DD\"\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * yearFirstDashToDateFirstSlash(\"2024-07-19\") // \"19/07/2024\"\r\n */\r\nexport const yearFirstDashToDateFirstSlash = (value) => {\r\n if (!value) return \"\";\r\n const parts = value.split(\"-\");\r\n if (parts.length === 3) {\r\n const [year, month, day] = parts;\r\n return `${day}/${month}/${year}`;\r\n }\r\n return value;\r\n};\r\n\r\n/**\r\n * Konversi format DD/MM/YYYY ke YYYY-MM-DD.\r\n * @param {string} value - Date string format \"DD/MM/YYYY\"\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * dateFirstSlashToYearFirstDash(\"19/07/2024\") // \"2024-07-19\"\r\n */\r\nexport const dateFirstSlashToYearFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const [day, month, year] = value.split(\"/\");\r\n return `${year}-${month.padStart(2, \"0\")}-${day.padStart(2, \"0\")}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit (e.g., \"0041125\") ke DD/MM/YYYY.\r\n * Format: [prefix 1 digit][DD][MM][YY atau YYYY]\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * sevenDigitToDateFirstSlash(\"0190724\") // \"19/07/2024\"\r\n * sevenDigitToDateFirstSlash(\"0041125\") // \"04/11/2025\"\r\n */\r\nexport const sevenDigitToDateFirstSlash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.substring(0, 2);\r\n const month = actualDate.substring(2, 4);\r\n const yearLastTwoDigits = actualDate.substring(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${day}/${month}/${year}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit ke YYYY-MM-DD.\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"YYYY-MM-DD\"\r\n *\r\n * @example\r\n * sevenDigitToYearFirstDash(\"0190724\") // \"2024-07-19\"\r\n */\r\nexport const sevenDigitToYearFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.slice(0, 2);\r\n const month = actualDate.slice(2, 4);\r\n const yearLastTwoDigits = actualDate.slice(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${year}-${month}-${day}`;\r\n};\r\n\r\n/**\r\n * Konversi format 7 digit ke DD-MM-YYYY.\r\n * @param {string} value - 7-digit date string\r\n * @returns {string} Format \"DD-MM-YYYY\"\r\n *\r\n * @example\r\n * sevenDigitToDateFirstDash(\"0041125\") // \"04-11-2025\"\r\n */\r\nexport const sevenDigitToDateFirstDash = (value) => {\r\n if (!value) return \"\";\r\n const actualDate = value.substring(1);\r\n const day = actualDate.slice(0, 2);\r\n const month = actualDate.slice(2, 4);\r\n const yearLastTwoDigits = actualDate.slice(4, 8);\r\n const yearPrefix = parseInt(yearLastTwoDigits, 10) >= 70 ? \"19\" : \"20\";\r\n const year = yearPrefix + yearLastTwoDigits;\r\n return `${day}-${month}-${year}`;\r\n};\r\n\r\n/**\r\n * Konversi datetime string ke format DD-MM-YYYY HH:mm.\r\n * @param {string} value - DateTime string (e.g., \"2025-01-13 16:39:39\")\r\n * @returns {string} Format \"DD-MM-YYYY HH:mm\"\r\n *\r\n * @example\r\n * toDateTimeHourMinute(\"2025-01-13 16:39:39\") // \"13-01-2025 16:39\"\r\n */\r\nexport const toDateTimeHourMinute = (value) => {\r\n if (!value) return \"\";\r\n const date = new Date(value);\r\n const day = String(date.getDate()).padStart(2, \"0\");\r\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const year = date.getFullYear();\r\n const hours = String(date.getHours()).padStart(2, \"0\");\r\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\r\n return `${day}-${month}-${year} ${hours}:${minutes}`;\r\n};\r\n\r\n/**\r\n * Konversi format DDMMYY (6 digit) ke DD/MM/YYYY.\r\n * @param {string} value - 6-digit date string (DDMMYY)\r\n * @returns {string} Format \"DD/MM/YYYY\"\r\n *\r\n * @example\r\n * ddmmyyToSlashDate(\"190724\") // \"19/07/2024\"\r\n * ddmmyyToSlashDate(\"010170\") // \"01/01/1970\"\r\n */\r\nexport const ddmmyyToSlashDate = (value) => {\r\n if (!value || value.length !== 6) return \"\";\r\n const day = value.substring(0, 2);\r\n const month = value.substring(2, 4);\r\n const yearSuffix = value.substring(4, 6);\r\n const year =\r\n parseInt(yearSuffix, 10) >= 70 ? \"19\" + yearSuffix : \"20\" + yearSuffix;\r\n return `${day}/${month}/${year}`;\r\n};\r\n","/**\r\n * String Formatting & Transformation Utilities\r\n *\r\n * Konsolidasi dari:\r\n * - formatString.js (formatResponseDesc, titleCase, stringToBoolean)\r\n * - convertSnakeToCamelWithSpace.js (snakeToCamelWithSpace)\r\n * - stringUtils.js (matchWiths, needToHide)\r\n */\r\n\r\n/**\r\n * Format response description: replace underscores with spaces dan capitalize.\r\n * @param {string} desc - Description string dari API response\r\n * @returns {string} Formatted description\r\n *\r\n * @example\r\n * formatResponseDesc(\"invalid_request_data\") // \"Invalid Request Data\"\r\n * formatResponseDesc(\"brispot_error\") // \"BRISPOT Error\"\r\n */\r\nexport const formatResponseDesc = (desc) => {\r\n if (!desc) return \"\";\r\n return desc\r\n .replace(/_(\\w)/g, (_match, p1) => \" \" + p1.toUpperCase())\r\n .replace(/brispot/gi, \"BRISPOT\");\r\n};\r\n\r\n/**\r\n * Konversi string ke Title Case.\r\n * @param {string} str - Input string\r\n * @returns {string} Title cased string\r\n *\r\n * @example\r\n * titleCase(\"hello world\") // \"Hello World\"\r\n * titleCase(\"JOHN DOE\") // \"John Doe\"\r\n */\r\nexport const titleCase = (str) => {\r\n if (!str) return \"\";\r\n return str\r\n .toLowerCase()\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n};\r\n\r\n/**\r\n * Konversi snake_case ke Title Case With Spaces.\r\n * @param {string} snakeStr - Snake case string\r\n * @returns {string} Title case with spaces\r\n *\r\n * @example\r\n * snakeToCamelWithSpace(\"hello_world\") // \"Hello World\"\r\n * snakeToCamelWithSpace(\"user_full_name\") // \"User Full Name\"\r\n */\r\nexport function snakeToCamelWithSpace(snakeStr) {\r\n if (!snakeStr) return \"\";\r\n return snakeStr\r\n .toLowerCase()\r\n .replace(/_([a-z])/g, (_match, letter) => ` ${letter.toUpperCase()}`)\r\n .replace(/^([a-z])/, (_, letter) => letter.toUpperCase());\r\n}\r\n\r\n/**\r\n * Konversi string \"true\"/\"false\" ke boolean.\r\n * @param {string} str - String \"true\" atau \"false\"\r\n * @returns {boolean|undefined} Boolean value atau undefined jika bukan \"true\"/\"false\"\r\n *\r\n * @example\r\n * stringToBoolean(\"true\") // true\r\n * stringToBoolean(\"false\") // false\r\n * stringToBoolean(\"other\") // undefined\r\n */\r\nexport const stringToBoolean = (str) => {\r\n if (str === \"true\" || str === \"false\") {\r\n return str === \"true\";\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Cek apakah target string mengandung salah satu dari values.\r\n * @param {string} targetStr - String yang akan dicek\r\n * @param {string[]} values - Array of substrings to match\r\n * @returns {boolean} True jika salah satu value ditemukan\r\n *\r\n * @example\r\n * matchWiths(\"hello world\", [\"hello\", \"foo\"]) // true\r\n * matchWiths(\"hello world\", [\"foo\", \"bar\"]) // false\r\n */\r\nexport function matchWiths(targetStr, values = []) {\r\n if (!targetStr) return false;\r\n return values.some((v) => targetStr.includes(v));\r\n}\r\n\r\n/**\r\n * Mask/hide sebagian karakter dari string (untuk privasi).\r\n * @param {string} value - String yang akan di-mask\r\n * @param {string} type - Tipe masking: \"email\" atau default\r\n * @returns {string} Masked string\r\n *\r\n * @example\r\n * maskString(\"johndoe@email.com\", \"email\") // \"joh****@email.com\"\r\n * maskString(\"081234567890\") // \"081*****890\"\r\n */\r\nexport const maskString = (value, type) => {\r\n if (!value) return \"\";\r\n const tempArr = value.split(\"\");\r\n let len = tempArr.length - 3;\r\n\r\n if (type === \"email\") {\r\n len = tempArr.indexOf(\"@\");\r\n }\r\n\r\n tempArr.splice(3 - tempArr.length, len - 3, ...\"*\".repeat(len - 3).split(\"\"));\r\n return tempArr.join(\"\");\r\n};\r\n","export const callAsset = (uri = \"\") => {\r\n const basePath =\r\n typeof window === \"undefined\"\r\n ? \"\"\r\n : (window.__NEXT_DATA__?.assetPrefix ||\r\n process.env.NEXT_PUBLIC_BASE_PATH ||\r\n \"\");\r\n\r\n return `${basePath}${uri}`;\r\n};","export const checkRoleUser = (roles, listRole) => {\r\n let result = false\r\n\r\n if (Array.isArray(roles) && Array.isArray(listRole)) {\r\n if(roles.length !== 0 && listRole.length !== 0){\r\n for(let data of roles){\r\n if(listRole.includes(data)){\r\n result = true\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\nexport const toggleUsingDummyWbenchEndpoint = (status) => {\r\n return status === true \r\n}","export const NOT_AUTHORIZE_RESPONSE_CODE = [\"X0\", \"X1\", \"X2\"];\r\n\r\nexport const PUBLIC_PATHS = [\"/auth/v1/login\"];\r\n\r\nexport const COOKIE_MAX_SIZE = 2000;\r\n\r\nexport const CLIENT_PUBLIC_API_ROUTES = [\r\n \"/api/auth/login\",\r\n \"/api/auth/requestOtp\",\r\n \"/api/auth/logout\",\r\n];\r\n\r\n// * Adjust these origins based on your local development setup if needed.\r\nexport const CLIENT_ALLOWED_ORIGINS = [\r\n \"http://localhost:3000\",\r\n \"http://localhost:3001\",\r\n \"http://127.0.0.1:3000\",\r\n \"http://127.0.0.1:3001\",\r\n /\\.bri\\.co\\.id$/,\r\n];\r\n","export const disableFormElements = (selector) => {\r\n const formElements = document.querySelectorAll(selector);\r\n \r\n formElements.forEach((element) => {\r\n element.disabled = true; \r\n element.readOnly = true; \r\n });\r\n};\r\n\r\nexport const disableFormBuilder = (fields, roleAccess) => {\r\n return fields.map((field) => {\r\n if (!field) return null;\r\n\r\n return {\r\n ...field,\r\n isDisabled: roleAccess ? true : field.isDisabled,\r\n };\r\n });\r\n};\r\n","export function generateVcifId() {\r\n const timestamp = Date.now(); \r\n return `VCIF${timestamp}`;\r\n}\r\n","export function getLocalStorageItem(key) {\r\n const value = localStorage.getItem(key);\r\n try {\r\n return JSON.parse(value);\r\n } catch (err) {\r\n return value;\r\n }\r\n}\r\n","export const getTipeBankKorporasi = (data) => {\r\n const adaInduk = data?.some(item => item.status_perusahaan === \"Induk\");\r\n const dataInduk = data?.filter(item => item.status_perusahaan === \"Induk\");\r\n let tipeBank = '';\r\n\r\n // Menampilkan hasil\r\n if (adaInduk) {\r\n tipeBank = dataInduk[0]?.tipe_bank\r\n } else {\r\n tipeBank = data?.find(item => item.tipe_bank === \"B\")?.tipe_bank || \"A\";\r\n }\r\n\r\n return tipeBank\r\n}","/**\r\n * Exception Utilities\r\n *\r\n * Standardized exception codes dan ApiException class untuk handling error dari backend API.\r\n */\r\n\r\n// ─── Exception Codes ─────────────────────────────────────────────────────────\r\n\r\nexport const HEADER_EXCEPTION = \"X0\";\r\nexport const ACCESS_EXCEPTION = \"X1\";\r\nexport const PARAMETER_EXCEPTION = \"01\";\r\nexport const NOTFOUND_EXCEPTION = \"02\";\r\nexport const INVALIDRULE_EXCEPTION = \"03\";\r\nexport const THIRDPARTY_EXCEPTION = \"04\";\r\nexport const WAITING_EXCEPTION = \"05\";\r\nexport const UNSUPPORTED_EXCEPTION = \"06\";\r\nexport const RUNTIME_EXCEPTION = \"99\";\r\n\r\n// ─── Exception Messages ──────────────────────────────────────────────────────\r\n\r\nexport const EXCEPTION_MESSAGES = {\r\n [HEADER_EXCEPTION]: \"Invalid request header\",\r\n [ACCESS_EXCEPTION]: \"Access denied\",\r\n [PARAMETER_EXCEPTION]: \"Invalid parameter\",\r\n [NOTFOUND_EXCEPTION]: \"Data not found\",\r\n [INVALIDRULE_EXCEPTION]: \"Validation rule failed\",\r\n [THIRDPARTY_EXCEPTION]: \"Third-party service failure\",\r\n [WAITING_EXCEPTION]: \"Process in progress, please wait\",\r\n [UNSUPPORTED_EXCEPTION]: \"Unsupported operation\",\r\n [RUNTIME_EXCEPTION]: \"Internal system error\",\r\n};\r\n\r\n// ─── ApiException Class ──────────────────────────────────────────────────────\r\n\r\n/**\r\n * Custom exception class untuk API errors.\r\n * Menyimpan responseCode dan responseDesc dari backend.\r\n *\r\n * @example\r\n * throw new ApiException(\"02\", \"Prakarsa tidak ditemukan\");\r\n *\r\n * @example\r\n * // Tanpa custom message — pakai default dari EXCEPTION_MESSAGES\r\n * throw new ApiException(\"X1\");\r\n * // Error: [X1] Access denied\r\n */\r\nexport class ApiException extends Error {\r\n constructor(responseCode, responseDesc) {\r\n const desc =\r\n responseDesc ||\r\n EXCEPTION_MESSAGES[responseCode] ||\r\n \"An unexpected error occurred\";\r\n super(`[${responseCode}] ${desc}`);\r\n this.name = \"ApiException\";\r\n this.responseCode = responseCode;\r\n this.responseDesc = desc;\r\n }\r\n}\r\n\r\n/**\r\n * Cek apakah responseCode termasuk exception.\r\n * @param {string} responseCode - Response code dari API\r\n * @returns {boolean} True jika code ada di daftar exception\r\n *\r\n * @example\r\n * isExceptionCode(\"00\") // false (success)\r\n * isExceptionCode(\"X0\") // true (header exception)\r\n * isExceptionCode(\"02\") // true (not found)\r\n */\r\nexport function isExceptionCode(responseCode) {\r\n return Object.keys(EXCEPTION_MESSAGES).includes(responseCode);\r\n}\r\n\r\n/**\r\n * Get human-readable message dari exception code.\r\n * @param {string} responseCode - Response code dari API\r\n * @returns {string} Exception message\r\n *\r\n * @example\r\n * getExceptionMessage(\"X1\") // \"Access denied\"\r\n * getExceptionMessage(\"99\") // \"Internal system error\"\r\n * getExceptionMessage(\"unknown\") // \"An unexpected error occurred\"\r\n */\r\nexport function getExceptionMessage(responseCode) {\r\n return EXCEPTION_MESSAGES[responseCode] || \"An unexpected error occurred\";\r\n}\r\n","/* Formatting 500000 to Rp500.000,00\r\n implementasi di src/pages/prakarsa/prakarsa-korporasi/informasi-nasabah/pengecekan-kredit/dialog-lihat-sicd.jsx \r\n country dan curr disesuaikan dengan negara dan mata uang\r\n minFrac dan maxFrac disesuaikan dengan jumlah angka di belakang koma */\r\nexport const formatCurrency = (\r\n value,\r\n country = \"id-ID\",\r\n curr = \"IDR\",\r\n minFrac = 0,\r\n maxFrac = 0\r\n) => {\r\n if (value === undefined || value === null) return \"\";\r\n let formattedValue = new Intl.NumberFormat(country, {\r\n style: \"currency\",\r\n currency: curr,\r\n minimumFractionDigits: minFrac,\r\n maximumFractionDigits: maxFrac,\r\n }).format(value);\r\n\r\n return formattedValue.replace(/\\s/g, \"\");\r\n};\r\n\r\nexport const formatResponseDesc = (desc) => {\r\n return desc\r\n .replace(/_(\\w)/g, (_match, p1) => \" \" + p1.toUpperCase())\r\n .replace(/brispot/gi, \"BRISPOT\");\r\n};\r\n\r\nexport function dashedAccount(value) {\r\n // Remove numeric characters from the input\r\n const filteredValue = value?.replace(\r\n /[A-Za-z\\s!@#$%^&*_+{}()=`\"[\\]:;<>,?~\\\\|\\\\/-]/g,\r\n \"\"\r\n );\r\n // Replace the matched pattern with the matched group + a dash\r\n if (filteredValue?.length > 14) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{2})(\\d{1})/g,\r\n \"$1-$2-$3-$4-$5\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 12) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{6})(\\d{1})/g,\r\n \"$1-$2-$3-$4\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 6) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{4})(\\d{2})(\\d{1})/g,\r\n \"$1-$2-$3\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 4) {\r\n const dashedValue = filteredValue.replace(/(\\d{4})(\\d{1})/g, \"$1-$2\");\r\n return dashedValue ?? \"\";\r\n } else {\r\n return filteredValue ?? \"\";\r\n }\r\n}\r\n\r\n/* Formatting 500000.95 to 500.000,95 \r\n implementasi di src/pages/prakarsa/prakarsa-bg/index.jsx \r\n minFrac dan maxFrac disesuaikan dengan jumlah angka di belakang koma */\r\nexport const formatNominal = (\r\n value,\r\n locale = \"id-ID\",\r\n minFrac = 0,\r\n maxFrac = 0,\r\n commaSeparator = \",\"\r\n) => {\r\n if (value === undefined || value === null || value === \"\") return \"\";\r\n\r\n let numberValue;\r\n if (typeof value === \"number\") {\r\n numberValue = value;\r\n } else if (typeof value === \"string\") {\r\n if (value.includes(\",\")) {\r\n numberValue = Number(value.replace(/\\./g, \"\").replace(\",\", \".\"));\r\n } else {\r\n numberValue = Number(value);\r\n }\r\n } else {\r\n return value;\r\n }\r\n \r\n if (isNaN(numberValue)) return value;\r\n \r\n const formatted = numberValue.toLocaleString(locale, {\r\n minimumFractionDigits: minFrac,\r\n maximumFractionDigits: maxFrac,\r\n });\r\n\r\n return formatted.replace(/,/g, commaSeparator);\r\n};\r\n\r\nexport const titleCase = (str) => {\r\n return str\r\n .toLowerCase()\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n .join(\" \");\r\n};\r\n\r\nexport const stringToBoolean = (str) => {\r\n if (str === \"true\" || str === \"false\") {\r\n return str === \"true\";\r\n } else {\r\n return;\r\n }\r\n};\r\n\r\nexport function dashedNPWP(value) {\r\n // Hapus karakter non-numerik dari input\r\n const filteredValue = value?.replace(/[^\\d]/g, \"\");\r\n\r\n // Terapkan format sesuai panjang angka\r\n if (filteredValue?.length > 15) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})(\\d{4})/,\r\n \"$1.$2.$3.$4-$5.$6\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 12) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})(\\d{3})/,\r\n \"$1.$2.$3.$4-$5\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 9) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3.$4\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 6) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})(\\d{1})/,\r\n \"$1.$2.$3\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else if (filteredValue?.length > 2) {\r\n const dashedValue = filteredValue.replace(\r\n /(\\d{2})(\\d{3})/,\r\n \"$1.$2\"\r\n );\r\n return dashedValue ?? \"\";\r\n } else {\r\n return filteredValue ?? \"\";\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spotlibs-components",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "private": false,
5
5
  "main": "dist/index.mjs",
6
6
  "module": "dist/index.mjs",
@@ -37,6 +37,11 @@
37
37
  "types": "./src/utils/*.d.ts",
38
38
  "import": "./src/utils/*.js",
39
39
  "default": "./src/utils/*.js"
40
+ },
41
+ "./layout": {
42
+ "types": "./dist/layout/index.d.mts",
43
+ "import": "./dist/layout/index.mjs",
44
+ "default": "./dist/layout/index.mjs"
40
45
  }
41
46
  },
42
47
  "dependencies": {
@@ -50,6 +55,7 @@
50
55
  "@mui/material": "^5.16.14",
51
56
  "@mui/x-date-pickers": "5.0.20",
52
57
  "@tabler/icons-react": "^3.43.0",
58
+ "crypto-js": "^4.2.0",
53
59
  "@tinymce/tinymce-react": "^5.0.1",
54
60
  "chart.js": "^4.5.1",
55
61
  "date-fns": "2.30.0",
@@ -88,12 +94,12 @@
88
94
  "@storybook/nextjs-vite": "^9.1.20",
89
95
  "@storybook/react": "^9.1.20",
90
96
  "@tinymce/tinymce-react": "^5.0.1",
97
+ "@tailwindcss/postcss": "^4.3.0",
91
98
  "@types/node": "25.6.0",
92
99
  "@types/react": "^19.0.0",
93
100
  "@types/react-dom": "^19.0.0",
94
101
  "@vitest/browser": "^3.0.0",
95
102
  "@vitest/coverage-v8": "^3.0.0",
96
- "autoprefixer": "^10.4.23",
97
103
  "date-fns": "2.30.0",
98
104
  "dayjs": "^1.11.19",
99
105
  "eslint": "^9",
@@ -111,7 +117,7 @@
111
117
  "react-table": "^7.8.0",
112
118
  "serve": "^14.2.5",
113
119
  "storybook": "^9.1.20",
114
- "tailwindcss": "^3.4.19",
120
+ "tailwindcss": "^4.3.0",
115
121
  "tinymce": "^7.1.0",
116
122
  "tsconfig-paths": "^4.2.0",
117
123
  "tsup": "^8.5.1",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/json.js","../src/utils/asset.js"],"names":[],"mappings":";AAAO,SAAS,UAAU,KAAA,EAAO;AAC/B,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACzB,SAAS,GAAA,EAAK;AACZ,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAEO,SAAS,mBAAA,CAAoB,QAAQ,IAAA,EAAM;AAChD,EAAA,IAAI;AACF,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,KAAK,CAAA;AACxC,MAAA,IAAI,OAAA,GAAU,EAAA;AAEd,MAAA,IAAI,WAAA,CAAY,SAAS,GAAA,EAAK;AAC5B,QAAA,OAAA,GAAU,WAAA,CAAY,SAAA,CAAU,CAAA,EAAG,GAAG,CAAA,GAAI,MAAA;AAAA,MAC5C,CAAA,MAAO;AACL,QAAA,OAAA,GAAU,WAAA;AAAA,MACZ;AAEA,MAAA,OAAO,OAAA;AAAA,IACT;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,CAAA,EAAG;AACV,IAAA,OAAO,CAAA;AAAA,EACT;AACF;AAEO,SAAS,UAAA,CAAW,MAAM,MAAA,EAAQ;AACvC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC5B,EAAA,IAAI,KAAA,GAAQ,MAAA;AACZ,EAAA,KAAA,IAAS,QAAQ,KAAA,EAAO;AACtB,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GAAQ,OAAO,IAAI,CAAA;AACzB,IAAA,KAAA,GAAQ,CAAC,MAAM,KAAK,CAAA,GAAI,MAAM,KAAK,CAAA,GAAI,MAAM,IAAI,CAAA;AAAA,EACnD;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,mBAAmB,GAAA,EAAK;AACtC,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,kBAAkB,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AAAA,EACvD,CAAA,MAAA,IAAW,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,EAAU;AACzC,IAAA,OAAO,MAAM,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,MAAK,CAAE,GAAA;AAAA,MACnC,CAAA,GAAA,KAAO,KAAK,SAAA,CAAU,GAAG,IAAI,GAAA,GAAM,kBAAA,CAAmB,GAAA,CAAI,GAAG,CAAC;AAAA,KAChE,CAAE,IAAA,CAAK,GAAG,CAAA,GAAI,GAAA;AAAA,EAChB,CAAA,MAAO;AACL,IAAA,OAAO,IAAA,CAAK,UAAU,GAAG,CAAA;AAAA,EAC3B;AACF;;;ACtDO,IAAM,SAAA,GAAY,CAAC,GAAA,GAAM,EAAA,KAAO;AAAvC,EAAA,IAAA,EAAA;AACE,EAAA,MAAM,QAAA,GACJ,OAAO,MAAA,KAAW,WAAA,GACd,EAAA,GAAA,CAAA,CACC,EAAA,GAAA,MAAA,CAAO,aAAA,KAAP,IAAA,GAAA,MAAA,GAAA,EAAA,CAAsB,WAAA,KACrB,OAAA,CAAQ,GAAA,CAAI,qBAAA,IACZ,EAAA;AAER,EAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,EAAG,GAAG,CAAA,CAAA;AAC1B","file":"chunk-UFE7HFT2.mjs","sourcesContent":["export function parseJSON(value) {\r\n try {\r\n return JSON.parse(value);\r\n } catch (err) {\r\n return value;\r\n }\r\n}\r\n\r\nexport function jsonToStringLimiter(value = null) {\r\n try {\r\n if (value) {\r\n const convertData = JSON.stringify(value);\r\n let newData = \"\";\r\n\r\n if (convertData.length > 200) {\r\n newData = convertData.substring(0, 200) + \"***}\";\r\n } else {\r\n newData = convertData;\r\n }\r\n\r\n return newData;\r\n }\r\n\r\n return null;\r\n } catch (e) {\r\n return e;\r\n }\r\n}\r\n\r\nexport function errorState(name, errors) {\r\n const parts = name.split(\".\");\r\n let value = errors;\r\n for (let part of parts) {\r\n if (!value) {\r\n break;\r\n }\r\n\r\n const index = Number(part);\r\n value = !isNaN(index) ? value[index] : value[part];\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function ascendingStringify(obj) {\r\n if (Array.isArray(obj)) {\r\n return '[' + obj.map(ascendingStringify).join(',') + ']';\r\n } else if (obj && typeof obj === 'object') {\r\n return '{' + Object.keys(obj).sort().map(\r\n key => JSON.stringify(key) + ':' + ascendingStringify(obj[key])\r\n ).join(',') + '}';\r\n } else {\r\n return JSON.stringify(obj);\r\n }\r\n}\r\n","export const callAsset = (uri = \"\") => {\r\n const basePath =\r\n typeof window === \"undefined\"\r\n ? \"\"\r\n : (window.__NEXT_DATA__?.assetPrefix ||\r\n process.env.NEXT_PUBLIC_BASE_PATH ||\r\n \"\");\r\n\r\n return `${basePath}${uri}`;\r\n};"]}