@nocios/crudify-ui 4.4.32 → 4.4.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CrudiaFileField-D5zDp_Y1.d.mts → CrudiaFileField-8ArxOo5y.d.mts} +13 -13
- package/dist/{CrudiaFileField-CXyBfgOd.d.ts → CrudiaFileField-DA-kEoTA.d.ts} +13 -13
- package/dist/{chunk-3OZPBGVW.mjs → chunk-GWQVH4G4.mjs} +1 -1
- package/dist/{chunk-SOGHYUM2.mjs → chunk-IU2LK2NF.mjs} +1 -1
- package/dist/{chunk-5T4X67GW.js → chunk-J4K6MZHY.js} +1 -1
- package/dist/{chunk-WIWNROEA.js → chunk-PDFLD5FF.js} +1 -1
- package/dist/{chunk-VHWM5MV6.js → chunk-XHVF2GVH.js} +1 -1
- package/dist/{chunk-R4PHVWCE.mjs → chunk-YRS5XYAB.mjs} +1 -1
- package/dist/components.d.mts +1 -1
- package/dist/components.d.ts +1 -1
- package/dist/components.js +1 -1
- package/dist/components.mjs +1 -1
- package/dist/hooks.d.mts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/{index-BicpdTC_.d.ts → index-BVT7flO5.d.ts} +57 -49
- package/dist/{index-wi46iw-x.d.mts → index-CQnAzvOE.d.mts} +57 -49
- package/dist/index.d.mts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
|
@@ -463,121 +463,129 @@ interface UseUserProfileReturn {
|
|
|
463
463
|
declare const useUserProfile: (options?: UseUserProfileOptions) => UseUserProfileReturn;
|
|
464
464
|
|
|
465
465
|
/**
|
|
466
|
-
*
|
|
466
|
+
* Complete hook for file handling with:
|
|
467
|
+
* - Progressive upload to S3 with pre-signed URLs
|
|
468
|
+
* - Per-file progress tracking
|
|
469
|
+
* - Type and size validation
|
|
470
|
+
* - Soft delete (disableFile)
|
|
471
|
+
* - Multiple file support
|
|
472
|
+
*/
|
|
473
|
+
/**
|
|
474
|
+
* Individual file status
|
|
467
475
|
*/
|
|
468
476
|
type FileStatus = "pending" | "uploading" | "completed" | "error" | "removing";
|
|
469
477
|
/**
|
|
470
|
-
*
|
|
478
|
+
* Represents a file in the system
|
|
471
479
|
*/
|
|
472
480
|
interface FileItem {
|
|
473
|
-
/**
|
|
481
|
+
/** Unique file ID (generated or from server) */
|
|
474
482
|
id: string;
|
|
475
|
-
/**
|
|
483
|
+
/** Original file name */
|
|
476
484
|
name: string;
|
|
477
|
-
/**
|
|
485
|
+
/** Size in bytes */
|
|
478
486
|
size: number;
|
|
479
|
-
/**
|
|
487
|
+
/** MIME content type */
|
|
480
488
|
contentType: string;
|
|
481
|
-
/**
|
|
489
|
+
/** Current file status */
|
|
482
490
|
status: FileStatus;
|
|
483
|
-
/**
|
|
491
|
+
/** Upload progress (0-100) */
|
|
484
492
|
progress: number;
|
|
485
493
|
/**
|
|
486
|
-
*
|
|
487
|
-
*
|
|
494
|
+
* Relative file path (includes visibility)
|
|
495
|
+
* Format: "public/path/file.ext" or "private/path/file.ext"
|
|
488
496
|
*/
|
|
489
497
|
filePath?: string;
|
|
490
498
|
/**
|
|
491
|
-
*
|
|
492
|
-
*
|
|
499
|
+
* File visibility
|
|
500
|
+
* Extracted from filePath for convenience
|
|
493
501
|
*/
|
|
494
502
|
visibility?: "public" | "private";
|
|
495
|
-
/** URL
|
|
503
|
+
/** Public URL for public files */
|
|
496
504
|
publicUrl?: string;
|
|
497
|
-
/** URL
|
|
505
|
+
/** Preview URL (for images) */
|
|
498
506
|
previewUrl?: string;
|
|
499
|
-
/**
|
|
507
|
+
/** Error message if failed */
|
|
500
508
|
errorMessage?: string;
|
|
501
|
-
/**
|
|
509
|
+
/** Creation timestamp */
|
|
502
510
|
createdAt: number;
|
|
503
|
-
/**
|
|
511
|
+
/** Original file (only during upload) */
|
|
504
512
|
file?: File;
|
|
505
513
|
}
|
|
506
514
|
/**
|
|
507
|
-
*
|
|
515
|
+
* Hook configuration
|
|
508
516
|
*/
|
|
509
517
|
interface UseFileUploadOptions {
|
|
510
|
-
/**
|
|
518
|
+
/** Allowed MIME types (e.g., ["image/png", "image/jpeg", "application/pdf"]) */
|
|
511
519
|
acceptedTypes?: string[];
|
|
512
|
-
/**
|
|
520
|
+
/** Maximum file size in bytes (default: 10MB) */
|
|
513
521
|
maxFileSize?: number;
|
|
514
|
-
/**
|
|
522
|
+
/** Maximum number of files (undefined = no limit) */
|
|
515
523
|
maxFiles?: number;
|
|
516
|
-
/**
|
|
524
|
+
/** Minimum number of required files (default: 0) */
|
|
517
525
|
minFiles?: number;
|
|
518
526
|
/**
|
|
519
|
-
*
|
|
527
|
+
* Visibility of uploaded files
|
|
520
528
|
* @default "private"
|
|
521
529
|
*/
|
|
522
530
|
visibility?: "public" | "private";
|
|
523
|
-
/** Callback
|
|
531
|
+
/** Callback when an upload completes successfully */
|
|
524
532
|
onUploadComplete?: (file: FileItem) => void;
|
|
525
|
-
/** Callback
|
|
533
|
+
/** Callback when an upload fails */
|
|
526
534
|
onUploadError?: (file: FileItem, error: string) => void;
|
|
527
|
-
/** Callback
|
|
535
|
+
/** Callback when a file is removed */
|
|
528
536
|
onFileRemoved?: (file: FileItem) => void;
|
|
529
|
-
/** Callback
|
|
537
|
+
/** Callback when the file list changes */
|
|
530
538
|
onFilesChange?: (files: FileItem[]) => void;
|
|
531
539
|
}
|
|
532
540
|
/**
|
|
533
|
-
*
|
|
541
|
+
* Hook return type
|
|
534
542
|
*/
|
|
535
543
|
interface UseFileUploadReturn {
|
|
536
|
-
/**
|
|
544
|
+
/** Current file list */
|
|
537
545
|
files: FileItem[];
|
|
538
|
-
/**
|
|
546
|
+
/** Whether uploads are in progress */
|
|
539
547
|
isUploading: boolean;
|
|
540
|
-
/**
|
|
548
|
+
/** Number of pending uploads */
|
|
541
549
|
pendingCount: number;
|
|
542
|
-
/**
|
|
550
|
+
/** Add files (triggers automatic upload) */
|
|
543
551
|
addFiles: (files: FileList | File[]) => Promise<void>;
|
|
544
|
-
/**
|
|
552
|
+
/** Remove a file (soft delete in S3) */
|
|
545
553
|
removeFile: (fileId: string) => Promise<boolean>;
|
|
546
|
-
/**
|
|
554
|
+
/** Clear all files */
|
|
547
555
|
clearFiles: () => void;
|
|
548
|
-
/**
|
|
556
|
+
/** Retry upload for a failed file */
|
|
549
557
|
retryUpload: (fileId: string) => Promise<void>;
|
|
550
|
-
/**
|
|
558
|
+
/** Validate if minimum requirements are met */
|
|
551
559
|
isValid: boolean;
|
|
552
|
-
/**
|
|
560
|
+
/** Validation error message */
|
|
553
561
|
validationError: string | null;
|
|
554
|
-
/**
|
|
562
|
+
/** Wait for all uploads to complete */
|
|
555
563
|
waitForUploads: () => Promise<void>;
|
|
556
564
|
/**
|
|
557
|
-
*
|
|
558
|
-
*
|
|
565
|
+
* Completed file paths (for saving in form)
|
|
566
|
+
* Relative paths with visibility - subscriberKey is added in backend
|
|
559
567
|
*/
|
|
560
568
|
completedFilePaths: string[];
|
|
561
|
-
/**
|
|
569
|
+
/** Initialize with existing files (for editing) */
|
|
562
570
|
initializeFiles: (existingFiles: Array<{
|
|
563
571
|
filePath: string;
|
|
564
572
|
name: string;
|
|
565
573
|
size?: number;
|
|
566
574
|
contentType?: string;
|
|
567
575
|
}>) => void;
|
|
568
|
-
/**
|
|
576
|
+
/** Whether the user has interacted with the field */
|
|
569
577
|
isTouched: boolean;
|
|
570
|
-
/**
|
|
578
|
+
/** Mark the field as touched (to show validation errors) */
|
|
571
579
|
markAsTouched: () => void;
|
|
572
580
|
/**
|
|
573
|
-
*
|
|
574
|
-
* -
|
|
575
|
-
* -
|
|
581
|
+
* Get URL for file preview
|
|
582
|
+
* - Public: returns publicUrl directly
|
|
583
|
+
* - Private: requests signed URL from backend
|
|
576
584
|
*/
|
|
577
585
|
getPreviewUrl: (fileId: string) => Promise<string | null>;
|
|
578
586
|
}
|
|
579
587
|
/**
|
|
580
|
-
* Hook
|
|
588
|
+
* Hook for complete file handling with S3 upload
|
|
581
589
|
*
|
|
582
590
|
* @example
|
|
583
591
|
* ```tsx
|
|
@@ -595,9 +603,9 @@ interface UseFileUploadReturn {
|
|
|
595
603
|
* minFiles: 1
|
|
596
604
|
* });
|
|
597
605
|
*
|
|
598
|
-
* //
|
|
606
|
+
* // In form submit
|
|
599
607
|
* const handleSubmit = async () => {
|
|
600
|
-
* await waitForUploads(); //
|
|
608
|
+
* await waitForUploads(); // Wait for pending uploads
|
|
601
609
|
* if (!isValid) return;
|
|
602
610
|
*
|
|
603
611
|
* await crudify.createItem("documents", {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import crudify__default from '@nocios/crudify-browser';
|
|
2
2
|
export * from '@nocios/crudify-browser';
|
|
3
3
|
export { default as crudify } from '@nocios/crudify-browser';
|
|
4
|
-
import { c as CrudifyLoginConfig } from './CrudiaFileField-
|
|
5
|
-
export { B as BoxScreenType, a as CrudiaAutoGenerate, h as CrudiaAutoGenerateProps, b as CrudiaFileField, i as CrudiaFileFieldProps, C as CrudifyLogin, d as CrudifyLoginProps, e as CrudifyLoginTranslations, L as LoginComponent, j as POLICY_ACTIONS, k as PREFERRED_POLICY_ORDER, P as Policies, g as PolicyAction, S as SessionStatus, f as UserLoginData, U as UserProfileDisplay } from './CrudiaFileField-
|
|
4
|
+
import { c as CrudifyLoginConfig } from './CrudiaFileField-8ArxOo5y.mjs';
|
|
5
|
+
export { B as BoxScreenType, a as CrudiaAutoGenerate, h as CrudiaAutoGenerateProps, b as CrudiaFileField, i as CrudiaFileFieldProps, C as CrudifyLogin, d as CrudifyLoginProps, e as CrudifyLoginTranslations, L as LoginComponent, j as POLICY_ACTIONS, k as PREFERRED_POLICY_ORDER, P as Policies, g as PolicyAction, S as SessionStatus, f as UserLoginData, U as UserProfileDisplay } from './CrudiaFileField-8ArxOo5y.mjs';
|
|
6
6
|
import React, { ReactNode } from 'react';
|
|
7
7
|
export { A as ApiError, C as CrudifyApiResponse, a as CrudifyTransactionResponse, F as ForgotPasswordRequest, J as JwtPayload, b as LoginRequest, L as LoginResponse, R as ResetPasswordRequest, T as TransactionResponseData, U as UserProfile, V as ValidateCodeRequest, c as ValidationError } from './api-Djqihi4n.mjs';
|
|
8
|
-
import { U as UseSessionOptions, T as TokenData, L as LoginResult } from './index-
|
|
9
|
-
export { F as FileItem, q as FileStatus, a as SessionConfig, S as SessionManager, d as SessionState, c as StorageType, b as TokenStorage, j as UseAuthReturn, l as UseDataReturn, o as UseFileUploadOptions, p as UseFileUploadReturn, g as UseUserDataOptions, f as UseUserDataReturn, h as UserData, i as useAuth, r as useCrudifyWithNotifications, k as useData, n as useFileUpload, u as useSession, e as useUserData, m as useUserProfile } from './index-
|
|
8
|
+
import { U as UseSessionOptions, T as TokenData, L as LoginResult } from './index-CQnAzvOE.mjs';
|
|
9
|
+
export { F as FileItem, q as FileStatus, a as SessionConfig, S as SessionManager, d as SessionState, c as StorageType, b as TokenStorage, j as UseAuthReturn, l as UseDataReturn, o as UseFileUploadOptions, p as UseFileUploadReturn, g as UseUserDataOptions, f as UseUserDataReturn, h as UserData, i as useAuth, r as useCrudifyWithNotifications, k as useData, n as useFileUpload, u as useSession, e as useUserData, m as useUserProfile } from './index-CQnAzvOE.mjs';
|
|
10
10
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
11
11
|
import { ThemeOptions } from '@mui/material';
|
|
12
12
|
export { A as AutoGenerateConfig, G as GlobalNotificationProvider, a as GlobalNotificationProviderProps, N as Notification, b as NotificationSeverity, d as UseAutoGenerateOptions, U as UseAutoGenerateReturn, c as useAutoGenerate, u as useGlobalNotification } from './GlobalNotificationProvider-Zq18OkpI.mjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import crudify__default from '@nocios/crudify-browser';
|
|
2
2
|
export * from '@nocios/crudify-browser';
|
|
3
3
|
export { default as crudify } from '@nocios/crudify-browser';
|
|
4
|
-
import { c as CrudifyLoginConfig } from './CrudiaFileField-
|
|
5
|
-
export { B as BoxScreenType, a as CrudiaAutoGenerate, h as CrudiaAutoGenerateProps, b as CrudiaFileField, i as CrudiaFileFieldProps, C as CrudifyLogin, d as CrudifyLoginProps, e as CrudifyLoginTranslations, L as LoginComponent, j as POLICY_ACTIONS, k as PREFERRED_POLICY_ORDER, P as Policies, g as PolicyAction, S as SessionStatus, f as UserLoginData, U as UserProfileDisplay } from './CrudiaFileField-
|
|
4
|
+
import { c as CrudifyLoginConfig } from './CrudiaFileField-DA-kEoTA.js';
|
|
5
|
+
export { B as BoxScreenType, a as CrudiaAutoGenerate, h as CrudiaAutoGenerateProps, b as CrudiaFileField, i as CrudiaFileFieldProps, C as CrudifyLogin, d as CrudifyLoginProps, e as CrudifyLoginTranslations, L as LoginComponent, j as POLICY_ACTIONS, k as PREFERRED_POLICY_ORDER, P as Policies, g as PolicyAction, S as SessionStatus, f as UserLoginData, U as UserProfileDisplay } from './CrudiaFileField-DA-kEoTA.js';
|
|
6
6
|
import React, { ReactNode } from 'react';
|
|
7
7
|
export { A as ApiError, C as CrudifyApiResponse, a as CrudifyTransactionResponse, F as ForgotPasswordRequest, J as JwtPayload, b as LoginRequest, L as LoginResponse, R as ResetPasswordRequest, T as TransactionResponseData, U as UserProfile, V as ValidateCodeRequest, c as ValidationError } from './api-Djqihi4n.js';
|
|
8
|
-
import { U as UseSessionOptions, T as TokenData, L as LoginResult } from './index-
|
|
9
|
-
export { F as FileItem, q as FileStatus, a as SessionConfig, S as SessionManager, d as SessionState, c as StorageType, b as TokenStorage, j as UseAuthReturn, l as UseDataReturn, o as UseFileUploadOptions, p as UseFileUploadReturn, g as UseUserDataOptions, f as UseUserDataReturn, h as UserData, i as useAuth, r as useCrudifyWithNotifications, k as useData, n as useFileUpload, u as useSession, e as useUserData, m as useUserProfile } from './index-
|
|
8
|
+
import { U as UseSessionOptions, T as TokenData, L as LoginResult } from './index-BVT7flO5.js';
|
|
9
|
+
export { F as FileItem, q as FileStatus, a as SessionConfig, S as SessionManager, d as SessionState, c as StorageType, b as TokenStorage, j as UseAuthReturn, l as UseDataReturn, o as UseFileUploadOptions, p as UseFileUploadReturn, g as UseUserDataOptions, f as UseUserDataReturn, h as UserData, i as useAuth, r as useCrudifyWithNotifications, k as useData, n as useFileUpload, u as useSession, e as useUserData, m as useUserProfile } from './index-BVT7flO5.js';
|
|
10
10
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
11
11
|
import { ThemeOptions } from '@mui/material';
|
|
12
12
|
export { A as AutoGenerateConfig, G as GlobalNotificationProvider, a as GlobalNotificationProviderProps, N as Notification, b as NotificationSeverity, d as UseAutoGenerateOptions, U as UseAutoGenerateReturn, c as useAutoGenerate, u as useGlobalNotification } from './GlobalNotificationProvider-Zq18OkpI.js';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkXHVF2GVHjs = require('./chunk-XHVF2GVH.js');var _chunkJ4K6MZHYjs = require('./chunk-J4K6MZHY.js');var _chunkPDFLD5FFjs = require('./chunk-PDFLD5FF.js');var _chunkNNY4A73Vjs = require('./chunk-NNY4A73V.js');var _chunkYIIUEOXCjs = require('./chunk-YIIUEOXC.js');var _chunkFC7HOMNQjs = require('./chunk-FC7HOMNQ.js');var _crudifybrowser = require('@nocios/crudify-browser'); var _crudifybrowser2 = _interopRequireDefault(_crudifybrowser); _createStarExport(_crudifybrowser);var _react = require('react');var _material = require('@mui/material');var _jsxruntime = require('react/jsx-runtime');var De=(e={})=>{try{let r=_chunkFC7HOMNQjs.a.call(void 0, "theme");if(r){let o=JSON.parse(decodeURIComponent(r));return{...e,...o}}}catch(r){console.warn("Error parsing theme from cookie:",r)}return e};function Ge({children:e,defaultTheme:r={},disableCssBaseline:o=!1}){let t=_react.useMemo.call(void 0, ()=>{let s=De(r);return _material.createTheme.call(void 0, s)},[r]);return _jsxruntime.jsxs.call(void 0, _material.ThemeProvider,{theme:t,children:[!o&&_jsxruntime.jsx.call(void 0, _material.CssBaseline,{}),e]})}var _reactrouterdom = require('react-router-dom');var _e={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},Be=()=>_jsxruntime.jsx.call(void 0, "style",{children:`
|
|
2
2
|
@keyframes spin {
|
|
3
3
|
0% { transform: rotate(0deg); }
|
|
4
4
|
100% { transform: rotate(360deg); }
|
|
5
5
|
}
|
|
6
|
-
`});function S({stage:e="loading",message:r}){let t=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, Be,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:_e}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:t})]})]})}var qe=/^[a-zA-Z0-9\-_./\?=&%#]+$/,We=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],C= exports.validateInternalRedirect =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(!o.startsWith("/"))return console.warn("\u{1F6A8} Open redirect blocked (relative path):",e),r;if(!qe.test(o))return console.warn("\u{1F6A8} Open redirect blocked (invalid characters):",e),r;let t=o.toLowerCase();for(let a of We)if(a.test(t))return console.warn("\u{1F6A8} Open redirect blocked (dangerous pattern):",e),r;let s=o.split("?")[0].split("/").filter(Boolean);if(s.length===0)return o;for(let a of s)if(a===".."||a.includes(":")||a.length>100)return console.warn("\u{1F6A8} Open redirect blocked (suspicious path part):",a),r;return o},v= exports.extractSafeRedirectFromUrl =(e,r="/")=>{try{let t=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!t)return r;let s=decodeURIComponent(t);return C(s,r)}catch(o){return console.warn("\u{1F6A8} Error parsing redirect parameter:",o),r}};function U({children:e,loadingComponent:r,loginPath:o="/login"}){let{isAuthenticated:t,isLoading:s,isInitialized:a,tokens:p,error:g}=_chunkWIWNROEAjs.j.call(void 0, ),l=_reactrouterdom.useLocation.call(void 0, );if(!a||s)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, S,{stage:"validating-session"})});let d=t&&_optionalChain([p, 'optionalAccess', _2 => _2.accessToken])&&p.accessToken.length>0;if(g||!t||!d){p&&(!p.accessToken||p.accessToken.length===0)&&localStorage.removeItem("crudify_tokens");let y=l.pathname+l.search,A=C(y),x=encodeURIComponent(A);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${o}?redirect=${x}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function w({children:e,redirectTo:r="/"}){let{isAuthenticated:o}=_chunkWIWNROEAjs.j.call(void 0, ),t=_reactrouterdom.useLocation.call(void 0, );if(o){let s=new URLSearchParams(t.search),a=v(s,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:a,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var N=_react.createContext.call(void 0, void 0),rr= exports.CrudifyInitializer =({config:e,children:r,fallback:o=null,onInitialized:t,onError:s})=>{let[a,p]=_react.useState.call(void 0, !1),[g,l]=_react.useState.call(void 0, !1),[d,y]=_react.useState.call(void 0, null),A=_react.useRef.call(void 0, !1),x=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{A.current||(_chunkWIWNROEAjs.o.registerHighPriorityInitializer(),A.current=!0),x.current||(x.current=!0,(async()=>{l(!0),y(null);try{let c=_chunkFC7HOMNQjs.b.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _3 => _3.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _4 => _4.env]),enableDebug:_optionalChain([e, 'optionalAccess', _5 => _5.enableLogging])});if(!c.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");await _chunkWIWNROEAjs.o.initialize({priority:"HIGH",publicApiKey:c.publicApiKey,env:c.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _6 => _6.enableLogging]),requestedBy:"CrudifyInitializer"}),p(!0),l(!1),t&&t()}catch(c){let z=c instanceof Error?c:new Error(String(c));y(z),l(!1),s&&s(z)}})())},[_optionalChain([e, 'optionalAccess', _7 => _7.publicApiKey]),_optionalChain([e, 'optionalAccess', _8 => _8.env]),_optionalChain([e, 'optionalAccess', _9 => _9.enableLogging]),t,s]);let G={isInitialized:a,isInitializing:g,error:d};return g&&o?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o}):(d&&console.error("[CrudifyInitializer] Initialization failed:",d),_jsxruntime.jsx.call(void 0, N.Provider,{value:G,children:r}))},or= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, N);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var _crudifyadmin = require('@nocios/crudify-admin'); var _crudifyadmin2 = _interopRequireDefault(_crudifyadmin);var D=!1,m=null;async function ir(){let r=_chunkWIWNROEAjs.e.getInstance().getTokenInfo(),o=_optionalChain([r, 'optionalAccess', _10 => _10.apiEndpointAdmin]),t=_optionalChain([r, 'optionalAccess', _11 => _11.apiKeyEndpointAdmin]);return o&&t?{apiUrl:o,apiKey:t}:_chunkWIWNROEAjs.a.waitForCredentials()}async function nr(){if(!D)return m||(m=(async()=>{try{let e=_chunkWIWNROEAjs.e.getInstance(),{apiUrl:r,apiKey:o}=await ir();_crudifyadmin2.default.init({url:r,apiKey:o,getAdditionalHeaders:()=>{let t=e.getTokenInfo();return _optionalChain([t, 'optionalAccess', _12 => _12.crudifyTokens, 'optionalAccess', _13 => _13.accessToken])?{Authorization:`Bearer ${t.crudifyTokens.accessToken}`}:{}}}),D=!0}catch(e){throw m=null,console.error("[crudifyAdminWrapper] Initialization failed:",e),e}})(),m)}async function n(e){try{await nr();let r=await e();return!r.success&&_optionalChain([r, 'access', _14 => _14.errors, 'optionalAccess', _15 => _15.includes, 'call', _16 => _16("401")])?await _chunkWIWNROEAjs.e.getInstance().refreshTokens()?await e():(console.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),r):r}catch(r){return console.error("[crudifyAdmin] Operation error:",r),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var sr={listModules:()=>n(()=>_crudifyadmin2.default.listModules()),getModule:e=>n(()=>_crudifyadmin2.default.getModule(e)),createModule:e=>n(()=>_crudifyadmin2.default.createModule(e)),editModule:(e,r)=>n(()=>_crudifyadmin2.default.editModule(e,r)),deleteModule:e=>n(()=>_crudifyadmin2.default.deleteModule(e)),activateModule:e=>n(()=>_crudifyadmin2.default.activateModule(e)),deactivateModule:e=>n(()=>_crudifyadmin2.default.deactivateModule(e)),getModuleVersions:e=>n(()=>_crudifyadmin2.default.getModuleVersions(e)),listActions:e=>n(()=>_crudifyadmin2.default.listActions(e)),getAction:e=>n(()=>_crudifyadmin2.default.getAction(e)),createAction:e=>n(()=>_crudifyadmin2.default.createAction(e)),editAction:(e,r)=>n(()=>_crudifyadmin2.default.editAction(e,r)),deleteAction:e=>n(()=>_crudifyadmin2.default.deleteAction(e)),activateAction:e=>n(()=>_crudifyadmin2.default.activateAction(e)),deactivateAction:e=>n(()=>_crudifyadmin2.default.deactivateAction(e)),getActionVersions:e=>n(()=>_crudifyadmin2.default.getActionVersions(e)),getActionsByProfile:e=>n(()=>_crudifyadmin2.default.getActionsByProfile(e)),updateActionsProfiles:e=>n(()=>_crudifyadmin2.default.updateActionsProfiles(e))};exports.AuthRoute = w; exports.CRITICAL_TRANSLATIONS = _chunkVHWM5MV6js.a; exports.CrudiaAutoGenerate = _chunkVHWM5MV6js.o; exports.CrudiaFileField = _chunkVHWM5MV6js.p; exports.CrudifyInitializationManager = _chunkWIWNROEAjs.n; exports.CrudifyInitializer = rr; exports.CrudifyLogin = _chunkVHWM5MV6js.h; exports.CrudifyProvider = _chunkWIWNROEAjs.b; exports.CrudifyThemeProvider = Ge; exports.ERROR_CODES = _chunkYIIUEOXCjs.a; exports.ERROR_SEVERITY_MAP = _chunkYIIUEOXCjs.b; exports.GlobalNotificationProvider = _chunkWIWNROEAjs.g; exports.LoginComponent = _chunkVHWM5MV6js.m; exports.POLICY_ACTIONS = _chunkVHWM5MV6js.j; exports.PREFERRED_POLICY_ORDER = _chunkVHWM5MV6js.k; exports.Policies = _chunkVHWM5MV6js.l; exports.ProtectedRoute = U; exports.SessionDebugInfo = _chunkWIWNROEAjs.k; exports.SessionLoadingScreen = S; exports.SessionManager = _chunkWIWNROEAjs.e; exports.SessionProvider = _chunkWIWNROEAjs.i; exports.SessionStatus = _chunkVHWM5MV6js.n; exports.TokenStorage = _chunkWIWNROEAjs.d; exports.TranslationService = _chunkVHWM5MV6js.d; exports.TranslationsProvider = _chunkVHWM5MV6js.f; exports.UserProfileDisplay = _chunkVHWM5MV6js.i; exports.createErrorTranslator = _chunkFC7HOMNQjs.g; exports.crudify = _crudifybrowser2.default; exports.crudifyAdmin = sr; exports.crudifyInitManager = _chunkWIWNROEAjs.o; exports.decodeJwtSafely = _chunkFC7HOMNQjs.j; exports.extractSafeRedirectFromUrl = v; exports.getCookie = _chunkFC7HOMNQjs.a; exports.getCriticalLanguages = _chunkVHWM5MV6js.b; exports.getCriticalTranslations = _chunkVHWM5MV6js.c; exports.getCurrentUserEmail = _chunkFC7HOMNQjs.k; exports.getErrorMessage = _chunkYIIUEOXCjs.e; exports.handleCrudifyError = _chunkYIIUEOXCjs.g; exports.isTokenExpired = _chunkFC7HOMNQjs.l; exports.parseApiError = _chunkYIIUEOXCjs.c; exports.parseJavaScriptError = _chunkYIIUEOXCjs.f; exports.parseTransactionError = _chunkYIIUEOXCjs.d; exports.secureLocalStorage = _chunkNNY4A73Vjs.b; exports.secureSessionStorage = _chunkNNY4A73Vjs.a; exports.translateError = _chunkFC7HOMNQjs.f; exports.translateErrorCode = _chunkFC7HOMNQjs.d; exports.translateErrorCodes = _chunkFC7HOMNQjs.e; exports.translationService = _chunkVHWM5MV6js.e; exports.useAuth = _chunk5T4X67GWjs.b; exports.useAutoGenerate = _chunkWIWNROEAjs.m; exports.useCrudify = _chunkWIWNROEAjs.c; exports.useCrudifyInitializer = or; exports.useCrudifyWithNotifications = _chunk5T4X67GWjs.d; exports.useData = _chunk5T4X67GWjs.c; exports.useFileUpload = _chunkWIWNROEAjs.p; exports.useGlobalNotification = _chunkWIWNROEAjs.h; exports.useSession = _chunkWIWNROEAjs.f; exports.useSessionContext = _chunkWIWNROEAjs.j; exports.useTranslations = _chunkVHWM5MV6js.g; exports.useUserData = _chunk5T4X67GWjs.a; exports.useUserProfile = _chunkWIWNROEAjs.l; exports.validateInternalRedirect = C;
|
|
6
|
+
`});function S({stage:e="loading",message:r}){let t=r||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, Be,{}),_jsxruntime.jsxs.call(void 0, "div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[_jsxruntime.jsx.call(void 0, "div",{style:_e}),_jsxruntime.jsx.call(void 0, "p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:t})]})]})}var qe=/^[a-zA-Z0-9\-_./\?=&%#]+$/,We=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],C= exports.validateInternalRedirect =(e,r="/")=>{if(!e||typeof e!="string")return r;let o=e.trim();if(!o)return r;if(!o.startsWith("/"))return console.warn("\u{1F6A8} Open redirect blocked (relative path):",e),r;if(!qe.test(o))return console.warn("\u{1F6A8} Open redirect blocked (invalid characters):",e),r;let t=o.toLowerCase();for(let a of We)if(a.test(t))return console.warn("\u{1F6A8} Open redirect blocked (dangerous pattern):",e),r;let s=o.split("?")[0].split("/").filter(Boolean);if(s.length===0)return o;for(let a of s)if(a===".."||a.includes(":")||a.length>100)return console.warn("\u{1F6A8} Open redirect blocked (suspicious path part):",a),r;return o},v= exports.extractSafeRedirectFromUrl =(e,r="/")=>{try{let t=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!t)return r;let s=decodeURIComponent(t);return C(s,r)}catch(o){return console.warn("\u{1F6A8} Error parsing redirect parameter:",o),r}};function U({children:e,loadingComponent:r,loginPath:o="/login"}){let{isAuthenticated:t,isLoading:s,isInitialized:a,tokens:p,error:g}=_chunkPDFLD5FFjs.j.call(void 0, ),l=_reactrouterdom.useLocation.call(void 0, );if(!a||s)return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:r||_jsxruntime.jsx.call(void 0, S,{stage:"validating-session"})});let d=t&&_optionalChain([p, 'optionalAccess', _2 => _2.accessToken])&&p.accessToken.length>0;if(g||!t||!d){p&&(!p.accessToken||p.accessToken.length===0)&&localStorage.removeItem("crudify_tokens");let y=l.pathname+l.search,A=C(y),x=encodeURIComponent(A);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:`${o}?redirect=${x}`,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}function w({children:e,redirectTo:r="/"}){let{isAuthenticated:o}=_chunkPDFLD5FFjs.j.call(void 0, ),t=_reactrouterdom.useLocation.call(void 0, );if(o){let s=new URLSearchParams(t.search),a=v(s,r);return _jsxruntime.jsx.call(void 0, _reactrouterdom.Navigate,{to:a,replace:!0})}return _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:e})}var N=_react.createContext.call(void 0, void 0),rr= exports.CrudifyInitializer =({config:e,children:r,fallback:o=null,onInitialized:t,onError:s})=>{let[a,p]=_react.useState.call(void 0, !1),[g,l]=_react.useState.call(void 0, !1),[d,y]=_react.useState.call(void 0, null),A=_react.useRef.call(void 0, !1),x=_react.useRef.call(void 0, !1);_react.useEffect.call(void 0, ()=>{A.current||(_chunkPDFLD5FFjs.o.registerHighPriorityInitializer(),A.current=!0),x.current||(x.current=!0,(async()=>{l(!0),y(null);try{let c=_chunkFC7HOMNQjs.b.call(void 0, {publicApiKey:_optionalChain([e, 'optionalAccess', _3 => _3.publicApiKey]),env:_optionalChain([e, 'optionalAccess', _4 => _4.env]),enableDebug:_optionalChain([e, 'optionalAccess', _5 => _5.enableLogging])});if(!c.publicApiKey)throw new Error("Crudify configuration missing. Please provide publicApiKey via props or ensure cookies are set by Lambda.");await _chunkPDFLD5FFjs.o.initialize({priority:"HIGH",publicApiKey:c.publicApiKey,env:c.env||"prod",enableLogging:_optionalChain([e, 'optionalAccess', _6 => _6.enableLogging]),requestedBy:"CrudifyInitializer"}),p(!0),l(!1),t&&t()}catch(c){let z=c instanceof Error?c:new Error(String(c));y(z),l(!1),s&&s(z)}})())},[_optionalChain([e, 'optionalAccess', _7 => _7.publicApiKey]),_optionalChain([e, 'optionalAccess', _8 => _8.env]),_optionalChain([e, 'optionalAccess', _9 => _9.enableLogging]),t,s]);let G={isInitialized:a,isInitializing:g,error:d};return g&&o?_jsxruntime.jsx.call(void 0, _jsxruntime.Fragment,{children:o}):(d&&console.error("[CrudifyInitializer] Initialization failed:",d),_jsxruntime.jsx.call(void 0, N.Provider,{value:G,children:r}))},or= exports.useCrudifyInitializer =()=>{let e=_react.useContext.call(void 0, N);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};var _crudifyadmin = require('@nocios/crudify-admin'); var _crudifyadmin2 = _interopRequireDefault(_crudifyadmin);var D=!1,m=null;async function ir(){let r=_chunkPDFLD5FFjs.e.getInstance().getTokenInfo(),o=_optionalChain([r, 'optionalAccess', _10 => _10.apiEndpointAdmin]),t=_optionalChain([r, 'optionalAccess', _11 => _11.apiKeyEndpointAdmin]);return o&&t?{apiUrl:o,apiKey:t}:_chunkPDFLD5FFjs.a.waitForCredentials()}async function nr(){if(!D)return m||(m=(async()=>{try{let e=_chunkPDFLD5FFjs.e.getInstance(),{apiUrl:r,apiKey:o}=await ir();_crudifyadmin2.default.init({url:r,apiKey:o,getAdditionalHeaders:()=>{let t=e.getTokenInfo();return _optionalChain([t, 'optionalAccess', _12 => _12.crudifyTokens, 'optionalAccess', _13 => _13.accessToken])?{Authorization:`Bearer ${t.crudifyTokens.accessToken}`}:{}}}),D=!0}catch(e){throw m=null,console.error("[crudifyAdminWrapper] Initialization failed:",e),e}})(),m)}async function n(e){try{await nr();let r=await e();return!r.success&&_optionalChain([r, 'access', _14 => _14.errors, 'optionalAccess', _15 => _15.includes, 'call', _16 => _16("401")])?await _chunkPDFLD5FFjs.e.getInstance().refreshTokens()?await e():(console.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),r):r}catch(r){return console.error("[crudifyAdmin] Operation error:",r),{success:!1,errors:r instanceof Error?r.message:"Unknown error"}}}var sr={listModules:()=>n(()=>_crudifyadmin2.default.listModules()),getModule:e=>n(()=>_crudifyadmin2.default.getModule(e)),createModule:e=>n(()=>_crudifyadmin2.default.createModule(e)),editModule:(e,r)=>n(()=>_crudifyadmin2.default.editModule(e,r)),deleteModule:e=>n(()=>_crudifyadmin2.default.deleteModule(e)),activateModule:e=>n(()=>_crudifyadmin2.default.activateModule(e)),deactivateModule:e=>n(()=>_crudifyadmin2.default.deactivateModule(e)),getModuleVersions:e=>n(()=>_crudifyadmin2.default.getModuleVersions(e)),listActions:e=>n(()=>_crudifyadmin2.default.listActions(e)),getAction:e=>n(()=>_crudifyadmin2.default.getAction(e)),createAction:e=>n(()=>_crudifyadmin2.default.createAction(e)),editAction:(e,r)=>n(()=>_crudifyadmin2.default.editAction(e,r)),deleteAction:e=>n(()=>_crudifyadmin2.default.deleteAction(e)),activateAction:e=>n(()=>_crudifyadmin2.default.activateAction(e)),deactivateAction:e=>n(()=>_crudifyadmin2.default.deactivateAction(e)),getActionVersions:e=>n(()=>_crudifyadmin2.default.getActionVersions(e)),getActionsByProfile:e=>n(()=>_crudifyadmin2.default.getActionsByProfile(e)),updateActionsProfiles:e=>n(()=>_crudifyadmin2.default.updateActionsProfiles(e))};exports.AuthRoute = w; exports.CRITICAL_TRANSLATIONS = _chunkXHVF2GVHjs.a; exports.CrudiaAutoGenerate = _chunkXHVF2GVHjs.o; exports.CrudiaFileField = _chunkXHVF2GVHjs.p; exports.CrudifyInitializationManager = _chunkPDFLD5FFjs.n; exports.CrudifyInitializer = rr; exports.CrudifyLogin = _chunkXHVF2GVHjs.h; exports.CrudifyProvider = _chunkPDFLD5FFjs.b; exports.CrudifyThemeProvider = Ge; exports.ERROR_CODES = _chunkYIIUEOXCjs.a; exports.ERROR_SEVERITY_MAP = _chunkYIIUEOXCjs.b; exports.GlobalNotificationProvider = _chunkPDFLD5FFjs.g; exports.LoginComponent = _chunkXHVF2GVHjs.m; exports.POLICY_ACTIONS = _chunkXHVF2GVHjs.j; exports.PREFERRED_POLICY_ORDER = _chunkXHVF2GVHjs.k; exports.Policies = _chunkXHVF2GVHjs.l; exports.ProtectedRoute = U; exports.SessionDebugInfo = _chunkPDFLD5FFjs.k; exports.SessionLoadingScreen = S; exports.SessionManager = _chunkPDFLD5FFjs.e; exports.SessionProvider = _chunkPDFLD5FFjs.i; exports.SessionStatus = _chunkXHVF2GVHjs.n; exports.TokenStorage = _chunkPDFLD5FFjs.d; exports.TranslationService = _chunkXHVF2GVHjs.d; exports.TranslationsProvider = _chunkXHVF2GVHjs.f; exports.UserProfileDisplay = _chunkXHVF2GVHjs.i; exports.createErrorTranslator = _chunkFC7HOMNQjs.g; exports.crudify = _crudifybrowser2.default; exports.crudifyAdmin = sr; exports.crudifyInitManager = _chunkPDFLD5FFjs.o; exports.decodeJwtSafely = _chunkFC7HOMNQjs.j; exports.extractSafeRedirectFromUrl = v; exports.getCookie = _chunkFC7HOMNQjs.a; exports.getCriticalLanguages = _chunkXHVF2GVHjs.b; exports.getCriticalTranslations = _chunkXHVF2GVHjs.c; exports.getCurrentUserEmail = _chunkFC7HOMNQjs.k; exports.getErrorMessage = _chunkYIIUEOXCjs.e; exports.handleCrudifyError = _chunkYIIUEOXCjs.g; exports.isTokenExpired = _chunkFC7HOMNQjs.l; exports.parseApiError = _chunkYIIUEOXCjs.c; exports.parseJavaScriptError = _chunkYIIUEOXCjs.f; exports.parseTransactionError = _chunkYIIUEOXCjs.d; exports.secureLocalStorage = _chunkNNY4A73Vjs.b; exports.secureSessionStorage = _chunkNNY4A73Vjs.a; exports.translateError = _chunkFC7HOMNQjs.f; exports.translateErrorCode = _chunkFC7HOMNQjs.d; exports.translateErrorCodes = _chunkFC7HOMNQjs.e; exports.translationService = _chunkXHVF2GVHjs.e; exports.useAuth = _chunkJ4K6MZHYjs.b; exports.useAutoGenerate = _chunkPDFLD5FFjs.m; exports.useCrudify = _chunkPDFLD5FFjs.c; exports.useCrudifyInitializer = or; exports.useCrudifyWithNotifications = _chunkJ4K6MZHYjs.d; exports.useData = _chunkJ4K6MZHYjs.c; exports.useFileUpload = _chunkPDFLD5FFjs.p; exports.useGlobalNotification = _chunkPDFLD5FFjs.h; exports.useSession = _chunkPDFLD5FFjs.f; exports.useSessionContext = _chunkPDFLD5FFjs.j; exports.useTranslations = _chunkXHVF2GVHjs.g; exports.useUserData = _chunkJ4K6MZHYjs.a; exports.useUserProfile = _chunkPDFLD5FFjs.l; exports.validateInternalRedirect = C;
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as K,b as V,c as _,d as B,e as H,f as q,g as W,h as ge,i as Ae,j as xe,k as Re,l as Pe,m as Ce,n as Ie,o as Se,p as ze}from"./chunk-
|
|
1
|
+
import{a as K,b as V,c as _,d as B,e as H,f as q,g as W,h as ge,i as Ae,j as xe,k as Re,l as Pe,m as Ce,n as Ie,o as Se,p as ze}from"./chunk-IU2LK2NF.mjs";import{a as Ee,b as Me,c as be,d as ke}from"./chunk-GWQVH4G4.mjs";import{a as M,b as J,c as $,d as Y,e as u,f as ee,g as ie,h as ne,i as se,j as f,k as ae,l as ye,m as he,n as ve,o as R,p as Te}from"./chunk-YRS5XYAB.mjs";import{a as Le,b as Ue}from"./chunk-T2CPA46I.mjs";import{a as pe,b as ce,c as le,d as de,e as ue,f as fe,g as me}from"./chunk-BJ6PIVZR.mjs";import{a as h,b as E,d as Z,e as Q,f as X,g as j,j as re,k as oe,l as te}from"./chunk-6GPSBDW6.mjs";import{default as qr}from"@nocios/crudify-browser";export*from"@nocios/crudify-browser";import{useMemo as we}from"react";import{ThemeProvider as Oe,createTheme as Fe,CssBaseline as Ne}from"@mui/material";import{jsx as Ke,jsxs as Ve}from"react/jsx-runtime";var De=(e={})=>{try{let r=h("theme");if(r){let o=JSON.parse(decodeURIComponent(r));return{...e,...o}}}catch(r){console.warn("Error parsing theme from cookie:",r)}return e};function Ge({children:e,defaultTheme:r={},disableCssBaseline:o=!1}){let t=we(()=>{let s=De(r);return Fe(s)},[r]);return Ve(Oe,{theme:t,children:[!o&&Ke(Ne,{}),e]})}import{Navigate as Je,useLocation as $e}from"react-router-dom";import{Fragment as He,jsx as P,jsxs as b}from"react/jsx-runtime";var _e={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},Be=()=>P("style",{children:`
|
|
2
2
|
@keyframes spin {
|
|
3
3
|
0% { transform: rotate(0deg); }
|
|
4
4
|
100% { transform: rotate(360deg); }
|