react-admin-crud-manager 1.2.9 → 1.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -40
- package/dist/index.cjs.js +1000 -22
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +10700 -3254
- package/dist/index.es.js.map +1 -1
- package/dist/types/OptionalSnackbarProvider.d.ts +1 -1
- package/dist/types/components/Form/components/FilePicker.d.ts +19 -0
- package/dist/types/components/Form/components/FreeEditor.d.ts +14 -0
- package/dist/types/components/Form/components/RenderFields.d.ts +1 -0
- package/dist/types/types/crudtypes.d.ts +45 -0
- package/package.json +2 -1
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/lib/utils.ts","../src/lib/crudClasses.ts","../src/components/Button/Button.tsx","../src/components/Form/components/InputLabel.tsx","../src/data/countries.ts","../src/components/Form/components/Select.tsx","../src/components/Form/components/Switch.tsx","../src/components/Form/components/PhoneInput.tsx","../src/components/Form/components/TextArea.tsx","../node_modules/tslib/tslib.es6.mjs","../node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","../node_modules/normalize-wheel/src/ExecutionEnvironment.js","../node_modules/normalize-wheel/src/isEventSupported.js","../node_modules/normalize-wheel/src/normalizeWheel.js","../node_modules/normalize-wheel/index.js","../node_modules/react-easy-crop/index.module.mjs","../src/components/Form/components/ImageCropperModal.tsx","../src/components/Form/components/ImagePicker.tsx","../src/components/Form/components/Input.tsx","../src/components/Form/components/TinyEditor.tsx","../src/components/Form/components/Checkbox.tsx","../src/components/Form/components/AudioPicker.tsx","../src/components/Form/components/MultiImagePicker.tsx","../src/components/Table/components/ImagePreview.tsx","../src/components/Details/components/GroupRow.tsx","../src/components/Details/components/CardGroup.tsx","../src/components/Chip/Chip.tsx","../src/components/Details/components/DetailRow.tsx","../src/components/Form/components/Radio.tsx","../src/components/Form/components/VideoPicker.tsx","../src/components/Form/components/RenderFields.tsx","../src/components/Filter/FilterDrawer.tsx","../src/components/Table/components/TableSkeleton.tsx","../src/components/Table/components/SortDropdown.tsx","../src/components/Table/utils/sortUtils.ts","../src/components/Table/Table.tsx","../src/components/Modal/Modal.tsx","../src/components/Form/Form.tsx","../src/components/Details/Details.tsx","../src/components/CrudPage.tsx","../src/OptionalSnackbarProvider.tsx","../src/index.tsx"],"sourcesContent":["// ======= Format Date : Jan 15, 2024 =======\r\n\r\nexport const formatDate = (\r\n dateString: string | Date | null | undefined,\r\n format: string = \"DD MMM YYYY\",\r\n): string => {\r\n if (!dateString) return \"N/A\";\r\n\r\n const date = new Date(dateString);\r\n if (isNaN(date.getTime())) return \"Invalid Date\";\r\n\r\n const pad = (n: number): string => String(n).padStart(2, \"0\");\r\n\r\n const map: Record<string, string | number> = {\r\n YYYY: date.getFullYear(),\r\n YY: String(date.getFullYear()).slice(-2),\r\n\r\n MMMM: date.toLocaleString(\"en-US\", { month: \"long\" }),\r\n MMM: date.toLocaleString(\"en-US\", { month: \"short\" }),\r\n MM: pad(date.getMonth() + 1),\r\n M: date.getMonth() + 1,\r\n\r\n DD: pad(date.getDate()),\r\n D: date.getDate(),\r\n\r\n dddd: date.toLocaleString(\"en-US\", { weekday: \"long\" }),\r\n ddd: date.toLocaleString(\"en-US\", { weekday: \"short\" }),\r\n\r\n HH: pad(date.getHours()),\r\n hh: pad(date.getHours() % 12 || 12),\r\n\r\n mm: pad(date.getMinutes()),\r\n ss: pad(date.getSeconds()),\r\n\r\n A: date.getHours() >= 12 ? \"PM\" : \"AM\",\r\n };\r\n\r\n return format.replace(\r\n /YYYY|YY|MMMM|MMM|MM|M|DD|D|dddd|ddd|HH|hh|mm|ss|A/g,\r\n (token) => String(map[token]),\r\n );\r\n};\r\n\r\n// =========== Local Search function ===========\r\nexport const searchLocalData = <T extends Record<string, any>>(\r\n data: T[],\r\n searchTerm: string | undefined | null,\r\n searchKeys: string[] = [],\r\n): T[] => {\r\n if (!searchTerm?.trim()) return data;\r\n\r\n const lowerSearchTerm = searchTerm.toLowerCase();\r\n\r\n const extractValues = (obj: any): string[] => {\r\n if (obj == null) return [];\r\n if (typeof obj === \"object\") {\r\n return Object.values(obj).flatMap(extractValues);\r\n }\r\n return [String(obj)];\r\n };\r\n\r\n return data.filter((item) => {\r\n let valuesToSearch: string[] = [];\r\n\r\n // ✅ If specific keys are provided → search only in those keys\r\n if (searchKeys.length > 0) {\r\n searchKeys.forEach((key) => {\r\n if (item[key] !== undefined) {\r\n valuesToSearch.push(...extractValues(item[key]));\r\n }\r\n });\r\n } else {\r\n // ✅ Otherwise → search in entire object\r\n valuesToSearch = extractValues(item);\r\n }\r\n\r\n return valuesToSearch.some((val) =>\r\n val.toLowerCase().includes(lowerSearchTerm),\r\n );\r\n });\r\n};\r\n","type ClassValue = string | null | undefined | false;\r\n\r\nexport const joinClasses = (...classes: ClassValue[]) =>\r\n classes.filter(Boolean).join(\" \");\r\n\r\nexport const crudClasses = {\r\n crudPage: {\r\n root: \"crud_page\",\r\n deleteContent: \"crud_page_delete_content\",\r\n },\r\n button: {\r\n root: \"crud_button\",\r\n },\r\n chip: {\r\n root: \"crud_chip\",\r\n },\r\n spinner: {\r\n root: \"crud_spinner\",\r\n },\r\n modal: {\r\n root: \"crud_modal\",\r\n overlay: \"crud_modal_overlay\",\r\n container: \"crud_modal_container\",\r\n header: \"crud_modal_header\",\r\n title: \"crud_modal_title\",\r\n closeButton: \"crud_modal_close_button\",\r\n body: \"crud_modal_body\",\r\n footer: \"crud_modal_footer\",\r\n actionButton: \"crud_modal_action_button\",\r\n loadingIndicator: \"crud_modal_loading_indicator\",\r\n },\r\n table: {\r\n root: \"crud_table\",\r\n toolbar: \"crud_table_toolbar\",\r\n searchField: \"crud_table_search_field\",\r\n searchInput: \"crud_table_search_input\",\r\n container: \"crud_table_container\",\r\n element: \"crud_table_element\",\r\n head: \"crud_table_head\",\r\n headRow: \"crud_table_head_row\",\r\n headCell: \"crud_table_head_cell\",\r\n body: \"crud_table_body\",\r\n row: \"crud_table_row\",\r\n cell: \"crud_table_cell\",\r\n noData: \"crud_table_no_data\",\r\n actionButton: \"crud_table_action_button\",\r\n menu: \"crud_table_menu\",\r\n menuItem: \"crud_table_menu_item\",\r\n pagination: \"crud_table_pagination\",\r\n },\r\n tableSkeleton: {\r\n root: \"crud_table_skeleton\",\r\n table: \"crud_table_skeleton_table\",\r\n },\r\n sortDropdown: {\r\n root: \"crud_sort_dropdown\",\r\n trigger: \"crud_sort_dropdown_trigger\",\r\n menu: \"crud_sort_dropdown_menu\",\r\n item: \"crud_sort_dropdown_item\",\r\n },\r\n imagePreview: {\r\n root: \"crud_image_preview\",\r\n container: \"crud_image_preview_container\",\r\n image: \"crud_image_preview_image\",\r\n },\r\n filterDrawer: {\r\n overlay: \"crud_filter_overlay\",\r\n panel: \"crud_filter_panel\",\r\n header: \"crud_filter_header\",\r\n body: \"crud_filter_body\",\r\n footer: \"crud_filter_footer\",\r\n },\r\n form: {\r\n root: \"crud_form\",\r\n loading: \"crud_form_loading\",\r\n },\r\n field: {\r\n wrapper: \"crud_field_wrapper\",\r\n label: \"crud_field_label\",\r\n input: \"crud_field_input\",\r\n error: \"crud_field_error\",\r\n },\r\n mediaPicker: {\r\n image: \"crud_media_image_picker\",\r\n multiImage: \"crud_media_multi_image_picker\",\r\n audio: \"crud_media_audio_picker\",\r\n video: \"crud_media_video_picker\",\r\n dropzone: \"crud_media_dropzone\",\r\n cropModal: \"crud_media_crop_modal\",\r\n },\r\n details: {\r\n root: \"crud_details\",\r\n container: \"crud_details_container\",\r\n row: \"crud_details_row\",\r\n },\r\n} as const;\r\n","import React from \"react\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n className?: string;\r\n variant?: string;\r\n color?: string;\r\n size?: string;\r\n fullWidth?: boolean;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className = \"\",\r\n variant = \"contained\",\r\n color = \"default\",\r\n size = \"default\",\r\n fullWidth = false,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const baseStyles =\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\";\r\n\r\n const sizes: Record<string, string> = {\r\n sm: \"h-8 px-3 rounded-md text-sm\",\r\n md: \"h-9 px-4 rounded-md text-sm\",\r\n lg: \"h-11 px-6 rounded-md text-base\",\r\n xl: \"h-12 px-8 rounded-lg text-lg\",\r\n default: \"h-9 px-4 rounded-md text-sm\",\r\n };\r\n\r\n const colorVariants: Record<string, Record<string, string>> = {\r\n primary: {\r\n contained:\r\n \"bg-primary text-white hover:bg-primary-600 focus:ring-primary-500 shadow-sm\",\r\n outlined:\r\n \"border border-primary bg-transparent text-primary hover:bg-primary-50 focus:ring-primary-500\",\r\n text: \"bg-transparent text-primary hover:bg-primary-50 focus:ring-primary-500\",\r\n },\r\n success: {\r\n contained:\r\n \"bg-green-600 text-white hover:bg-green-700 focus:ring-green-500 shadow-sm\",\r\n outlined:\r\n \"border border-green-600 bg-transparent text-green-600 hover:bg-green-50 focus:ring-green-500\",\r\n text: \"bg-transparent text-green-600 hover:bg-green-50 focus:ring-green-500\",\r\n },\r\n error: {\r\n contained:\r\n \"bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 shadow-sm\",\r\n outlined:\r\n \"border border-red-600 bg-transparent text-red-600 hover:bg-red-50 focus:ring-red-500\",\r\n text: \"bg-transparent text-red-600 hover:bg-red-50 focus:ring-red-500\",\r\n },\r\n default: {\r\n contained:\r\n \"border bg-gray-200 text-gray-800 hover:bg-gray-300 focus:ring-gray-300 shadow-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100 dark:hover:bg-gray-600 dark:focus:ring-gray-600\",\r\n outlined:\r\n \"border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-300 dark:border-gray-600 dark:text-gray-200 dark:hover:bg-gray-700 dark:focus:ring-gray-500\",\r\n text: \"bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-300 dark:text-gray-200 dark:hover:bg-gray-700 dark:focus:ring-gray-500\",\r\n },\r\n };\r\n\r\n const colorStyles =\r\n colorVariants[color]?.[variant] || colorVariants.default.contained;\r\n const sizeStyles = sizes[size] || sizes.default;\r\n\r\n const combinedClassName = joinClasses(\r\n crudClasses.button.root,\r\n baseStyles,\r\n colorStyles,\r\n sizeStyles,\r\n fullWidth ? \"w-full\" : \"\",\r\n className,\r\n );\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={props.type || \"button\"}\r\n className={combinedClassName}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n },\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n\r\nexport default Button;\r\n","import { Info } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface InputLabelProps {\r\n label: React.ReactNode;\r\n required?: boolean;\r\n infoText?: string;\r\n}\r\n\r\nexport default function InputLabel({\r\n label,\r\n required = false,\r\n infoText = \"\",\r\n}: InputLabelProps) {\r\n return (\r\n <>\r\n <label\r\n className={joinClasses(\r\n crudClasses.field.label,\r\n \"flex text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\",\r\n )}\r\n >\r\n {label}\r\n {required && <span className=\"ml-1\">*</span>}\r\n\r\n {infoText && (\r\n <span className=\"ml-2 relative group inline-flex items-center cursor-pointer\">\r\n <Info className=\"w-4 h-4 text-gray-500 dark:text-gray-400\" />\r\n\r\n <span\r\n className=\"absolute left-1/2 top-full mt-2\r\n w-max max-w-xs bg-white text-black dark:bg-black dark:text-white text-xs\r\n rounded px-2 py-1 opacity-0 shadow-lg\r\n group-hover:opacity-100 transition-opacity\r\n duration-200 pointer-events-none z-50\"\r\n >\r\n {infoText}\r\n </span>\r\n </span>\r\n )}\r\n </label>\r\n </>\r\n );\r\n}\r\n","export interface CountryInterface {\r\n label: string;\r\n code: string;\r\n phone: string;\r\n pattern: string;\r\n mask: string;\r\n}\r\n\r\nexport const countries: CountryInterface[] = [\r\n {\r\n label: \"Afghanistan\",\r\n code: \"AF\",\r\n phone: \"93\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Aland Islands\",\r\n code: \"AX\",\r\n phone: \"358\",\r\n pattern: \"^[0-9]{6,10}$\",\r\n mask: \"### ### ### ##\",\r\n },\r\n {\r\n label: \"Albania\",\r\n code: \"AL\",\r\n phone: \"355\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Algeria\",\r\n code: \"DZ\",\r\n phone: \"213\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"American Samoa\",\r\n code: \"AS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Andorra\",\r\n code: \"AD\",\r\n phone: \"376\",\r\n pattern: \"^[0-9]{6,9}$\",\r\n mask: \"### ###\",\r\n },\r\n {\r\n label: \"Angola\",\r\n code: \"AO\",\r\n phone: \"244\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Anguilla\",\r\n code: \"AI\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Antarctica\",\r\n code: \"AQ\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Argentina\",\r\n code: \"AR\",\r\n phone: \"54\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Armenia\",\r\n code: \"AM\",\r\n phone: \"374\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Aruba\",\r\n code: \"AW\",\r\n phone: \"297\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Australia\",\r\n code: \"AU\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Austria\",\r\n code: \"AT\",\r\n phone: \"43\",\r\n pattern: \"^[0-9]{10,12}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Azerbaijan\",\r\n code: \"AZ\",\r\n phone: \"994\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Bahrain\",\r\n code: \"BH\",\r\n phone: \"973\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Bangladesh\",\r\n code: \"BD\",\r\n phone: \"880\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Barbados\",\r\n code: \"BB\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Belarus\",\r\n code: \"BY\",\r\n phone: \"375\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Belgium\",\r\n code: \"BE\",\r\n phone: \"32\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ## ##\",\r\n },\r\n {\r\n label: \"Belize\",\r\n code: \"BZ\",\r\n phone: \"501\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Benin\",\r\n code: \"BJ\",\r\n phone: \"229\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Bermuda\",\r\n code: \"BM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Bhutan\",\r\n code: \"BT\",\r\n phone: \"975\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Bolivia\",\r\n code: \"BO\",\r\n phone: \"591\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ### ##\",\r\n },\r\n {\r\n label: \"Bonaire, Sint Eustatius and Saba\",\r\n code: \"BQ\",\r\n phone: \"599\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n phone: \"387\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Botswana\",\r\n code: \"BW\",\r\n phone: \"267\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Bouvet Island\",\r\n code: \"BV\",\r\n phone: \"0055\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Brazil\",\r\n code: \"BR\",\r\n phone: \"55\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"(##) #####-####\",\r\n },\r\n {\r\n label: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n phone: \"246\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Brunei\",\r\n code: \"BN\",\r\n phone: \"673\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Bulgaria\",\r\n code: \"BG\",\r\n phone: \"359\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Burkina Faso\",\r\n code: \"BF\",\r\n phone: \"226\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Burundi\",\r\n code: \"BI\",\r\n phone: \"257\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Cambodia\",\r\n code: \"KH\",\r\n phone: \"855\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Cameroon\",\r\n code: \"CM\",\r\n phone: \"237\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"#### ## ##\",\r\n },\r\n {\r\n label: \"Canada\",\r\n code: \"CA\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Cape Verde\",\r\n code: \"CV\",\r\n phone: \"238\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Cayman Islands\",\r\n code: \"KY\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Central African Republic\",\r\n code: \"CF\",\r\n phone: \"236\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Chad\",\r\n code: \"TD\",\r\n phone: \"235\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Chile\",\r\n code: \"CL\",\r\n phone: \"56\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"China\",\r\n code: \"CN\",\r\n phone: \"86\",\r\n pattern: \"^[0-9]{11}$\",\r\n mask: \"### #### ####\",\r\n },\r\n {\r\n label: \"Christmas Island\",\r\n code: \"CX\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Colombia\",\r\n code: \"CO\",\r\n phone: \"57\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Comoros\",\r\n code: \"KM\",\r\n phone: \"269\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ## ###\",\r\n },\r\n {\r\n label: \"Congo\",\r\n code: \"CG\",\r\n phone: \"242\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Cook Islands\",\r\n code: \"CK\",\r\n phone: \"682\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Costa Rica\",\r\n code: \"CR\",\r\n phone: \"506\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Croatia\",\r\n code: \"HR\",\r\n phone: \"385\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Cuba\",\r\n code: \"CU\",\r\n phone: \"53\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Curaçao\",\r\n code: \"CW\",\r\n phone: \"599\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Cyprus\",\r\n code: \"CY\",\r\n phone: \"357\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Czech Republic\",\r\n code: \"CZ\",\r\n phone: \"420\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Democratic Republic of the Congo\",\r\n code: \"CD\",\r\n phone: \"243\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Denmark\",\r\n code: \"DK\",\r\n phone: \"45\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Djibouti\",\r\n code: \"DJ\",\r\n phone: \"253\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Dominica\",\r\n code: \"DM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Dominican Republic\",\r\n code: \"DO\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Ecuador\",\r\n code: \"EC\",\r\n phone: \"593\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Egypt\",\r\n code: \"EG\",\r\n phone: \"20\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"El Salvador\",\r\n code: \"SV\",\r\n phone: \"503\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n phone: \"240\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Eritrea\",\r\n code: \"ER\",\r\n phone: \"291\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ### ##\",\r\n },\r\n {\r\n label: \"Estonia\",\r\n code: \"EE\",\r\n phone: \"372\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Eswatini\",\r\n code: \"SZ\",\r\n phone: \"268\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Ethiopia\",\r\n code: \"ET\",\r\n phone: \"251\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Falkland Islands\",\r\n code: \"FK\",\r\n phone: \"500\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Faroe Islands\",\r\n code: \"FO\",\r\n phone: \"298\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"### ###\",\r\n },\r\n {\r\n label: \"Fiji Islands\",\r\n code: \"FJ\",\r\n phone: \"679\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Finland\",\r\n code: \"FI\",\r\n phone: \"358\",\r\n pattern: \"^[0-9]{6,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"France\",\r\n code: \"FR\",\r\n phone: \"33\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"French Guiana\",\r\n code: \"GF\",\r\n phone: \"594\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"French Polynesia\",\r\n code: \"PF\",\r\n phone: \"689\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"French Southern Territories\",\r\n code: \"TF\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Gabon\",\r\n code: \"GA\",\r\n phone: \"241\",\r\n pattern: \"^[0-9]{7,8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Georgia\",\r\n code: \"GE\",\r\n phone: \"995\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ## ##\",\r\n },\r\n {\r\n label: \"Germany\",\r\n code: \"DE\",\r\n phone: \"49\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Ghana\",\r\n code: \"GH\",\r\n phone: \"233\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Gibraltar\",\r\n code: \"GI\",\r\n phone: \"350\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Greece\",\r\n code: \"GR\",\r\n phone: \"30\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Greenland\",\r\n code: \"GL\",\r\n phone: \"299\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ## ##\",\r\n },\r\n {\r\n label: \"Grenada\",\r\n code: \"GD\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Guadeloupe\",\r\n code: \"GP\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Guam\",\r\n code: \"GU\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Guatemala\",\r\n code: \"GT\",\r\n phone: \"502\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Guernsey\",\r\n code: \"GG\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Guinea\",\r\n code: \"GN\",\r\n phone: \"224\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n phone: \"245\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Guyana\",\r\n code: \"GY\",\r\n phone: \"592\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Haiti\",\r\n code: \"HT\",\r\n phone: \"509\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Honduras\",\r\n code: \"HN\",\r\n phone: \"504\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Hong Kong S.A.R.\",\r\n code: \"HK\",\r\n phone: \"852\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Hungary\",\r\n code: \"HU\",\r\n phone: \"36\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Iceland\",\r\n code: \"IS\",\r\n phone: \"354\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"India\",\r\n code: \"IN\",\r\n phone: \"91\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Indonesia\",\r\n code: \"ID\",\r\n phone: \"62\",\r\n pattern: \"^[0-9]{9,11}$\",\r\n mask: \"### #### ####\",\r\n },\r\n {\r\n label: \"Iran\",\r\n code: \"IR\",\r\n phone: \"98\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Iraq\",\r\n code: \"IQ\",\r\n phone: \"964\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Ireland\",\r\n code: \"IE\",\r\n phone: \"353\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Israel\",\r\n code: \"IL\",\r\n phone: \"972\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Italy\",\r\n code: \"IT\",\r\n phone: \"39\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Ivory Coast\",\r\n code: \"CI\",\r\n phone: \"225\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"Jamaica\",\r\n code: \"JM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Japan\",\r\n code: \"JP\",\r\n phone: \"81\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Jersey\",\r\n code: \"JE\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Jordan\",\r\n code: \"JO\",\r\n phone: \"962\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Kazakhstan\",\r\n code: \"KZ\",\r\n phone: \"7\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ## ##\",\r\n },\r\n {\r\n label: \"Kenya\",\r\n code: \"KE\",\r\n phone: \"254\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Kiribati\",\r\n code: \"KI\",\r\n phone: \"686\",\r\n pattern: \"^[0-9]{5,8}$\",\r\n mask: \"## ###\",\r\n },\r\n {\r\n label: \"Kosovo\",\r\n code: \"XK\",\r\n phone: \"383\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Kuwait\",\r\n code: \"KW\",\r\n phone: \"965\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n phone: \"996\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Laos\",\r\n code: \"LA\",\r\n phone: \"856\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Latvia\",\r\n code: \"LV\",\r\n phone: \"371\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Lebanon\",\r\n code: \"LB\",\r\n phone: \"961\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Lesotho\",\r\n code: \"LS\",\r\n phone: \"266\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Liberia\",\r\n code: \"LR\",\r\n phone: \"231\",\r\n pattern: \"^[0-9]{7,8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Libya\",\r\n code: \"LY\",\r\n phone: \"218\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Liechtenstein\",\r\n code: \"LI\",\r\n phone: \"423\",\r\n pattern: \"^[0-9]{7,9}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Lithuania\",\r\n code: \"LT\",\r\n phone: \"370\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ### ##\",\r\n },\r\n {\r\n label: \"Luxembourg\",\r\n code: \"LU\",\r\n phone: \"352\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Macau S.A.R.\",\r\n code: \"MO\",\r\n phone: \"853\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Madagascar\",\r\n code: \"MG\",\r\n phone: \"261\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## #####\",\r\n },\r\n {\r\n label: \"Malawi\",\r\n code: \"MW\",\r\n phone: \"265\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Malaysia\",\r\n code: \"MY\",\r\n phone: \"60\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Maldives\",\r\n code: \"MV\",\r\n phone: \"960\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Mali\",\r\n code: \"ML\",\r\n phone: \"223\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Malta\",\r\n code: \"MT\",\r\n phone: \"356\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Man (Isle of)\",\r\n code: \"IM\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Marshall Islands\",\r\n code: \"MH\",\r\n phone: \"692\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Martinique\",\r\n code: \"MQ\",\r\n phone: \"596\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Mauritania\",\r\n code: \"MR\",\r\n phone: \"222\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Mauritius\",\r\n code: \"MU\",\r\n phone: \"230\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Mayotte\",\r\n code: \"YT\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Mexico\",\r\n code: \"MX\",\r\n phone: \"52\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Micronesia\",\r\n code: \"FM\",\r\n phone: \"691\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Moldova\",\r\n code: \"MD\",\r\n phone: \"373\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Monaco\",\r\n code: \"MC\",\r\n phone: \"377\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"Mongolia\",\r\n code: \"MN\",\r\n phone: \"976\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Montenegro\",\r\n code: \"ME\",\r\n phone: \"382\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Montserrat\",\r\n code: \"MS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Morocco\",\r\n code: \"MA\",\r\n phone: \"212\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Mozambique\",\r\n code: \"MZ\",\r\n phone: \"258\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Myanmar\",\r\n code: \"MM\",\r\n phone: \"95\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Namibia\",\r\n code: \"NA\",\r\n phone: \"264\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Nauru\",\r\n code: \"NR\",\r\n phone: \"674\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Nepal\",\r\n code: \"NP\",\r\n phone: \"977\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### #### ###\",\r\n },\r\n {\r\n label: \"Netherlands\",\r\n code: \"NL\",\r\n phone: \"31\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"New Caledonia\",\r\n code: \"NC\",\r\n phone: \"687\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"New Zealand\",\r\n code: \"NZ\",\r\n phone: \"64\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Nicaragua\",\r\n code: \"NI\",\r\n phone: \"505\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Niger\",\r\n code: \"NE\",\r\n phone: \"227\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Nigeria\",\r\n code: \"NG\",\r\n phone: \"234\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Niue\",\r\n code: \"NU\",\r\n phone: \"683\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Norfolk Island\",\r\n code: \"NF\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"North Korea\",\r\n code: \"KP\",\r\n phone: \"850\",\r\n pattern: \"^[0-9]{8,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"North Macedonia\",\r\n code: \"MK\",\r\n phone: \"389\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Norway\",\r\n code: \"NO\",\r\n phone: \"47\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Oman\",\r\n code: \"OM\",\r\n phone: \"968\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Pakistan\",\r\n code: \"PK\",\r\n phone: \"92\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"### #### ###\",\r\n },\r\n {\r\n label: \"Palau\",\r\n code: \"PW\",\r\n phone: \"680\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Palestinian Territory Occupied\",\r\n code: \"PS\",\r\n phone: \"970\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Panama\",\r\n code: \"PA\",\r\n phone: \"507\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Papua New Guinea\",\r\n code: \"PG\",\r\n phone: \"675\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Paraguay\",\r\n code: \"PY\",\r\n phone: \"595\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Peru\",\r\n code: \"PE\",\r\n phone: \"51\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Philippines\",\r\n code: \"PH\",\r\n phone: \"63\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Pitcairn Island\",\r\n code: \"PN\",\r\n phone: \"870\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Poland\",\r\n code: \"PL\",\r\n phone: \"48\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Portugal\",\r\n code: \"PT\",\r\n phone: \"351\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Puerto Rico\",\r\n code: \"PR\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Qatar\",\r\n code: \"QA\",\r\n phone: \"974\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Reunion\",\r\n code: \"RE\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Romania\",\r\n code: \"RO\",\r\n phone: \"40\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Russia\",\r\n code: \"RU\",\r\n phone: \"7\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ## ##\",\r\n },\r\n {\r\n label: \"Rwanda\",\r\n code: \"RW\",\r\n phone: \"250\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Saint Helena\",\r\n code: \"SH\",\r\n phone: \"290\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint Lucia\",\r\n code: \"LC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n phone: \"508\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ###\",\r\n },\r\n {\r\n label: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint-Barthelemy\",\r\n code: \"BL\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Saint-Martin (French part)\",\r\n code: \"MF\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Samoa\",\r\n code: \"WS\",\r\n phone: \"685\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"San Marino\",\r\n code: \"SM\",\r\n phone: \"378\",\r\n pattern: \"^[0-9]{10,12}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n phone: \"239\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Saudi Arabia\",\r\n code: \"SA\",\r\n phone: \"966\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Senegal\",\r\n code: \"SN\",\r\n phone: \"221\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Serbia\",\r\n code: \"RS\",\r\n phone: \"381\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Seychelles\",\r\n code: \"SC\",\r\n phone: \"248\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Sierra Leone\",\r\n code: \"SL\",\r\n phone: \"232\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ######\",\r\n },\r\n {\r\n label: \"Singapore\",\r\n code: \"SG\",\r\n phone: \"65\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Sint Maarten (Dutch part)\",\r\n code: \"SX\",\r\n phone: \"1721\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Slovakia\",\r\n code: \"SK\",\r\n phone: \"421\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Slovenia\",\r\n code: \"SI\",\r\n phone: \"386\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Solomon Islands\",\r\n code: \"SB\",\r\n phone: \"677\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Somalia\",\r\n code: \"SO\",\r\n phone: \"252\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"South Africa\",\r\n code: \"ZA\",\r\n phone: \"27\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"South Georgia\",\r\n code: \"GS\",\r\n phone: \"500\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"South Korea\",\r\n code: \"KR\",\r\n phone: \"82\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"South Sudan\",\r\n code: \"SS\",\r\n phone: \"211\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Spain\",\r\n code: \"ES\",\r\n phone: \"34\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Sri Lanka\",\r\n code: \"LK\",\r\n phone: \"94\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Sudan\",\r\n code: \"SD\",\r\n phone: \"249\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Suriname\",\r\n code: \"SR\",\r\n phone: \"597\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Svalbard and Jan Mayen Islands\",\r\n code: \"SJ\",\r\n phone: \"47\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Sweden\",\r\n code: \"SE\",\r\n phone: \"46\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Switzerland\",\r\n code: \"CH\",\r\n phone: \"41\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Syria\",\r\n code: \"SY\",\r\n phone: \"963\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Taiwan\",\r\n code: \"TW\",\r\n phone: \"886\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Tajikistan\",\r\n code: \"TJ\",\r\n phone: \"992\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ####\",\r\n },\r\n {\r\n label: \"Tanzania\",\r\n code: \"TZ\",\r\n phone: \"255\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Thailand\",\r\n code: \"TH\",\r\n phone: \"66\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"The Bahamas\",\r\n code: \"BS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"The Gambia\",\r\n code: \"GM\",\r\n phone: \"220\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Timor-Leste\",\r\n code: \"TL\",\r\n phone: \"670\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Togo\",\r\n code: \"TG\",\r\n phone: \"228\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Tokelau\",\r\n code: \"TK\",\r\n phone: \"690\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Tonga\",\r\n code: \"TO\",\r\n phone: \"676\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Tunisia\",\r\n code: \"TN\",\r\n phone: \"216\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Turkey\",\r\n code: \"TR\",\r\n phone: \"90\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Turkmenistan\",\r\n code: \"TM\",\r\n phone: \"993\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## #### ##\",\r\n },\r\n {\r\n label: \"Turks and Caicos Islands\",\r\n code: \"TC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Tuvalu\",\r\n code: \"TV\",\r\n phone: \"688\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Uganda\",\r\n code: \"UG\",\r\n phone: \"256\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Ukraine\",\r\n code: \"UA\",\r\n phone: \"380\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"United Arab Emirates\",\r\n code: \"AE\",\r\n phone: \"971\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"United Kingdom\",\r\n code: \"GB\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"United States\",\r\n code: \"US\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"United States Minor Outlying Islands\",\r\n code: \"UM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Uruguay\",\r\n code: \"UY\",\r\n phone: \"598\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Uzbekistan\",\r\n code: \"UZ\",\r\n phone: \"998\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Vanuatu\",\r\n code: \"VU\",\r\n phone: \"678\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Vatican City State (Holy See)\",\r\n code: \"VA\",\r\n phone: \"379\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Venezuela\",\r\n code: \"VE\",\r\n phone: \"58\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Vietnam\",\r\n code: \"VN\",\r\n phone: \"84\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Virgin Islands (British)\",\r\n code: \"VG\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Virgin Islands (US)\",\r\n code: \"VI\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Wallis and Futuna Islands\",\r\n code: \"WF\",\r\n phone: \"681\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"Western Sahara\",\r\n code: \"EH\",\r\n phone: \"212\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Yemen\",\r\n code: \"YE\",\r\n phone: \"967\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Zambia\",\r\n code: \"ZM\",\r\n phone: \"260\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Zimbabwe\",\r\n code: \"ZW\",\r\n phone: \"263\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n];\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { ChevronDown, Search, Check } from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { countries } from \"../../../data/countries\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SelectOption {\r\n label: string;\r\n value: any;\r\n code?: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options?:\r\n | SelectOption[]\r\n | ((\r\n formData: Record<string, any>,\r\n ) => Promise<SelectOption[]> | SelectOption[]);\r\n value: any;\r\n defaultValue?: any;\r\n onChange: (value: any) => void;\r\n placeholder?: string;\r\n className?: string;\r\n disabled?: boolean;\r\n search?: boolean;\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n multiple?: boolean;\r\n dropdownMaxHeight?: string | number;\r\n formData: Record<string, any>;\r\n dependencyKey?: string;\r\n countriesList?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Select = ({\r\n options = [],\r\n value = \"\",\r\n defaultValue = \"\",\r\n onChange,\r\n placeholder = \"Select option\",\r\n className = \"\",\r\n disabled = false,\r\n search = false,\r\n label = \"\",\r\n required = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n multiple = false,\r\n dropdownMaxHeight = \"\",\r\n formData = {},\r\n countriesList = false,\r\n dependencyKey = \"\",\r\n errorMessage = \"\",\r\n}: SelectProps) => {\r\n const [open, setOpen] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [showAboveState, setShowAboveState] = useState(true);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const optionsPanelRef = useRef<HTMLDivElement | null>(null);\r\n const searchInputRef = useRef<HTMLInputElement | null>(null);\r\n const [normalizedOptions, setNormalizedOptions] = useState<SelectOption[]>(\r\n [],\r\n );\r\n const [dropdownPosition, setDropdownPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n });\r\n\r\n const dropdownPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (dropdownRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n const initialVal = value || value === false ? value : defaultValue;\r\n\r\n const normalize = (val: any) => {\r\n if (val === null || val === undefined || val === \"\") return \"\";\r\n return typeof val === \"boolean\" ? String(val) : String(val ?? \"\");\r\n };\r\n\r\n const getCountrieslist = () => {\r\n const list = countries.map((obj) => ({\r\n value: obj.label,\r\n label: obj.label,\r\n code: obj.code,\r\n }));\r\n return list;\r\n };\r\n\r\n useEffect(\r\n () => {\r\n const loadOptions = async () => {\r\n if (countriesList == true) {\r\n setNormalizedOptions(getCountrieslist());\r\n } else if (typeof options === \"function\") {\r\n const result = await options(formData);\r\n setNormalizedOptions(result || []);\r\n } else {\r\n setNormalizedOptions(options || []);\r\n }\r\n };\r\n\r\n loadOptions();\r\n },\r\n dependencyKey ? [options, formData?.[dependencyKey]] : [options],\r\n );\r\n\r\n const normalizedValue = multiple\r\n ? (initialVal || []).map(normalize)\r\n : normalize(initialVal);\r\n\r\n const filteredOptions = normalizedOptions.filter((option) =>\r\n option.label.toLowerCase().includes(searchTerm.toLowerCase()),\r\n );\r\n\r\n const isSelected = (optionValue: any) => {\r\n const normalized = normalize(optionValue);\r\n if (multiple) {\r\n return (normalizedValue as string[]).includes(normalized);\r\n }\r\n return normalized === normalizedValue;\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(event.target as Node) &&\r\n !optionsPanelRef.current?.contains(event.target as Node)\r\n ) {\r\n setOpen(false);\r\n setSearchTerm(\"\");\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open || !dropdownRef.current) return;\r\n\r\n const updateDropdownPosition = () => {\r\n if (!dropdownRef.current) return;\r\n\r\n const rect = dropdownRef.current.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom;\r\n const maxDropdownHeight =\r\n typeof dropdownMaxHeight === \"number\" ? dropdownMaxHeight : 200;\r\n const shouldShowAbove = spaceBelow < maxDropdownHeight;\r\n\r\n setShowAboveState(shouldShowAbove);\r\n setDropdownPosition({\r\n top: shouldShowAbove ? rect.top - 4 : rect.bottom + 4,\r\n left: rect.left,\r\n width: rect.width,\r\n });\r\n };\r\n\r\n updateDropdownPosition();\r\n window.addEventListener(\"resize\", updateDropdownPosition);\r\n window.addEventListener(\"scroll\", updateDropdownPosition, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", updateDropdownPosition);\r\n window.removeEventListener(\"scroll\", updateDropdownPosition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (open && searchInputRef.current) {\r\n searchInputRef.current.focus();\r\n }\r\n }, [open]);\r\n\r\n const handleOptionClick = (optionValue: any) => {\r\n let finalValue = optionValue;\r\n if (optionValue === \"true\") finalValue = true;\r\n else if (optionValue === \"false\") finalValue = false;\r\n\r\n if (multiple) {\r\n const exists = (normalizedValue as string[]).includes(\r\n normalize(optionValue),\r\n );\r\n\r\n let newValues: any[];\r\n if (exists) {\r\n newValues = (Array.isArray(value) ? value : []).filter(\r\n (v) => normalize(v) !== normalize(optionValue),\r\n );\r\n } else {\r\n newValues = [...(Array.isArray(value) ? value : []), finalValue];\r\n }\r\n\r\n onChange?.(newValues);\r\n } else {\r\n onChange?.(finalValue);\r\n setOpen(false);\r\n }\r\n\r\n setSearchTerm(\"\");\r\n };\r\n\r\n const selectedLabels = multiple\r\n ? normalizedOptions\r\n .filter((opt) => isSelected(opt.value))\r\n .map((opt) => opt.label)\r\n .join(\", \")\r\n : normalizedOptions.find((opt) => isSelected(opt.value))?.label;\r\n\r\n useEffect(() => {\r\n if (initialVal || initialVal === false) {\r\n setTimeout(() => {\r\n onChange?.(initialVal);\r\n }, 100);\r\n }\r\n }, []);\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n\r\n <div\r\n className={joinClasses(crudClasses.field.input, \"relative\", className)}\r\n ref={dropdownRef}\r\n >\r\n <select\r\n name=\"hidden_select_for_validation\"\r\n value={\r\n multiple\r\n ? selectedLabels\r\n ? selectedLabels.split(\", \")\r\n : []\r\n : selectedLabels || \"\"\r\n }\r\n required={required}\r\n multiple={multiple}\r\n id={`field-${name}`}\r\n className=\"absolute opacity-0 right-1/2 top-[80%] -translate-x-1/2 -translate-y-1/2 pointer-events-none h-[10px]\"\r\n onChange={() => {}}\r\n >\r\n {multiple ? (\r\n selectedLabels?.split(\", \").map((label) => (\r\n <option key={label} value={label}>\r\n {label}\r\n </option>\r\n ))\r\n ) : (\r\n <option hidden value={selectedLabels}>\r\n {selectedLabels}\r\n </option>\r\n )}\r\n </select>\r\n <button\r\n type=\"button\"\r\n onClick={() => !disabled && setOpen(!open)}\r\n disabled={disabled}\r\n className={`w-full h-10 px-3 border border-gray-300 dark:border-gray-600 rounded-md text-left text-sm flex items-center justify-between \r\n ${\r\n !selectedLabels\r\n ? \"text-gray-500 dark:text-gray-400\"\r\n : \"dark:text-white\"\r\n } \r\n ${disabled ? \"opacity-50 cursor-not-allowed\" : \"dark:bg-gray-700\"}\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n <span className=\"truncate\">{selectedLabels || placeholder}</span>\r\n\r\n <ChevronDown\r\n className={`w-4 h-4 transition-transform ${\r\n open ? \"rotate-180\" : \"\"\r\n }`}\r\n />\r\n </button>\r\n\r\n {open &&\r\n dropdownPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={optionsPanelRef}\r\n className=\"fixed z-50 border rounded-md bg-white dark:bg-gray-700 shadow-lg\"\r\n style={{\r\n top: dropdownPosition.top,\r\n left: dropdownPosition.left,\r\n width: dropdownPosition.width,\r\n transform: showAboveState ? \"translateY(-100%)\" : undefined,\r\n }}\r\n >\r\n {search && (\r\n <div className=\"p-2 border-b border-gray-200 dark:border-gray-600\">\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400\" />\r\n <input\r\n ref={searchInputRef}\r\n type=\"text\"\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n placeholder=\"Search...\"\r\n className=\"w-full pl-9 pr-3 py-2 text-sm border rounded-md bg-white dark:bg-gray-800 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none\"\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div\r\n className=\"max-h-40 overflow-y-auto\"\r\n style={{\r\n maxHeight: dropdownMaxHeight || \"\",\r\n }}\r\n >\r\n {filteredOptions.length > 0 ? (\r\n filteredOptions.map((option) => (\r\n <button\r\n key={String(option.value)}\r\n type=\"button\"\r\n onClick={() => handleOptionClick(String(option.value))}\r\n className={`w-full px-3 py-2 text-left text-sm flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-600 \r\n ${\r\n isSelected(option.value)\r\n ? \"bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300\"\r\n : \"\"\r\n }`}\r\n >\r\n <div className=\"flex gap-2 items-center\">\r\n {countriesList && option?.code && (\r\n <img\r\n src={`https://flagcdn.com/w20/${option?.code.toLowerCase()}.png`}\r\n alt={option.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n )}\r\n <span>{option.label}</span>\r\n </div>\r\n\r\n {multiple && isSelected(option.value) && (\r\n <Check className=\"w-4 h-4\" />\r\n )}\r\n </button>\r\n ))\r\n ) : (\r\n <div className=\"px-3 py-2 text-sm text-gray-500 dark:text-gray-400\">\r\n No options found\r\n </div>\r\n )}\r\n </div>\r\n </div>,\r\n dropdownPortalTarget,\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Select;\r\n","import React, { useEffect } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SwitchProps {\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n value: boolean;\r\n onChange: (checked: boolean) => void;\r\n disabled?: boolean;\r\n name: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\r\n (\r\n {\r\n label,\r\n required,\r\n parentClass = \"col-span-12\",\r\n className = \"\",\r\n value = false,\r\n onChange,\r\n disabled = false,\r\n errorMessage = \"\",\r\n name,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n useEffect(() => {\r\n let initialVal;\r\n initialVal = value || false;\r\n setTimeout(() => {\r\n onChange?.(initialVal);\r\n }, 100);\r\n }, []);\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n \"flex justify-between\",\r\n parentClass,\r\n )}\r\n >\r\n {label && <InputLabel label={label} required={required} />}\r\n\r\n <label className=\"relative inline-flex items-center cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n ref={ref}\r\n id={`field-${name}`}\r\n className={joinClasses(crudClasses.field.input, \"sr-only peer\")}\r\n checked={value}\r\n onChange={(e) => onChange?.(e.target.checked)}\r\n disabled={disabled}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={`\r\n w-11 h-6 bg-gray-200 peer-focus:outline-none\r\n rounded-full peer dark:bg-gray-700\r\n peer-checked:bg-primary-600\r\n peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\r\n transition-colors duration-200\r\n ${errorMessage ? \"border-red-500\" : \"\"}\r\n ${className}\r\n `}\r\n ></div>\r\n\r\n <div\r\n className=\"\r\n absolute left-1 top-1\r\n w-4 h-4 bg-white rounded-full\r\n transition-transform duration-200\r\n peer-checked:translate-x-5\r\n \"\r\n ></div>\r\n </label>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n\r\nexport { Switch };\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { countries, CountryInterface } from \"../../../data/countries\";\r\nimport { ChevronDown, Search } from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface PhoneInputProps {\r\n label?: string;\r\n value: string;\r\n name: string;\r\n parentClass?: string;\r\n onChange: (value: string) => void;\r\n disabled?: boolean;\r\n required?: boolean;\r\n placeholder?: string;\r\n search?: boolean;\r\n countriesList?: boolean;\r\n defaultCountry?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nexport default function PhoneInput({\r\n label = \"\",\r\n value = \"\",\r\n name = \"\",\r\n parentClass = \"\",\r\n onChange,\r\n disabled = false,\r\n required = false,\r\n placeholder = \"Phone number\",\r\n search = false,\r\n countriesList = false,\r\n defaultCountry = \"\",\r\n errorMessage = \"\",\r\n}: PhoneInputProps) {\r\n const find_country_with_code = (countryCode: string) => {\r\n return (countries as CountryInterface[]).find(\r\n (obj) => obj.code == countryCode,\r\n );\r\n };\r\n\r\n const [selectedCountry, setSelectedCountry] = useState<CountryInterface>(\r\n find_country_with_code(defaultCountry) ||\r\n (countries as CountryInterface[])[0],\r\n );\r\n const [fullNumber, setFullNumber] = useState(\"\");\r\n const [localValue, setLocalValue] = useState(\"\");\r\n const [open, setOpen] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const optionsPanelRef = useRef<HTMLDivElement | null>(null);\r\n const [dropdownPosition, setDropdownPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n });\r\n\r\n const dropdownPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (dropdownRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n // Apply mask to phone number\r\n const applyMask = (digits: string, mask: string): string => {\r\n let result = \"\";\r\n let digitIndex = 0;\r\n\r\n for (let i = 0; i < mask.length && digitIndex < digits.length; i++) {\r\n if (mask[i] === \"#\") {\r\n result += digits[digitIndex];\r\n digitIndex++;\r\n } else {\r\n result += mask[i];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // Handle input change\r\n const handleNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const rawValue = e.target.value;\r\n const digits = rawValue.replace(/\\D/g, \"\");\r\n\r\n if (countriesList && selectedCountry?.mask) {\r\n // Apply mask\r\n const maskedValue = applyMask(digits, selectedCountry.mask);\r\n setLocalValue(maskedValue);\r\n onChange?.(\"+\" + selectedCountry.phone + \" \" + maskedValue);\r\n\r\n // Update parent with unmasked value\r\n const unmaskedValue = maskedValue.replace(/\\D/g, \"\");\r\n setFullNumber(unmaskedValue);\r\n } else {\r\n // No mask, just update with digits\r\n setLocalValue(digits);\r\n setFullNumber(digits);\r\n if (selectedCountry && onChange) {\r\n onChange(\"+\" + selectedCountry.phone + \" \" + digits);\r\n } else {\r\n onChange?.(digits);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (typeof value === \"string\" && value.startsWith(\"+\")) {\r\n const match = (countries as CountryInterface[])\r\n .filter((c) => value.startsWith(\"+\" + c.phone))\r\n .sort((a, b) => b.phone.length - a.phone.length)[0];\r\n if (match) {\r\n setSelectedCountry(match);\r\n let rawValue = value.replace(\"+\" + match.phone, \"\").replaceAll(\" \", \"\");\r\n setFullNumber(rawValue);\r\n setLocalValue(applyMask(rawValue, match.mask));\r\n return;\r\n }\r\n }\r\n setFullNumber(value || \"\");\r\n setLocalValue(value || \"\");\r\n }, []);\r\n\r\n const handleCountrySelect = (country: CountryInterface) => {\r\n setSelectedCountry(country);\r\n if (onChange) onChange(\"+\" + country.phone + \" \" + fullNumber);\r\n setOpen(false);\r\n setSearchTerm(\"\");\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node) &&\r\n !optionsPanelRef.current?.contains(e.target as Node)\r\n )\r\n setOpen(false);\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open || !dropdownRef.current) return;\r\n\r\n const updateDropdownPosition = () => {\r\n if (!dropdownRef.current) return;\r\n\r\n const rect = dropdownRef.current.getBoundingClientRect();\r\n setDropdownPosition({\r\n top: rect.bottom + 4,\r\n left: rect.left,\r\n width: rect.width,\r\n });\r\n };\r\n\r\n updateDropdownPosition();\r\n window.addEventListener(\"resize\", updateDropdownPosition);\r\n window.addEventListener(\"scroll\", updateDropdownPosition, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", updateDropdownPosition);\r\n window.removeEventListener(\"scroll\", updateDropdownPosition, true);\r\n };\r\n }, [open]);\r\n\r\n const filteredCountries = (countries as CountryInterface[]).filter(\r\n (c) =>\r\n c.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\r\n c.phone.includes(searchTerm),\r\n );\r\n\r\n if (!countriesList) {\r\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const input = e.target.value.replace(/[^+\\d]/g, \"\");\r\n const formatted = input.startsWith(\"+\")\r\n ? \"+\" + input.replace(/[+]/g, \"\").slice(0)\r\n : input;\r\n onChange?.(formatted);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <input\r\n type=\"text\"\r\n value={value}\r\n onChange={handleInputChange}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n required={required}\r\n className=\"w-full h-10 px-3 text-sm border border-gray-300 dark:border-gray-600 rounded-md \r\n bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none \r\n focus:ring-1 focus:ring-blue-300 dark:focus:ring-blue-200\"\r\n inputMode=\"tel\"\r\n pattern=\"^\\+\\d{1,15}$\"\r\n />\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div className=\"relative \" ref={dropdownRef}>\r\n <div\r\n className={`h-[40px] flex items-center border rounded-md px-2 bg-white dark:bg-gray-700 transition-all\r\n ${\r\n open\r\n ? \"ring-0.5 ring-blue-100 border-blue-300\"\r\n : \"border-gray-300 dark:border-gray-600\"\r\n }\r\n ${disabled ? \"opacity-60 cursor-not-allowed\" : \"\"}\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n <button\r\n type=\"button\"\r\n disabled={disabled}\r\n onClick={() => setOpen(!open)}\r\n className=\"flex items-center gap-1 pr-2 border-r border-gray-300 dark:border-gray-700 focus:outline-none\"\r\n >\r\n {selectedCountry ? (\r\n <img\r\n src={`https://flagcdn.com/w20/${selectedCountry.code.toLowerCase()}.png`}\r\n alt={selectedCountry.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n ) : (\r\n <span className=\"text-gray-400 text-xs\">🌐</span>\r\n )}\r\n <ChevronDown className=\"w-3 h-3 text-gray-500\" />\r\n </button>\r\n\r\n {selectedCountry && (\r\n <span className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 whitespace-nowrap\">\r\n +{selectedCountry.phone}\r\n </span>\r\n )}\r\n\r\n <input\r\n type=\"tel\"\r\n value={localValue}\r\n onChange={handleNumberChange}\r\n required={required}\r\n id={`field-${name}`}\r\n disabled={disabled || !selectedCountry}\r\n placeholder={\r\n !selectedCountry\r\n ? \"Select a country\"\r\n : placeholder || \"Enter phone number\"\r\n }\r\n className={`flex-1 ml-2 bg-transparent outline-none text-sm text-gray-800 dark:text-gray-100 placeholder-gray-400`}\r\n // pattern={selectedCountry?.pattern}\r\n />\r\n\r\n <input\r\n type=\"tel\"\r\n required={required}\r\n tabIndex={-1}\r\n readOnly\r\n value={\r\n selectedCountry && fullNumber\r\n ? \"+\" + selectedCountry.phone + fullNumber\r\n : \"\"\r\n }\r\n style={{\r\n position: \"absolute\",\r\n opacity: 0,\r\n pointerEvents: \"none\",\r\n height: 0,\r\n }}\r\n onChange={() => {}}\r\n />\r\n </div>\r\n\r\n {open &&\r\n dropdownPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={optionsPanelRef}\r\n className=\"fixed border border-gray-300 dark:border-gray-700 rounded-md bg-white dark:bg-gray-700 shadow-lg z-50 max-h-60 overflow-y-auto\"\r\n style={{\r\n top: dropdownPosition.top,\r\n left: dropdownPosition.left,\r\n width: dropdownPosition.width,\r\n }}\r\n >\r\n {search && (\r\n <div className=\"p-2 border-b border-gray-200 dark:border-gray-700\">\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400\" />\r\n <input\r\n type=\"text\"\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n placeholder=\"Search country...\"\r\n className=\"w-full pl-9 pr-3 py-2 text-sm border rounded-md bg-white dark:bg-gray-800 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none \"\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {filteredCountries.map((c) => (\r\n <button\r\n key={c.code}\r\n type=\"button\"\r\n onClick={() => handleCountrySelect(c)}\r\n className=\"w-full flex items-center gap-2 px-2 py-1 text-sm hover:bg-blue-50 dark:hover:bg-gray-700 text-gray-800 dark:text-gray-100\"\r\n >\r\n <img\r\n src={`https://flagcdn.com/w20/${c.code.toLowerCase()}.png`}\r\n alt={c.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n <span>\r\n {c.label} (+{c.phone})\r\n </span>\r\n </button>\r\n ))}\r\n </div>,\r\n dropdownPortalTarget,\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n errorMessage?: string;\r\n name: string;\r\n}\r\n\r\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (\r\n { className = \"\", label, required, errorMessage = \"\", name, ...props },\r\n ref,\r\n ) => {\r\n const combinedClassName = joinClasses(\r\n crudClasses.field.input,\r\n \"placeholder-gray-400 dark:placeholder-gray-400\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n className,\r\n );\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n props.parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div className=\"relative\">\r\n <textarea\r\n className={combinedClassName}\r\n ref={ref}\r\n id={`field-${name}`}\r\n required={required}\r\n {...props}\r\n />\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport { TextArea };\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n'use strict';\n\nvar UserAgent_DEPRECATED = require('./UserAgent_DEPRECATED');\n\nvar isEventSupported = require('./isEventSupported');\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\n","module.exports = require('./src/normalizeWheel.js');\n","import { __assign, __extends } from 'tslib';\nimport * as React from 'react';\nimport normalizeWheel from 'normalize-wheel';\n\n/**\r\n * Compute the dimension of the crop area based on media size,\r\n * aspect ratio and optionally rotation\r\n */\nfunction getCropSize(mediaWidth, mediaHeight, containerWidth, containerHeight, aspect, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaWidth, mediaHeight, rotation),\n width = _a.width,\n height = _a.height;\n var fittingWidth = Math.min(width, containerWidth);\n var fittingHeight = Math.min(height, containerHeight);\n if (fittingWidth > fittingHeight * aspect) {\n return {\n width: fittingHeight * aspect,\n height: fittingHeight\n };\n }\n return {\n width: fittingWidth,\n height: fittingWidth / aspect\n };\n}\n/**\r\n * Compute media zoom.\r\n * We fit the media into the container with \"max-width: 100%; max-height: 100%;\"\r\n */\nfunction getMediaZoom(mediaSize) {\n // Take the axis with more pixels to improve accuracy\n return mediaSize.width > mediaSize.height ? mediaSize.width / mediaSize.naturalWidth : mediaSize.height / mediaSize.naturalHeight;\n}\n/**\r\n * Ensure a new media position stays in the crop area.\r\n */\nfunction restrictPosition(position, mediaSize, cropSize, zoom, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaSize.width, mediaSize.height, rotation),\n width = _a.width,\n height = _a.height;\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom)\n };\n}\nfunction restrictPositionCoord(position, mediaSize, cropSize, zoom) {\n var maxPosition = mediaSize * zoom / 2 - cropSize / 2;\n return clamp(position, -maxPosition, maxPosition);\n}\nfunction getDistanceBetweenPoints(pointA, pointB) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2));\n}\nfunction getRotationBetweenPoints(pointA, pointB) {\n return Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180 / Math.PI;\n}\n/**\r\n * Compute the output cropped area of the media in percentages and pixels.\r\n * x/y are the top-left coordinates on the src media\r\n */\nfunction computeCroppedArea(crop, mediaSize, cropSize, aspect, zoom, rotation, restrictPosition) {\n if (rotation === void 0) {\n rotation = 0;\n }\n if (restrictPosition === void 0) {\n restrictPosition = true;\n }\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n var limitAreaFn = restrictPosition ? limitArea : noOp;\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n // calculate the crop area in percentages\n // in the rotated space\n var croppedAreaPercentages = {\n x: limitAreaFn(100, ((mediaBBoxSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaBBoxSize.width * 100),\n y: limitAreaFn(100, ((mediaBBoxSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / mediaBBoxSize.height * 100),\n width: limitAreaFn(100, cropSize.width / mediaBBoxSize.width * 100 / zoom),\n height: limitAreaFn(100, cropSize.height / mediaBBoxSize.height * 100 / zoom)\n };\n // we compute the pixels size naively\n var widthInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.width, croppedAreaPercentages.width * mediaNaturalBBoxSize.width / 100));\n var heightInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.height, croppedAreaPercentages.height * mediaNaturalBBoxSize.height / 100));\n var isImgWiderThanHigh = mediaNaturalBBoxSize.width >= mediaNaturalBBoxSize.height * aspect;\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to image height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n var sizePixels = isImgWiderThanHigh ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels\n } : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect)\n };\n var croppedAreaPixels = __assign(__assign({}, sizePixels), {\n x: Math.round(limitAreaFn(mediaNaturalBBoxSize.width - sizePixels.width, croppedAreaPercentages.x * mediaNaturalBBoxSize.width / 100)),\n y: Math.round(limitAreaFn(mediaNaturalBBoxSize.height - sizePixels.height, croppedAreaPercentages.y * mediaNaturalBBoxSize.height / 100))\n });\n return {\n croppedAreaPercentages: croppedAreaPercentages,\n croppedAreaPixels: croppedAreaPixels\n };\n}\n/**\r\n * Ensure the returned value is between 0 and max\r\n */\nfunction limitArea(max, value) {\n return Math.min(max, Math.max(0, value));\n}\nfunction noOp(_max, value) {\n return value;\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPercentages.\r\n */\nfunction getInitialCropFromCroppedAreaPercentages(croppedAreaPercentages, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n // This is the inverse process of computeCroppedArea\n var zoom = clamp(cropSize.width / mediaBBoxSize.width * (100 / croppedAreaPercentages.width), minZoom, maxZoom);\n var crop = {\n x: zoom * mediaBBoxSize.width / 2 - cropSize.width / 2 - mediaBBoxSize.width * zoom * (croppedAreaPercentages.x / 100),\n y: zoom * mediaBBoxSize.height / 2 - cropSize.height / 2 - mediaBBoxSize.height * zoom * (croppedAreaPercentages.y / 100)\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Compute zoom from the croppedAreaPixels\r\n */\nfunction getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize) {\n var mediaZoom = getMediaZoom(mediaSize);\n return cropSize.height > cropSize.width ? cropSize.height / (croppedAreaPixels.height * mediaZoom) : cropSize.width / (croppedAreaPixels.width * mediaZoom);\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPixels\r\n */\nfunction getInitialCropFromCroppedAreaPixels(croppedAreaPixels, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n var zoom = clamp(getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize), minZoom, maxZoom);\n var cropZoom = cropSize.height > cropSize.width ? cropSize.height / croppedAreaPixels.height : cropSize.width / croppedAreaPixels.width;\n var crop = {\n x: ((mediaNaturalBBoxSize.width - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y: ((mediaNaturalBBoxSize.height - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) * cropZoom\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Return the point that is the center of point a and b\r\n */\nfunction getCenter(a, b) {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2\n };\n}\nfunction getRadianAngle(degreeValue) {\n return degreeValue * Math.PI / 180;\n}\n/**\r\n * Returns the new bounding area of a rotated rectangle.\r\n */\nfunction rotateSize(width, height, rotation) {\n var rotRad = getRadianAngle(rotation);\n return {\n width: Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\n height: Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height)\n };\n}\n/**\r\n * Clamp value between min and max\r\n */\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\r\n * Combine multiple class names into a single string.\r\n */\nfunction classNames() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return args.filter(function (value) {\n if (typeof value === 'string' && value.length > 0) {\n return true;\n }\n return false;\n }).join(' ').trim();\n}\n\nvar css_248z = \".reactEasyCrop_Container {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n overflow: hidden;\\n user-select: none;\\n touch-action: none;\\n cursor: move;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.reactEasyCrop_Image,\\n.reactEasyCrop_Video {\\n will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */\\n}\\n\\n.reactEasyCrop_Contain {\\n max-width: 100%;\\n max-height: 100%;\\n margin: auto;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n.reactEasyCrop_Cover_Horizontal {\\n width: 100%;\\n height: auto;\\n}\\n.reactEasyCrop_Cover_Vertical {\\n width: auto;\\n height: 100%;\\n}\\n\\n.reactEasyCrop_CropArea {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n box-sizing: border-box;\\n box-shadow: 0 0 0 9999em;\\n color: rgba(0, 0, 0, 0.5);\\n overflow: hidden;\\n}\\n\\n.reactEasyCrop_CropAreaRound {\\n border-radius: 50%;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::before {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 0;\\n bottom: 0;\\n left: 33.33%;\\n right: 33.33%;\\n border-top: 0;\\n border-bottom: 0;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::after {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 33.33%;\\n bottom: 33.33%;\\n left: 0;\\n right: 0;\\n border-left: 0;\\n border-right: 0;\\n}\\n\";\n\nvar MIN_ZOOM = 1;\nvar MAX_ZOOM = 3;\nvar KEYBOARD_STEP = 1;\nvar Cropper = /** @class */function (_super) {\n __extends(Cropper, _super);\n function Cropper() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cropperRef = React.createRef();\n _this.imageRef = React.createRef();\n _this.videoRef = React.createRef();\n _this.containerPosition = {\n x: 0,\n y: 0\n };\n _this.containerRef = null;\n _this.styleRef = null;\n _this.containerRect = null;\n _this.mediaSize = {\n width: 0,\n height: 0,\n naturalWidth: 0,\n naturalHeight: 0\n };\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.dragStartCrop = {\n x: 0,\n y: 0\n };\n _this.gestureZoomStart = 0;\n _this.gestureRotationStart = 0;\n _this.isTouching = false;\n _this.lastPinchDistance = 0;\n _this.lastPinchRotation = 0;\n _this.rafDragTimeout = null;\n _this.rafPinchTimeout = null;\n _this.wheelTimer = null;\n _this.currentDoc = typeof document !== 'undefined' ? document : null;\n _this.currentWindow = typeof window !== 'undefined' ? window : null;\n _this.resizeObserver = null;\n _this.previousCropSize = null;\n _this.isInitialized = false;\n _this.state = {\n cropSize: null,\n hasWheelJustStarted: false,\n mediaObjectFit: undefined\n };\n _this.initResizeObserver = function () {\n if (typeof window.ResizeObserver === 'undefined' || !_this.containerRef) {\n return;\n }\n var isFirstResize = true;\n _this.resizeObserver = new window.ResizeObserver(function (entries) {\n if (isFirstResize) {\n isFirstResize = false; // observe() is called on mount, we don't want to trigger a recompute on mount\n return;\n }\n _this.computeSizes();\n });\n _this.resizeObserver.observe(_this.containerRef);\n };\n // this is to prevent Safari on iOS >= 10 to zoom the page\n _this.preventZoomSafari = function (e) {\n return e.preventDefault();\n };\n _this.cleanEvents = function () {\n if (!_this.currentDoc) return;\n _this.currentDoc.removeEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.removeEventListener('mouseup', _this.onDragStopped);\n _this.currentDoc.removeEventListener('touchmove', _this.onTouchMove);\n _this.currentDoc.removeEventListener('touchend', _this.onDragStopped);\n _this.currentDoc.removeEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.removeEventListener('gestureend', _this.onGestureEnd);\n _this.currentDoc.removeEventListener('scroll', _this.onScroll);\n };\n _this.clearScrollEvent = function () {\n if (_this.containerRef) _this.containerRef.removeEventListener('wheel', _this.onWheel);\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n };\n _this.onMediaLoad = function () {\n var cropSize = _this.computeSizes();\n if (cropSize) {\n _this.previousCropSize = cropSize;\n _this.emitCropData();\n _this.setInitialCrop(cropSize);\n _this.isInitialized = true;\n }\n if (_this.props.onMediaLoaded) {\n _this.props.onMediaLoaded(_this.mediaSize);\n }\n };\n _this.setInitialCrop = function (cropSize) {\n if (_this.props.initialCroppedAreaPercentages) {\n var _a = getInitialCropFromCroppedAreaPercentages(_this.props.initialCroppedAreaPercentages, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _a.crop,\n zoom = _a.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n } else if (_this.props.initialCroppedAreaPixels) {\n var _b = getInitialCropFromCroppedAreaPixels(_this.props.initialCroppedAreaPixels, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _b.crop,\n zoom = _b.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n }\n };\n _this.computeSizes = function () {\n var _a, _b, _c, _d, _e, _f;\n var mediaRef = _this.imageRef.current || _this.videoRef.current;\n if (mediaRef && _this.containerRef) {\n _this.containerRect = _this.containerRef.getBoundingClientRect();\n _this.saveContainerPosition();\n var containerAspect = _this.containerRect.width / _this.containerRect.height;\n var naturalWidth = ((_a = _this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = _this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = _this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = _this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var isMediaScaledDown = mediaRef.offsetWidth < naturalWidth || mediaRef.offsetHeight < naturalHeight;\n var mediaAspect = naturalWidth / naturalHeight;\n // We do not rely on the offsetWidth/offsetHeight if the media is scaled down\n // as the values they report are rounded. That will result in precision losses\n // when calculating zoom. We use the fact that the media is positionned relative\n // to the container. That allows us to use the container's dimensions\n // and natural aspect ratio of the media to calculate accurate media size.\n // However, for this to work, the container should not be rotated\n var renderedMediaSize = void 0;\n if (isMediaScaledDown) {\n switch (_this.state.mediaObjectFit) {\n default:\n case 'contain':\n renderedMediaSize = containerAspect > mediaAspect ? {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n } : {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'horizontal-cover':\n renderedMediaSize = {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'vertical-cover':\n renderedMediaSize = {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n };\n break;\n }\n } else {\n renderedMediaSize = {\n width: mediaRef.offsetWidth,\n height: mediaRef.offsetHeight\n };\n }\n _this.mediaSize = __assign(__assign({}, renderedMediaSize), {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight\n });\n // set media size in the parent\n if (_this.props.setMediaSize) {\n _this.props.setMediaSize(_this.mediaSize);\n }\n var cropSize = _this.props.cropSize ? _this.props.cropSize : getCropSize(_this.mediaSize.width, _this.mediaSize.height, _this.containerRect.width, _this.containerRect.height, _this.props.aspect, _this.props.rotation);\n if (((_e = _this.state.cropSize) === null || _e === void 0 ? void 0 : _e.height) !== cropSize.height || ((_f = _this.state.cropSize) === null || _f === void 0 ? void 0 : _f.width) !== cropSize.width) {\n _this.props.onCropSizeChange && _this.props.onCropSizeChange(cropSize);\n }\n _this.setState({\n cropSize: cropSize\n }, _this.recomputeCropPosition);\n // pass crop size to parent\n if (_this.props.setCropSize) {\n _this.props.setCropSize(cropSize);\n }\n return cropSize;\n }\n };\n _this.saveContainerPosition = function () {\n if (_this.containerRef) {\n var bounds = _this.containerRef.getBoundingClientRect();\n _this.containerPosition = {\n x: bounds.left,\n y: bounds.top\n };\n }\n };\n _this.onMouseDown = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.addEventListener('mouseup', _this.onDragStopped);\n _this.saveContainerPosition();\n _this.onDragStart(Cropper.getMousePoint(e));\n };\n _this.onMouseMove = function (e) {\n return _this.onDrag(Cropper.getMousePoint(e));\n };\n _this.onScroll = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.saveContainerPosition();\n };\n _this.onTouchStart = function (e) {\n if (!_this.currentDoc) return;\n _this.isTouching = true;\n if (_this.props.onTouchRequest && !_this.props.onTouchRequest(e)) {\n return;\n }\n _this.currentDoc.addEventListener('touchmove', _this.onTouchMove, {\n passive: false\n }); // iOS 11 now defaults to passive: true\n _this.currentDoc.addEventListener('touchend', _this.onDragStopped);\n _this.saveContainerPosition();\n if (e.touches.length === 2) {\n _this.onPinchStart(e);\n } else if (e.touches.length === 1) {\n _this.onDragStart(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onTouchMove = function (e) {\n // Prevent whole page from scrolling on iOS.\n e.preventDefault();\n if (e.touches.length === 2) {\n _this.onPinchMove(e);\n } else if (e.touches.length === 1) {\n _this.onDrag(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onGestureStart = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.addEventListener('gestureend', _this.onGestureEnd);\n _this.gestureZoomStart = _this.props.zoom;\n _this.gestureRotationStart = _this.props.rotation;\n };\n _this.onGestureChange = function (e) {\n e.preventDefault();\n if (_this.isTouching) {\n // this is to avoid conflict between gesture and touch events\n return;\n }\n var point = Cropper.getMousePoint(e);\n var newZoom = _this.gestureZoomStart - 1 + e.scale;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (_this.props.onRotationChange) {\n var newRotation = _this.gestureRotationStart + e.rotation;\n _this.props.onRotationChange(newRotation);\n }\n };\n _this.onGestureEnd = function (e) {\n _this.cleanEvents();\n };\n _this.onDragStart = function (_a) {\n var _b, _c;\n var x = _a.x,\n y = _a.y;\n _this.dragStartPosition = {\n x: x,\n y: y\n };\n _this.dragStartCrop = __assign({}, _this.props.crop);\n (_c = (_b = _this.props).onInteractionStart) === null || _c === void 0 ? void 0 : _c.call(_b);\n };\n _this.onDrag = function (_a) {\n var x = _a.x,\n y = _a.y;\n if (!_this.currentWindow) return;\n if (_this.rafDragTimeout) _this.currentWindow.cancelAnimationFrame(_this.rafDragTimeout);\n _this.rafDragTimeout = _this.currentWindow.requestAnimationFrame(function () {\n if (!_this.state.cropSize) return;\n if (x === undefined || y === undefined) return;\n var offsetX = x - _this.dragStartPosition.x;\n var offsetY = y - _this.dragStartPosition.y;\n var requestedPosition = {\n x: _this.dragStartCrop.x + offsetX,\n y: _this.dragStartCrop.y + offsetY\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n });\n };\n _this.onDragStopped = function () {\n var _a, _b;\n _this.isTouching = false;\n _this.cleanEvents();\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n _this.onWheel = function (e) {\n if (!_this.currentWindow) return;\n if (_this.props.onWheelRequest && !_this.props.onWheelRequest(e)) {\n return;\n }\n e.preventDefault();\n var point = Cropper.getMousePoint(e);\n var pixelY = normalizeWheel(e).pixelY;\n var newZoom = _this.props.zoom - pixelY * _this.props.zoomSpeed / 200;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (!_this.state.hasWheelJustStarted) {\n _this.setState({\n hasWheelJustStarted: true\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n _this.wheelTimer = _this.currentWindow.setTimeout(function () {\n return _this.setState({\n hasWheelJustStarted: false\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }, 250);\n };\n _this.getPointOnContainer = function (_a, containerTopLeft) {\n var x = _a.x,\n y = _a.y;\n if (!_this.containerRect) {\n throw new Error('The Cropper is not mounted');\n }\n return {\n x: _this.containerRect.width / 2 - (x - containerTopLeft.x),\n y: _this.containerRect.height / 2 - (y - containerTopLeft.y)\n };\n };\n _this.getPointOnMedia = function (_a) {\n var x = _a.x,\n y = _a.y;\n var _b = _this.props,\n crop = _b.crop,\n zoom = _b.zoom;\n return {\n x: (x + crop.x) / zoom,\n y: (y + crop.y) / zoom\n };\n };\n _this.setNewZoom = function (zoom, point, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.shouldUpdatePosition,\n shouldUpdatePosition = _c === void 0 ? true : _c;\n if (!_this.state.cropSize || !_this.props.onZoomChange) return;\n var newZoom = clamp(zoom, _this.props.minZoom, _this.props.maxZoom);\n if (shouldUpdatePosition) {\n var zoomPoint = _this.getPointOnContainer(point, _this.containerPosition);\n var zoomTarget = _this.getPointOnMedia(zoomPoint);\n var requestedPosition = {\n x: zoomTarget.x * newZoom - zoomPoint.x,\n y: zoomTarget.y * newZoom - zoomPoint.y\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, newZoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n }\n _this.props.onZoomChange(newZoom);\n };\n _this.getCropData = function () {\n if (!_this.state.cropSize) {\n return null;\n }\n // this is to ensure the crop is correctly restricted after a zoom back (https://github.com/ValentinH/react-easy-crop/issues/6)\n var restrictedPosition = _this.props.restrictPosition ? restrictPosition(_this.props.crop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : _this.props.crop;\n return computeCroppedArea(restrictedPosition, _this.mediaSize, _this.state.cropSize, _this.getAspect(), _this.props.zoom, _this.props.rotation, _this.props.restrictPosition);\n };\n _this.emitCropData = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropComplete) {\n _this.props.onCropComplete(croppedAreaPercentages, croppedAreaPixels);\n }\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.emitCropAreaChange = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.recomputeCropPosition = function () {\n var _a, _b;\n if (!_this.state.cropSize) return;\n var adjustedCrop = _this.props.crop;\n // Only scale if we're initialized and this is a legitimate resize\n if (_this.isInitialized && ((_a = _this.previousCropSize) === null || _a === void 0 ? void 0 : _a.width) && ((_b = _this.previousCropSize) === null || _b === void 0 ? void 0 : _b.height)) {\n var sizeChanged = Math.abs(_this.previousCropSize.width - _this.state.cropSize.width) > 1e-6 || Math.abs(_this.previousCropSize.height - _this.state.cropSize.height) > 1e-6;\n if (sizeChanged) {\n var scaleX = _this.state.cropSize.width / _this.previousCropSize.width;\n var scaleY = _this.state.cropSize.height / _this.previousCropSize.height;\n adjustedCrop = {\n x: _this.props.crop.x * scaleX,\n y: _this.props.crop.y * scaleY\n };\n }\n }\n var newPosition = _this.props.restrictPosition ? restrictPosition(adjustedCrop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : adjustedCrop;\n _this.previousCropSize = _this.state.cropSize;\n _this.props.onCropChange(newPosition);\n _this.emitCropData();\n };\n _this.onKeyDown = function (event) {\n var _a, _b;\n var _c = _this.props,\n crop = _c.crop,\n onCropChange = _c.onCropChange,\n keyboardStep = _c.keyboardStep,\n zoom = _c.zoom,\n rotation = _c.rotation;\n var step = keyboardStep;\n if (!_this.state.cropSize) return;\n // if the shift key is pressed, reduce the step to allow finer control\n if (event.shiftKey) {\n step *= 0.2;\n }\n var newCrop = __assign({}, crop);\n switch (event.key) {\n case 'ArrowUp':\n newCrop.y -= step;\n event.preventDefault();\n break;\n case 'ArrowDown':\n newCrop.y += step;\n event.preventDefault();\n break;\n case 'ArrowLeft':\n newCrop.x -= step;\n event.preventDefault();\n break;\n case 'ArrowRight':\n newCrop.x += step;\n event.preventDefault();\n break;\n default:\n return;\n }\n if (_this.props.restrictPosition) {\n newCrop = restrictPosition(newCrop, _this.mediaSize, _this.state.cropSize, zoom, rotation);\n }\n if (!event.repeat) {\n (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n onCropChange(newCrop);\n };\n _this.onKeyUp = function (event) {\n var _a, _b;\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n event.preventDefault();\n break;\n default:\n return;\n }\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n return _this;\n }\n Cropper.prototype.componentDidMount = function () {\n if (!this.currentDoc || !this.currentWindow) return;\n if (this.containerRef) {\n if (this.containerRef.ownerDocument) {\n this.currentDoc = this.containerRef.ownerDocument;\n }\n if (this.currentDoc.defaultView) {\n this.currentWindow = this.currentDoc.defaultView;\n }\n this.initResizeObserver();\n // only add window resize listener if ResizeObserver is not supported. Otherwise, it would be redundant\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.addEventListener('resize', this.computeSizes);\n }\n this.props.zoomWithScroll && this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n });\n this.containerRef.addEventListener('gesturestart', this.onGestureStart);\n }\n this.currentDoc.addEventListener('scroll', this.onScroll);\n if (!this.props.disableAutomaticStylesInjection) {\n this.styleRef = this.currentDoc.createElement('style');\n this.styleRef.setAttribute('type', 'text/css');\n if (this.props.nonce) {\n this.styleRef.setAttribute('nonce', this.props.nonce);\n }\n this.styleRef.innerHTML = css_248z;\n this.currentDoc.head.appendChild(this.styleRef);\n }\n // when rendered via SSR, the image can already be loaded and its onLoad callback will never be called\n if (this.imageRef.current && this.imageRef.current.complete) {\n this.onMediaLoad();\n }\n // set image and video refs in the parent if the callbacks exist\n if (this.props.setImageRef) {\n this.props.setImageRef(this.imageRef);\n }\n if (this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef);\n }\n if (this.props.setCropperRef) {\n this.props.setCropperRef(this.cropperRef);\n }\n };\n Cropper.prototype.componentWillUnmount = function () {\n var _a, _b;\n if (!this.currentDoc || !this.currentWindow) return;\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.removeEventListener('resize', this.computeSizes);\n }\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n if (this.containerRef) {\n this.containerRef.removeEventListener('gesturestart', this.preventZoomSafari);\n }\n if (this.styleRef) {\n (_b = this.styleRef.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(this.styleRef);\n }\n this.cleanEvents();\n this.props.zoomWithScroll && this.clearScrollEvent();\n };\n Cropper.prototype.componentDidUpdate = function (prevProps) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (prevProps.rotation !== this.props.rotation) {\n this.computeSizes();\n this.recomputeCropPosition();\n } else if (prevProps.aspect !== this.props.aspect) {\n this.computeSizes();\n } else if (prevProps.objectFit !== this.props.objectFit) {\n this.computeSizes();\n } else if (prevProps.zoom !== this.props.zoom) {\n this.recomputeCropPosition();\n } else if (((_a = prevProps.cropSize) === null || _a === void 0 ? void 0 : _a.height) !== ((_b = this.props.cropSize) === null || _b === void 0 ? void 0 : _b.height) || ((_c = prevProps.cropSize) === null || _c === void 0 ? void 0 : _c.width) !== ((_d = this.props.cropSize) === null || _d === void 0 ? void 0 : _d.width)) {\n this.computeSizes();\n } else if (((_e = prevProps.crop) === null || _e === void 0 ? void 0 : _e.x) !== ((_f = this.props.crop) === null || _f === void 0 ? void 0 : _f.x) || ((_g = prevProps.crop) === null || _g === void 0 ? void 0 : _g.y) !== ((_h = this.props.crop) === null || _h === void 0 ? void 0 : _h.y)) {\n this.emitCropAreaChange();\n }\n if (prevProps.zoomWithScroll !== this.props.zoomWithScroll && this.containerRef) {\n this.props.zoomWithScroll ? this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n }) : this.clearScrollEvent();\n }\n if (prevProps.video !== this.props.video) {\n (_j = this.videoRef.current) === null || _j === void 0 ? void 0 : _j.load();\n }\n var objectFit = this.getObjectFit();\n if (objectFit !== this.state.mediaObjectFit) {\n this.setState({\n mediaObjectFit: objectFit\n }, this.computeSizes);\n }\n };\n Cropper.prototype.getAspect = function () {\n var _a = this.props,\n cropSize = _a.cropSize,\n aspect = _a.aspect;\n if (cropSize) {\n return cropSize.width / cropSize.height;\n }\n return aspect;\n };\n Cropper.prototype.getObjectFit = function () {\n var _a, _b, _c, _d;\n if (this.props.objectFit === 'cover') {\n var mediaRef = this.imageRef.current || this.videoRef.current;\n if (mediaRef && this.containerRef) {\n this.containerRect = this.containerRef.getBoundingClientRect();\n var containerAspect = this.containerRect.width / this.containerRect.height;\n var naturalWidth = ((_a = this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var mediaAspect = naturalWidth / naturalHeight;\n return mediaAspect < containerAspect ? 'horizontal-cover' : 'vertical-cover';\n }\n return 'horizontal-cover';\n }\n return this.props.objectFit;\n };\n Cropper.prototype.onPinchStart = function (e) {\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n this.lastPinchDistance = getDistanceBetweenPoints(pointA, pointB);\n this.lastPinchRotation = getRotationBetweenPoints(pointA, pointB);\n this.onDragStart(getCenter(pointA, pointB));\n };\n Cropper.prototype.onPinchMove = function (e) {\n var _this = this;\n if (!this.currentDoc || !this.currentWindow) return;\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n var center = getCenter(pointA, pointB);\n this.onDrag(center);\n if (this.rafPinchTimeout) this.currentWindow.cancelAnimationFrame(this.rafPinchTimeout);\n this.rafPinchTimeout = this.currentWindow.requestAnimationFrame(function () {\n var distance = getDistanceBetweenPoints(pointA, pointB);\n var newZoom = _this.props.zoom * (distance / _this.lastPinchDistance);\n _this.setNewZoom(newZoom, center, {\n shouldUpdatePosition: false\n });\n _this.lastPinchDistance = distance;\n var rotation = getRotationBetweenPoints(pointA, pointB);\n var newRotation = _this.props.rotation + (rotation - _this.lastPinchRotation);\n _this.props.onRotationChange && _this.props.onRotationChange(newRotation);\n _this.lastPinchRotation = rotation;\n });\n };\n Cropper.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props,\n image = _b.image,\n video = _b.video,\n mediaProps = _b.mediaProps,\n cropperProps = _b.cropperProps,\n transform = _b.transform,\n _c = _b.crop,\n x = _c.x,\n y = _c.y,\n rotation = _b.rotation,\n zoom = _b.zoom,\n cropShape = _b.cropShape,\n showGrid = _b.showGrid,\n roundCropAreaPixels = _b.roundCropAreaPixels,\n _d = _b.style,\n containerStyle = _d.containerStyle,\n cropAreaStyle = _d.cropAreaStyle,\n mediaStyle = _d.mediaStyle,\n _e = _b.classes,\n containerClassName = _e.containerClassName,\n cropAreaClassName = _e.cropAreaClassName,\n mediaClassName = _e.mediaClassName;\n var objectFit = (_a = this.state.mediaObjectFit) !== null && _a !== void 0 ? _a : this.getObjectFit();\n return React.createElement(\"div\", {\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n ref: function ref(el) {\n return _this.containerRef = el;\n },\n \"data-testid\": \"container\",\n style: containerStyle,\n className: classNames('reactEasyCrop_Container', containerClassName)\n }, image ? React.createElement(\"img\", __assign({\n alt: \"\",\n className: classNames('reactEasyCrop_Image', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n src: image,\n ref: this.imageRef,\n style: __assign(__assign({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n onLoad: this.onMediaLoad\n })) : video && React.createElement(\"video\", __assign({\n autoPlay: true,\n playsInline: true,\n loop: true,\n muted: true,\n className: classNames('reactEasyCrop_Video', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n ref: this.videoRef,\n onLoadedMetadata: this.onMediaLoad,\n style: __assign(__assign({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n controls: false\n }), (Array.isArray(video) ? video : [{\n src: video\n }]).map(function (item) {\n return React.createElement(\"source\", __assign({\n key: item.src\n }, item));\n })), this.state.cropSize && React.createElement(\"div\", __assign({\n ref: this.cropperRef,\n style: __assign(__assign({}, cropAreaStyle), {\n width: roundCropAreaPixels ? Math.round(this.state.cropSize.width) : this.state.cropSize.width,\n height: roundCropAreaPixels ? Math.round(this.state.cropSize.height) : this.state.cropSize.height\n }),\n tabIndex: 0,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n \"data-testid\": \"cropper\",\n className: classNames('reactEasyCrop_CropArea', cropShape === 'round' && 'reactEasyCrop_CropAreaRound', showGrid && 'reactEasyCrop_CropAreaGrid', cropAreaClassName)\n }, cropperProps)));\n };\n Cropper.defaultProps = {\n zoom: 1,\n rotation: 0,\n aspect: 4 / 3,\n maxZoom: MAX_ZOOM,\n minZoom: MIN_ZOOM,\n cropShape: 'rect',\n objectFit: 'contain',\n showGrid: true,\n style: {},\n classes: {},\n mediaProps: {},\n cropperProps: {},\n zoomSpeed: 1,\n restrictPosition: true,\n zoomWithScroll: true,\n keyboardStep: KEYBOARD_STEP\n };\n Cropper.getMousePoint = function (e) {\n return {\n x: Number(e.clientX),\n y: Number(e.clientY)\n };\n };\n Cropper.getTouchPoint = function (touch) {\n return {\n x: Number(touch.clientX),\n y: Number(touch.clientY)\n };\n };\n return Cropper;\n}(React.Component);\n\nexport { Cropper as default, getInitialCropFromCroppedAreaPercentages, getInitialCropFromCroppedAreaPixels };\n//# sourceMappingURL=index.module.mjs.map\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport Cropper from \"react-easy-crop\";\r\nimport type { Area } from \"react-easy-crop\";\r\nimport Button from \"../../Button/Button\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\nconst createImage = (url: string): Promise<HTMLImageElement> =>\r\n new Promise((resolve, reject) => {\r\n const image = new Image();\r\n image.addEventListener(\"load\", () => resolve(image));\r\n image.addEventListener(\"error\", (error) => reject(error));\r\n image.setAttribute(\"crossOrigin\", \"anonymous\");\r\n image.src = url;\r\n });\r\n\r\nconst getRadianAngle = (degreeValue: number) => {\r\n return (degreeValue * Math.PI) / 180;\r\n};\r\n\r\nconst rotateSize = (width: number, height: number, rotation: number) => {\r\n const rotRad = getRadianAngle(rotation);\r\n return {\r\n width:\r\n Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\r\n height:\r\n Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height),\r\n };\r\n};\r\n\r\nconst getCroppedImageBlob = async (\r\n imageSrc: string,\r\n pixelCrop: Area,\r\n fileType = \"image/jpeg\",\r\n rotation = 0,\r\n): Promise<Blob> => {\r\n const image = await createImage(imageSrc);\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n if (!ctx) {\r\n throw new Error(\"Canvas context is not available\");\r\n }\r\n\r\n const rotRad = getRadianAngle(rotation);\r\n const { width: bBoxWidth, height: bBoxHeight } = rotateSize(\r\n image.width,\r\n image.height,\r\n rotation,\r\n );\r\n\r\n canvas.width = bBoxWidth;\r\n canvas.height = bBoxHeight;\r\n\r\n ctx.translate(bBoxWidth / 2, bBoxHeight / 2);\r\n ctx.rotate(rotRad);\r\n ctx.translate(-image.width / 2, -image.height / 2);\r\n ctx.drawImage(image, 0, 0);\r\n\r\n const croppedCanvas = document.createElement(\"canvas\");\r\n const croppedCtx = croppedCanvas.getContext(\"2d\");\r\n\r\n if (!croppedCtx) {\r\n throw new Error(\"Canvas context is not available\");\r\n }\r\n\r\n croppedCanvas.width = pixelCrop.width;\r\n croppedCanvas.height = pixelCrop.height;\r\n\r\n croppedCtx.drawImage(\r\n canvas,\r\n pixelCrop.x,\r\n pixelCrop.y,\r\n pixelCrop.width,\r\n pixelCrop.height,\r\n 0,\r\n 0,\r\n pixelCrop.width,\r\n pixelCrop.height,\r\n );\r\n\r\n return new Promise((resolve, reject) => {\r\n croppedCanvas.toBlob(\r\n (blob) => {\r\n if (!blob) {\r\n reject(new Error(\"Image cropping failed\"));\r\n return;\r\n }\r\n resolve(blob);\r\n },\r\n fileType,\r\n 0.95,\r\n );\r\n });\r\n};\r\n\r\ninterface ImageCropperModalProps {\r\n isOpen: boolean;\r\n imageSrc: string;\r\n fileType?: string;\r\n fileName?: string;\r\n aspect?: number;\r\n title?: string;\r\n onClose: () => void;\r\n onApply: (file: File) => void;\r\n}\r\n\r\nconst ImageCropperModal = ({\r\n isOpen,\r\n imageSrc,\r\n fileType = \"image/jpeg\",\r\n fileName = \"cropped-image\",\r\n aspect = 1 / 1,\r\n title = \"Crop Image\",\r\n onClose,\r\n onApply,\r\n}: ImageCropperModalProps) => {\r\n const [crop, setCrop] = useState({ x: 0, y: 0 });\r\n const [zoom, setZoom] = useState(1);\r\n const [croppedAreaPixels, setCroppedAreaPixels] = useState<Area | null>(null);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setCrop({ x: 0, y: 0 });\r\n setZoom(1);\r\n setCroppedAreaPixels(null);\r\n }\r\n }, [isOpen]);\r\n\r\n const onCropComplete = useCallback((_area: Area, croppedPixels: Area) => {\r\n setCroppedAreaPixels(croppedPixels);\r\n }, []);\r\n\r\n const handleApply = async () => {\r\n if (!imageSrc || !croppedAreaPixels) {\r\n return;\r\n }\r\n\r\n try {\r\n const blob = await getCroppedImageBlob(\r\n imageSrc,\r\n croppedAreaPixels,\r\n fileType,\r\n );\r\n const fileExtension =\r\n fileType?.split(\"/\")?.[1]?.replace(\"jpeg\", \"jpg\") || \"jpg\";\r\n const croppedFile = new File([blob], `${fileName}.${fileExtension}`, {\r\n type: fileType,\r\n });\r\n onApply?.(croppedFile);\r\n } catch {\r\n onClose?.();\r\n }\r\n };\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.cropModal,\r\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\r\n )}\r\n >\r\n <div\r\n className=\"fixed inset-0 bg-gray-500 opacity-75\"\r\n onClick={onClose}\r\n ></div>\r\n\r\n <div className=\"relative bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col dark:bg-gray-800\">\r\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0\">\r\n <h3 className=\"text-lg font-medium text-gray-900 dark:text-white\">\r\n {title}\r\n </h3>\r\n <button\r\n type=\"button\"\r\n onClick={onClose}\r\n className=\"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n aria-label=\"Close crop modal\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-6 h-6\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"p-4 space-y-4\">\r\n <div className=\"relative h-72 w-full bg-gray-900 rounded-md overflow-hidden\">\r\n {imageSrc && (\r\n <Cropper\r\n image={imageSrc}\r\n crop={crop}\r\n zoom={zoom}\r\n aspect={aspect}\r\n onCropChange={setCrop}\r\n onZoomChange={setZoom}\r\n onCropComplete={onCropComplete}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <label className=\"text-sm text-gray-700 dark:text-gray-300\">\r\n Zoom\r\n </label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={3}\r\n step={0.1}\r\n value={zoom}\r\n onChange={(event) => setZoom(Number(event.target.value))}\r\n className=\"w-full\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"px-4 py-3 flex justify-end gap-3 border-t border-gray-200 dark:border-gray-700 sm:!px-6\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={onClose}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n Cancel\r\n </ButtonComponent>\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Apply Crop\r\n </ButtonComponent>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ImageCropperModal;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport ImageCropperModal from \"./ImageCropperModal\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\nconst revokeBlobUrl = (url?: string) => {\r\n if (typeof url === \"string\" && url.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(url);\r\n }\r\n};\r\n\r\ntype ImageValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface ImagePickerProps {\r\n label?: string;\r\n value: ImageValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n aspect?: number | string;\r\n id: string;\r\n dragDrop?: boolean;\r\n cropImage?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst ImagePicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"image/*\",\r\n aspect = \"1\",\r\n id,\r\n dragDrop = false,\r\n cropImage = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n}: ImagePickerProps) => {\r\n const [image, setImage] = useState<ImageValue>(value);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [cropModalOpen, setCropModalOpen] = useState(false);\r\n const [cropSource, setCropSource] = useState(\"\");\r\n const [selectedFileType, setSelectedFileType] = useState(\"image/jpeg\");\r\n const [selectedFileName, setSelectedFileName] = useState(\"cropped-image\");\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const sourceUrlRef = useRef(\"\");\r\n const previewUrlRef = useRef(\"\");\r\n\r\n useEffect(() => {\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n setImage({ file: value, preview });\r\n } else if (value && typeof value === \"object\" && \"preview\" in value) {\r\n setImage(value);\r\n } else {\r\n setImage(value);\r\n }\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n revokeBlobUrl(previewUrlRef.current);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n };\r\n }, []);\r\n\r\n const closeCropModal = () => {\r\n setCropModalOpen(false);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n sourceUrlRef.current = \"\";\r\n setCropSource(\"\");\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleCroppedImage = (croppedFile: File) => {\r\n const preview = URL.createObjectURL(croppedFile);\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n\r\n setImage({ file: croppedFile, preview });\r\n onChange?.(croppedFile);\r\n closeCropModal();\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n\r\n const file = files[0];\r\n\r\n if (cropImage) {\r\n const source = URL.createObjectURL(file);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n sourceUrlRef.current = source;\r\n setCropSource(source);\r\n setSelectedFileType(file.type || \"image/jpeg\");\r\n setSelectedFileName(\r\n (file.name || \"cropped-image\").replace(/\\.[^/.]+$/, \"\"),\r\n );\r\n setCropModalOpen(true);\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n\r\n setImage({ file, preview });\r\n onChange?.(file);\r\n };\r\n\r\n const removeImage = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = \"\";\r\n\r\n setImage(null);\r\n onChange?.(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"image/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n const imagePreview =\r\n image && typeof image === \"object\" && \"preview\" in image\r\n ? image.preview\r\n : typeof image === \"string\"\r\n ? image\r\n : \"\";\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.image,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-md p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !image}\r\n className=\"absolute opacity-0 right-[50%] top-[80%] -translate-y-1/2 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {image ? (\r\n <div className=\"relative group\">\r\n <img\r\n src={imagePreview}\r\n alt=\"preview\"\r\n className=\"object-cover w-20 h-20 rounded-full shadow-md\"\r\n />\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeImage}\r\n className=\"absolute top-0 -right-2 bg-red-500 text-white rounded-full p-1 shadow-lg hover:bg-red-600 transition-colors focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2\"\r\n aria-label=\"Remove image\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon\r\n icon=\"ri:image-add-fill\"\r\n className=\"text-gray-400 w-10 h-10\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n {image ? \"Change Image\" : \"Select Image\"}\r\n </ButtonComponent>\r\n\r\n {dragDrop && !image && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {dragDrop && isDragging && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-md\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg\">\r\n Drop image here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n\r\n <ImageCropperModal\r\n isOpen={cropModalOpen}\r\n imageSrc={cropSource}\r\n fileType={selectedFileType}\r\n fileName={selectedFileName}\r\n onClose={closeCropModal}\r\n onApply={handleCroppedImage}\r\n aspect={Number(aspect)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ImagePicker;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n value: any;\r\n required: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n type: string;\r\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\r\n negativeNumberAllow?: boolean;\r\n defaultValue?: any;\r\n field: Record<string, any>;\r\n onChange: (value: any) => void;\r\n mask?: string;\r\n maskApplyOnValue?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n label,\r\n value,\r\n name,\r\n required,\r\n parentClass = \"\",\r\n className = \"\",\r\n type = \"text\",\r\n onKeyDown,\r\n negativeNumberAllow = true,\r\n defaultValue = \"\",\r\n field = {},\r\n onChange,\r\n mask = \"\",\r\n errorMessage = \"\",\r\n maskApplyOnValue = true,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (type === \"number\") {\r\n const blockedKeys = [\"e\", \"E\", \"+\"];\r\n\r\n if (blockedKeys.includes(e.key)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (negativeNumberAllow == false && e.key === \"-\") {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if ([\"ArrowUp\", \"ArrowDown\"].includes(e.key)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n onKeyDown?.(e);\r\n };\r\n\r\n const combinedClassName = joinClasses(\r\n crudClasses.field.input,\r\n \"h-10 placeholder-gray-400 dark:placeholder-gray-400\",\r\n type === \"password\" ? \"pr-10\" : \"\",\r\n type === \"number\" ? \"no-spinner\" : \"\",\r\n className,\r\n errorMessage ? \"border-red-500\" : \"\",\r\n );\r\n\r\n function applyMask(rawValue: any, maskValue: string) {\r\n if (!rawValue) return rawValue;\r\n const cleanValue = String(rawValue).replace(/[^a-zA-Z0-9]/g, \"\");\r\n let result = \"\";\r\n let valueIndex = 0;\r\n\r\n for (\r\n let i = 0;\r\n i < maskValue?.length && valueIndex < cleanValue.length;\r\n i++\r\n ) {\r\n const maskChar = maskValue[i];\r\n const valueChar = cleanValue[valueIndex];\r\n\r\n if (maskChar === \"9\") {\r\n if (/\\d/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"A\") {\r\n if (/[a-zA-Z]/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"X\") {\r\n if (/[a-zA-Z0-9]/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"*\") {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n result += maskChar;\r\n\r\n if (valueChar === maskChar) {\r\n valueIndex++;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n useEffect(() => {\r\n if (defaultValue) {\r\n const localValue = value || defaultValue;\r\n setTimeout(() => {\r\n onChange?.(localValue);\r\n }, 100);\r\n }\r\n }, [defaultValue]);\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel\r\n label={label}\r\n required={required}\r\n infoText={field?.infoText}\r\n />\r\n <div className=\"relative\">\r\n <input\r\n type={type === \"password\" && showPassword ? \"text\" : type}\r\n ref={ref}\r\n id={`field-${name}`}\r\n required={required}\r\n onKeyDown={handleKeyDown}\r\n className={combinedClassName}\r\n value={mask ? applyMask(value, mask) : value}\r\n onChange={(e) => {\r\n mask && maskApplyOnValue\r\n ? onChange(applyMask(e.target.value, mask))\r\n : onChange(e.target.value);\r\n }}\r\n {...props}\r\n />\r\n\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n\r\n {type === \"password\" && (\r\n <button\r\n type=\"button\"\r\n tabIndex={-1}\r\n onClick={() => setShowPassword((prev) => !prev)}\r\n className=\"absolute inset-y-0 right-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-200\"\r\n >\r\n <Icon\r\n icon={\r\n showPassword ? \"mdi:eye-outline\" : \"mdi:eye-off-outline\"\r\n }\r\n className=\"w-5 h-5\"\r\n />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input };\r\n","import { Editor } from \"@tinymce/tinymce-react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TinyEditorProps {\r\n editorKey: string;\r\n value: string;\r\n name: string;\r\n onChange: (content: string) => void;\r\n label?: string;\r\n required?: boolean;\r\n placeholder?: string;\r\n parentClass?: string;\r\n height?: number;\r\n inline?: boolean;\r\n disabled?: boolean;\r\n plugins?: string[];\r\n toolbar?: string;\r\n menubar?: boolean;\r\n fontFamily?: string;\r\n initConfig?: Record<string, any>;\r\n errorMessage?: string;\r\n imageUploadHandler?: (blobInfo: any) => Promise<string>;\r\n}\r\n\r\nconst TinyEditor = ({\r\n editorKey = \"\",\r\n value = \"\",\r\n name = \"\",\r\n onChange,\r\n label = \"\",\r\n required = false,\r\n placeholder = \"\",\r\n parentClass = \"col-span-12\",\r\n height = 400,\r\n inline = false,\r\n disabled = false,\r\n plugins,\r\n toolbar,\r\n menubar = false,\r\n fontFamily = \"Inter, sans-serif\",\r\n initConfig = {},\r\n imageUploadHandler,\r\n errorMessage = \"\",\r\n}: TinyEditorProps) => {\r\n const defaultPlugins = [\r\n \"advlist\",\r\n \"autolink\",\r\n \"lists\",\r\n \"link\",\r\n \"image\",\r\n \"charmap\",\r\n \"preview\",\r\n \"anchor\",\r\n \"searchreplace\",\r\n \"visualblocks\",\r\n \"code\",\r\n \"fullscreen\",\r\n \"insertdatetime\",\r\n \"media\",\r\n \"table\",\r\n \"help\",\r\n \"wordcount\",\r\n ];\r\n\r\n const defaultToolbar =\r\n \"undo redo | blocks | bold italic underline forecolor backcolor | \" +\r\n \"alignleft aligncenter alignright alignjustify | \" +\r\n \"bullist numlist outdent indent | link image media table | \" +\r\n \"removeformat | code fullscreen preview\";\r\n\r\n const handleImageUpload = (blobInfo: any) => {\r\n return new Promise<string>((resolve, reject) => {\r\n if (!imageUploadHandler) {\r\n resolve(`data:${blobInfo.blob().type};base64,${blobInfo.base64()}`);\r\n return;\r\n }\r\n\r\n imageUploadHandler(blobInfo)\r\n .then((url) => {\r\n if (!url) {\r\n reject(\"Upload failed: No URL returned\");\r\n } else {\r\n resolve(url);\r\n }\r\n })\r\n .catch((error) => {\r\n reject(\r\n typeof error === \"string\"\r\n ? error\r\n : error?.message || \"Image upload failed\",\r\n );\r\n });\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className={joinClasses(crudClasses.field.wrapper, parentClass)}\r\n id={`field-${name}`}\r\n >\r\n {label && <InputLabel label={label} required={required} />}\r\n\r\n <Editor\r\n apiKey={editorKey}\r\n value={value}\r\n disabled={disabled}\r\n init={{\r\n height,\r\n inline,\r\n menubar,\r\n branding: false,\r\n statusbar: true,\r\n automatic_uploads: true,\r\n images_upload_handler: handleImageUpload,\r\n plugins: plugins ?? defaultPlugins,\r\n toolbar: toolbar ?? defaultToolbar,\r\n placeholder,\r\n content_style: `\r\n body {\r\n font-family: ${fontFamily};\r\n border: ${errorMessage ? \"1px solid blue\" : \"\"};\r\n }\r\n `,\r\n ...initConfig,\r\n }}\r\n onEditorChange={(content) => {\r\n onChange?.(content);\r\n }}\r\n />\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TinyEditor;\r\n","import React, { useEffect } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface CheckboxOption {\r\n label: string;\r\n value: any;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface CheckboxProps {\r\n name: string;\r\n label?: string;\r\n options: CheckboxOption[];\r\n value: any;\r\n onChange: (value: any, name?: string) => void;\r\n disabled?: boolean;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n multiSelect?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Checkbox = ({\r\n name = \"\",\r\n label = \"\",\r\n options = [],\r\n value = null,\r\n onChange,\r\n disabled = false,\r\n required = false,\r\n parentClass = \"col-span-12\",\r\n className = \"\",\r\n errorMessage = \"\",\r\n multiSelect = false,\r\n}: CheckboxProps) => {\r\n const multiple = Array.isArray(options) && options.length > 0;\r\n\r\n const isChecked = (optionValue?: any) => {\r\n if (multiple) {\r\n if (!multiSelect) return value === optionValue;\r\n return Array.isArray(value) && value.includes(optionValue);\r\n }\r\n return Boolean(value);\r\n };\r\n\r\n const handleSingleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange?.(e.target.checked, name);\r\n };\r\n\r\n const handleMultipleChange = (optionValue: any, checked: boolean) => {\r\n if (!onChange) return;\r\n\r\n if (!multiSelect) {\r\n if (checked) {\r\n onChange(optionValue, name);\r\n } else {\r\n onChange(\"\", name);\r\n }\r\n } else {\r\n const newValue = Array.isArray(value) ? [...value] : [];\r\n if (checked) {\r\n if (!newValue.includes(optionValue)) newValue.push(optionValue);\r\n } else {\r\n const index = newValue.indexOf(optionValue);\r\n if (index > -1) newValue.splice(index, 1);\r\n }\r\n onChange(newValue, name);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n let initialVal;\r\n\r\n if (multiple) {\r\n if (multiSelect) {\r\n // Ensure array for multiselect\r\n initialVal = Array.isArray(value) ? value : [];\r\n } else {\r\n // Single select from multiple options\r\n initialVal = value || \"\";\r\n }\r\n } else {\r\n // Single checkbox\r\n initialVal = Boolean(value);\r\n }\r\n\r\n setTimeout(() => {\r\n onChange?.(initialVal, name);\r\n }, 100);\r\n }, []);\r\n\r\n if (multiple) {\r\n return (\r\n <>\r\n <div className={joinClasses(crudClasses.field.wrapper, parentClass)}>\r\n <InputLabel label={label} required={required} />\r\n <div className=\"flex flex-col space-y-2\">\r\n {options.map((opt, idx) => (\r\n <div key={opt.value || opt.label} className=\"flex items-center\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n id={`field-${name}`}\r\n value={opt.value}\r\n checked={isChecked(opt.value)}\r\n disabled={disabled || Boolean(opt.disabled)}\r\n required={required && idx === 0}\r\n onChange={(e) =>\r\n handleMultipleChange(opt.value, e.target.checked)\r\n }\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"h-4 w-4 cursor-pointer text-blue-600 border-gray-300 rounded focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400\",\r\n className,\r\n )}\r\n />\r\n {opt.label && (\r\n <label\r\n htmlFor={name}\r\n className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 select-none\"\r\n >\r\n {opt.label}\r\n </label>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n \"flex items-center\",\r\n parentClass,\r\n )}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n checked={isChecked()}\r\n disabled={disabled}\r\n required={required}\r\n onChange={handleSingleChange}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"h-4 w-4 text-blue-600 cursor-pointer border-gray-300 rounded focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400\",\r\n className,\r\n )}\r\n />\r\n {label && (\r\n <label\r\n htmlFor={name}\r\n className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 select-none\"\r\n >\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Checkbox;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype MediaValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface AudioPickerProps {\r\n label?: string;\r\n value: MediaValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n id: string;\r\n dragDrop?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxSize?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst AudioPicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"audio/*\",\r\n id,\r\n dragDrop = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n maxSize = 0,\r\n}: AudioPickerProps) => {\r\n const [audio, setAudio] = useState<{ file?: File; preview?: string } | null>(\r\n null,\r\n );\r\n const [isDragging, setIsDragging] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const maxSizeBytes = maxSize * 1024 * 1024;\r\n\r\n useEffect(() => {\r\n if (!value) {\r\n cleanupAudio();\r\n setAudio(null);\r\n return;\r\n }\r\n\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n setAudio({ file: value, preview });\r\n\r\n return () => {\r\n URL.revokeObjectURL(preview);\r\n };\r\n } else if (typeof value === \"string\") {\r\n setAudio({ preview: value });\r\n } else if (value?.preview) {\r\n setAudio(value);\r\n }\r\n }, [value]);\r\n\r\n const cleanupAudio = () => {\r\n if (audio?.preview && audio.preview.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(audio.preview);\r\n }\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n const file = files[0];\r\n\r\n if (maxSizeBytes && file.size > maxSizeBytes) {\r\n enqueueSnackbar(\r\n `Audio is too large. Maximum allowed size is ${maxSize} MB`,\r\n { variant: \"warning\" },\r\n );\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n cleanupAudio();\r\n setAudio({ file, preview });\r\n onChange?.(file);\r\n };\r\n\r\n const removeAudio = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n\r\n cleanupAudio();\r\n setAudio(null);\r\n onChange?.(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"audio/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.audio,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-lg p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !audio}\r\n className=\"absolute opacity-0 right-[50%] top-[80%] -translate-y-1/2 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {audio ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"relative w-full\">\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeAudio}\r\n className=\"absolute top-0 -right-2 bg-red-500 text-white rounded-full p-1 shadow-lg hover:bg-red-600 transition-colors z-10 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800\"\r\n aria-label=\"Remove audio\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n\r\n <audio\r\n key={audio.preview}\r\n src={audio.preview}\r\n controls\r\n controlsList=\"nodownload\"\r\n />\r\n </div>\r\n <ButtonComponent type=\"button\" onClick={handleButtonClick}>\r\n <span>Change Audio File</span>\r\n </ButtonComponent>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon icon=\"mdi:music\" className=\"text-gray-400 w-10 h-10\" />\r\n </div>\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n >\r\n <span>Choose Audio File</span>\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your audio file here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {dragDrop && isDragging && !audio && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop audio here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default AudioPicker;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport ImageCropperModal from \"./ImageCropperModal\";\r\nimport Button from \"../../Button/Button\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype ImageValueItem = File | { file?: File; preview?: string } | string;\r\n\r\ninterface GalleryItem {\r\n id: string;\r\n file: File | null;\r\n preview: string;\r\n createdBlobUrl?: string;\r\n}\r\n\r\ninterface MultiImagePickerProps {\r\n label?: string;\r\n value: ImageValueItem[];\r\n onChange: (files: ImageValueItem[]) => void;\r\n required?: boolean;\r\n accept?: string;\r\n aspect?: number | string;\r\n id: string;\r\n dragDrop?: boolean;\r\n cropImage?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxImages?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst toGalleryItem = (item: ImageValueItem): GalleryItem | null => {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n if (item instanceof File) {\r\n const preview = URL.createObjectURL(item);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n }\r\n\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: null,\r\n preview: item,\r\n };\r\n }\r\n\r\n if (typeof item === \"object\") {\r\n if (item.preview) {\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item.file || null,\r\n preview: item.preview,\r\n };\r\n }\r\n if (item.file) {\r\n const preview = URL.createObjectURL(item.file);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item.file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst MultiImagePicker = ({\r\n label = \"\",\r\n value = [],\r\n onChange,\r\n required = false,\r\n accept = \"image/*\",\r\n aspect = \"1\",\r\n id,\r\n dragDrop = false,\r\n cropImage = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n maxImages,\r\n errorMessage = \"\",\r\n}: MultiImagePickerProps) => {\r\n const [images, setImages] = useState<GalleryItem[]>([]);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [cropModalOpen, setCropModalOpen] = useState(false);\r\n const [cropSource, setCropSource] = useState(\"\");\r\n const [selectedFileType, setSelectedFileType] = useState(\"image/jpeg\");\r\n const [selectedFileName, setSelectedFileName] = useState(\"cropped-image\");\r\n const [cropTargetId, setCropTargetId] = useState<string | null>(null);\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const replaceInputRef = useRef<HTMLInputElement | null>(null);\r\n const cropSourceUrlRef = useRef(\"\");\r\n const imagesRef = useRef<GalleryItem[]>([]);\r\n\r\n useEffect(() => {\r\n imagesRef.current = images;\r\n }, [images]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n imagesRef.current.forEach((img) => {\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n });\r\n if (cropSourceUrlRef.current) {\r\n URL.revokeObjectURL(cropSourceUrlRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!Array.isArray(value)) {\r\n setImages([]);\r\n return;\r\n }\r\n\r\n const nextItems = value\r\n .map((item) => toGalleryItem(item))\r\n .filter(Boolean) as GalleryItem[];\r\n\r\n setImages((prev) => {\r\n prev.forEach((img) => {\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n });\r\n return nextItems;\r\n });\r\n }, [value]);\r\n\r\n const remainingSlots =\r\n typeof maxImages === \"number\" && maxImages > 0\r\n ? Math.max(maxImages - images.length, 0)\r\n : Number.POSITIVE_INFINITY;\r\n\r\n const closeCropModal = () => {\r\n setCropModalOpen(false);\r\n if (cropSourceUrlRef.current) {\r\n URL.revokeObjectURL(cropSourceUrlRef.current);\r\n cropSourceUrlRef.current = \"\";\r\n }\r\n setCropSource(\"\");\r\n setCropTargetId(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const openCropModal = (item: GalleryItem) => {\r\n setCropSource(item.preview);\r\n setSelectedFileType(item.file?.type || \"image/jpeg\");\r\n setSelectedFileName(\r\n (item.file?.name || \"cropped-image\").replace(/\\.[^/.]+$/, \"\"),\r\n );\r\n setCropTargetId(item.id);\r\n setCropModalOpen(true);\r\n };\r\n\r\n const handleCroppedImage = (croppedFile: File) => {\r\n const preview = URL.createObjectURL(croppedFile);\r\n\r\n setImages((prev) => {\r\n const next = prev.map((img) => {\r\n if (img.id !== cropTargetId) {\r\n return img;\r\n }\r\n\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n\r\n return {\r\n ...img,\r\n file: croppedFile,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n\r\n return next;\r\n });\r\n\r\n closeCropModal();\r\n };\r\n\r\n const addFiles = (files: FileList | null) => {\r\n if (!files || files.length === 0 || remainingSlots === 0) {\r\n return;\r\n }\r\n\r\n const selected = Array.from(files)\r\n .filter((file) => file.type.includes(\"image/\"))\r\n .slice(0, remainingSlots);\r\n\r\n if (selected.length === 0) {\r\n return;\r\n }\r\n\r\n const mapped: GalleryItem[] = selected.map((file) => {\r\n const preview = URL.createObjectURL(file);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n setImages((prev) => {\r\n const next = [...prev, ...mapped];\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n return next;\r\n });\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const removeImage = (idToRemove: string) => {\r\n setImages((prev) => {\r\n const target = prev.find((img) => img.id === idToRemove);\r\n if (target?.createdBlobUrl) {\r\n URL.revokeObjectURL(target.createdBlobUrl);\r\n }\r\n const next = prev.filter((img) => img.id !== idToRemove);\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n return next;\r\n });\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleReplaceClick = (idToReplace: string) => {\r\n setCropTargetId(idToReplace);\r\n replaceInputRef.current?.click();\r\n };\r\n\r\n const handleReplaceImage = (files: FileList | null) => {\r\n if (!files || files.length === 0 || !cropTargetId) {\r\n return;\r\n }\r\n\r\n const file = Array.from(files).find((item) => item.type.includes(\"image/\"));\r\n if (!file) {\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n setImages((prev) => {\r\n const next = prev.map((img) => {\r\n if (img.id !== cropTargetId) {\r\n return img;\r\n }\r\n\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n\r\n return {\r\n ...img,\r\n file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n\r\n return next;\r\n });\r\n\r\n setCropTargetId(null);\r\n if (replaceInputRef.current) {\r\n replaceInputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n addFiles(e.dataTransfer?.files || null);\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n const canSelectMore =\r\n typeof maxImages === \"number\" && maxImages > 0\r\n ? images.length < maxImages\r\n : true;\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.multiImage,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-md p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n multiple\r\n onChange={(e) => addFiles(e.target.files)}\r\n required={required && images.length === 0}\r\n className=\"absolute opacity-0 pointer-events-none h-1 w-1\"\r\n />\r\n <input\r\n ref={replaceInputRef}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleReplaceImage(e.target.files)}\r\n className=\"absolute opacity-0 pointer-events-none h-1 w-1\"\r\n />\r\n\r\n {images.length === 0 ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon\r\n icon=\"ri:multi-image-fill\"\r\n className=\"text-gray-400 w-10 h-10\"\r\n />\r\n </div>\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n <span className=\"text-sm font-medium\">Choose Images</span>\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your images here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <>\r\n <div className=\"flex items-center justify-between gap-2 mb-3\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n disabled={!canSelectMore}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n <span className=\"text-sm font-medium\">Upload Images</span>\r\n </ButtonComponent>\r\n\r\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\r\n {maxImages\r\n ? `${images.length}/${maxImages}`\r\n : `${images.length} selected`}\r\n </span>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-3\">\r\n {images.map((img) => (\r\n <div\r\n key={img.id}\r\n className=\"relative group rounded-md overflow-hidden border border-gray-200 dark:border-gray-700\"\r\n >\r\n <img\r\n src={img.preview}\r\n alt=\"preview\"\r\n className=\"w-full h-28 object-cover\"\r\n />\r\n <div className=\"absolute top-2 right-2 flex items-center gap-1.5 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity\">\r\n <button\r\n type=\"button\"\r\n onClick={() => handleReplaceClick(img.id)}\r\n className=\"w-7 h-7 rounded-full bg-white/90 text-gray-800 hover:bg-white flex items-center justify-center shadow\"\r\n aria-label=\"Replace image\"\r\n >\r\n <Icon icon=\"solar:refresh-bold\" className=\"w-4 h-4\" />\r\n </button>\r\n {cropImage && (\r\n <button\r\n type=\"button\"\r\n onClick={() => openCropModal(img)}\r\n className=\"w-7 h-7 rounded-full bg-white/90 text-gray-800 hover:bg-white flex items-center justify-center shadow\"\r\n aria-label=\"Crop image\"\r\n >\r\n <Icon icon=\"solar:crop-bold\" className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n <button\r\n type=\"button\"\r\n onClick={() => removeImage(img.id)}\r\n className=\"w-7 h-7 rounded-full bg-red-500/95 text-white hover:bg-red-600 flex items-center justify-center shadow\"\r\n aria-label=\"Delete image\"\r\n >\r\n <Icon\r\n icon=\"solar:trash-bin-trash-bold\"\r\n className=\"w-4 h-4\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n\r\n {dragDrop && isDragging && images.length === 0 && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop images here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n\r\n <ImageCropperModal\r\n isOpen={cropModalOpen}\r\n imageSrc={cropSource}\r\n fileType={selectedFileType}\r\n fileName={selectedFileName}\r\n onClose={closeCropModal}\r\n onApply={handleCroppedImage}\r\n aspect={Number(aspect)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default MultiImagePicker;\r\n","import { useEffect } from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface ImagePreviewProps {\r\n src: string;\r\n alt?: string;\r\n isOpen: boolean;\r\n setIsOpen: (value: boolean) => void;\r\n}\r\n\r\nconst ImagePreview = ({\r\n src,\r\n alt = \"preview\",\r\n isOpen,\r\n setIsOpen,\r\n}: ImagePreviewProps) => {\r\n const closePreview = () => setIsOpen(false);\r\n\r\n useEffect(() => {\r\n const handleEsc = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") closePreview();\r\n };\r\n\r\n if (isOpen) {\r\n document.body.style.overflow = \"hidden\";\r\n document.addEventListener(\"keydown\", handleEsc);\r\n }\r\n\r\n return () => {\r\n document.body.style.overflow = \"\";\r\n document.removeEventListener(\"keydown\", handleEsc);\r\n };\r\n }, [isOpen]);\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.imagePreview.root,\r\n \"fixed inset-0 z-50 flex items-center justify-center bg-black/70 dark:bg-black/80 backdrop-blur-sm animate-in fade-in duration-200\",\r\n )}\r\n onClick={closePreview}\r\n >\r\n <button\r\n onClick={closePreview}\r\n className=\"absolute top-4 right-4 bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200\r\n hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full p-2 shadow-lg transition\"\r\n >\r\n <X size={20} />\r\n </button>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.imagePreview.container,\r\n \"max-w-5xl w-full px-4 transform transition-all duration-200 scale-95 animate-in zoom-in-95\",\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={joinClasses(\r\n crudClasses.imagePreview.image,\r\n \"w-full max-h-[90vh] object-contain rounded-xl\",\r\n )}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ImagePreview;\r\n","import { User } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface GroupRowProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n groupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n };\r\n}\r\n\r\nconst GroupRow = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: GroupRowProps) => {\r\n const title = data[col.titleKey];\r\n const subtitle = data[col.subtitleKey];\r\n const image = data[col.imageKey];\r\n const fallback_icon = col.fallback_icon;\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const openPreview = (img: { src: any; alt: string }) => {\r\n let imageObj = img;\r\n if (img && img.src instanceof File) {\r\n imageObj = { ...img, src: URL.createObjectURL(img.src) };\r\n }\r\n setTargetImage(imageObj as { src: string; alt: string });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderAvatar = (size: \"sm\" | \"md\" | \"lg\") => {\r\n const sizeMap = {\r\n sm: { img: \"w-8 h-8\", wrap: \"w-8 h-8\", icon: \"w-4 h-4\" },\r\n md: { img: \"w-12 h-12\", wrap: \"w-12 h-12\", icon: \"w-6 h-6\" },\r\n lg: { img: \"w-16 h-16\", wrap: \"w-16 h-16\", icon: \"w-8 h-8\" },\r\n };\r\n const s = sizeMap[size];\r\n if (image) {\r\n return (\r\n <img\r\n src={image instanceof File ? URL.createObjectURL(image) : image}\r\n alt={title}\r\n onClick={() => openPreview({ src: image, alt: title })}\r\n className={`${s.img} cursor-pointer rounded-full object-cover border-2 border-white dark:border-gray-700 shadow flex-shrink-0`}\r\n />\r\n );\r\n }\r\n if (fallback_icon) {\r\n return fallback_icon instanceof Function\r\n ? fallback_icon(data)\r\n : fallback_icon;\r\n }\r\n return (\r\n <div\r\n className={`${s.wrap} flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-600 bg-gray-200 dark:bg-gray-600 flex-shrink-0`}\r\n >\r\n <User className={`${s.icon} text-gray-400`} />\r\n </div>\r\n );\r\n };\r\n\r\n // ── CARD variant ──────────────────────────────────────────────────────────────\r\n // Full-width profile banner card with gradient + decorative circle\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 relative overflow-hidden rounded-xl bg-gradient-to-r from-primary/10 via-primary/5 to-transparent dark:from-primary/20 dark:via-primary/10 border border-primary/20 dark:border-primary/30 p-5 flex items-center gap-4\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Decorative background circle */}\r\n <div className=\"pointer-events-none absolute -right-6 -top-6 w-32 h-32 rounded-full bg-primary/8 dark:bg-primary/12\" />\r\n <div className=\"pointer-events-none absolute -right-2 -bottom-4 w-20 h-20 rounded-full bg-primary/5\" />\r\n {renderAvatar(\"lg\")}\r\n <div className=\"min-w-0 z-10\">\r\n <h3\r\n className={`text-lg font-bold text-gray-900 dark:text-white truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-sm text-primary/70 dark:text-primary/60 font-medium truncate ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Header row: full-width soft gradient banner before the property rows\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-center gap-3 px-5 py-4 bg-gradient-to-r from-primary/8 via-primary/4 to-transparent dark:from-primary/15 dark:via-primary/8\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {renderAvatar(\"md\")}\r\n <div className=\"min-w-0\">\r\n <h3\r\n className={`text-base font-bold text-gray-900 dark:text-white truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-xs font-semibold text-primary/70 dark:text-primary/60 truncate ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {renderAvatar(\"lg\")}\r\n <div>\r\n <h3\r\n className={`text-xl font-semibold text-gray-900 dark:text-white ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-sm text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default GroupRow;\r\n","import { User } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface CardGroupProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n cardGroupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n };\r\n}\r\n\r\nconst CardGroup = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: CardGroupProps) => {\r\n const title = data[col.titleKey];\r\n const subtitle = data[col.subtitleKey];\r\n const image = data[col.imageKey];\r\n const label = col.label;\r\n const Icon = col?.icon;\r\n const fallback_icon = col.fallback_icon;\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const openPreview = (img: { src: any; alt: string }) => {\r\n let imageObj = img;\r\n if (img && img.src instanceof File) {\r\n imageObj = { ...img, src: URL.createObjectURL(img.src) };\r\n }\r\n setTargetImage(imageObj as { src: string; alt: string });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderMiniAvatar = () => {\r\n if (image) {\r\n return (\r\n <img\r\n src={image instanceof File ? URL.createObjectURL(image) : image}\r\n alt={title}\r\n onClick={() => openPreview({ src: image, alt: title })}\r\n className=\"w-8 h-8 cursor-pointer rounded-full object-cover border-2 border-gray-200 dark:border-gray-700 flex-shrink-0\"\r\n />\r\n );\r\n }\r\n if (fallback_icon) {\r\n return fallback_icon instanceof Function\r\n ? fallback_icon(data)\r\n : fallback_icon;\r\n }\r\n return (\r\n <div className=\"w-8 h-8 flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 flex-shrink-0\">\r\n <User className=\"w-5 h-5 text-gray-400\" />\r\n </div>\r\n );\r\n };\r\n\r\n // ── CARD variant ──────────────────────────────────────────────────────────────\r\n // Standalone card: icon badge top-left, label, then inline mini avatar + name\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n col.blockClass || \"col-span-6\",\r\n \"group bg-white dark:bg-gray-800 rounded-xl border border-gray-100 dark:border-gray-700/60 shadow-sm hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 p-4 flex flex-col gap-2.5\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div\r\n className={`w-8 h-8 rounded-lg bg-primary/10 dark:bg-primary/20 flex items-center justify-center text-primary flex-shrink-0 [&>svg]:w-4 [&>svg]:h-4 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </div>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500 leading-none ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"flex items-center gap-2 mt-auto\">\r\n {renderMiniAvatar()}\r\n <div className=\"min-w-0\">\r\n <p\r\n className={`text-sm font-semibold text-gray-800 dark:text-gray-100 truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n {subtitle && (\r\n <p className=\"text-xs text-gray-400 dark:text-gray-500 truncate\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Property-sheet row: left label band | right value band with mini avatar\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-stretch min-h-[52px]\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Label band */}\r\n <div className=\"w-[42%] flex-shrink-0 flex items-center gap-2 px-4 py-3 bg-gray-50 dark:bg-gray-800/80 border-r border-gray-200 dark:border-gray-700\">\r\n {Icon && (\r\n <span\r\n className={`text-primary/60 dark:text-primary/50 flex-shrink-0 [&>svg]:w-3.5 [&>svg]:h-3.5 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </span>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400 leading-tight ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n </div>\r\n {/* Value band with mini avatar */}\r\n <div className=\"flex-1 flex items-center gap-2.5 px-4 py-3 bg-white dark:bg-gray-900\">\r\n {renderMiniAvatar()}\r\n <div className=\"min-w-0\">\r\n <p\r\n className={`text-sm text-gray-800 dark:text-gray-100 break-words ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n {subtitle && (\r\n <p className=\"text-xs text-gray-400 dark:text-gray-500 truncate\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div className={`flex-shrink-0 ${styleConfig.iconClass || \"\"}`}>\r\n {Icon}\r\n </div>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <p\r\n className={`text-sm font-medium text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"flex items-center mt-1\">\r\n {renderMiniAvatar()}\r\n <div className=\"ml-2\">\r\n <p\r\n className={`mb-0 text-sm text-gray-900 dark:text-white break-words ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n <p\r\n className={`text-xs text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default CardGroup;\r\n","import { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\nconst BADGE_COLORS: Record<string, { bg: string; border: string }> = {\r\n blue: {\r\n bg: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300\",\r\n border:\r\n \"border border-blue-300 text-blue-700 dark:border-blue-700 dark:text-blue-300\",\r\n },\r\n teal: {\r\n bg: \"bg-teal-100 text-teal-800 dark:bg-teal-900/30 dark:text-teal-300\",\r\n border:\r\n \"border border-teal-300 text-teal-700 dark:border-teal-700 dark:text-teal-300\",\r\n },\r\n purple: {\r\n bg: \"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300\",\r\n border:\r\n \"border border-purple-300 text-purple-700 dark:border-purple-700 dark:text-purple-300\",\r\n },\r\n yellow: {\r\n bg: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300\",\r\n border:\r\n \"border border-yellow-300 text-yellow-700 dark:border-yellow-700 dark:text-yellow-300\",\r\n },\r\n green: {\r\n bg: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300\",\r\n border:\r\n \"border border-green-300 text-green-700 dark:border-green-700 dark:text-green-300\",\r\n },\r\n red: {\r\n bg: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300\",\r\n border:\r\n \"border border-red-300 text-red-700 dark:border-red-700 dark:text-red-300\",\r\n },\r\n gray: {\r\n bg: \"bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300\",\r\n border:\r\n \"border border-gray-300 text-gray-700 dark:border-gray-700 dark:text-gray-300\",\r\n },\r\n};\r\n\r\nconst BADGE_VARIANTS: Record<string, string> = {\r\n contained: \"bg\",\r\n outline: \"border !bg-transparent\",\r\n soft: \"bg opacity-90\",\r\n};\r\n\r\ninterface ChipProps {\r\n label: string;\r\n variant?: string;\r\n color?: string;\r\n className?: string;\r\n}\r\n\r\nconst Chip = ({\r\n label,\r\n variant = \"contained\",\r\n color = \"green\",\r\n className = \"\",\r\n}: ChipProps) => {\r\n const colorConfig = BADGE_COLORS[color] || BADGE_COLORS.green;\r\n const variantKey = BADGE_VARIANTS[variant] || BADGE_VARIANTS.contained;\r\n\r\n const variantClasses =\r\n variant === \"outline\" ? colorConfig.border : colorConfig.bg;\r\n\r\n return (\r\n <span\r\n className={joinClasses(\r\n crudClasses.chip.root,\r\n \"inline-flex justify-center items-center rounded-sm text-xs font-semibold px-3 py-1 min-w-[78px]\",\r\n variantClasses,\r\n variantKey,\r\n className,\r\n )}\r\n >\r\n {label}\r\n </span>\r\n );\r\n};\r\n\r\nexport default Chip;\r\n","import { useState } from \"react\";\r\nimport Chip from \"../../Chip/Chip\";\r\nimport { formatDate } from \"../../../lib/utils\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface DetailRowProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n mediaGridClass?: string;\r\n };\r\n}\r\n\r\nconst DetailRow = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: DetailRowProps) => {\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const Icon = col?.icon;\r\n const label = col.label;\r\n let value = data[col.key];\r\n const type = col.type;\r\n const variant = col.variant || \"outline\";\r\n let color = col.defaultColor;\r\n\r\n if (type === \"chip\" && col.chipOptions?.length > 0) {\r\n const chipObj = col?.chipOptions.find((obj: any) => obj.value == value);\r\n if (chipObj) {\r\n value = chipObj.label;\r\n color = chipObj.color;\r\n }\r\n }\r\n\r\n const getImageSource = (image: any): string => {\r\n if (!image) return \"\";\r\n if (typeof image === \"string\") return image;\r\n if (image instanceof File) return URL.createObjectURL(image);\r\n if (typeof image === \"object\") {\r\n if (typeof image.preview === \"string\") return image.preview;\r\n if (typeof image.src === \"string\") return image.src;\r\n if (image.src instanceof File) return URL.createObjectURL(image.src);\r\n if (image.file instanceof File) return URL.createObjectURL(image.file);\r\n }\r\n return \"\";\r\n };\r\n\r\n const openPreview = (src: string, alt: string) => {\r\n setTargetImage({ src, alt });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderValue = (\r\n wrapClass = \"text-sm text-gray-900 dark:text-white break-words\",\r\n ) => {\r\n if (type === \"chip\") {\r\n return (\r\n <Chip label={value} variant={variant} color={color} className=\"mt-1\" />\r\n );\r\n }\r\n if (type === \"tinyEditor\") {\r\n return (\r\n <p\r\n className={`${wrapClass} ${styleConfig.valueClass || \"\"}`}\r\n dangerouslySetInnerHTML={{ __html: value }}\r\n />\r\n );\r\n }\r\n if (type === \"video\") {\r\n return value ? (\r\n <video\r\n key={value instanceof File ? URL.createObjectURL(value) : value}\r\n controls\r\n src={value instanceof File ? URL.createObjectURL(value) : value}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"shadow-sm mt-1 w-full max-w-xs max-h-[250px] rounded-md \"\r\n />\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n if (type === \"audio\") {\r\n return value ? (\r\n <audio\r\n key={value instanceof File ? URL.createObjectURL(value) : value}\r\n controls\r\n src={value instanceof File ? URL.createObjectURL(value) : value}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"shadow-sm rounded-full mt-1 w-full max-w-xs\"\r\n />\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n if (type === \"multiImage\") {\r\n return Array.isArray(value) && value.length > 0 ? (\r\n <div\r\n className={`mt-1 grid grid-cols-3 sm:grid-cols-4 gap-2 ${styleConfig.mediaGridClass || \"\"}`}\r\n >\r\n {value.map((img: any, idx: number) => {\r\n const src = getImageSource(img);\r\n if (!src) return null;\r\n return (\r\n <button\r\n key={`${src}-${idx}`}\r\n type=\"button\"\r\n onClick={() => openPreview(src, `Gallery ${idx + 1}`)}\r\n className=\"w-full h-16 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 hover:border-primary/50 transition-colors\"\r\n >\r\n <img\r\n src={src}\r\n alt={`gallery-${idx + 1}`}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n return (\r\n <p className={`${wrapClass} ${styleConfig.valueClass || \"\"}`}>\r\n {type === \"date\" ? (\r\n <span>{formatDate(value, col.format || \"DD MMM YYYY\")}</span>\r\n ) : (\r\n <span>{value || \"N/A\"}</span>\r\n )}\r\n </p>\r\n );\r\n };\r\n\r\n // ── CARD variant ─────────────────────────────────────────────────────────────\r\n // Standalone elevated card per field — icon badge top-left, label, bold value\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n col.blockClass || \"col-span-6\",\r\n \"group bg-white dark:bg-gray-800 rounded-xl border border-gray-100 dark:border-gray-700/60 shadow-sm hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 p-4 flex flex-col gap-2.5\",\r\n styleConfig.rowClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div\r\n className={`w-8 h-8 rounded-lg bg-primary/10 dark:bg-primary/20 flex items-center justify-center text-primary flex-shrink-0 [&>svg]:w-4 [&>svg]:h-4 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </div>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500 leading-none ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"mt-auto\">\r\n {renderValue(\r\n \"text-sm font-semibold text-gray-800 dark:text-gray-100 break-words leading-snug\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Property-sheet row: left=muted label band | right=white value band\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-stretch min-h-[52px]\",\r\n styleConfig.rowClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Label band */}\r\n <div className=\"w-[42%] flex-shrink-0 flex items-center gap-2 px-4 py-3 bg-gray-50 dark:bg-gray-800/80 border-r border-gray-200 dark:border-gray-700\">\r\n {Icon && (\r\n <span\r\n className={`text-primary/60 dark:text-primary/50 flex-shrink-0 [&>svg]:w-3.5 [&>svg]:h-3.5 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </span>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400 leading-tight ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n </div>\r\n {/* Value band */}\r\n <div className=\"flex-1 flex items-center px-4 py-3 bg-white dark:bg-gray-900\">\r\n {renderValue(\r\n \"text-sm text-gray-800 dark:text-gray-100 break-words\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div className={`flex-shrink-0 ${styleConfig.iconClass || \"\"}`}>\r\n {Icon}\r\n </div>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <p\r\n className={`text-sm font-medium text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n {renderValue(\r\n \"mt-1 text-sm text-gray-900 dark:text-white break-words\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default DetailRow;\r\n","import { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\nimport InputLabel from \"./InputLabel\";\r\n\r\ninterface RadioOption {\r\n label: string;\r\n value: any;\r\n}\r\n\r\ninterface RadioProps {\r\n value: any;\r\n onChange: (value: any) => void;\r\n text?: string;\r\n options: RadioOption[];\r\n label?: string;\r\n required?: boolean;\r\n name: string;\r\n disabled?: boolean;\r\n parentClass?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Radio = ({\r\n value = true,\r\n onChange,\r\n text,\r\n options = [],\r\n label,\r\n required,\r\n name = \"\",\r\n disabled = false,\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n}: RadioProps) => {\r\n const radioOptions: RadioOption[] =\r\n options.length > 0\r\n ? options\r\n : [\r\n { label: \"Active\", value: true },\r\n { label: \"Inactive\", value: false },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={`flex items-center justify-between h-10 gap-4 bg-gray-100 dark:bg-gray-700 px-3 rounded-md border border-gray-100 dark:border-gray-600\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n {text && (\r\n <p className=\"text-xs text-gray-600 dark:text-gray-400 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap max-w-[200px]\">\r\n {text}\r\n </p>\r\n )}\r\n\r\n <div className=\"flex items-center gap-6\">\r\n {radioOptions.map((opt, idx) => (\r\n <label\r\n key={idx}\r\n className=\"flex items-center gap-2 cursor-pointer select-none\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"switch-field\"\r\n required={required && idx === 0}\r\n value={String(opt.value)}\r\n disabled={disabled}\r\n id={`field-${name}`}\r\n checked={value === opt.value}\r\n onChange={() => onChange?.(opt.value)}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"w-4 h-4 border-gray-300 cursor-pointer\",\r\n )}\r\n />\r\n <span className=\"text-sm text-gray-700 dark:text-white\">\r\n {opt.label}\r\n </span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Radio;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype MediaValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface VideoPickerProps {\r\n label: string;\r\n value: MediaValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n id: string;\r\n dragDrop?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxSize?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst VideoPicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"video/*\",\r\n id,\r\n dragDrop = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n maxSize = 0,\r\n errorMessage = \"\",\r\n}: VideoPickerProps) => {\r\n const [video, setVideo] = useState<{ file?: File; preview?: string } | null>(\r\n null,\r\n );\r\n const [isDragging, setIsDragging] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const maxSizeBytes = maxSize * 1024 * 1024;\r\n\r\n useEffect(() => {\r\n if (!value) {\r\n cleanupVideo();\r\n setVideo(null);\r\n return;\r\n }\r\n\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n setVideo({ file: value, preview });\r\n\r\n return () => {\r\n URL.revokeObjectURL(preview);\r\n };\r\n } else if (typeof value === \"string\") {\r\n setVideo({ preview: value });\r\n } else if (value?.preview) {\r\n setVideo(value);\r\n }\r\n }, [value]);\r\n\r\n const cleanupVideo = () => {\r\n if (video?.preview && video.preview.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(video.preview);\r\n }\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) return;\r\n\r\n const file = files[0];\r\n\r\n if (maxSizeBytes && file.size > maxSizeBytes) {\r\n enqueueSnackbar(\r\n `File is too large. Maximum allowed size is ${maxSize} MB`,\r\n {\r\n variant: \"warning\",\r\n },\r\n );\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n cleanupVideo();\r\n setVideo({ file, preview });\r\n onChange?.(file);\r\n };\r\n const removeVideo = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) e.stopPropagation();\r\n cleanupVideo();\r\n setVideo(null);\r\n onChange?.(null);\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"video/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.video,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-lg p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !video}\r\n className=\"absolute opacity-0 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {video ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"relative\">\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeVideo}\r\n className=\"absolute -top-2 -right-2 bg-red-500 text-white rounded-full p-1 shadow hover:bg-red-600 z-10\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n <video\r\n key={video.preview}\r\n src={video.preview}\r\n controls\r\n controlsList=\"nodownload\"\r\n className=\"w-[260px] h-[150px] rounded-md object-cover\"\r\n />\r\n </div>\r\n <ButtonComponent type=\"button\" onClick={handleButtonClick}>\r\n Change Video File\r\n </ButtonComponent>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon icon=\"mdi:video\" className=\"text-gray-400 w-10 h-10\" />\r\n </div>\r\n\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n >\r\n Choose Video File\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your video here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {dragDrop && isDragging && !video && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop video here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default VideoPicker;\r\n","import Select from \"./Select\";\r\nimport { Switch } from \"./Switch\";\r\nimport PhoneInput from \"./PhoneInput\";\r\nimport { TextArea } from \"./TextArea\";\r\nimport ImagePicker from \"./ImagePicker\";\r\nimport { Input } from \"./Input\";\r\nimport TinyEditor from \"./TinyEditor\";\r\nimport Checkbox from \"./Checkbox\";\r\nimport AudioPicker from \"./AudioPicker\";\r\nimport MultiImagePicker from \"./MultiImagePicker\";\r\nimport GroupRow from \"../../Details/components/GroupRow\";\r\nimport CardGroup from \"../../Details/components/CardGroup\";\r\nimport DetailRow from \"../../Details/components/DetailRow\";\r\nimport Radio from \"./Radio\";\r\nimport VideoPicker from \"./VideoPicker\";\r\n\r\ninterface FieldConfig {\r\n key: string;\r\n label?: string;\r\n type?: string;\r\n options?: any[];\r\n placeholder?: string;\r\n rows?: number;\r\n inputClass?: string;\r\n search?: boolean;\r\n accept?: string;\r\n text?: string;\r\n required?: boolean;\r\n minLength?: number;\r\n dragDrop?: boolean;\r\n parentClass?: string;\r\n countriesList?: boolean;\r\n defaultCountry?: string;\r\n multiple?: boolean;\r\n dropdownMaxHeight?: number;\r\n editorKey?: string;\r\n fontFamily?: string;\r\n disabled?: boolean;\r\n negativeNumberAllow?: boolean;\r\n defaultValue?: any;\r\n renderCondition?: (formData: Record<string, any>) => boolean;\r\n pattern?: string;\r\n renderType?: string;\r\n cropImage?: boolean;\r\n aspectRatio?: number;\r\n dependencyKey?: string;\r\n mask?: string;\r\n maskApplyOnValue?: boolean;\r\n maxSize?: number;\r\n [key: string]: any;\r\n}\r\n\r\ninterface RenderFieldsProps {\r\n field: FieldConfig;\r\n errorMessage?: string;\r\n formData: Record<string, any>;\r\n handleChange: (key: string, value: any) => void;\r\n}\r\n\r\nconst RenderFields = ({\r\n field,\r\n formData,\r\n handleChange,\r\n errorMessage,\r\n}: RenderFieldsProps) => {\r\n const {\r\n key,\r\n label,\r\n type,\r\n options,\r\n placeholder,\r\n rows,\r\n inputClass,\r\n search,\r\n accept,\r\n text,\r\n required = false,\r\n minLength,\r\n dragDrop,\r\n parentClass,\r\n countriesList,\r\n defaultCountry,\r\n multiple,\r\n dropdownMaxHeight,\r\n editorKey,\r\n fontFamily,\r\n disabled,\r\n negativeNumberAllow,\r\n defaultValue,\r\n renderCondition,\r\n pattern,\r\n renderType,\r\n cropImage,\r\n aspectRatio,\r\n dependencyKey,\r\n mask,\r\n maskApplyOnValue,\r\n maxSize,\r\n } = field;\r\n\r\n let value = formData?.[key];\r\n if (value === undefined || value === null) {\r\n value = \"\";\r\n }\r\n\r\n const finalPlaceholder =\r\n placeholder || (type === \"select\" ? `Select ${label}` : `Enter ${label}`);\r\n\r\n const baseClass =\r\n \"w-full px-3 py-2 rounded-md border border-gray-300 dark:border-gray-600 text-sm focus:outline-none focus:ring-1 focus:ring-blue-200 bg-white text-black dark:bg-gray-700 dark:text-white\";\r\n\r\n if (renderCondition && typeof renderCondition === \"function\") {\r\n const shouldRender = renderCondition(formData);\r\n if (!shouldRender) {\r\n return null;\r\n }\r\n }\r\n\r\n if (renderType && renderType == \"details\") {\r\n switch (type) {\r\n case \"group\":\r\n return <GroupRow col={field} data={formData} />;\r\n case \"cardGroup\":\r\n return <CardGroup col={field} data={formData} />;\r\n default:\r\n return <DetailRow col={field} data={formData} />;\r\n }\r\n }\r\n\r\n switch (type) {\r\n case \"select\":\r\n return (\r\n <Select\r\n options={options || []}\r\n value={value}\r\n formData={formData}\r\n dependencyKey={dependencyKey}\r\n onChange={(val) => handleChange(key, val)}\r\n placeholder={finalPlaceholder}\r\n className={inputClass || \"\"}\r\n search={search}\r\n required={required}\r\n defaultValue={defaultValue}\r\n label={label || \"\"}\r\n name={key}\r\n countriesList={countriesList}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n multiple={multiple}\r\n dropdownMaxHeight={dropdownMaxHeight}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"checkbox\":\r\n return (\r\n <>\r\n <Checkbox\r\n name={key}\r\n label={label || \"\"}\r\n options={options || []}\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n required={required}\r\n parentClass={parentClass || \"\"}\r\n className={inputClass || \"\"}\r\n multiSelect={multiple}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n />\r\n </>\r\n );\r\n\r\n case \"radio\":\r\n return (\r\n <Radio\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n text={text}\r\n options={options || []}\r\n label={label || \"\"}\r\n required={required}\r\n name={key}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"switch\":\r\n return (\r\n <Switch\r\n value={Boolean(value)}\r\n onChange={(val) => handleChange(key, val)}\r\n label={label || \"\"}\r\n required={required}\r\n name={key}\r\n disabled={disabled}\r\n className=\"\"\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n case \"phone\":\r\n return (\r\n <PhoneInput\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n countriesList={countriesList}\r\n defaultCountry={defaultCountry}\r\n required={required}\r\n placeholder={finalPlaceholder}\r\n search={search}\r\n label={label || \"\"}\r\n name={key}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n parentClass={parentClass || \"\"}\r\n />\r\n );\r\n\r\n case \"textarea\":\r\n return (\r\n <TextArea\r\n value={value}\r\n onChange={(e) => handleChange(key, e.target.value)}\r\n placeholder={finalPlaceholder}\r\n rows={rows || 3}\r\n className={`${baseClass} ${inputClass || \"\"}`}\r\n required={required}\r\n name={key}\r\n label={label || \"\"}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"image\":\r\n case \"multiImage\":\r\n if (multiple || type === \"multiImage\") {\r\n return (\r\n <MultiImagePicker\r\n value={Array.isArray(value) ? value : []}\r\n onChange={(imgList) => handleChange(key, imgList)}\r\n required={required}\r\n accept={accept || \"image/*\"}\r\n aspect={aspectRatio}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n cropImage={cropImage}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n maxImages={field.maxImages}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <ImagePicker\r\n value={value}\r\n onChange={(imgObj) => handleChange(key, imgObj)}\r\n required={required}\r\n accept={accept || \"image/*\"}\r\n aspect={aspectRatio}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n cropImage={cropImage}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"audio\":\r\n return (\r\n <AudioPicker\r\n value={value}\r\n onChange={(audio) => handleChange(key, audio)}\r\n required={required}\r\n accept={accept || \"audio/*\"}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n maxSize={maxSize}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n case \"video\":\r\n return (\r\n <VideoPicker\r\n value={value}\r\n onChange={(video) => handleChange(key, video)}\r\n required={required}\r\n accept={accept || \"video/*\"}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n label={label || \"\"}\r\n name={key}\r\n maxSize={maxSize}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"tinyEditor\":\r\n return (\r\n <TinyEditor\r\n value={value}\r\n name={key}\r\n onChange={(newValue) => handleChange(key, newValue)}\r\n required={required}\r\n placeholder={finalPlaceholder}\r\n label={label || \"\"}\r\n parentClass={parentClass || \"\"}\r\n fontFamily={fontFamily}\r\n editorKey={editorKey || \"\"}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n default:\r\n return (\r\n <Input\r\n field={field}\r\n type={type || \"text\"}\r\n defaultValue={defaultValue}\r\n value={value}\r\n onChange={(updatedValue) => handleChange(key, updatedValue)}\r\n placeholder={finalPlaceholder}\r\n className={`${baseClass} ${inputClass || \"\"}`}\r\n required={required}\r\n name={key}\r\n minLength={minLength}\r\n label={label || \"\"}\r\n negativeNumberAllow={negativeNumberAllow}\r\n parentClass={parentClass || \"\"}\r\n disabled={disabled}\r\n pattern={pattern}\r\n mask={mask}\r\n errorMessage={errorMessage}\r\n maskApplyOnValue={maskApplyOnValue}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport default RenderFields;\r\n","import React, { useState } from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport Button from \"../Button/Button\";\r\nimport RenderFields from \"../Form/components/RenderFields\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\nimport { FormField } from \"../../types/crudtypes\";\r\n\r\ninterface FilterConfig {\r\n component: React.ComponentType<{\r\n filters: Record<string, any>;\r\n onFilterChange: (key: string, value: any) => void;\r\n }>;\r\n fields: Array<FormField>;\r\n}\r\n\r\ninterface FilterDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n config: FilterConfig;\r\n onApply: (filters: Record<string, any>) => void;\r\n}\r\n\r\nconst FilterDrawer = ({\r\n isOpen,\r\n onClose,\r\n config,\r\n onApply,\r\n}: FilterDrawerProps) => {\r\n const [filters, setFilters] = useState<Record<string, any>>({});\r\n\r\n const handleChange = (key: string, value: any) => {\r\n setFilters((prev) => ({ ...prev, [key]: value }));\r\n };\r\n\r\n const handleApply = () => {\r\n onApply(filters);\r\n onClose();\r\n };\r\n\r\n const handleReset = () => {\r\n setFilters({});\r\n onApply({});\r\n onClose();\r\n };\r\n\r\n const DynamicComponent = config?.component;\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.overlay,\r\n \"fixed inset-0 bg-black/50 z-40 transition-opacity duration-300\",\r\n isOpen\r\n ? \"opacity-100 pointer-events-auto\"\r\n : \"opacity-0 pointer-events-none\",\r\n )}\r\n style={{\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n onClick={onClose}\r\n />\r\n\r\n <div\r\n style={{\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n className={joinClasses(\r\n crudClasses.filterDrawer.panel,\r\n \"fixed top-0 right-0 h-full w-[28rem] bg-white dark:bg-gray-900 shadow-2xl z-50 flex flex-col border-l border-gray-200 dark:border-gray-700 transform transition-all duration-300 ease-in-out\",\r\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.header,\r\n \"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700\",\r\n )}\r\n >\r\n <h2 className=\"text-lg font-semibold text-gray-900 dark:text-white\">\r\n Filters\r\n </h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-md transition\"\r\n >\r\n <X className=\"w-5 h-5 text-gray-500 dark:text-gray-400\" />\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.body,\r\n \"flex-1 overflow-y-auto px-4 py-3\",\r\n )}\r\n >\r\n {DynamicComponent ? (\r\n <DynamicComponent filters={filters} onFilterChange={handleChange} />\r\n ) : (\r\n <div className=\"space-y-4\">\r\n {config?.fields?.map((field) => (\r\n <RenderFields\r\n key={field.key}\r\n field={field}\r\n formData={filters}\r\n handleChange={handleChange}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.footer,\r\n \"flex gap-2 px-4 py-3 border-t border-gray-200 dark:border-gray-700\",\r\n )}\r\n >\r\n <Button\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n fullWidth\r\n >\r\n Apply Filters\r\n </Button>\r\n <Button\r\n onClick={handleReset}\r\n variant=\"contained\"\r\n className=\"min-w-[150px]\"\r\n >\r\n Reset\r\n </Button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default FilterDrawer;\r\n","import { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TableSkeletonProps {\r\n rows: number;\r\n columns: number;\r\n}\r\n\r\nconst TableSkeleton = ({ rows = 5, columns = 5 }: TableSkeletonProps) => {\r\n return (\r\n <>\r\n <div className=\"w-full mb-6 inline-flex justify-end items-center\">\r\n <div className=\"h-8 w-80 bg-gray-300 dark:bg-gray-700 rounded animate-pulse\" />\r\n </div>\r\n <div className=\"overflow-hidden rounded-md border border-gray-200 dark:border-gray-800\">\r\n <table\r\n className={joinClasses(\r\n crudClasses.tableSkeleton.root,\r\n crudClasses.tableSkeleton.table,\r\n \"w-full border-collapse\",\r\n )}\r\n >\r\n <thead>\r\n <tr className=\"bg-gray-50 dark:bg-gray-900\">\r\n {Array.from({ length: columns }).map((_, i) => (\r\n <th key={i} className=\"px-4 py-3\">\r\n <div className=\"h-6 w-24 bg-gray-300 dark:bg-gray-700 rounded animate-pulse inline-flex justify-center items-center\" />\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n {Array.from({ length: rows }).map((_, rowIndex) => (\r\n <tr\r\n key={rowIndex}\r\n className=\"border-t border-gray-200 dark:border-gray-800\"\r\n >\r\n {Array.from({ length: columns }).map((_, colIndex) => (\r\n <td key={colIndex} className=\"px-4 py-6\">\r\n <div className=\"h-6 w-full bg-gray-300 dark:bg-gray-700 rounded animate-pulse\" />\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default TableSkeleton;\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { ArrowUpDown } from \"lucide-react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SortOption {\r\n value: string;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface SortDropdownProps {\r\n options: SortOption[];\r\n value: string;\r\n onChange: (value: string, option: SortOption | null) => void;\r\n clearLabel?: string;\r\n}\r\n\r\nconst SortDropdown = ({\r\n options = [],\r\n value = \"\",\r\n onChange,\r\n clearLabel = \"\",\r\n}: SortDropdownProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const sortRef = useRef<HTMLDivElement | null>(null);\r\n const isSortApplied = Boolean(value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (sortRef.current && !sortRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"click\", handleClickOutside);\r\n return () => document.removeEventListener(\"click\", handleClickOutside);\r\n }, []);\r\n\r\n const handleSelect = (selectedValue: string) => {\r\n const selectedOption = options.find((opt) => opt.value === selectedValue);\r\n onChange(selectedValue, selectedOption || null);\r\n setIsOpen(false);\r\n };\r\n\r\n if (!options?.length) return null;\r\n\r\n return (\r\n <div\r\n className={joinClasses(crudClasses.sortDropdown.root, \"relative\")}\r\n ref={sortRef}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen((prev) => !prev)}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.trigger,\r\n \"relative inline-flex items-center justify-center h-[36px] w-[36px] rounded-md border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-600 transition\",\r\n )}\r\n aria-label=\"Open sort options\"\r\n >\r\n <ArrowUpDown className=\"w-4 h-4\" />\r\n {isSortApplied && (\r\n <span className=\"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"></span>\r\n )}\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.sortDropdown.menu,\r\n \"absolute right-0 mt-2 z-20 min-w-[220px] max-h-[260px] overflow-auto rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-lg\",\r\n )}\r\n >\r\n {Boolean(clearLabel?.trim()) && (\r\n <button\r\n type=\"button\"\r\n onClick={() => handleSelect(\"\")}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.item,\r\n \"w-full text-left px-3 py-2 text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\",\r\n !value\r\n ? \"bg-gray-100 dark:bg-gray-700 text-gray-900 dark:text-white\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {clearLabel}\r\n </button>\r\n )}\r\n\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => handleSelect(option.value)}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.item,\r\n \"w-full text-left px-3 py-2 text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\",\r\n value === option.value\r\n ? \"bg-gray-100 dark:bg-gray-700 text-gray-900 dark:text-white\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default SortDropdown;\r\n","interface SortOption {\r\n value: string;\r\n label: string;\r\n key: string;\r\n order: \"asc\" | \"desc\";\r\n type?: string;\r\n}\r\n\r\ninterface FieldRule {\r\n key?: string;\r\n type?: string;\r\n label?: string;\r\n}\r\n\r\ninterface SortChangePayload {\r\n value: string;\r\n option: SortOption | null;\r\n key: string;\r\n order: string;\r\n type: string;\r\n}\r\n\r\ninterface SortConfig {\r\n enabled?: boolean;\r\n useServerSideSorting?: boolean;\r\n options?: SortOption[];\r\n fields?: (string | FieldRule)[];\r\n defaultValue?: string;\r\n autoGenerate?: boolean;\r\n clearLabel?: string;\r\n onChange?: ((payload: SortChangePayload) => void) | null;\r\n}\r\n\r\ninterface NormalizedSortConfig {\r\n enabled: boolean;\r\n useServerSideSorting: boolean;\r\n options: SortOption[];\r\n fields: (string | FieldRule)[];\r\n defaultValue: string;\r\n autoGenerate: boolean;\r\n clearLabel: string;\r\n onChange: ((payload: SortChangePayload) => void) | null;\r\n}\r\n\r\ninterface TableColumn {\r\n key: string;\r\n type?: string;\r\n title?: string;\r\n sortKey?: string;\r\n sortType?: string;\r\n sortLabel?: string;\r\n titleKey?: string;\r\n chipOptions?: Array<{ value: any; label: string }>;\r\n}\r\n\r\nconst BASE_SORT_CONFIG: NormalizedSortConfig = {\r\n enabled: false,\r\n useServerSideSorting: false,\r\n options: [],\r\n fields: [],\r\n defaultValue: \"\",\r\n autoGenerate: true,\r\n clearLabel: \"\",\r\n onChange: null,\r\n};\r\n\r\nexport const normalizeSortConfig = (\r\n sortConfig: boolean | SortConfig | null | undefined,\r\n): NormalizedSortConfig => {\r\n if (sortConfig === true) {\r\n return { ...BASE_SORT_CONFIG, enabled: true };\r\n }\r\n\r\n if (!sortConfig || typeof sortConfig !== \"object\") {\r\n return BASE_SORT_CONFIG;\r\n }\r\n\r\n return {\r\n ...BASE_SORT_CONFIG,\r\n ...sortConfig,\r\n enabled: sortConfig.enabled ?? true,\r\n autoGenerate: sortConfig.autoGenerate ?? true,\r\n };\r\n};\r\n\r\nexport const getSortableColumns = (\r\n tableHead: TableColumn[] = [],\r\n): TableColumn[] => {\r\n return tableHead.filter((col) => {\r\n const blockedTypes = [\"menu_actions\", \"index\", \"audio\", \"avatar\"];\r\n if (col.type && blockedTypes.includes(col.type)) return false;\r\n\r\n const effectiveKey =\r\n col.sortKey || (col.type === \"group\" ? col.titleKey : col.key);\r\n return Boolean(effectiveKey);\r\n });\r\n};\r\n\r\nconst detectSortType = (col: TableColumn): string => {\r\n if (col.sortType) return col.sortType;\r\n if (col.type === \"date\") return \"date\";\r\n if (col.type === \"number\") return \"number\";\r\n\r\n const sortKeyName = String(\r\n col.sortKey || (col.type === \"group\" ? col.titleKey : col.key) || \"\",\r\n ).toLowerCase();\r\n\r\n const isPhoneLike = [\"phone\", \"mobile\", \"contact\", \"tel\", \"whatsapp\"].some(\r\n (keyword) => sortKeyName.includes(keyword),\r\n );\r\n\r\n if (isPhoneLike) return \"phone\";\r\n\r\n if (Array.isArray(col.chipOptions) && col.chipOptions.length > 0) {\r\n const allBoolean = col.chipOptions.every(\r\n (opt) => typeof opt.value === \"boolean\",\r\n );\r\n\r\n if (allBoolean) return \"boolean\";\r\n }\r\n\r\n return \"string\";\r\n};\r\n\r\nexport const buildDefaultSortOptions = (\r\n columns: TableColumn[] = [],\r\n): SortOption[] => {\r\n return columns.flatMap((col) => {\r\n const key = col.sortKey || (col.type === \"group\" ? col.titleKey : col.key);\r\n const label = col.sortLabel || col.title || key;\r\n const type = detectSortType(col);\r\n\r\n if (!key) return [];\r\n\r\n if (type === \"number\") {\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (Low-High)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (High-Low)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"phone\") {\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (0-9)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (9-0)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"date\") {\r\n return [\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (Newest First)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (Oldest First)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"boolean\") {\r\n return [\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (True First)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (False First)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (A-Z)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (Z-A)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n });\r\n};\r\n\r\nexport const getNormalizedSortOptions = (\r\n normalizedSortConfig: NormalizedSortConfig,\r\n sortableColumns: TableColumn[] = [],\r\n): SortOption[] => {\r\n const hasExplicitOptions =\r\n Array.isArray(normalizedSortConfig.options) &&\r\n normalizedSortConfig.options.length > 0;\r\n\r\n if (hasExplicitOptions) {\r\n return normalizedSortConfig.options.map((option) => ({\r\n ...option,\r\n type: option.type || \"string\",\r\n order: (option.order === \"desc\" ? \"desc\" : \"asc\") as \"asc\" | \"desc\",\r\n }));\r\n }\r\n\r\n const fieldRules = Array.isArray(normalizedSortConfig.fields)\r\n ? normalizedSortConfig.fields\r\n : [];\r\n\r\n if (fieldRules.length > 0) {\r\n const fieldColumns: TableColumn[] = fieldRules\r\n .map((field) => {\r\n const fieldKey = typeof field === \"string\" ? field : field.key;\r\n const targetCol = sortableColumns.find(\r\n (col) =>\r\n col.key === fieldKey ||\r\n col.sortKey === fieldKey ||\r\n (col.type === \"group\" && col.titleKey === fieldKey),\r\n );\r\n\r\n if (!targetCol) return null;\r\n\r\n return {\r\n ...targetCol,\r\n sortKey:\r\n typeof field === \"object\" && field.key\r\n ? field.key\r\n : targetCol.sortKey,\r\n sortType:\r\n typeof field === \"object\" && field.type\r\n ? field.type\r\n : targetCol.sortType,\r\n sortLabel:\r\n typeof field === \"object\" && field.label\r\n ? field.label\r\n : targetCol.sortLabel,\r\n } as TableColumn;\r\n })\r\n .filter((col) => col !== null) as TableColumn[];\r\n\r\n return buildDefaultSortOptions(fieldColumns);\r\n }\r\n\r\n if (!normalizedSortConfig.autoGenerate) return [];\r\n return buildDefaultSortOptions(sortableColumns);\r\n};\r\n\r\nexport const sortTableData = (\r\n filteredData: any[] = [],\r\n sortBy: string = \"\",\r\n normalizedSortConfig: NormalizedSortConfig | null,\r\n normalizedSortOptions: SortOption[] = [],\r\n): any[] => {\r\n if (\r\n !normalizedSortConfig?.enabled ||\r\n !sortBy ||\r\n normalizedSortConfig?.useServerSideSorting\r\n ) {\r\n return filteredData;\r\n }\r\n\r\n const selectedOption = normalizedSortOptions?.find(\r\n (opt) => opt.value === sortBy,\r\n );\r\n if (!selectedOption?.key) {\r\n return filteredData;\r\n }\r\n\r\n const direction = selectedOption.order === \"desc\" ? \"desc\" : \"asc\";\r\n const sortKey = selectedOption.key;\r\n const sortType = selectedOption.type || \"string\";\r\n\r\n const normalizePhone = (value: any): string =>\r\n String(value ?? \"\")\r\n .replace(/[^\\d]/g, \"\")\r\n .trim();\r\n\r\n return [...filteredData].sort((a, b) => {\r\n const aValue = a?.[sortKey];\r\n const bValue = b?.[sortKey];\r\n\r\n if (aValue == null && bValue == null) return 0;\r\n if (aValue == null) return direction === \"asc\" ? 1 : -1;\r\n if (bValue == null) return direction === \"asc\" ? -1 : 1;\r\n\r\n let comparison = 0;\r\n\r\n if (sortType === \"number\") {\r\n comparison = Number(aValue) - Number(bValue);\r\n } else if (sortType === \"phone\") {\r\n comparison = normalizePhone(aValue).localeCompare(\r\n normalizePhone(bValue),\r\n undefined,\r\n {\r\n numeric: true,\r\n },\r\n );\r\n } else if (sortType === \"date\") {\r\n comparison = new Date(aValue).getTime() - new Date(bValue).getTime();\r\n } else if (sortType === \"boolean\") {\r\n comparison = Number(Boolean(aValue)) - Number(Boolean(bValue));\r\n } else {\r\n comparison = String(aValue).localeCompare(String(bValue));\r\n }\r\n\r\n return direction === \"asc\" ? comparison : -comparison;\r\n });\r\n};\r\n","import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n Search,\r\n EllipsisVertical,\r\n Filter,\r\n User,\r\n Music,\r\n Plus,\r\n Download,\r\n} from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { formatDate, searchLocalData } from \"../../lib/utils\";\r\nimport Button from \"../Button/Button\";\r\nimport FilterDrawer from \"../Filter/FilterDrawer\";\r\nimport Chip from \"../Chip/Chip\";\r\nimport TableSkeleton from \"./components/TableSkeleton\";\r\nimport ImagePreview from \"./components/ImagePreview\";\r\nimport SortDropdown from \"./components/SortDropdown\";\r\nimport {\r\n normalizeSortConfig,\r\n getSortableColumns,\r\n getNormalizedSortOptions,\r\n sortTableData,\r\n} from \"./utils/sortUtils\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface TableProps {\r\n config: Record<string, any>;\r\n setShowAdd: (value: boolean) => void;\r\n title: string;\r\n buttonText?: string;\r\n description?: string;\r\n showAddButton?: boolean;\r\n}\r\n\r\ninterface CSVField {\r\n label: string;\r\n key: string;\r\n}\r\n\r\nconst Table = ({\r\n config,\r\n setShowAdd,\r\n title,\r\n buttonText,\r\n description,\r\n showAddButton,\r\n}: TableProps) => {\r\n const {\r\n data = [],\r\n table_head = [],\r\n loading = false,\r\n search = {\r\n enabled: false,\r\n placeholder: \"Search...\",\r\n useServerSideSearch: false,\r\n },\r\n filter = {\r\n enabled: false,\r\n useServerSideFilters: false,\r\n },\r\n sort = { enabled: false },\r\n pagination = {\r\n enabled: false,\r\n rows_per_page: 10,\r\n useServerSidePagination: false,\r\n },\r\n exportCSV = {\r\n enabled: false,\r\n fileName: \"\",\r\n fields: [],\r\n },\r\n emptyMessage = \"No data available\",\r\n onMenuAction,\r\n setServerSidePaginationData = () => {},\r\n onFilterApply,\r\n filterConfig = null,\r\n rowClick = null,\r\n } = config;\r\n\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [activeMenu, setActiveMenu] = useState<any>(null);\r\n const [menuList, setMenuList] = useState<any[]>([]);\r\n const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 });\r\n const [showFilters, setShowFilters] = useState(false);\r\n const [appliedFilters, setAppliedFilters] = useState<Record<string, any>>({});\r\n\r\n const normalizedSortConfig = useMemo(() => normalizeSortConfig(sort), [sort]);\r\n\r\n const sortableColumns = useMemo(\r\n () => getSortableColumns(table_head),\r\n [table_head],\r\n );\r\n\r\n const normalizedSortOptions = useMemo(() => {\r\n return getNormalizedSortOptions(normalizedSortConfig, sortableColumns);\r\n }, [normalizedSortConfig, sortableColumns]);\r\n\r\n const [sortBy, setSortBy] = useState(\r\n normalizedSortConfig?.defaultValue || \"\",\r\n );\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const filteredData = useMemo(() => {\r\n if (!search.enabled || !searchTerm.trim()) return data;\r\n if (search.useServerSideSearch) return data;\r\n return searchLocalData(data, searchTerm, search.searchKeys || []);\r\n }, [data, searchTerm, search]);\r\n\r\n const sortedData = useMemo(() => {\r\n return sortTableData(\r\n filteredData,\r\n sortBy,\r\n normalizedSortConfig,\r\n normalizedSortOptions,\r\n );\r\n }, [filteredData, sortBy, normalizedSortConfig, normalizedSortOptions]);\r\n\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [pageSize, setPageSize] = useState(pagination?.rows_per_page || 50);\r\n const [totalRecords, setTotalRecords] = useState(filteredData.length || 0);\r\n\r\n const totalPages = pagination?.useServerSidePagination\r\n ? pagination.total_pages\r\n : Math.ceil(filteredData.length / pageSize);\r\n\r\n const paginatedData = useMemo(() => {\r\n if (pagination.useServerSidePagination) return sortedData;\r\n const start = (currentPage - 1) * pageSize;\r\n return sortedData.slice(start, start + pageSize);\r\n }, [sortedData, currentPage, pageSize, pagination.useServerSidePagination]);\r\n\r\n const menuRef = useRef<HTMLDivElement | null>(null);\r\n const tableScopeRef = useRef<HTMLDivElement | null>(null);\r\n const buttonRefs = useRef<Record<string, HTMLButtonElement | null>>({});\r\n const searchTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const menuPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (tableScopeRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchTerm(value);\r\n setCurrentPage(1);\r\n\r\n if (search.useServerSideSearch) {\r\n if (searchTimeoutRef.current) clearTimeout(searchTimeoutRef.current);\r\n\r\n searchTimeoutRef.current = setTimeout(async () => {\r\n try {\r\n await setServerSidePaginationData((prev: Record<string, any>) => ({\r\n ...prev,\r\n search: value,\r\n current_page: 1,\r\n }));\r\n } catch (error) {\r\n console.error(\"Search error:\", error);\r\n }\r\n }, 800);\r\n }\r\n };\r\n\r\n const handleSortChange = (value: string, selectedOption: any = null) => {\r\n setSortBy(value);\r\n setCurrentPage(1);\r\n\r\n const payload = {\r\n value,\r\n option: selectedOption,\r\n key: selectedOption?.key || \"\",\r\n order: selectedOption?.order || \"\",\r\n type: selectedOption?.type || \"\",\r\n };\r\n\r\n if (typeof normalizedSortConfig?.onChange === \"function\") {\r\n normalizedSortConfig.onChange(payload);\r\n }\r\n };\r\n\r\n const handleActionClick = (action: any, item: any, e: React.MouseEvent) => {\r\n e.stopPropagation();\r\n setActiveMenu(null);\r\n onMenuAction?.(action.type, item);\r\n };\r\n\r\n const handleMenuToggle = (\r\n itemId: any,\r\n e: React.MouseEvent<HTMLButtonElement>,\r\n menu_list: any[],\r\n ) => {\r\n e.stopPropagation();\r\n setMenuList(menu_list);\r\n const button = e.currentTarget;\r\n buttonRefs.current[itemId] = button;\r\n const rect = button.getBoundingClientRect();\r\n const menuWidth = 192;\r\n const menuHeight = menu_list.length * 40;\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n const openLeft = viewportWidth - rect.right < menuWidth;\r\n const left = openLeft ? rect.left - menuWidth + rect.width : rect.left;\r\n\r\n const openUp =\r\n viewportHeight - rect.bottom < menuHeight && rect.top > menuHeight;\r\n const top = openUp ? rect.top - menuHeight - 2 : rect.bottom + 2;\r\n\r\n setMenuPosition({\r\n top: Math.max(8, Math.min(top, viewportHeight - menuHeight - 8)),\r\n left: Math.max(8, Math.min(left, viewportWidth - menuWidth - 8)),\r\n });\r\n\r\n setActiveMenu(activeMenu === itemId ? null : itemId);\r\n };\r\n\r\n const calculateRowNumber = (index: number) => {\r\n return (currentPage - 1) * pageSize + index + 1;\r\n };\r\n\r\n const openPreview = (image: any) => {\r\n let imageObj = image;\r\n if (imageObj && imageObj.src instanceof File) {\r\n imageObj = { ...imageObj, src: URL.createObjectURL(imageObj.src) };\r\n }\r\n setTargetImage(imageObj);\r\n setIsOpen(true);\r\n };\r\n\r\n const getImageSource = (image: any): string => {\r\n if (!image) return \"\";\r\n\r\n if (typeof image === \"string\") {\r\n return image;\r\n }\r\n\r\n if (image instanceof File) {\r\n return URL.createObjectURL(image);\r\n }\r\n\r\n if (typeof image === \"object\") {\r\n if (typeof image.preview === \"string\") {\r\n return image.preview;\r\n }\r\n if (typeof image.src === \"string\") {\r\n return image.src;\r\n }\r\n if (image.src instanceof File) {\r\n return URL.createObjectURL(image.src);\r\n }\r\n if (image.file instanceof File) {\r\n return URL.createObjectURL(image.file);\r\n }\r\n }\r\n\r\n return \"\";\r\n };\r\n\r\n const renderMultiImageCell = (value: any, col: any) => {\r\n const images = Array.isArray(value) ? value : [];\r\n\r\n if (images.length === 0) {\r\n return <span className={col.className || \"\"}>N/A</span>;\r\n }\r\n\r\n const maxPreview = col.maxPreview || 3;\r\n const visibleImages = images.slice(0, maxPreview);\r\n const remaining = images.length - visibleImages.length;\r\n\r\n return (\r\n <div className=\"flex items-center\">\r\n <div className=\"flex -space-x-2\">\r\n {visibleImages.map((image: any, idx: number) => {\r\n const src = getImageSource(image);\r\n if (!src) return null;\r\n\r\n return (\r\n <button\r\n key={`${src}-${idx}`}\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openPreview({ src, alt: `Gallery ${idx + 1}` });\r\n }}\r\n className=\"w-8 h-8 rounded-full border-2 border-white dark:border-gray-800 overflow-hidden\"\r\n >\r\n <img\r\n src={src}\r\n alt={`gallery-${idx + 1}`}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n {remaining > 0 && (\r\n <span className=\"ml-2 text-xs font-medium text-gray-600 dark:text-gray-300\">\r\n +{remaining}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n const renderAvatar = (\r\n imageSrc: any,\r\n imageAlt: string,\r\n className: string,\r\n fallback_icon: any = null,\r\n row: any = null,\r\n ) => {\r\n return (\r\n <>\r\n {imageSrc ? (\r\n <img\r\n src={\r\n imageSrc instanceof File\r\n ? URL.createObjectURL(imageSrc)\r\n : imageSrc\r\n }\r\n alt={imageAlt || \"Avatar\"}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n openPreview({ src: imageSrc, alt: imageAlt });\r\n }}\r\n className={`w-10 h-10 cursor-pointer shrink-0 rounded-full object-cover border border-gray-200 dark:border-gray-700 ${className || \"\"}`}\r\n />\r\n ) : (\r\n <>\r\n {fallback_icon ? (\r\n typeof fallback_icon === \"function\" ? (\r\n fallback_icon(row)\r\n ) : (\r\n fallback_icon\r\n )\r\n ) : (\r\n <div\r\n className={`w-10 h-10 flex items-center shrink-0 justify-center rounded-full border border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 ${className || \"\"}`}\r\n >\r\n <User className=\"w-6 h-6 text-gray-400 dark:text-gray-400\" />\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const renderAudio = (audioSrc: any, className: string) => {\r\n return (\r\n <>\r\n {audioSrc ? (\r\n <audio\r\n key={\r\n audioSrc instanceof File\r\n ? URL.createObjectURL(audioSrc)\r\n : audioSrc\r\n }\r\n controls\r\n src={\r\n audioSrc instanceof File\r\n ? URL.createObjectURL(audioSrc)\r\n : audioSrc\r\n }\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n className={`w-64 cursor-pointer ${className || \"\"}`}\r\n />\r\n ) : (\r\n <>\r\n <div\r\n className={`w-12 h-12 flex items-center shrink-0 justify-center rounded-full border border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 ${className || \"\"}`}\r\n >\r\n <Music className=\"w-6 h-6 text-gray-400 dark:text-gray-400\" />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const renderGroupCell = (row: any, col: any) => {\r\n return (\r\n <div className={`flex items-center space-x-4 ${col.className || \"\"}`}>\r\n {col.imageKey\r\n ? renderAvatar(\r\n row[col.imageKey],\r\n row[col.titleKey],\r\n \"group-avatar\",\r\n col.fallback_icon,\r\n row,\r\n )\r\n : \"\"}\r\n <div>\r\n <p className=\"font-medium text-gray-900 dark:text-white group-title\">\r\n {row[col.titleKey] || \"\"}\r\n </p>\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400 group-sub-title\">\r\n {row[col.subtitleKey] || \"\"}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const handleRenderChip = (value: any, col: any) => {\r\n let label = String(value);\r\n const variant = col.variant || \"contained\";\r\n let color = col.defaultColor;\r\n\r\n if (col?.chipOptions?.length > 0) {\r\n const chipObj = col?.chipOptions.find((obj: any) => obj.value == value);\r\n if (chipObj) {\r\n label = chipObj.label;\r\n color = chipObj.color;\r\n }\r\n }\r\n\r\n return (\r\n <Chip\r\n label={label}\r\n variant={variant}\r\n color={color}\r\n className={col.className || \"\"}\r\n />\r\n );\r\n };\r\n\r\n const handleRenderCellValue = (col: any, row: any, index: number) => {\r\n const value = row[col.key];\r\n if (col.type === \"menu_actions\") {\r\n return (\r\n <div className={`text-center ${col.className || \"\"}`}>\r\n <button\r\n ref={(el) => {\r\n buttonRefs.current[row.id || row._id] = el;\r\n }}\r\n onClick={(e) =>\r\n handleMenuToggle(row.id || row._id, e, col.menuList)\r\n }\r\n className={joinClasses(\r\n crudClasses.table.actionButton,\r\n \"p-2 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-full transition text-gray-700 dark:text-gray-300\",\r\n )}\r\n >\r\n <EllipsisVertical className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n );\r\n } else if (col.type === \"index\") {\r\n return (\r\n <span className={col.className || \"\"}>{calculateRowNumber(index)}</span>\r\n );\r\n } else if (col.type === \"group\") {\r\n return renderGroupCell(row, col);\r\n } else if (col.type === \"chip\") {\r\n return <>{handleRenderChip(value, col)}</>;\r\n } else if (col.type === \"date\") {\r\n return (\r\n <span className={col.className || \"\"}>\r\n {formatDate(value, col.format || \"DD MMM YYYY\")}\r\n </span>\r\n );\r\n } else if (col.type === \"avatar\") {\r\n return (\r\n <>\r\n <div className=\"min-w-[40px]\">\r\n {renderAvatar(\r\n value,\r\n col.alt,\r\n col.className,\r\n col.fallback_icon,\r\n row,\r\n )}\r\n </div>\r\n </>\r\n );\r\n } else if (col.type === \"audio\") {\r\n return <>{renderAudio(value, col.className)}</>;\r\n } else if (col.type === \"multiImage\") {\r\n return <>{renderMultiImageCell(value, col)}</>;\r\n } else {\r\n return <span className={col.className || \"\"}>{value || \"N/A\"}</span>;\r\n }\r\n };\r\n\r\n const handleRowClick = (row: any) => {\r\n if (typeof rowClick === \"function\") {\r\n return rowClick(row);\r\n }\r\n if (rowClick) {\r\n return onMenuAction?.(\"view\", row);\r\n }\r\n };\r\n\r\n const handleColumnClick = (col: any, row: any) => {\r\n if (col.onClickDetails) {\r\n return onMenuAction?.(\"view\", row);\r\n }\r\n\r\n if (typeof col.handleClick === \"function\") {\r\n return col.handleClick(row);\r\n }\r\n };\r\n\r\n const isRowClickable = () => rowClick || typeof rowClick === \"function\";\r\n const isColumnClickable = (col: any) =>\r\n col.onClickDetails || typeof col.handleClick === \"function\";\r\n\r\n const handleExportCSV = () => {\r\n if (!data?.length || !exportCSV?.fields?.length) return;\r\n\r\n // Create headers\r\n const headers = exportCSV.fields.map((field: CSVField) => field.label);\r\n\r\n // Create rows\r\n const rows = paginatedData.map((row: Record<string, any>) =>\r\n exportCSV.fields.map((field: CSVField) => {\r\n const value = row?.[field.key];\r\n return `\"${value !== undefined && value !== null ? value : \"\"}\"`;\r\n }),\r\n );\r\n\r\n const csvContent = [\r\n headers.join(\",\"),\r\n ...rows.map((r) => r.join(\",\")),\r\n ].join(\"\\n\");\r\n\r\n // Filename\r\n const now = new Date();\r\n const defaultName = `export-${formatDate(now, \"YYYY-MM-DD_HH-mm-ss\")}.csv`;\r\n const finalName = exportCSV.fileName || defaultName;\r\n\r\n // Create blob\r\n const blob = new Blob([csvContent], { type: \"text/csv;charset=utf-8;\" });\r\n\r\n // Download file\r\n const link = document.createElement(\"a\");\r\n const url = URL.createObjectURL(blob);\r\n\r\n link.href = url;\r\n link.download = finalName;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n if (activeMenu) setActiveMenu(null);\r\n };\r\n\r\n window.addEventListener(\"scroll\", handleScroll, true);\r\n return () => {\r\n window.removeEventListener(\"scroll\", handleScroll, true);\r\n };\r\n }, [activeMenu]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\r\n setActiveMenu(null);\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n return () => document.removeEventListener(\"click\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (pagination?.rows_per_page && pagination?.useServerSidePagination) {\r\n setPageSize(pagination?.rows_per_page || 50);\r\n }\r\n\r\n if (pagination.current_page) {\r\n setCurrentPage(pagination.current_page);\r\n }\r\n }, [\r\n pagination.rows_per_page,\r\n pagination?.useServerSidePagination,\r\n pagination.current_page,\r\n ]);\r\n\r\n useEffect(() => {\r\n setTotalRecords(\r\n pagination?.useServerSidePagination\r\n ? pagination.total_records\r\n : sortedData.length,\r\n );\r\n\r\n if (\r\n sortedData.length <= pageSize * (currentPage - 1) &&\r\n !pagination?.useServerSidePagination\r\n ) {\r\n setCurrentPage((prev) => prev - 1 || 1);\r\n }\r\n }, [\r\n sortedData.length,\r\n pagination.total_records,\r\n pagination?.useServerSidePagination,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!normalizedSortConfig?.enabled) {\r\n setSortBy(\"\");\r\n return;\r\n }\r\n\r\n const hasMatchingDefault = normalizedSortOptions.some(\r\n (opt: any) => opt.value === normalizedSortConfig.defaultValue,\r\n );\r\n\r\n if (hasMatchingDefault) {\r\n setSortBy(normalizedSortConfig.defaultValue);\r\n return;\r\n }\r\n\r\n setSortBy(\"\");\r\n }, [normalizedSortConfig, normalizedSortOptions]);\r\n\r\n useEffect(() => {\r\n if (\r\n !normalizedSortConfig?.enabled ||\r\n !normalizedSortConfig?.useServerSideSorting\r\n ) {\r\n return;\r\n }\r\n\r\n const selectedOption = normalizedSortOptions?.find(\r\n (opt: any) => opt.value === sortBy,\r\n );\r\n\r\n setServerSidePaginationData((prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: 1,\r\n sort_by: selectedOption?.key || \"\",\r\n sort_order: selectedOption?.order || \"\",\r\n }));\r\n }, [\r\n sortBy,\r\n normalizedSortConfig?.enabled,\r\n normalizedSortConfig?.useServerSideSorting,\r\n normalizedSortOptions,\r\n setServerSidePaginationData,\r\n ]);\r\n\r\n return (\r\n <div ref={tableScopeRef}>\r\n {loading ? (\r\n <TableSkeleton rows={6} columns={6} />\r\n ) : (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.toolbar,\r\n \"flex flex-col lg:!flex-row lg:!justify-between gap-4 mb-3\",\r\n )}\r\n >\r\n <div className=\"table-heading\">\r\n <h1>{title}</h1>\r\n <p>{description}</p>\r\n </div>\r\n <div className=\"flex flex-col justify-end items-stretch lg:!items-end gap-2 w-full lg:!w-auto\">\r\n {showAddButton && (\r\n <Button\r\n onClick={() => setShowAdd(true)}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n <Plus className=\"w-4 h-4 mr-2\" />\r\n {buttonText || \"Add New\"}\r\n </Button>\r\n )}\r\n <div className=\"flex flex-col sm:!flex-row sm:!flex-wrap justify-end items-stretch sm:!items-center gap-2 w-full\">\r\n {search.enabled && (\r\n <div className=\"w-full sm:!w-auto\">\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.searchField,\r\n \"table-search-field\",\r\n )}\r\n >\r\n <Search className=\"search-icon\" />\r\n <input\r\n type=\"text\"\r\n placeholder={search.placeholder || \"Search...\"}\r\n value={searchTerm}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n className={crudClasses.table.searchInput}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {(normalizedSortConfig?.enabled &&\r\n normalizedSortOptions?.length > 0) ||\r\n (filterConfig && filter.enabled) ||\r\n (exportCSV && exportCSV.enabled) ? (\r\n <div className=\"flex items-center justify-end gap-2 w-full sm:!w-auto\">\r\n {filterConfig && filter.enabled && (\r\n <div className=\"filter-button-wrapper\">\r\n <Button\r\n onClick={() => setShowFilters(true)}\r\n variant=\"contained\"\r\n className=\"w-full sm:!w-auto\"\r\n >\r\n <Filter className=\"w-4 h-4 mr-2\" />\r\n Filters\r\n </Button>\r\n {Object.keys(appliedFilters).length > 0 && (\r\n <span className=\"red-dot\"></span>\r\n )}\r\n </div>\r\n )}\r\n {exportCSV && exportCSV.enabled && (\r\n <div className=\"filter-button-wrapper\">\r\n <Button\r\n onClick={() => handleExportCSV()}\r\n variant=\"contained\"\r\n className=\"w-full sm:!w-auto\"\r\n >\r\n <Download className=\"w-4 h-4 mr-2\" />\r\n Export CSV\r\n </Button>\r\n </div>\r\n )}\r\n {normalizedSortConfig?.enabled &&\r\n normalizedSortOptions?.length > 0 && (\r\n <SortDropdown\r\n options={normalizedSortOptions}\r\n value={sortBy}\r\n onChange={handleSortChange}\r\n clearLabel={normalizedSortConfig?.clearLabel}\r\n />\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.root,\r\n crudClasses.table.container,\r\n \"table-container\",\r\n )}\r\n >\r\n <div className=\"overflow-x-auto\">\r\n <table className={crudClasses.table.element}>\r\n <thead className={crudClasses.table.head}>\r\n <tr className={crudClasses.table.headRow}>\r\n {table_head.map((col: any) => (\r\n <th\r\n key={col.key}\r\n className={joinClasses(\r\n crudClasses.table.headCell,\r\n \"table-head-data\",\r\n col.headClass || \"\",\r\n )}\r\n >\r\n {col.title}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n\r\n <tbody className={crudClasses.table.body}>\r\n {paginatedData.length === 0 ? (\r\n <tr>\r\n <td\r\n colSpan={table_head.length}\r\n className={joinClasses(\r\n crudClasses.table.noData,\r\n \"no-data-message\",\r\n )}\r\n >\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n ) : (\r\n paginatedData.map((row: any, index: number) => (\r\n <tr\r\n key={row.id || row._id || index}\r\n className={joinClasses(\r\n crudClasses.table.row,\r\n \"table-row\",\r\n isRowClickable() ? \"cursor-pointer\" : \"\",\r\n )}\r\n onClick={() => {\r\n isRowClickable() && handleRowClick(row);\r\n }}\r\n >\r\n {table_head.map((col: any) => (\r\n <td\r\n key={col.key}\r\n className={joinClasses(\r\n crudClasses.table.cell,\r\n \"table-data\",\r\n col.type == \"audio\" ? \"\" : \"max-w-[300px]\",\r\n \"truncate\",\r\n isColumnClickable(col) ? \"cursor-pointer\" : \"\",\r\n )}\r\n title={String(row[col.key] ?? \"\")}\r\n onClick={(e) => {\r\n if (isColumnClickable(col)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n handleColumnClick(col, row);\r\n }\r\n }}\r\n >\r\n {col.render\r\n ? col.render(row, index)\r\n : handleRenderCellValue(col, row, index)}\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n {pagination?.enabled && sortedData.length > 0 && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.pagination,\r\n \"pagination-wrapper\",\r\n )}\r\n >\r\n <span>\r\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\r\n {Math.min(currentPage * pageSize, totalRecords)} of{\" \"}\r\n {totalRecords} results\r\n </span>\r\n\r\n <div className=\"flex items-center gap-4\">\r\n <div className=\"flex items-center gap-2\">\r\n <span>Rows per page:</span>\r\n <select\r\n value={pageSize}\r\n onChange={(e) => {\r\n const newLimit = Number(e.target.value);\r\n setPageSize(newLimit);\r\n setCurrentPage(1);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: 1,\r\n rows_per_page: newLimit,\r\n }),\r\n );\r\n }\r\n }}\r\n className=\"rows-number-select\"\r\n >\r\n {[10, 25, 50, 100].map((n) => (\r\n <option key={n} value={n}>\r\n {n}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n <button\r\n onClick={() => {\r\n if (currentPage > 1) {\r\n const newPage = currentPage - 1;\r\n setCurrentPage(newPage);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: newPage,\r\n }),\r\n );\r\n }\r\n }\r\n }}\r\n disabled={currentPage === 1}\r\n className=\"arrow-icons\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </button>\r\n\r\n <span>\r\n Page {currentPage} of {totalPages}\r\n </span>\r\n\r\n <button\r\n onClick={() => {\r\n if (currentPage < totalPages) {\r\n const newPage = currentPage + 1;\r\n setCurrentPage(newPage);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: newPage,\r\n }),\r\n );\r\n }\r\n }\r\n }}\r\n disabled={currentPage === totalPages}\r\n className=\"arrow-icons\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n\r\n {activeMenu &&\r\n menuPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={menuRef}\r\n style={{\r\n position: \"fixed\",\r\n top: `${menuPosition.top}px`,\r\n left: `${menuPosition.left}px`,\r\n zIndex: 9999,\r\n }}\r\n className={joinClasses(\r\n crudClasses.table.menu,\r\n \"w-48 bg-white dark:bg-gray-700 rounded-md shadow-lg border border-gray-200 dark:border-gray-600\",\r\n )}\r\n >\r\n {menuList.map((action: any, i: number) => (\r\n <button\r\n key={i}\r\n onClick={(e) =>\r\n handleActionClick(\r\n action,\r\n data.find(\r\n (d: any) => d.id === activeMenu || d._id == activeMenu,\r\n ),\r\n e,\r\n )\r\n }\r\n className={joinClasses(\r\n crudClasses.table.menuItem,\r\n \"w-full flex items-center gap-2 px-4 py-2 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-600\",\r\n action.variant === \"danger\"\r\n ? \"text-red-600 dark:text-red-500\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {action.icon && <span className=\"shrink-0\">{action.icon}</span>}\r\n {action.title}\r\n </button>\r\n ))}\r\n </div>,\r\n menuPortalTarget,\r\n )}\r\n\r\n {filterConfig && (\r\n <FilterDrawer\r\n isOpen={showFilters}\r\n onClose={() => setShowFilters(false)}\r\n config={filterConfig}\r\n onApply={(filters) => {\r\n setAppliedFilters(filters);\r\n onFilterApply?.(filters);\r\n }}\r\n />\r\n )}\r\n\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Table;\r\n","import React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport Button from \"../Button/Button\";\r\nimport { ActionButton } from \"../../types/crudtypes\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: (resp?: any) => void;\r\n icon?: React.ReactNode;\r\n title: React.ReactNode;\r\n children: React.ReactNode;\r\n size?: string;\r\n actionButtons?: ActionButton[];\r\n footerConfig?: any;\r\n onFormSubmit?: (e?: any) => void;\r\n onCancel?: () => void;\r\n loadingBtn?: boolean;\r\n loading?: boolean;\r\n executeFunction?: (...args: any[]) => void;\r\n selectedItem?: any;\r\n classNames?: {\r\n overlay?: string;\r\n container?: string;\r\n header?: string;\r\n title?: string;\r\n body?: string;\r\n footer?: string;\r\n closeButton?: string;\r\n };\r\n}\r\n\r\nconst Modal = ({\r\n isOpen,\r\n onClose,\r\n icon,\r\n title,\r\n children,\r\n size = \"md\",\r\n actionButtons = [],\r\n onFormSubmit = () => {},\r\n loadingBtn = false,\r\n executeFunction = () => {},\r\n selectedItem = null,\r\n footerConfig,\r\n classNames,\r\n}: ModalProps) => {\r\n if (!isOpen) return null;\r\n\r\n const sizeClasses: Record<string, string> = {\r\n sm: \"max-w-md\",\r\n md: \"max-w-lg\",\r\n lg: \"max-w-2xl\",\r\n xl: \"max-w-4xl\",\r\n full: \"max-w-full\",\r\n };\r\n\r\n const shouldShowFooter =\r\n actionButtons.length > 0 || Boolean(footerConfig?.cancelButton);\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.root,\r\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.overlay,\r\n \"fixed inset-0 bg-gray-500 opacity-75\",\r\n classNames?.overlay,\r\n )}\r\n // onClick={() => onClose()}\r\n ></div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.container,\r\n \"relative bg-white rounded-lg shadow-xl w-full max-h-[90vh] flex flex-col dark:bg-gray-800\",\r\n sizeClasses[size] || sizeClasses.md,\r\n classNames?.container,\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.header,\r\n \"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0\",\r\n classNames?.header,\r\n )}\r\n >\r\n <div className=\"flex items-center gap-1\">\r\n {icon && <span>{icon}</span>}\r\n <h3\r\n className={joinClasses(\r\n crudClasses.modal.title,\r\n \"text-lg font-medium text-gray-900 dark:text-white\",\r\n classNames?.title,\r\n )}\r\n >\r\n {title}\r\n </h3>\r\n </div>\r\n\r\n <button\r\n onClick={() => onClose()}\r\n className={joinClasses(\r\n crudClasses.modal.closeButton,\r\n \"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\",\r\n classNames?.closeButton,\r\n )}\r\n >\r\n <X className=\"w-6 h-6\" />\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.body,\r\n \"flex-1 overflow-y-auto p-4\",\r\n classNames?.body,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n\r\n {shouldShowFooter && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.footer,\r\n \"px-4 py-3 flex justify-end gap-3 border-t border-gray-200 dark:border-gray-700 sm:!px-6\",\r\n classNames?.footer,\r\n )}\r\n >\r\n {footerConfig?.cancelButton && (\r\n <Button\r\n onClick={() => onClose()}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n className={joinClasses(\r\n crudClasses.modal.actionButton,\r\n \"min-w-[100px]\",\r\n )}\r\n type=\"button\"\r\n >\r\n {footerConfig?.cancelText || \"Cancel\"}\r\n </Button>\r\n )}\r\n {actionButtons.map((btn, index) => (\r\n <Button\r\n key={`${btn.label || \"action\"}-${index}`}\r\n onClick={(e) => {\r\n if (btn.type == \"submit\") {\r\n onFormSubmit(e);\r\n } else {\r\n executeFunction(\r\n () => Promise.resolve(btn?.onClick?.(e, selectedItem)),\r\n (resp: any) => onClose?.(resp),\r\n );\r\n }\r\n }}\r\n disabled={loadingBtn || btn.disabled}\r\n variant={btn.variant || \"contained\"}\r\n color={btn.color || \"primary\"}\r\n className={joinClasses(\r\n crudClasses.modal.actionButton,\r\n \"min-w-[100px]\",\r\n btn.className || \"\",\r\n )}\r\n type={(btn.type as \"button\" | \"submit\" | \"reset\") || \"button\"}\r\n >\r\n {loadingBtn ? (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.loadingIndicator,\r\n \"flex items-center\",\r\n )}\r\n >\r\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-white/30 border-t-2 border-t-white mr-2\"></div>\r\n {btn.label || \"Submit\"}...\r\n </div>\r\n ) : (\r\n btn.label || \"Submit\"\r\n )}\r\n </Button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport RenderFields from \"./components/RenderFields\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface FormField {\r\n key: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface FormConfig {\r\n formClass?: string;\r\n formFields?: FormField[];\r\n}\r\n\r\ninterface FormProps {\r\n config: FormConfig;\r\n onSubmit: (data: Record<string, any>) => void;\r\n initialData: Record<string, any> | null;\r\n fetchRowDetails?: (\r\n item: Record<string, any>,\r\n ) => Promise<{ data: Record<string, any> }>;\r\n type: \"add\" | \"edit\" | string;\r\n loading?: boolean;\r\n}\r\n\r\nconst Form: React.FC<FormProps> = ({\r\n config,\r\n onSubmit,\r\n initialData,\r\n fetchRowDetails,\r\n type,\r\n}) => {\r\n const safeInitialData = initialData || {};\r\n\r\n const { formClass = \"grid grid-cols-12 gap-4\", formFields = [] } =\r\n config || {};\r\n\r\n const [formData, setFormData] =\r\n useState<Record<string, any>>(safeInitialData);\r\n const [dataLoading, setDataLoading] = useState<boolean>(false);\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n const handleGetDetails = async (): Promise<void> => {\r\n fetchRowDetails?.(safeInitialData)\r\n .then((resp) => {\r\n setFormData(resp.data);\r\n })\r\n .catch((error: Error) => {\r\n enqueueSnackbar(error.message, { variant: \"error\" });\r\n })\r\n .finally(() => {\r\n setDataLoading(false);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (fetchRowDetails instanceof Function) {\r\n setDataLoading(true);\r\n handleGetDetails();\r\n } else {\r\n setFormData(safeInitialData);\r\n setDataLoading(false);\r\n }\r\n }, []);\r\n\r\n const handleChange = (key: string, value: any): void => {\r\n setFormData((prev) => ({ ...prev, [key]: value }));\r\n setErrors((prev) => ({\r\n ...prev,\r\n [key]: \"\",\r\n }));\r\n };\r\n\r\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>): void => {\r\n e.preventDefault();\r\n const form = e.currentTarget;\r\n\r\n if (!form.checkValidity()) {\r\n form.reportValidity();\r\n return;\r\n }\r\n\r\n const newErrors: Record<string, string> = {};\r\n let firstInvalidFocused = false;\r\n\r\n for (const field of formFields) {\r\n const value = formData[field.key] || \"\";\r\n if (field.customValidation) {\r\n const isValid = field.customValidation(value);\r\n if (isValid !== false) {\r\n newErrors[field.key] = isValid;\r\n if (!firstInvalidFocused) {\r\n const input = form.querySelector(\r\n `[id=\"field-${field.key}\"]`,\r\n ) as HTMLElement | null;\r\n input?.focus();\r\n firstInvalidFocused = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setErrors(newErrors);\r\n\r\n if (Object.keys(newErrors).length > 0) return;\r\n\r\n onSubmit(formData);\r\n };\r\n\r\n if (dataLoading) {\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.form.loading,\r\n \"flex items-center justify-center h-64\",\r\n )}\r\n >\r\n <div\r\n className=\"rounded-full border-4 border-blue-500 border-t-gray-200 animate-spin w-8 h-8\"\r\n style={{\r\n borderTopColor: \"border-primary-500\",\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <form\r\n id={\r\n type === \"add\"\r\n ? \"addForm\"\r\n : type === \"edit\"\r\n ? \"editForm\"\r\n : \"defaultForm\"\r\n }\r\n onSubmit={handleSubmit}\r\n className={joinClasses(crudClasses.form.root, formClass)}\r\n noValidate={false}\r\n >\r\n {formFields.map((field) => (\r\n <RenderFields\r\n key={field.key}\r\n field={field}\r\n formData={formData}\r\n errorMessage={errors[field.key] || \"\"}\r\n handleChange={handleChange}\r\n />\r\n ))}\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;\r\n","import { useEffect, useState } from \"react\";\r\nimport DetailRow from \"./components/DetailRow\";\r\nimport CardGroup from \"./components/CardGroup\";\r\nimport GroupRow from \"./components/GroupRow\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface DetailsProps {\r\n data: Record<string, any> | null;\r\n config: {\r\n fields?: Array<Record<string, any>>;\r\n containerClass?: string;\r\n variant?: \"default\" | \"card\" | \"split\";\r\n styles?: {\r\n containerClass?: string;\r\n rowClass?: string;\r\n groupClass?: string;\r\n cardGroupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n mediaGridClass?: string;\r\n };\r\n };\r\n fetchRowDetails?: (\r\n payload: Record<string, any>,\r\n ) => Promise<{ data: Record<string, any> }>;\r\n}\r\n\r\nexport default function Details({\r\n data,\r\n config,\r\n fetchRowDetails,\r\n}: DetailsProps) {\r\n const {\r\n fields = [],\r\n containerClass,\r\n variant = \"default\",\r\n styles = {},\r\n } = config || {};\r\n\r\n const safeData = data || {};\r\n\r\n const [detailsData, setDetailsData] = useState<Record<string, any>>(safeData);\r\n\r\n const [dataLoading, setDataLoading] = useState(true);\r\n\r\n const handleGetDetails = async () => {\r\n fetchRowDetails?.(safeData)\r\n .then((resp) => {\r\n setDetailsData(resp.data);\r\n })\r\n .catch((error: Error) => {\r\n enqueueSnackbar(error.message, { variant: \"error\" });\r\n })\r\n .finally(() => {\r\n setDataLoading(false);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (fetchRowDetails instanceof Function) {\r\n handleGetDetails();\r\n } else {\r\n setDetailsData(safeData);\r\n setDataLoading(false);\r\n }\r\n }, []);\r\n\r\n if (dataLoading) {\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.form.loading,\r\n \"flex items-center justify-center h-64\",\r\n )}\r\n >\r\n <div\r\n className=\"rounded-full border-4 border-blue-500 border-t-gray-200 animate-spin w-8 h-8\"\r\n style={{\r\n borderTopColor: \"border-primary-500\",\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n const variantContainerClass: Record<string, string> = {\r\n default: \"grid grid-cols-12 gap-4\",\r\n // card: each field is a standalone elevated card in a 12-col grid\r\n card: \"grid grid-cols-12 gap-3\",\r\n // split: clean property-sheet — bordered box, rows divided by hairlines\r\n split:\r\n \"rounded-xl border border-gray-200 dark:border-gray-700 overflow-hidden divide-y divide-gray-100 dark:divide-gray-800\",\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.root,\r\n crudClasses.details.container,\r\n variantContainerClass[variant] || variantContainerClass.default,\r\n containerClass || \"\",\r\n styles.containerClass || \"\",\r\n )}\r\n >\r\n {fields.map((col) => {\r\n if (\r\n col.renderCondition &&\r\n typeof col.renderCondition === \"function\"\r\n ) {\r\n const shouldRender = col.renderCondition(detailsData);\r\n if (!shouldRender) {\r\n return null;\r\n }\r\n }\r\n return col.type == \"group\" ? (\r\n <GroupRow\r\n key={col.key || col.titleKey}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n ) : col.type == \"cardGroup\" ? (\r\n <CardGroup\r\n key={col.key || col.titleKey}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n ) : (\r\n <DetailRow\r\n key={col.key || col.label}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n );\r\n })}\r\n </div>\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport Table from \"./Table/Table\";\r\nimport Modal from \"./Modal/Modal\";\r\nimport Form from \"./Form/Form\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { enqueueSnackbar } from \"notistack\";\r\nimport Details from \"./Details/Details\";\r\nimport type {\r\n CrudPageProps,\r\n ServerSidePaginationData,\r\n} from \"../types/crudtypes\";\r\nimport { crudClasses, joinClasses } from \"../lib/crudClasses\";\r\n\r\nconst CrudPage: React.FC<CrudPageProps> = ({ config }) => {\r\n const {\r\n title,\r\n fetchData,\r\n fetchRowDetails,\r\n isStaticData = false,\r\n tableConfig,\r\n modalConfig,\r\n filterConfig,\r\n } = config;\r\n\r\n const [loading, setLoading] = useState<boolean>(true);\r\n const [formLoading, setFormLoading] = useState<boolean>(false);\r\n const [listingData, setListingData] = useState<Record<string, any>[]>([]);\r\n const [paginationData, setPaginationData] = useState<any>(null);\r\n const [serverSidePaginationData, setServerSidePaginationData] =\r\n useState<ServerSidePaginationData>({\r\n search: \"\",\r\n rows_per_page: 50,\r\n current_page: 1,\r\n sort_by: \"\",\r\n sort_order: \"\",\r\n });\r\n const [filterData, setFilterData] = useState<Record<string, any>>({});\r\n const [changeFilterData, setChangeFilterData] = useState<boolean>(false);\r\n const [showAdd, setShowAdd] = useState<boolean>(false);\r\n const [showEdit, setShowEdit] = useState<boolean>(false);\r\n const [showDelete, setShowDelete] = useState<boolean>(false);\r\n const [showView, setShowView] = useState<boolean>(false);\r\n const [selectedItem, setSelectedItem] = useState<Record<string, any> | null>(\r\n null,\r\n );\r\n\r\n const handleMenuAction = (action: string, item: any): void => {\r\n if (action === \"edit\") {\r\n setSelectedItem(item);\r\n setShowEdit(true);\r\n } else if (action === \"view\") {\r\n setSelectedItem(item);\r\n setShowView(true);\r\n } else if (action === \"delete\") {\r\n setSelectedItem(item);\r\n setShowDelete(true);\r\n }\r\n };\r\n\r\n const executeAction = async (\r\n action: (() => Promise<any>) | null,\r\n onSuccess?: (resp: any) => void,\r\n success_message: string = \"\",\r\n error_message: string = \"\",\r\n ): Promise<void> => {\r\n setFormLoading(true);\r\n\r\n try {\r\n if (!action) return;\r\n const resp = await action();\r\n if (success_message || resp?.message) {\r\n enqueueSnackbar(success_message || resp.message || \"Success\", {\r\n variant: \"success\" as const,\r\n });\r\n }\r\n onSuccess?.(resp);\r\n } catch (error: any) {\r\n if (error_message || error?.message) {\r\n enqueueSnackbar(error_message || error.message || \"Error occurred\", {\r\n variant: \"error\" as const,\r\n });\r\n }\r\n } finally {\r\n setFormLoading(false);\r\n }\r\n };\r\n\r\n const handleAddResult = (resp: { newObject: any }): void => {\r\n const newObj = resp.newObject;\r\n if (isStaticData) {\r\n setListingData((prev) => [newObj, ...prev]);\r\n setPaginationData((prev: any) => ({\r\n ...prev,\r\n current_page: 1,\r\n }));\r\n } else {\r\n setServerSidePaginationData((prev) => ({\r\n ...prev,\r\n current_page: 1,\r\n }));\r\n if (serverSidePaginationData.current_page === 1) {\r\n handleGetListing();\r\n }\r\n }\r\n setShowAdd(false);\r\n };\r\n\r\n const handleEditResult = (resp: {\r\n newObject: any;\r\n targetObject: any;\r\n }): void => {\r\n const { newObject: updatedObj, targetObject } = resp;\r\n if (isStaticData) {\r\n setListingData((prev) =>\r\n prev.map((item) =>\r\n item.id === targetObject.id ? { ...item, ...updatedObj } : item,\r\n ),\r\n );\r\n } else {\r\n handleGetListing();\r\n }\r\n setShowEdit(false);\r\n };\r\n\r\n const handleDeleteResult = (resp: { targetObject: any } | null): void => {\r\n if (!resp) {\r\n setShowDelete(false);\r\n setSelectedItem(null);\r\n return;\r\n }\r\n\r\n if (isStaticData) {\r\n setListingData((prev) =>\r\n prev.filter((item) => item.id !== resp.targetObject.id),\r\n );\r\n } else {\r\n if (\r\n listingData.length === 1 &&\r\n serverSidePaginationData.current_page > 1\r\n ) {\r\n setServerSidePaginationData((prev) => ({\r\n ...prev,\r\n current_page: prev.current_page - 1,\r\n }));\r\n } else {\r\n handleGetListing();\r\n }\r\n }\r\n setShowDelete(false);\r\n setSelectedItem(null);\r\n };\r\n\r\n const handleAddFormSubmit = (formData: Record<string, any>): Promise<void> =>\r\n executeAction(\r\n () =>\r\n modalConfig?.addModal?.handleSubmit\r\n ? modalConfig.addModal.handleSubmit(formData)\r\n : Promise.resolve({ newObject: null }),\r\n handleAddResult,\r\n );\r\n\r\n const handleEditFormSubmit = (formData: Record<string, any>): Promise<void> =>\r\n executeAction(\r\n () =>\r\n modalConfig?.editModal?.handleSubmit\r\n ? modalConfig.editModal.handleSubmit(formData, selectedItem)\r\n : Promise.resolve({ newObject: null, targetObject: null }),\r\n handleEditResult,\r\n );\r\n\r\n const handleGetListing = async (): Promise<void> => {\r\n setLoading(true);\r\n\r\n try {\r\n const resp = await fetchData({\r\n ...serverSidePaginationData,\r\n ...filterData,\r\n });\r\n setListingData(resp.data || []);\r\n setPaginationData(resp.pagination || null);\r\n } catch (error: any) {\r\n enqueueSnackbar(error.message || \"Failed to fetch data\", {\r\n variant: \"error\",\r\n });\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleFilterData = (data: Record<string, any>): void => {\r\n setFilterData((prev) => ({ ...data }));\r\n if (tableConfig?.filter?.useServerSideFilters) {\r\n setChangeFilterData((prev) => !prev);\r\n }\r\n };\r\n\r\n const filterByMatchingFields = (\r\n data: any[],\r\n filters: Record<string, any>,\r\n ): any[] => {\r\n return data.filter((item) =>\r\n Object.entries(filters).every(([key, value]) => item[key] === value),\r\n );\r\n };\r\n\r\n const filteredData = useMemo(() => {\r\n if (tableConfig?.filter?.useServerSideFilters) return listingData;\r\n return filterByMatchingFields(listingData, filterData);\r\n }, [listingData, filterData, tableConfig?.filter?.useServerSideFilters]);\r\n\r\n const ViewComponent = modalConfig?.viewModal?.component;\r\n\r\n useEffect(() => {\r\n handleGetListing();\r\n }, [\r\n serverSidePaginationData.search,\r\n serverSidePaginationData.rows_per_page,\r\n serverSidePaginationData.current_page,\r\n serverSidePaginationData.sort_by,\r\n serverSidePaginationData.sort_order,\r\n changeFilterData,\r\n ]);\r\n\r\n return (\r\n <div className={crudClasses.crudPage.root}>\r\n <Table\r\n title={title}\r\n setShowAdd={setShowAdd}\r\n description={config.description}\r\n buttonText={config.buttonText}\r\n showAddButton={!!modalConfig?.addModal}\r\n config={{\r\n ...tableConfig,\r\n pagination: {\r\n ...tableConfig.pagination,\r\n ...paginationData,\r\n },\r\n data: filteredData,\r\n setServerSidePaginationData: setServerSidePaginationData,\r\n onMenuAction: handleMenuAction,\r\n filterConfig,\r\n onFilterApply: handleFilterData,\r\n loading,\r\n }}\r\n />\r\n\r\n <Modal\r\n isOpen={showAdd}\r\n onClose={() => {\r\n if (!formLoading) {\r\n setShowAdd(false);\r\n }\r\n }}\r\n icon={modalConfig?.addModal?.icon}\r\n title={modalConfig?.addModal?.title || \"Add New\"}\r\n size={modalConfig?.addModal?.size || \"md\"}\r\n onFormSubmit={() =>\r\n document.querySelector<HTMLFormElement>(\"#addForm\")?.requestSubmit()\r\n }\r\n loadingBtn={formLoading}\r\n actionButtons={modalConfig?.addModal?.actionButtons || []}\r\n >\r\n <Form\r\n config={modalConfig?.addModal || {}}\r\n onSubmit={handleAddFormSubmit}\r\n initialData={{}}\r\n type=\"add\"\r\n loading={formLoading}\r\n />\r\n </Modal>\r\n\r\n {/* Edit Modal */}\r\n <Modal\r\n isOpen={showEdit}\r\n onClose={() => {\r\n if (!formLoading) {\r\n setShowEdit(false);\r\n }\r\n }}\r\n icon={modalConfig?.editModal?.icon}\r\n title={modalConfig?.editModal?.title || \"Edit\"}\r\n size={modalConfig?.editModal?.size || \"md\"}\r\n onFormSubmit={() =>\r\n document.querySelector<HTMLFormElement>(\"#editForm\")?.requestSubmit()\r\n }\r\n actionButtons={modalConfig?.editModal?.actionButtons || []}\r\n loadingBtn={formLoading}\r\n >\r\n <Form\r\n config={modalConfig?.editModal || {}}\r\n onSubmit={handleEditFormSubmit}\r\n initialData={selectedItem}\r\n type=\"edit\"\r\n loading={formLoading}\r\n fetchRowDetails={fetchRowDetails}\r\n />\r\n </Modal>\r\n\r\n {/* Delete Modal */}\r\n <Modal\r\n isOpen={showDelete}\r\n onClose={(resp) => {\r\n handleDeleteResult(resp);\r\n }}\r\n icon={\r\n modalConfig?.deleteModal?.icon || (\r\n <Icon icon=\"ph:warning-bold\" className=\"w-6 h-6 text-red-500\" />\r\n )\r\n }\r\n title={modalConfig?.deleteModal?.title || \"Confirm Delete\"}\r\n size={modalConfig?.deleteModal?.size || \"md\"}\r\n loading={formLoading}\r\n actionButtons={modalConfig?.deleteModal?.actionButtons || []}\r\n executeFunction={executeAction}\r\n selectedItem={selectedItem}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.crudPage.deleteContent,\r\n \"flex items-center space-x-2 py-3\",\r\n )}\r\n >\r\n <div>\r\n <p className=\"text-md text-gray-700 dark:text-white\">\r\n {modalConfig?.deleteModal?.confirmText ||\r\n \"Are you sure you want to delete this item?\"}\r\n </p>\r\n {modalConfig?.deleteModal?.referenceKey && (\r\n <p className=\"text-md font-semibold text-gray-700 dark:text-white\">\r\n {selectedItem?.[modalConfig?.deleteModal?.referenceKey]}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </Modal>\r\n\r\n {/* View Detail Modal */}\r\n {modalConfig?.viewModal && (\r\n <Modal\r\n isOpen={showView}\r\n onClose={() => {\r\n setShowView(false);\r\n setSelectedItem(null);\r\n }}\r\n icon={modalConfig?.viewModal?.icon}\r\n title={modalConfig?.viewModal?.title || \"View Details\"}\r\n size={modalConfig?.viewModal?.size || \"lg\"}\r\n footerConfig={modalConfig?.viewModal?.footer}\r\n classNames={modalConfig?.viewModal?.modalClassNames}\r\n >\r\n {ViewComponent ? (\r\n <ViewComponent data={selectedItem} />\r\n ) : (\r\n <Details\r\n data={selectedItem}\r\n fetchRowDetails={fetchRowDetails}\r\n config={modalConfig?.viewModal || {}}\r\n />\r\n )}\r\n </Modal>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default CrudPage;\r\n","import React from \"react\";\r\nimport { SnackbarProvider, useSnackbar, type SnackbarKey } from \"notistack\";\r\nimport { X } from \"lucide-react\";\r\n\r\ninterface InnerCheckProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nfunction InnerCheck({ children }: InnerCheckProps) {\r\n useSnackbar(); // If this works, provider exists\r\n return children;\r\n}\r\n\r\ninterface OptionalSnackbarProviderProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport default function OptionalSnackbarProvider({ \r\n children \r\n}: OptionalSnackbarProviderProps) {\r\n try {\r\n return <InnerCheck>{children}</InnerCheck>;\r\n } catch (error) {\r\n return (\r\n <SnackbarProvider\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"right\",\r\n }}\r\n action={(snackbarKey: SnackbarKey) => (\r\n <button\r\n onClick={() => {\r\n window.dispatchEvent(\r\n new CustomEvent(\"closeSnackbar\", { detail: snackbarKey }),\r\n );\r\n }}\r\n className=\"p-1 hover:bg-white/20 rounded-full transition-colors duration-200 text-white flex items-center justify-center\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n maxSnack={3}\r\n autoHideDuration={3000}\r\n >\r\n {children}\r\n </SnackbarProvider>\r\n );\r\n }\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport libraryStyles from \"./index.css?inline\";\r\nimport CrudPage from \"./components/CrudPage\";\r\nimport OptionalSnackbarProvider from \"./OptionalSnackbarProvider\";\r\nimport { type CrudPageProps } from \"./types/crudtypes\";\r\n\r\nconst injectStyles = () => {\r\n if (typeof document === \"undefined\") return;\r\n if (document.getElementById(\"react-admin-crud-manager-styles\")) return;\r\n\r\n const style = document.createElement(\"style\");\r\n style.id = \"react-admin-crud-manager-styles\";\r\n style.textContent = libraryStyles;\r\n document.head.appendChild(style);\r\n};\r\n\r\nexport default function Crud({ config }: CrudPageProps) {\r\n useEffect(() => {\r\n injectStyles();\r\n }, []);\r\n\r\n return (\r\n <div className=\"racm-root\">\r\n <OptionalSnackbarProvider>\r\n <CrudPage config={config} />\r\n </OptionalSnackbarProvider>\r\n </div>\r\n );\r\n}\r\n"],"names":["formatDate","dateString","format","date","pad","n","map","token","searchLocalData","data","searchTerm","searchKeys","lowerSearchTerm","extractValues","obj","item","valuesToSearch","key","val","joinClasses","classes","crudClasses","Button","React","className","variant","color","size","fullWidth","children","props","ref","baseStyles","sizes","colorVariants","colorStyles","_a","sizeStyles","combinedClassName","jsx","InputLabel","label","required","infoText","Fragment","jsxs","Info","countries","Select","options","value","defaultValue","onChange","placeholder","disabled","search","name","parentClass","multiple","dropdownMaxHeight","formData","countriesList","dependencyKey","errorMessage","open","setOpen","useState","setSearchTerm","showAboveState","setShowAboveState","dropdownRef","useRef","optionsPanelRef","searchInputRef","normalizedOptions","setNormalizedOptions","dropdownPosition","setDropdownPosition","dropdownPortalTarget","initialVal","normalize","getCountrieslist","useEffect","result","normalizedValue","filteredOptions","option","isSelected","optionValue","normalized","handleClickOutside","event","updateDropdownPosition","rect","shouldShowAbove","handleOptionClick","finalValue","exists","newValues","v","selectedLabels","opt","_b","ChevronDown","createPortal","Search","e","Check","Switch","PhoneInput","defaultCountry","find_country_with_code","countryCode","selectedCountry","setSelectedCountry","fullNumber","setFullNumber","localValue","setLocalValue","applyMask","digits","mask","digitIndex","i","handleNumberChange","maskedValue","unmaskedValue","match","c","a","b","rawValue","handleCountrySelect","country","filteredCountries","handleInputChange","input","formatted","TextArea","extendStatics","d","p","__extends","__","__assign","t","s","_populated","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populate","uas","agent","os","trident","ver","UserAgent_DEPRECATED","UserAgent_DEPRECATED_1","canUseDOM","ExecutionEnvironment","ExecutionEnvironment_1","require$$0","useHasFeature","isEventSupported","eventNameSuffix","capture","eventName","isSupported","element","isEventSupported_1","require$$1","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","sX","sY","pX","pY","normalizeWheel_1","getCropSize","mediaWidth","mediaHeight","containerWidth","containerHeight","aspect","rotation","rotateSize","width","height","fittingWidth","fittingHeight","getMediaZoom","mediaSize","restrictPosition","position","cropSize","zoom","restrictPositionCoord","maxPosition","clamp","getDistanceBetweenPoints","pointA","pointB","getRotationBetweenPoints","computeCroppedArea","crop","limitAreaFn","limitArea","noOp","mediaBBoxSize","mediaNaturalBBoxSize","croppedAreaPercentages","widthInPixels","heightInPixels","isImgWiderThanHigh","sizePixels","croppedAreaPixels","max","_max","getInitialCropFromCroppedAreaPercentages","minZoom","maxZoom","getZoomFromCroppedAreaPixels","mediaZoom","getInitialCropFromCroppedAreaPixels","cropZoom","getCenter","getRadianAngle","degreeValue","rotRad","min","classNames","args","_i","css_248z","MIN_ZOOM","MAX_ZOOM","KEYBOARD_STEP","Cropper","_super","_this","isFirstResize","entries","_c","_d","_e","_f","mediaRef","containerAspect","naturalWidth","naturalHeight","isMediaScaledDown","mediaAspect","renderedMediaSize","bounds","point","newZoom","newRotation","x","y","offsetX","offsetY","requestedPosition","newPosition","pixelY","containerTopLeft","shouldUpdatePosition","zoomPoint","zoomTarget","restrictedPosition","cropData","adjustedCrop","sizeChanged","scaleX","scaleY","onCropChange","keyboardStep","step","newCrop","prevProps","_g","_h","_j","objectFit","center","distance","image","video","mediaProps","cropperProps","transform","cropShape","showGrid","roundCropAreaPixels","containerStyle","cropAreaStyle","mediaStyle","containerClassName","cropAreaClassName","mediaClassName","el","touch","ButtonComponent","createImage","url","resolve","reject","error","getCroppedImageBlob","imageSrc","pixelCrop","fileType","canvas","ctx","bBoxWidth","bBoxHeight","croppedCanvas","croppedCtx","blob","ImageCropperModal","isOpen","fileName","title","onClose","onApply","setCrop","setZoom","setCroppedAreaPixels","onCropComplete","useCallback","_area","croppedPixels","handleApply","fileExtension","croppedFile","Icon","revokeBlobUrl","ImagePicker","accept","id","dragDrop","cropImage","setImage","isDragging","setIsDragging","cropModalOpen","setCropModalOpen","cropSource","setCropSource","selectedFileType","setSelectedFileType","selectedFileName","setSelectedFileName","inputRef","sourceUrlRef","previewUrlRef","preview","closeCropModal","handleCroppedImage","handleFileChange","files","file","source","removeImage","handleDragOver","handleDragLeave","handleDrop","handleButtonClick","imagePreview","Input","type","onKeyDown","negativeNumberAllow","field","maskApplyOnValue","showPassword","setShowPassword","handleKeyDown","maskValue","cleanValue","valueIndex","maskChar","valueChar","prev","TinyEditor","editorKey","inline","plugins","toolbar","menubar","fontFamily","initConfig","imageUploadHandler","defaultPlugins","defaultToolbar","handleImageUpload","blobInfo","Editor","content","Checkbox","multiSelect","isChecked","handleSingleChange","handleMultipleChange","checked","newValue","index","idx","AudioPicker","maxSize","audio","setAudio","maxSizeBytes","cleanupAudio","enqueueSnackbar","removeAudio","toGalleryItem","MultiImagePicker","maxImages","images","setImages","cropTargetId","setCropTargetId","replaceInputRef","cropSourceUrlRef","imagesRef","img","nextItems","remainingSlots","openCropModal","next","addFiles","selected","mapped","idToRemove","target","handleReplaceClick","idToReplace","handleReplaceImage","canSelectMore","ImagePreview","src","alt","setIsOpen","closePreview","handleEsc","X","GroupRow","col","uiVariant","styleConfig","subtitle","fallback_icon","targetImage","setTargetImage","openPreview","imageObj","renderAvatar","User","CardGroup","renderMiniAvatar","BADGE_COLORS","BADGE_VARIANTS","Chip","colorConfig","variantKey","variantClasses","DetailRow","chipObj","getImageSource","renderValue","wrapClass","Radio","text","radioOptions","VideoPicker","setVideo","cleanupVideo","removeVideo","RenderFields","handleChange","rows","inputClass","minLength","renderCondition","pattern","renderType","aspectRatio","finalPlaceholder","baseClass","imgList","imgObj","updatedValue","FilterDrawer","config","filters","setFilters","handleReset","DynamicComponent","TableSkeleton","columns","_","rowIndex","colIndex","SortDropdown","clearLabel","sortRef","isSortApplied","handleSelect","selectedValue","selectedOption","ArrowUpDown","BASE_SORT_CONFIG","normalizeSortConfig","sortConfig","getSortableColumns","tableHead","blockedTypes","detectSortType","sortKeyName","keyword","buildDefaultSortOptions","getNormalizedSortOptions","normalizedSortConfig","sortableColumns","fieldRules","fieldColumns","fieldKey","targetCol","sortTableData","filteredData","sortBy","normalizedSortOptions","direction","sortKey","sortType","normalizePhone","aValue","bValue","comparison","Table","setShowAdd","buttonText","description","showAddButton","table_head","loading","filter","sort","pagination","exportCSV","emptyMessage","onMenuAction","setServerSidePaginationData","onFilterApply","filterConfig","rowClick","activeMenu","setActiveMenu","menuList","setMenuList","menuPosition","setMenuPosition","showFilters","setShowFilters","appliedFilters","setAppliedFilters","useMemo","setSortBy","sortedData","currentPage","setCurrentPage","pageSize","setPageSize","totalRecords","setTotalRecords","totalPages","paginatedData","start","menuRef","tableScopeRef","buttonRefs","searchTimeoutRef","menuPortalTarget","handleSearchChange","handleSortChange","payload","handleActionClick","action","handleMenuToggle","itemId","menu_list","button","menuWidth","menuHeight","viewportWidth","viewportHeight","left","top","calculateRowNumber","renderMultiImageCell","maxPreview","visibleImages","remaining","imageAlt","row","renderAudio","audioSrc","Music","renderGroupCell","handleRenderChip","handleRenderCellValue","EllipsisVertical","handleRowClick","handleColumnClick","isRowClickable","isColumnClickable","handleExportCSV","headers","csvContent","r","defaultName","finalName","link","handleScroll","Plus","Filter","Download","newLimit","newPage","ChevronLeft","ChevronRight","Modal","icon","actionButtons","onFormSubmit","loadingBtn","executeFunction","selectedItem","footerConfig","sizeClasses","shouldShowFooter","btn","resp","Form","onSubmit","initialData","fetchRowDetails","safeInitialData","formClass","formFields","setFormData","dataLoading","setDataLoading","errors","setErrors","handleGetDetails","handleSubmit","form","newErrors","firstInvalidFocused","isValid","Details","fields","containerClass","styles","safeData","detailsData","setDetailsData","variantContainerClass","CrudPage","fetchData","isStaticData","tableConfig","modalConfig","setLoading","formLoading","setFormLoading","listingData","setListingData","paginationData","setPaginationData","serverSidePaginationData","filterData","setFilterData","changeFilterData","setChangeFilterData","showAdd","showEdit","setShowEdit","showDelete","setShowDelete","showView","setShowView","setSelectedItem","handleMenuAction","executeAction","onSuccess","success_message","error_message","handleAddResult","newObj","handleGetListing","handleEditResult","updatedObj","targetObject","handleDeleteResult","handleAddFormSubmit","handleEditFormSubmit","handleFilterData","filterByMatchingFields","ViewComponent","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","InnerCheck","useSnackbar","OptionalSnackbarProvider","SnackbarProvider","snackbarKey","injectStyles","style","libraryStyles","Crud"],"mappings":"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","x_google_ignoreList":[9,10,11,12,13,14,15]}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/lib/utils.ts","../src/lib/crudClasses.ts","../src/components/Button/Button.tsx","../src/components/Form/components/InputLabel.tsx","../src/data/countries.ts","../src/components/Form/components/Select.tsx","../src/components/Form/components/Switch.tsx","../src/components/Form/components/PhoneInput.tsx","../src/components/Form/components/TextArea.tsx","../node_modules/tslib/tslib.es6.mjs","../node_modules/normalize-wheel/src/UserAgent_DEPRECATED.js","../node_modules/normalize-wheel/src/ExecutionEnvironment.js","../node_modules/normalize-wheel/src/isEventSupported.js","../node_modules/normalize-wheel/src/normalizeWheel.js","../node_modules/normalize-wheel/index.js","../node_modules/react-easy-crop/index.module.mjs","../src/components/Form/components/ImageCropperModal.tsx","../src/components/Form/components/ImagePicker.tsx","../src/components/Form/components/Input.tsx","../src/components/Form/components/TinyEditor.tsx","../node_modules/react-text-editor-kit/react-editor/build/index.js","../src/components/Form/components/FreeEditor.tsx","../src/components/Form/components/Checkbox.tsx","../src/components/Form/components/AudioPicker.tsx","../src/components/Form/components/MultiImagePicker.tsx","../src/components/Table/components/ImagePreview.tsx","../src/components/Details/components/GroupRow.tsx","../src/components/Details/components/CardGroup.tsx","../src/components/Chip/Chip.tsx","../src/components/Details/components/DetailRow.tsx","../src/components/Form/components/Radio.tsx","../src/components/Form/components/VideoPicker.tsx","../src/components/Form/components/FilePicker.tsx","../src/components/Form/components/RenderFields.tsx","../src/components/Filter/FilterDrawer.tsx","../src/components/Table/components/TableSkeleton.tsx","../src/components/Table/components/SortDropdown.tsx","../src/components/Table/utils/sortUtils.ts","../src/components/Table/Table.tsx","../src/components/Modal/Modal.tsx","../src/components/Form/Form.tsx","../src/components/Details/Details.tsx","../src/components/CrudPage.tsx","../src/OptionalSnackbarProvider.tsx","../src/index.tsx"],"sourcesContent":["// ======= Format Date : Jan 15, 2024 =======\r\n\r\nexport const formatDate = (\r\n dateString: string | Date | null | undefined,\r\n format: string = \"DD MMM YYYY\",\r\n): string => {\r\n if (!dateString) return \"N/A\";\r\n\r\n const date = new Date(dateString);\r\n if (isNaN(date.getTime())) return \"Invalid Date\";\r\n\r\n const pad = (n: number): string => String(n).padStart(2, \"0\");\r\n\r\n const map: Record<string, string | number> = {\r\n YYYY: date.getFullYear(),\r\n YY: String(date.getFullYear()).slice(-2),\r\n\r\n MMMM: date.toLocaleString(\"en-US\", { month: \"long\" }),\r\n MMM: date.toLocaleString(\"en-US\", { month: \"short\" }),\r\n MM: pad(date.getMonth() + 1),\r\n M: date.getMonth() + 1,\r\n\r\n DD: pad(date.getDate()),\r\n D: date.getDate(),\r\n\r\n dddd: date.toLocaleString(\"en-US\", { weekday: \"long\" }),\r\n ddd: date.toLocaleString(\"en-US\", { weekday: \"short\" }),\r\n\r\n HH: pad(date.getHours()),\r\n hh: pad(date.getHours() % 12 || 12),\r\n\r\n mm: pad(date.getMinutes()),\r\n ss: pad(date.getSeconds()),\r\n\r\n A: date.getHours() >= 12 ? \"PM\" : \"AM\",\r\n };\r\n\r\n return format.replace(\r\n /YYYY|YY|MMMM|MMM|MM|M|DD|D|dddd|ddd|HH|hh|mm|ss|A/g,\r\n (token) => String(map[token]),\r\n );\r\n};\r\n\r\n// =========== Local Search function ===========\r\nexport const searchLocalData = <T extends Record<string, any>>(\r\n data: T[],\r\n searchTerm: string | undefined | null,\r\n searchKeys: string[] = [],\r\n): T[] => {\r\n if (!searchTerm?.trim()) return data;\r\n\r\n const lowerSearchTerm = searchTerm.toLowerCase();\r\n\r\n const extractValues = (obj: any): string[] => {\r\n if (obj == null) return [];\r\n if (typeof obj === \"object\") {\r\n return Object.values(obj).flatMap(extractValues);\r\n }\r\n return [String(obj)];\r\n };\r\n\r\n return data.filter((item) => {\r\n let valuesToSearch: string[] = [];\r\n\r\n // ✅ If specific keys are provided → search only in those keys\r\n if (searchKeys.length > 0) {\r\n searchKeys.forEach((key) => {\r\n if (item[key] !== undefined) {\r\n valuesToSearch.push(...extractValues(item[key]));\r\n }\r\n });\r\n } else {\r\n // ✅ Otherwise → search in entire object\r\n valuesToSearch = extractValues(item);\r\n }\r\n\r\n return valuesToSearch.some((val) =>\r\n val.toLowerCase().includes(lowerSearchTerm),\r\n );\r\n });\r\n};\r\n","type ClassValue = string | null | undefined | false;\r\n\r\nexport const joinClasses = (...classes: ClassValue[]) =>\r\n classes.filter(Boolean).join(\" \");\r\n\r\nexport const crudClasses = {\r\n crudPage: {\r\n root: \"crud_page\",\r\n deleteContent: \"crud_page_delete_content\",\r\n },\r\n button: {\r\n root: \"crud_button\",\r\n },\r\n chip: {\r\n root: \"crud_chip\",\r\n },\r\n spinner: {\r\n root: \"crud_spinner\",\r\n },\r\n modal: {\r\n root: \"crud_modal\",\r\n overlay: \"crud_modal_overlay\",\r\n container: \"crud_modal_container\",\r\n header: \"crud_modal_header\",\r\n title: \"crud_modal_title\",\r\n closeButton: \"crud_modal_close_button\",\r\n body: \"crud_modal_body\",\r\n footer: \"crud_modal_footer\",\r\n actionButton: \"crud_modal_action_button\",\r\n loadingIndicator: \"crud_modal_loading_indicator\",\r\n },\r\n table: {\r\n root: \"crud_table\",\r\n toolbar: \"crud_table_toolbar\",\r\n searchField: \"crud_table_search_field\",\r\n searchInput: \"crud_table_search_input\",\r\n container: \"crud_table_container\",\r\n element: \"crud_table_element\",\r\n head: \"crud_table_head\",\r\n headRow: \"crud_table_head_row\",\r\n headCell: \"crud_table_head_cell\",\r\n body: \"crud_table_body\",\r\n row: \"crud_table_row\",\r\n cell: \"crud_table_cell\",\r\n noData: \"crud_table_no_data\",\r\n actionButton: \"crud_table_action_button\",\r\n menu: \"crud_table_menu\",\r\n menuItem: \"crud_table_menu_item\",\r\n pagination: \"crud_table_pagination\",\r\n },\r\n tableSkeleton: {\r\n root: \"crud_table_skeleton\",\r\n table: \"crud_table_skeleton_table\",\r\n },\r\n sortDropdown: {\r\n root: \"crud_sort_dropdown\",\r\n trigger: \"crud_sort_dropdown_trigger\",\r\n menu: \"crud_sort_dropdown_menu\",\r\n item: \"crud_sort_dropdown_item\",\r\n },\r\n imagePreview: {\r\n root: \"crud_image_preview\",\r\n container: \"crud_image_preview_container\",\r\n image: \"crud_image_preview_image\",\r\n },\r\n filterDrawer: {\r\n overlay: \"crud_filter_overlay\",\r\n panel: \"crud_filter_panel\",\r\n header: \"crud_filter_header\",\r\n body: \"crud_filter_body\",\r\n footer: \"crud_filter_footer\",\r\n },\r\n form: {\r\n root: \"crud_form\",\r\n loading: \"crud_form_loading\",\r\n },\r\n field: {\r\n wrapper: \"crud_field_wrapper\",\r\n label: \"crud_field_label\",\r\n input: \"crud_field_input\",\r\n error: \"crud_field_error\",\r\n },\r\n mediaPicker: {\r\n image: \"crud_media_image_picker\",\r\n multiImage: \"crud_media_multi_image_picker\",\r\n audio: \"crud_media_audio_picker\",\r\n video: \"crud_media_video_picker\",\r\n dropzone: \"crud_media_dropzone\",\r\n cropModal: \"crud_media_crop_modal\",\r\n },\r\n details: {\r\n root: \"crud_details\",\r\n container: \"crud_details_container\",\r\n row: \"crud_details_row\",\r\n },\r\n} as const;\r\n","import React from \"react\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\r\n className?: string;\r\n variant?: string;\r\n color?: string;\r\n size?: string;\r\n fullWidth?: boolean;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\r\n (\r\n {\r\n className = \"\",\r\n variant = \"contained\",\r\n color = \"default\",\r\n size = \"default\",\r\n fullWidth = false,\r\n children,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const baseStyles =\r\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\";\r\n\r\n const sizes: Record<string, string> = {\r\n sm: \"h-8 px-3 rounded-md text-sm\",\r\n md: \"h-9 px-4 rounded-md text-sm\",\r\n lg: \"h-11 px-6 rounded-md text-base\",\r\n xl: \"h-12 px-8 rounded-lg text-lg\",\r\n default: \"h-9 px-4 rounded-md text-sm\",\r\n };\r\n\r\n const colorVariants: Record<string, Record<string, string>> = {\r\n primary: {\r\n contained:\r\n \"bg-primary text-white hover:bg-primary-600 focus:ring-primary-500 shadow-sm\",\r\n outlined:\r\n \"border border-primary bg-transparent text-primary hover:bg-primary-50 focus:ring-primary-500\",\r\n text: \"bg-transparent text-primary hover:bg-primary-50 focus:ring-primary-500\",\r\n },\r\n success: {\r\n contained:\r\n \"bg-green-600 text-white hover:bg-green-700 focus:ring-green-500 shadow-sm\",\r\n outlined:\r\n \"border border-green-600 bg-transparent text-green-600 hover:bg-green-50 focus:ring-green-500\",\r\n text: \"bg-transparent text-green-600 hover:bg-green-50 focus:ring-green-500\",\r\n },\r\n error: {\r\n contained:\r\n \"bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 shadow-sm\",\r\n outlined:\r\n \"border border-red-600 bg-transparent text-red-600 hover:bg-red-50 focus:ring-red-500\",\r\n text: \"bg-transparent text-red-600 hover:bg-red-50 focus:ring-red-500\",\r\n },\r\n default: {\r\n contained:\r\n \"border bg-gray-200 text-gray-800 hover:bg-gray-300 focus:ring-gray-300 shadow-sm dark:border-gray-600 dark:bg-gray-700 dark:text-gray-100 dark:hover:bg-gray-600 dark:focus:ring-gray-600\",\r\n outlined:\r\n \"border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-300 dark:border-gray-600 dark:text-gray-200 dark:hover:bg-gray-700 dark:focus:ring-gray-500\",\r\n text: \"bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-gray-300 dark:text-gray-200 dark:hover:bg-gray-700 dark:focus:ring-gray-500\",\r\n },\r\n };\r\n\r\n const colorStyles =\r\n colorVariants[color]?.[variant] || colorVariants.default.contained;\r\n const sizeStyles = sizes[size] || sizes.default;\r\n\r\n const combinedClassName = joinClasses(\r\n crudClasses.button.root,\r\n baseStyles,\r\n colorStyles,\r\n sizeStyles,\r\n fullWidth ? \"w-full\" : \"\",\r\n className,\r\n );\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n type={props.type || \"button\"}\r\n className={combinedClassName}\r\n {...props}\r\n >\r\n {children}\r\n </button>\r\n );\r\n },\r\n);\r\n\r\nButton.displayName = \"Button\";\r\n\r\nexport default Button;\r\n","import { Info } from \"lucide-react\";\r\nimport React from \"react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface InputLabelProps {\r\n label: React.ReactNode;\r\n required?: boolean;\r\n infoText?: string;\r\n}\r\n\r\nexport default function InputLabel({\r\n label,\r\n required = false,\r\n infoText = \"\",\r\n}: InputLabelProps) {\r\n return (\r\n <>\r\n <label\r\n className={joinClasses(\r\n crudClasses.field.label,\r\n \"flex text-sm font-medium text-gray-700 dark:text-gray-300 mb-1\",\r\n )}\r\n >\r\n {label}\r\n {required && <span className=\"ml-1\">*</span>}\r\n\r\n {infoText && (\r\n <span className=\"ml-2 relative group inline-flex items-center cursor-pointer\">\r\n <Info className=\"w-4 h-4 text-gray-500 dark:text-gray-400\" />\r\n\r\n <span\r\n className=\"absolute left-1/2 top-full mt-2\r\n w-max max-w-xs bg-white text-black dark:bg-black dark:text-white text-xs\r\n rounded px-2 py-1 opacity-0 shadow-lg\r\n group-hover:opacity-100 transition-opacity\r\n duration-200 pointer-events-none z-50\"\r\n >\r\n {infoText}\r\n </span>\r\n </span>\r\n )}\r\n </label>\r\n </>\r\n );\r\n}\r\n","export interface CountryInterface {\r\n label: string;\r\n code: string;\r\n phone: string;\r\n pattern: string;\r\n mask: string;\r\n}\r\n\r\nexport const countries: CountryInterface[] = [\r\n {\r\n label: \"Afghanistan\",\r\n code: \"AF\",\r\n phone: \"93\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Aland Islands\",\r\n code: \"AX\",\r\n phone: \"358\",\r\n pattern: \"^[0-9]{6,10}$\",\r\n mask: \"### ### ### ##\",\r\n },\r\n {\r\n label: \"Albania\",\r\n code: \"AL\",\r\n phone: \"355\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Algeria\",\r\n code: \"DZ\",\r\n phone: \"213\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"American Samoa\",\r\n code: \"AS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Andorra\",\r\n code: \"AD\",\r\n phone: \"376\",\r\n pattern: \"^[0-9]{6,9}$\",\r\n mask: \"### ###\",\r\n },\r\n {\r\n label: \"Angola\",\r\n code: \"AO\",\r\n phone: \"244\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Anguilla\",\r\n code: \"AI\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Antarctica\",\r\n code: \"AQ\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Antigua and Barbuda\",\r\n code: \"AG\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Argentina\",\r\n code: \"AR\",\r\n phone: \"54\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Armenia\",\r\n code: \"AM\",\r\n phone: \"374\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Aruba\",\r\n code: \"AW\",\r\n phone: \"297\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Australia\",\r\n code: \"AU\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Austria\",\r\n code: \"AT\",\r\n phone: \"43\",\r\n pattern: \"^[0-9]{10,12}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Azerbaijan\",\r\n code: \"AZ\",\r\n phone: \"994\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Bahrain\",\r\n code: \"BH\",\r\n phone: \"973\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Bangladesh\",\r\n code: \"BD\",\r\n phone: \"880\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Barbados\",\r\n code: \"BB\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Belarus\",\r\n code: \"BY\",\r\n phone: \"375\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Belgium\",\r\n code: \"BE\",\r\n phone: \"32\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ## ##\",\r\n },\r\n {\r\n label: \"Belize\",\r\n code: \"BZ\",\r\n phone: \"501\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Benin\",\r\n code: \"BJ\",\r\n phone: \"229\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Bermuda\",\r\n code: \"BM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Bhutan\",\r\n code: \"BT\",\r\n phone: \"975\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Bolivia\",\r\n code: \"BO\",\r\n phone: \"591\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ### ##\",\r\n },\r\n {\r\n label: \"Bonaire, Sint Eustatius and Saba\",\r\n code: \"BQ\",\r\n phone: \"599\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Bosnia and Herzegovina\",\r\n code: \"BA\",\r\n phone: \"387\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Botswana\",\r\n code: \"BW\",\r\n phone: \"267\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Bouvet Island\",\r\n code: \"BV\",\r\n phone: \"0055\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Brazil\",\r\n code: \"BR\",\r\n phone: \"55\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"(##) #####-####\",\r\n },\r\n {\r\n label: \"British Indian Ocean Territory\",\r\n code: \"IO\",\r\n phone: \"246\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Brunei\",\r\n code: \"BN\",\r\n phone: \"673\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Bulgaria\",\r\n code: \"BG\",\r\n phone: \"359\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Burkina Faso\",\r\n code: \"BF\",\r\n phone: \"226\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Burundi\",\r\n code: \"BI\",\r\n phone: \"257\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Cambodia\",\r\n code: \"KH\",\r\n phone: \"855\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Cameroon\",\r\n code: \"CM\",\r\n phone: \"237\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"#### ## ##\",\r\n },\r\n {\r\n label: \"Canada\",\r\n code: \"CA\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Cape Verde\",\r\n code: \"CV\",\r\n phone: \"238\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Cayman Islands\",\r\n code: \"KY\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Central African Republic\",\r\n code: \"CF\",\r\n phone: \"236\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Chad\",\r\n code: \"TD\",\r\n phone: \"235\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Chile\",\r\n code: \"CL\",\r\n phone: \"56\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"China\",\r\n code: \"CN\",\r\n phone: \"86\",\r\n pattern: \"^[0-9]{11}$\",\r\n mask: \"### #### ####\",\r\n },\r\n {\r\n label: \"Christmas Island\",\r\n code: \"CX\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Cocos (Keeling) Islands\",\r\n code: \"CC\",\r\n phone: \"61\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Colombia\",\r\n code: \"CO\",\r\n phone: \"57\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Comoros\",\r\n code: \"KM\",\r\n phone: \"269\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ## ###\",\r\n },\r\n {\r\n label: \"Congo\",\r\n code: \"CG\",\r\n phone: \"242\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Cook Islands\",\r\n code: \"CK\",\r\n phone: \"682\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Costa Rica\",\r\n code: \"CR\",\r\n phone: \"506\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Croatia\",\r\n code: \"HR\",\r\n phone: \"385\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Cuba\",\r\n code: \"CU\",\r\n phone: \"53\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Curaçao\",\r\n code: \"CW\",\r\n phone: \"599\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Cyprus\",\r\n code: \"CY\",\r\n phone: \"357\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Czech Republic\",\r\n code: \"CZ\",\r\n phone: \"420\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Democratic Republic of the Congo\",\r\n code: \"CD\",\r\n phone: \"243\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Denmark\",\r\n code: \"DK\",\r\n phone: \"45\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Djibouti\",\r\n code: \"DJ\",\r\n phone: \"253\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"Dominica\",\r\n code: \"DM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Dominican Republic\",\r\n code: \"DO\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Ecuador\",\r\n code: \"EC\",\r\n phone: \"593\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Egypt\",\r\n code: \"EG\",\r\n phone: \"20\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"El Salvador\",\r\n code: \"SV\",\r\n phone: \"503\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Equatorial Guinea\",\r\n code: \"GQ\",\r\n phone: \"240\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Eritrea\",\r\n code: \"ER\",\r\n phone: \"291\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ### ##\",\r\n },\r\n {\r\n label: \"Estonia\",\r\n code: \"EE\",\r\n phone: \"372\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Eswatini\",\r\n code: \"SZ\",\r\n phone: \"268\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Ethiopia\",\r\n code: \"ET\",\r\n phone: \"251\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Falkland Islands\",\r\n code: \"FK\",\r\n phone: \"500\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Faroe Islands\",\r\n code: \"FO\",\r\n phone: \"298\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"### ###\",\r\n },\r\n {\r\n label: \"Fiji Islands\",\r\n code: \"FJ\",\r\n phone: \"679\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Finland\",\r\n code: \"FI\",\r\n phone: \"358\",\r\n pattern: \"^[0-9]{6,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"France\",\r\n code: \"FR\",\r\n phone: \"33\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"French Guiana\",\r\n code: \"GF\",\r\n phone: \"594\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"French Polynesia\",\r\n code: \"PF\",\r\n phone: \"689\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ## ##\",\r\n },\r\n {\r\n label: \"French Southern Territories\",\r\n code: \"TF\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Gabon\",\r\n code: \"GA\",\r\n phone: \"241\",\r\n pattern: \"^[0-9]{7,8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Georgia\",\r\n code: \"GE\",\r\n phone: \"995\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ## ##\",\r\n },\r\n {\r\n label: \"Germany\",\r\n code: \"DE\",\r\n phone: \"49\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Ghana\",\r\n code: \"GH\",\r\n phone: \"233\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Gibraltar\",\r\n code: \"GI\",\r\n phone: \"350\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Greece\",\r\n code: \"GR\",\r\n phone: \"30\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Greenland\",\r\n code: \"GL\",\r\n phone: \"299\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ## ##\",\r\n },\r\n {\r\n label: \"Grenada\",\r\n code: \"GD\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Guadeloupe\",\r\n code: \"GP\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Guam\",\r\n code: \"GU\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Guatemala\",\r\n code: \"GT\",\r\n phone: \"502\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Guernsey\",\r\n code: \"GG\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Guinea\",\r\n code: \"GN\",\r\n phone: \"224\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Guinea-Bissau\",\r\n code: \"GW\",\r\n phone: \"245\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Guyana\",\r\n code: \"GY\",\r\n phone: \"592\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Haiti\",\r\n code: \"HT\",\r\n phone: \"509\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Heard Island and McDonald Islands\",\r\n code: \"HM\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Honduras\",\r\n code: \"HN\",\r\n phone: \"504\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Hong Kong S.A.R.\",\r\n code: \"HK\",\r\n phone: \"852\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Hungary\",\r\n code: \"HU\",\r\n phone: \"36\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Iceland\",\r\n code: \"IS\",\r\n phone: \"354\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"India\",\r\n code: \"IN\",\r\n phone: \"91\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Indonesia\",\r\n code: \"ID\",\r\n phone: \"62\",\r\n pattern: \"^[0-9]{9,11}$\",\r\n mask: \"### #### ####\",\r\n },\r\n {\r\n label: \"Iran\",\r\n code: \"IR\",\r\n phone: \"98\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Iraq\",\r\n code: \"IQ\",\r\n phone: \"964\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Ireland\",\r\n code: \"IE\",\r\n phone: \"353\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Israel\",\r\n code: \"IL\",\r\n phone: \"972\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Italy\",\r\n code: \"IT\",\r\n phone: \"39\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Ivory Coast\",\r\n code: \"CI\",\r\n phone: \"225\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"Jamaica\",\r\n code: \"JM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Japan\",\r\n code: \"JP\",\r\n phone: \"81\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Jersey\",\r\n code: \"JE\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Jordan\",\r\n code: \"JO\",\r\n phone: \"962\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Kazakhstan\",\r\n code: \"KZ\",\r\n phone: \"7\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ## ##\",\r\n },\r\n {\r\n label: \"Kenya\",\r\n code: \"KE\",\r\n phone: \"254\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Kiribati\",\r\n code: \"KI\",\r\n phone: \"686\",\r\n pattern: \"^[0-9]{5,8}$\",\r\n mask: \"## ###\",\r\n },\r\n {\r\n label: \"Kosovo\",\r\n code: \"XK\",\r\n phone: \"383\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Kuwait\",\r\n code: \"KW\",\r\n phone: \"965\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Kyrgyzstan\",\r\n code: \"KG\",\r\n phone: \"996\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Laos\",\r\n code: \"LA\",\r\n phone: \"856\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Latvia\",\r\n code: \"LV\",\r\n phone: \"371\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Lebanon\",\r\n code: \"LB\",\r\n phone: \"961\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Lesotho\",\r\n code: \"LS\",\r\n phone: \"266\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Liberia\",\r\n code: \"LR\",\r\n phone: \"231\",\r\n pattern: \"^[0-9]{7,8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Libya\",\r\n code: \"LY\",\r\n phone: \"218\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Liechtenstein\",\r\n code: \"LI\",\r\n phone: \"423\",\r\n pattern: \"^[0-9]{7,9}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Lithuania\",\r\n code: \"LT\",\r\n phone: \"370\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ### ##\",\r\n },\r\n {\r\n label: \"Luxembourg\",\r\n code: \"LU\",\r\n phone: \"352\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Macau S.A.R.\",\r\n code: \"MO\",\r\n phone: \"853\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Madagascar\",\r\n code: \"MG\",\r\n phone: \"261\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## #####\",\r\n },\r\n {\r\n label: \"Malawi\",\r\n code: \"MW\",\r\n phone: \"265\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Malaysia\",\r\n code: \"MY\",\r\n phone: \"60\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Maldives\",\r\n code: \"MV\",\r\n phone: \"960\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Mali\",\r\n code: \"ML\",\r\n phone: \"223\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Malta\",\r\n code: \"MT\",\r\n phone: \"356\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Man (Isle of)\",\r\n code: \"IM\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Marshall Islands\",\r\n code: \"MH\",\r\n phone: \"692\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Martinique\",\r\n code: \"MQ\",\r\n phone: \"596\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Mauritania\",\r\n code: \"MR\",\r\n phone: \"222\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Mauritius\",\r\n code: \"MU\",\r\n phone: \"230\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Mayotte\",\r\n code: \"YT\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Mexico\",\r\n code: \"MX\",\r\n phone: \"52\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Micronesia\",\r\n code: \"FM\",\r\n phone: \"691\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Moldova\",\r\n code: \"MD\",\r\n phone: \"373\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Monaco\",\r\n code: \"MC\",\r\n phone: \"377\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ## ## ## ##\",\r\n },\r\n {\r\n label: \"Mongolia\",\r\n code: \"MN\",\r\n phone: \"976\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Montenegro\",\r\n code: \"ME\",\r\n phone: \"382\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Montserrat\",\r\n code: \"MS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Morocco\",\r\n code: \"MA\",\r\n phone: \"212\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Mozambique\",\r\n code: \"MZ\",\r\n phone: \"258\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Myanmar\",\r\n code: \"MM\",\r\n phone: \"95\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Namibia\",\r\n code: \"NA\",\r\n phone: \"264\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Nauru\",\r\n code: \"NR\",\r\n phone: \"674\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Nepal\",\r\n code: \"NP\",\r\n phone: \"977\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### #### ###\",\r\n },\r\n {\r\n label: \"Netherlands\",\r\n code: \"NL\",\r\n phone: \"31\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"New Caledonia\",\r\n code: \"NC\",\r\n phone: \"687\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"New Zealand\",\r\n code: \"NZ\",\r\n phone: \"64\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Nicaragua\",\r\n code: \"NI\",\r\n phone: \"505\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Niger\",\r\n code: \"NE\",\r\n phone: \"227\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Nigeria\",\r\n code: \"NG\",\r\n phone: \"234\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Niue\",\r\n code: \"NU\",\r\n phone: \"683\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Norfolk Island\",\r\n code: \"NF\",\r\n phone: \"672\",\r\n pattern: \"^[0-9]{6,11}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"North Korea\",\r\n code: \"KP\",\r\n phone: \"850\",\r\n pattern: \"^[0-9]{8,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"North Macedonia\",\r\n code: \"MK\",\r\n phone: \"389\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Northern Mariana Islands\",\r\n code: \"MP\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Norway\",\r\n code: \"NO\",\r\n phone: \"47\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Oman\",\r\n code: \"OM\",\r\n phone: \"968\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Pakistan\",\r\n code: \"PK\",\r\n phone: \"92\",\r\n pattern: \"^[0-9]{10,11}$\",\r\n mask: \"### #### ###\",\r\n },\r\n {\r\n label: \"Palau\",\r\n code: \"PW\",\r\n phone: \"680\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Palestinian Territory Occupied\",\r\n code: \"PS\",\r\n phone: \"970\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Panama\",\r\n code: \"PA\",\r\n phone: \"507\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Papua New Guinea\",\r\n code: \"PG\",\r\n phone: \"675\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Paraguay\",\r\n code: \"PY\",\r\n phone: \"595\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Peru\",\r\n code: \"PE\",\r\n phone: \"51\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Philippines\",\r\n code: \"PH\",\r\n phone: \"63\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Pitcairn Island\",\r\n code: \"PN\",\r\n phone: \"870\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Poland\",\r\n code: \"PL\",\r\n phone: \"48\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Portugal\",\r\n code: \"PT\",\r\n phone: \"351\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Puerto Rico\",\r\n code: \"PR\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Qatar\",\r\n code: \"QA\",\r\n phone: \"974\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Reunion\",\r\n code: \"RE\",\r\n phone: \"262\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Romania\",\r\n code: \"RO\",\r\n phone: \"40\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Russia\",\r\n code: \"RU\",\r\n phone: \"7\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ## ##\",\r\n },\r\n {\r\n label: \"Rwanda\",\r\n code: \"RW\",\r\n phone: \"250\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Saint Helena\",\r\n code: \"SH\",\r\n phone: \"290\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Saint Kitts and Nevis\",\r\n code: \"KN\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint Lucia\",\r\n code: \"LC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint Pierre and Miquelon\",\r\n code: \"PM\",\r\n phone: \"508\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ###\",\r\n },\r\n {\r\n label: \"Saint Vincent and the Grenadines\",\r\n code: \"VC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Saint-Barthelemy\",\r\n code: \"BL\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Saint-Martin (French part)\",\r\n code: \"MF\",\r\n phone: \"590\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"##### #####\",\r\n },\r\n {\r\n label: \"Samoa\",\r\n code: \"WS\",\r\n phone: \"685\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"San Marino\",\r\n code: \"SM\",\r\n phone: \"378\",\r\n pattern: \"^[0-9]{10,12}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"Sao Tome and Principe\",\r\n code: \"ST\",\r\n phone: \"239\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Saudi Arabia\",\r\n code: \"SA\",\r\n phone: \"966\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Senegal\",\r\n code: \"SN\",\r\n phone: \"221\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Serbia\",\r\n code: \"RS\",\r\n phone: \"381\",\r\n pattern: \"^[0-9]{8,9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Seychelles\",\r\n code: \"SC\",\r\n phone: \"248\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Sierra Leone\",\r\n code: \"SL\",\r\n phone: \"232\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ######\",\r\n },\r\n {\r\n label: \"Singapore\",\r\n code: \"SG\",\r\n phone: \"65\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Sint Maarten (Dutch part)\",\r\n code: \"SX\",\r\n phone: \"1721\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Slovakia\",\r\n code: \"SK\",\r\n phone: \"421\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Slovenia\",\r\n code: \"SI\",\r\n phone: \"386\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Solomon Islands\",\r\n code: \"SB\",\r\n phone: \"677\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Somalia\",\r\n code: \"SO\",\r\n phone: \"252\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"South Africa\",\r\n code: \"ZA\",\r\n phone: \"27\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"South Georgia\",\r\n code: \"GS\",\r\n phone: \"500\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"South Korea\",\r\n code: \"KR\",\r\n phone: \"82\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"South Sudan\",\r\n code: \"SS\",\r\n phone: \"211\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Spain\",\r\n code: \"ES\",\r\n phone: \"34\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Sri Lanka\",\r\n code: \"LK\",\r\n phone: \"94\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Sudan\",\r\n code: \"SD\",\r\n phone: \"249\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Suriname\",\r\n code: \"SR\",\r\n phone: \"597\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Svalbard and Jan Mayen Islands\",\r\n code: \"SJ\",\r\n phone: \"47\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"### ## ###\",\r\n },\r\n {\r\n label: \"Sweden\",\r\n code: \"SE\",\r\n phone: \"46\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Switzerland\",\r\n code: \"CH\",\r\n phone: \"41\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Syria\",\r\n code: \"SY\",\r\n phone: \"963\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Taiwan\",\r\n code: \"TW\",\r\n phone: \"886\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Tajikistan\",\r\n code: \"TJ\",\r\n phone: \"992\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ## ####\",\r\n },\r\n {\r\n label: \"Tanzania\",\r\n code: \"TZ\",\r\n phone: \"255\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Thailand\",\r\n code: \"TH\",\r\n phone: \"66\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"The Bahamas\",\r\n code: \"BS\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"The Gambia\",\r\n code: \"GM\",\r\n phone: \"220\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"### ####\",\r\n },\r\n {\r\n label: \"Timor-Leste\",\r\n code: \"TL\",\r\n phone: \"670\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"#### ####\",\r\n },\r\n {\r\n label: \"Togo\",\r\n code: \"TG\",\r\n phone: \"228\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ## ####\",\r\n },\r\n {\r\n label: \"Tokelau\",\r\n code: \"TK\",\r\n phone: \"690\",\r\n pattern: \"^[0-9]{4}$\",\r\n mask: \"####\",\r\n },\r\n {\r\n label: \"Tonga\",\r\n code: \"TO\",\r\n phone: \"676\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Trinidad and Tobago\",\r\n code: \"TT\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Tunisia\",\r\n code: \"TN\",\r\n phone: \"216\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Turkey\",\r\n code: \"TR\",\r\n phone: \"90\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Turkmenistan\",\r\n code: \"TM\",\r\n phone: \"993\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## #### ##\",\r\n },\r\n {\r\n label: \"Turks and Caicos Islands\",\r\n code: \"TC\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Tuvalu\",\r\n code: \"TV\",\r\n phone: \"688\",\r\n pattern: \"^[0-9]{5}$\",\r\n mask: \"#####\",\r\n },\r\n {\r\n label: \"Uganda\",\r\n code: \"UG\",\r\n phone: \"256\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Ukraine\",\r\n code: \"UA\",\r\n phone: \"380\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"United Arab Emirates\",\r\n code: \"AE\",\r\n phone: \"971\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"United Kingdom\",\r\n code: \"GB\",\r\n phone: \"44\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"#### ######\",\r\n },\r\n {\r\n label: \"United States\",\r\n code: \"US\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"United States Minor Outlying Islands\",\r\n code: \"UM\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Uruguay\",\r\n code: \"UY\",\r\n phone: \"598\",\r\n pattern: \"^[0-9]{8}$\",\r\n mask: \"## ### ###\",\r\n },\r\n {\r\n label: \"Uzbekistan\",\r\n code: \"UZ\",\r\n phone: \"998\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ## ##\",\r\n },\r\n {\r\n label: \"Vanuatu\",\r\n code: \"VU\",\r\n phone: \"678\",\r\n pattern: \"^[0-9]{7}$\",\r\n mask: \"##### ##\",\r\n },\r\n {\r\n label: \"Vatican City State (Holy See)\",\r\n code: \"VA\",\r\n phone: \"379\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"## #### ####\",\r\n },\r\n {\r\n label: \"Venezuela\",\r\n code: \"VE\",\r\n phone: \"58\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"### ### ####\",\r\n },\r\n {\r\n label: \"Vietnam\",\r\n code: \"VN\",\r\n phone: \"84\",\r\n pattern: \"^[0-9]{9,10}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Virgin Islands (British)\",\r\n code: \"VG\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Virgin Islands (US)\",\r\n code: \"VI\",\r\n phone: \"1\",\r\n pattern: \"^[0-9]{10}$\",\r\n mask: \"(###) ###-####\",\r\n },\r\n {\r\n label: \"Wallis and Futuna Islands\",\r\n code: \"WF\",\r\n phone: \"681\",\r\n pattern: \"^[0-9]{6}$\",\r\n mask: \"## ####\",\r\n },\r\n {\r\n label: \"Western Sahara\",\r\n code: \"EH\",\r\n phone: \"212\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## #### ###\",\r\n },\r\n {\r\n label: \"Yemen\",\r\n code: \"YE\",\r\n phone: \"967\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"### ### ###\",\r\n },\r\n {\r\n label: \"Zambia\",\r\n code: \"ZM\",\r\n phone: \"260\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n {\r\n label: \"Zimbabwe\",\r\n code: \"ZW\",\r\n phone: \"263\",\r\n pattern: \"^[0-9]{9}$\",\r\n mask: \"## ### ####\",\r\n },\r\n];\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { ChevronDown, Search, Check } from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { countries } from \"../../../data/countries\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SelectOption {\r\n label: string;\r\n value: any;\r\n code?: string;\r\n}\r\n\r\ninterface SelectProps {\r\n options?:\r\n | SelectOption[]\r\n | ((\r\n formData: Record<string, any>,\r\n ) => Promise<SelectOption[]> | SelectOption[]);\r\n value: any;\r\n defaultValue?: any;\r\n onChange: (value: any) => void;\r\n placeholder?: string;\r\n className?: string;\r\n disabled?: boolean;\r\n search?: boolean;\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n multiple?: boolean;\r\n dropdownMaxHeight?: string | number;\r\n formData: Record<string, any>;\r\n dependencyKey?: string;\r\n countriesList?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Select = ({\r\n options = [],\r\n value = \"\",\r\n defaultValue = \"\",\r\n onChange,\r\n placeholder = \"Select option\",\r\n className = \"\",\r\n disabled = false,\r\n search = false,\r\n label = \"\",\r\n required = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n multiple = false,\r\n dropdownMaxHeight = \"\",\r\n formData = {},\r\n countriesList = false,\r\n dependencyKey = \"\",\r\n errorMessage = \"\",\r\n}: SelectProps) => {\r\n const [open, setOpen] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [showAboveState, setShowAboveState] = useState(true);\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const optionsPanelRef = useRef<HTMLDivElement | null>(null);\r\n const searchInputRef = useRef<HTMLInputElement | null>(null);\r\n const [normalizedOptions, setNormalizedOptions] = useState<SelectOption[]>(\r\n [],\r\n );\r\n const [dropdownPosition, setDropdownPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n });\r\n\r\n const dropdownPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (dropdownRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n const initialVal = value || value === false ? value : defaultValue;\r\n\r\n const normalize = (val: any) => {\r\n if (val === null || val === undefined || val === \"\") return \"\";\r\n return typeof val === \"boolean\" ? String(val) : String(val ?? \"\");\r\n };\r\n\r\n const getCountrieslist = () => {\r\n const list = countries.map((obj) => ({\r\n value: obj.label,\r\n label: obj.label,\r\n code: obj.code,\r\n }));\r\n return list;\r\n };\r\n\r\n useEffect(\r\n () => {\r\n const loadOptions = async () => {\r\n if (countriesList == true) {\r\n setNormalizedOptions(getCountrieslist());\r\n } else if (typeof options === \"function\") {\r\n const result = await options(formData);\r\n setNormalizedOptions(result || []);\r\n } else {\r\n setNormalizedOptions(options || []);\r\n }\r\n };\r\n\r\n loadOptions();\r\n },\r\n dependencyKey ? [options, formData?.[dependencyKey]] : [options],\r\n );\r\n\r\n const normalizedValue = multiple\r\n ? (initialVal || []).map(normalize)\r\n : normalize(initialVal);\r\n\r\n const filteredOptions = normalizedOptions.filter((option) =>\r\n option.label.toLowerCase().includes(searchTerm.toLowerCase()),\r\n );\r\n\r\n const isSelected = (optionValue: any) => {\r\n const normalized = normalize(optionValue);\r\n if (multiple) {\r\n return (normalizedValue as string[]).includes(normalized);\r\n }\r\n return normalized === normalizedValue;\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(event.target as Node) &&\r\n !optionsPanelRef.current?.contains(event.target as Node)\r\n ) {\r\n setOpen(false);\r\n setSearchTerm(\"\");\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open || !dropdownRef.current) return;\r\n\r\n const updateDropdownPosition = () => {\r\n if (!dropdownRef.current) return;\r\n\r\n const rect = dropdownRef.current.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n const spaceBelow = viewportHeight - rect.bottom;\r\n const maxDropdownHeight =\r\n typeof dropdownMaxHeight === \"number\" ? dropdownMaxHeight : 200;\r\n const shouldShowAbove = spaceBelow < maxDropdownHeight;\r\n\r\n setShowAboveState(shouldShowAbove);\r\n setDropdownPosition({\r\n top: shouldShowAbove ? rect.top - 4 : rect.bottom + 4,\r\n left: rect.left,\r\n width: rect.width,\r\n });\r\n };\r\n\r\n updateDropdownPosition();\r\n window.addEventListener(\"resize\", updateDropdownPosition);\r\n window.addEventListener(\"scroll\", updateDropdownPosition, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", updateDropdownPosition);\r\n window.removeEventListener(\"scroll\", updateDropdownPosition, true);\r\n };\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n if (open && searchInputRef.current) {\r\n searchInputRef.current.focus();\r\n }\r\n }, [open]);\r\n\r\n const handleOptionClick = (optionValue: any) => {\r\n let finalValue = optionValue;\r\n if (optionValue === \"true\") finalValue = true;\r\n else if (optionValue === \"false\") finalValue = false;\r\n\r\n if (multiple) {\r\n const exists = (normalizedValue as string[]).includes(\r\n normalize(optionValue),\r\n );\r\n\r\n let newValues: any[];\r\n if (exists) {\r\n newValues = (Array.isArray(value) ? value : []).filter(\r\n (v) => normalize(v) !== normalize(optionValue),\r\n );\r\n } else {\r\n newValues = [...(Array.isArray(value) ? value : []), finalValue];\r\n }\r\n\r\n onChange?.(newValues);\r\n } else {\r\n onChange?.(finalValue);\r\n setOpen(false);\r\n }\r\n\r\n setSearchTerm(\"\");\r\n };\r\n\r\n const selectedLabels = multiple\r\n ? normalizedOptions\r\n .filter((opt) => isSelected(opt.value))\r\n .map((opt) => opt.label)\r\n .join(\", \")\r\n : normalizedOptions.find((opt) => isSelected(opt.value))?.label;\r\n\r\n useEffect(() => {\r\n if (initialVal || initialVal === false) {\r\n setTimeout(() => {\r\n onChange?.(initialVal);\r\n }, 100);\r\n }\r\n }, []);\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n\r\n <div\r\n className={joinClasses(crudClasses.field.input, \"relative\", className)}\r\n ref={dropdownRef}\r\n >\r\n <select\r\n name=\"hidden_select_for_validation\"\r\n value={\r\n multiple\r\n ? selectedLabels\r\n ? selectedLabels.split(\", \")\r\n : []\r\n : selectedLabels || \"\"\r\n }\r\n required={required}\r\n multiple={multiple}\r\n id={`field-${name}`}\r\n className=\"absolute opacity-0 right-1/2 top-[80%] -translate-x-1/2 -translate-y-1/2 pointer-events-none h-[10px]\"\r\n onChange={() => {}}\r\n >\r\n {multiple ? (\r\n selectedLabels?.split(\", \").map((label) => (\r\n <option key={label} value={label}>\r\n {label}\r\n </option>\r\n ))\r\n ) : (\r\n <option hidden value={selectedLabels}>\r\n {selectedLabels}\r\n </option>\r\n )}\r\n </select>\r\n <button\r\n type=\"button\"\r\n onClick={() => !disabled && setOpen(!open)}\r\n disabled={disabled}\r\n className={`w-full h-10 px-3 border border-gray-300 dark:border-gray-600 rounded-md text-left text-sm flex items-center justify-between \r\n ${\r\n !selectedLabels\r\n ? \"text-gray-500 dark:text-gray-400\"\r\n : \"dark:text-white\"\r\n } \r\n ${disabled ? \"opacity-50 cursor-not-allowed\" : \"dark:bg-gray-700\"}\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n <span className=\"truncate\">{selectedLabels || placeholder}</span>\r\n\r\n <ChevronDown\r\n className={`w-4 h-4 transition-transform ${\r\n open ? \"rotate-180\" : \"\"\r\n }`}\r\n />\r\n </button>\r\n\r\n {open &&\r\n dropdownPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={optionsPanelRef}\r\n className=\"fixed z-50 border rounded-md bg-white dark:bg-gray-700 shadow-lg\"\r\n style={{\r\n top: dropdownPosition.top,\r\n left: dropdownPosition.left,\r\n width: dropdownPosition.width,\r\n transform: showAboveState ? \"translateY(-100%)\" : undefined,\r\n }}\r\n >\r\n {search && (\r\n <div className=\"p-2 border-b border-gray-200 dark:border-gray-600\">\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400\" />\r\n <input\r\n ref={searchInputRef}\r\n type=\"text\"\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n placeholder=\"Search...\"\r\n className=\"w-full pl-9 pr-3 py-2 text-sm border rounded-md bg-white dark:bg-gray-800 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none\"\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div\r\n className=\"max-h-40 overflow-y-auto\"\r\n style={{\r\n maxHeight: dropdownMaxHeight || \"\",\r\n }}\r\n >\r\n {filteredOptions.length > 0 ? (\r\n filteredOptions.map((option) => (\r\n <button\r\n key={String(option.value)}\r\n type=\"button\"\r\n onClick={() => handleOptionClick(String(option.value))}\r\n className={`w-full px-3 py-2 text-left text-sm flex items-center justify-between hover:bg-gray-100 dark:hover:bg-gray-600 \r\n ${\r\n isSelected(option.value)\r\n ? \"bg-blue-50 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300\"\r\n : \"\"\r\n }`}\r\n >\r\n <div className=\"flex gap-2 items-center\">\r\n {countriesList && option?.code && (\r\n <img\r\n src={`https://flagcdn.com/w20/${option?.code.toLowerCase()}.png`}\r\n alt={option.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n )}\r\n <span>{option.label}</span>\r\n </div>\r\n\r\n {multiple && isSelected(option.value) && (\r\n <Check className=\"w-4 h-4\" />\r\n )}\r\n </button>\r\n ))\r\n ) : (\r\n <div className=\"px-3 py-2 text-sm text-gray-500 dark:text-gray-400\">\r\n No options found\r\n </div>\r\n )}\r\n </div>\r\n </div>,\r\n dropdownPortalTarget,\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Select;\r\n","import React, { useEffect } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SwitchProps {\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n value: boolean;\r\n onChange: (checked: boolean) => void;\r\n disabled?: boolean;\r\n name: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\r\n (\r\n {\r\n label,\r\n required,\r\n parentClass = \"col-span-12\",\r\n className = \"\",\r\n value = false,\r\n onChange,\r\n disabled = false,\r\n errorMessage = \"\",\r\n name,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n useEffect(() => {\r\n let initialVal;\r\n initialVal = value || false;\r\n setTimeout(() => {\r\n onChange?.(initialVal);\r\n }, 100);\r\n }, []);\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n \"flex justify-between\",\r\n parentClass,\r\n )}\r\n >\r\n {label && <InputLabel label={label} required={required} />}\r\n\r\n <label className=\"relative inline-flex items-center cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n ref={ref}\r\n id={`field-${name}`}\r\n className={joinClasses(crudClasses.field.input, \"sr-only peer\")}\r\n checked={value}\r\n onChange={(e) => onChange?.(e.target.checked)}\r\n disabled={disabled}\r\n {...props}\r\n />\r\n\r\n <div\r\n className={`\r\n w-11 h-6 bg-gray-200 peer-focus:outline-none\r\n rounded-full peer dark:bg-gray-700\r\n peer-checked:bg-primary-600\r\n peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\r\n transition-colors duration-200\r\n ${errorMessage ? \"border-red-500\" : \"\"}\r\n ${className}\r\n `}\r\n ></div>\r\n\r\n <div\r\n className=\"\r\n absolute left-1 top-1\r\n w-4 h-4 bg-white rounded-full\r\n transition-transform duration-200\r\n peer-checked:translate-x-5\r\n \"\r\n ></div>\r\n </label>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n\r\nSwitch.displayName = \"Switch\";\r\n\r\nexport { Switch };\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport { countries, CountryInterface } from \"../../../data/countries\";\r\nimport { ChevronDown, Search } from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface PhoneInputProps {\r\n label?: string;\r\n value: string;\r\n name: string;\r\n parentClass?: string;\r\n onChange: (value: string) => void;\r\n disabled?: boolean;\r\n required?: boolean;\r\n placeholder?: string;\r\n search?: boolean;\r\n countriesList?: boolean;\r\n defaultCountry?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nexport default function PhoneInput({\r\n label = \"\",\r\n value = \"\",\r\n name = \"\",\r\n parentClass = \"\",\r\n onChange,\r\n disabled = false,\r\n required = false,\r\n placeholder = \"Phone number\",\r\n search = false,\r\n countriesList = false,\r\n defaultCountry = \"\",\r\n errorMessage = \"\",\r\n}: PhoneInputProps) {\r\n const find_country_with_code = (countryCode: string) => {\r\n return (countries as CountryInterface[]).find(\r\n (obj) => obj.code == countryCode,\r\n );\r\n };\r\n\r\n const [selectedCountry, setSelectedCountry] = useState<CountryInterface>(\r\n find_country_with_code(defaultCountry) ||\r\n (countries as CountryInterface[])[0],\r\n );\r\n const [fullNumber, setFullNumber] = useState(\"\");\r\n const [localValue, setLocalValue] = useState(\"\");\r\n const [open, setOpen] = useState(false);\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const dropdownRef = useRef<HTMLDivElement | null>(null);\r\n const optionsPanelRef = useRef<HTMLDivElement | null>(null);\r\n const [dropdownPosition, setDropdownPosition] = useState({\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n });\r\n\r\n const dropdownPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (dropdownRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n // Apply mask to phone number\r\n const applyMask = (digits: string, mask: string): string => {\r\n let result = \"\";\r\n let digitIndex = 0;\r\n\r\n for (let i = 0; i < mask.length && digitIndex < digits.length; i++) {\r\n if (mask[i] === \"#\") {\r\n result += digits[digitIndex];\r\n digitIndex++;\r\n } else {\r\n result += mask[i];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // Handle input change\r\n const handleNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const rawValue = e.target.value;\r\n const digits = rawValue.replace(/\\D/g, \"\");\r\n\r\n if (countriesList && selectedCountry?.mask) {\r\n // Apply mask\r\n const maskedValue = applyMask(digits, selectedCountry.mask);\r\n setLocalValue(maskedValue);\r\n onChange?.(\"+\" + selectedCountry.phone + \" \" + maskedValue);\r\n\r\n // Update parent with unmasked value\r\n const unmaskedValue = maskedValue.replace(/\\D/g, \"\");\r\n setFullNumber(unmaskedValue);\r\n } else {\r\n // No mask, just update with digits\r\n setLocalValue(digits);\r\n setFullNumber(digits);\r\n if (selectedCountry && onChange) {\r\n onChange(\"+\" + selectedCountry.phone + \" \" + digits);\r\n } else {\r\n onChange?.(digits);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (typeof value === \"string\" && value.startsWith(\"+\")) {\r\n const match = (countries as CountryInterface[])\r\n .filter((c) => value.startsWith(\"+\" + c.phone))\r\n .sort((a, b) => b.phone.length - a.phone.length)[0];\r\n if (match) {\r\n setSelectedCountry(match);\r\n let rawValue = value.replace(\"+\" + match.phone, \"\").replaceAll(\" \", \"\");\r\n setFullNumber(rawValue);\r\n setLocalValue(applyMask(rawValue, match.mask));\r\n return;\r\n }\r\n }\r\n setFullNumber(value || \"\");\r\n setLocalValue(value || \"\");\r\n }, []);\r\n\r\n const handleCountrySelect = (country: CountryInterface) => {\r\n setSelectedCountry(country);\r\n if (onChange) onChange(\"+\" + country.phone + \" \" + fullNumber);\r\n setOpen(false);\r\n setSearchTerm(\"\");\r\n };\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(e.target as Node) &&\r\n !optionsPanelRef.current?.contains(e.target as Node)\r\n )\r\n setOpen(false);\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open || !dropdownRef.current) return;\r\n\r\n const updateDropdownPosition = () => {\r\n if (!dropdownRef.current) return;\r\n\r\n const rect = dropdownRef.current.getBoundingClientRect();\r\n setDropdownPosition({\r\n top: rect.bottom + 4,\r\n left: rect.left,\r\n width: rect.width,\r\n });\r\n };\r\n\r\n updateDropdownPosition();\r\n window.addEventListener(\"resize\", updateDropdownPosition);\r\n window.addEventListener(\"scroll\", updateDropdownPosition, true);\r\n\r\n return () => {\r\n window.removeEventListener(\"resize\", updateDropdownPosition);\r\n window.removeEventListener(\"scroll\", updateDropdownPosition, true);\r\n };\r\n }, [open]);\r\n\r\n const filteredCountries = (countries as CountryInterface[]).filter(\r\n (c) =>\r\n c.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\r\n c.phone.includes(searchTerm),\r\n );\r\n\r\n if (!countriesList) {\r\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const input = e.target.value.replace(/[^+\\d]/g, \"\");\r\n const formatted = input.startsWith(\"+\")\r\n ? \"+\" + input.replace(/[+]/g, \"\").slice(0)\r\n : input;\r\n onChange?.(formatted);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <input\r\n type=\"text\"\r\n value={value}\r\n onChange={handleInputChange}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n required={required}\r\n className=\"w-full h-10 px-3 text-sm border border-gray-300 dark:border-gray-600 rounded-md \r\n bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:outline-none \r\n focus:ring-1 focus:ring-blue-300 dark:focus:ring-blue-200\"\r\n inputMode=\"tel\"\r\n pattern=\"^\\+\\d{1,15}$\"\r\n />\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div className=\"relative \" ref={dropdownRef}>\r\n <div\r\n className={`h-[40px] flex items-center border rounded-md px-2 bg-white dark:bg-gray-700 transition-all\r\n ${\r\n open\r\n ? \"ring-0.5 ring-blue-100 border-blue-300\"\r\n : \"border-gray-300 dark:border-gray-600\"\r\n }\r\n ${disabled ? \"opacity-60 cursor-not-allowed\" : \"\"}\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n <button\r\n type=\"button\"\r\n disabled={disabled}\r\n onClick={() => setOpen(!open)}\r\n className=\"flex items-center gap-1 pr-2 border-r border-gray-300 dark:border-gray-700 focus:outline-none\"\r\n >\r\n {selectedCountry ? (\r\n <img\r\n src={`https://flagcdn.com/w20/${selectedCountry.code.toLowerCase()}.png`}\r\n alt={selectedCountry.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n ) : (\r\n <span className=\"text-gray-400 text-xs\">🌐</span>\r\n )}\r\n <ChevronDown className=\"w-3 h-3 text-gray-500\" />\r\n </button>\r\n\r\n {selectedCountry && (\r\n <span className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 whitespace-nowrap\">\r\n +{selectedCountry.phone}\r\n </span>\r\n )}\r\n\r\n <input\r\n type=\"tel\"\r\n value={localValue}\r\n onChange={handleNumberChange}\r\n required={required}\r\n id={`field-${name}`}\r\n disabled={disabled || !selectedCountry}\r\n placeholder={\r\n !selectedCountry\r\n ? \"Select a country\"\r\n : placeholder || \"Enter phone number\"\r\n }\r\n className={`flex-1 ml-2 bg-transparent outline-none text-sm text-gray-800 dark:text-gray-100 placeholder-gray-400`}\r\n // pattern={selectedCountry?.pattern}\r\n />\r\n\r\n <input\r\n type=\"tel\"\r\n required={required}\r\n tabIndex={-1}\r\n readOnly\r\n value={\r\n selectedCountry && fullNumber\r\n ? \"+\" + selectedCountry.phone + fullNumber\r\n : \"\"\r\n }\r\n style={{\r\n position: \"absolute\",\r\n opacity: 0,\r\n pointerEvents: \"none\",\r\n height: 0,\r\n }}\r\n onChange={() => {}}\r\n />\r\n </div>\r\n\r\n {open &&\r\n dropdownPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={optionsPanelRef}\r\n className=\"fixed border border-gray-300 dark:border-gray-700 rounded-md bg-white dark:bg-gray-700 shadow-lg z-50 max-h-60 overflow-y-auto\"\r\n style={{\r\n top: dropdownPosition.top,\r\n left: dropdownPosition.left,\r\n width: dropdownPosition.width,\r\n }}\r\n >\r\n {search && (\r\n <div className=\"p-2 border-b border-gray-200 dark:border-gray-700\">\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400\" />\r\n <input\r\n type=\"text\"\r\n value={searchTerm}\r\n onChange={(e) => setSearchTerm(e.target.value)}\r\n placeholder=\"Search country...\"\r\n className=\"w-full pl-9 pr-3 py-2 text-sm border rounded-md bg-white dark:bg-gray-800 dark:text-white placeholder-gray-500 dark:placeholder-gray-400 focus:outline-none \"\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {filteredCountries.map((c) => (\r\n <button\r\n key={c.code}\r\n type=\"button\"\r\n onClick={() => handleCountrySelect(c)}\r\n className=\"w-full flex items-center gap-2 px-2 py-1 text-sm hover:bg-blue-50 dark:hover:bg-gray-700 text-gray-800 dark:text-gray-100\"\r\n >\r\n <img\r\n src={`https://flagcdn.com/w20/${c.code.toLowerCase()}.png`}\r\n alt={c.code}\r\n className=\"w-5 h-3 object-cover\"\r\n />\r\n <span>\r\n {c.label} (+{c.phone})\r\n </span>\r\n </button>\r\n ))}\r\n </div>,\r\n dropdownPortalTarget,\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n errorMessage?: string;\r\n name: string;\r\n}\r\n\r\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\r\n (\r\n { className = \"\", label, required, errorMessage = \"\", name, ...props },\r\n ref,\r\n ) => {\r\n const combinedClassName = joinClasses(\r\n crudClasses.field.input,\r\n \"placeholder-gray-400 dark:placeholder-gray-400\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n className,\r\n );\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n props.parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div className=\"relative\">\r\n <textarea\r\n className={combinedClassName}\r\n ref={ref}\r\n id={`field-${name}`}\r\n required={required}\r\n {...props}\r\n />\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nTextArea.displayName = \"TextArea\";\r\n\r\nexport { TextArea };\r\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n * Provides entirely client-side User Agent and OS detection. You should prefer\n * the non-deprecated UserAgent module when possible, which exposes our\n * authoritative server-side PHP-based detection to the client.\n *\n * Usage is straightforward:\n *\n * if (UserAgent_DEPRECATED.ie()) {\n * // IE\n * }\n *\n * You can also do version checks:\n *\n * if (UserAgent_DEPRECATED.ie() >= 7) {\n * // IE7 or better\n * }\n *\n * The browser functions will return NaN if the browser does not match, so\n * you can also do version compares the other way:\n *\n * if (UserAgent_DEPRECATED.ie() < 7) {\n * // IE6 or worse\n * }\n *\n * Note that the version is a float and may include a minor version number,\n * so you should always use range operators to perform comparisons, not\n * strict equality.\n *\n * **Note:** You should **strongly** prefer capability detection to browser\n * version detection where it's reasonable:\n *\n * http://www.quirksmode.org/js/support.html\n *\n * Further, we have a large number of mature wrapper functions and classes\n * which abstract away many browser irregularities. Check the documentation,\n * grep for things, or ask on javascript@lists.facebook.com before writing yet\n * another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n if (_populated) {\n return;\n }\n\n _populated = true;\n\n // To work around buggy JS libraries that can't handle multi-digit\n // version numbers, Opera 10's user agent string claims it's Opera\n // 9, then later includes a Version/X.Y field:\n //\n // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n var uas = navigator.userAgent;\n var agent = /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(uas);\n var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n _ipad = /\\b(iP[ao]d)/.exec(uas);\n _android = /Android/i.exec(uas);\n _native = /FBAN\\/\\w+;/i.exec(uas);\n _mobile = /Mobile/i.exec(uas);\n\n // Note that the IE team blog would have you believe you should be checking\n // for 'Win64; x64'. But MSDN then reveals that you can actually be coming\n // from either x64 or ia64; so ultimately, you should just check for Win64\n // as in indicator of whether you're in 64-bit IE. 32-bit IE on 64-bit\n // Windows will send 'WOW64' instead.\n _win64 = !!(/Win64/.exec(uas));\n\n if (agent) {\n _ie = agent[1] ? parseFloat(agent[1]) : (\n agent[5] ? parseFloat(agent[5]) : NaN);\n // IE compatibility mode\n if (_ie && document && document.documentMode) {\n _ie = document.documentMode;\n }\n // grab the \"true\" ie version from the trident token if available\n var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n if (_webkit) {\n // We do not add the regexp to the above test, because it will always\n // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n // the userAgent string.\n agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n } else {\n _chrome = NaN;\n }\n } else {\n _ie = _firefox = _opera = _chrome = _webkit = NaN;\n }\n\n if (os) {\n if (os[1]) {\n // Detect OS X version. If no version number matches, set _osx to true.\n // Version examples: 10, 10_6_1, 10.7\n // Parses version number as a float, taking only first two sets of\n // digits. If only one set of digits is found, returns just the major\n // version number.\n var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n } else {\n _osx = false;\n }\n _windows = !!os[2];\n _linux = !!os[3];\n } else {\n _osx = _windows = _linux = false;\n }\n}\n\nvar UserAgent_DEPRECATED = {\n\n /**\n * Check if the UA is Internet Explorer.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n ie: function() {\n return _populate() || _ie;\n },\n\n /**\n * Check if we're in Internet Explorer compatibility mode.\n *\n * @return bool true if in compatibility mode, false if\n * not compatibility mode or not ie\n */\n ieCompatibilityMode: function() {\n return _populate() || (_ie_real_version > _ie);\n },\n\n\n /**\n * Whether the browser is 64-bit IE. Really, this is kind of weak sauce; we\n * only need this because Skype can't handle 64-bit IE yet. We need to remove\n * this when we don't need it -- tracked by #601957.\n */\n ie64: function() {\n return UserAgent_DEPRECATED.ie() && _win64;\n },\n\n /**\n * Check if the UA is Firefox.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n firefox: function() {\n return _populate() || _firefox;\n },\n\n\n /**\n * Check if the UA is Opera.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n opera: function() {\n return _populate() || _opera;\n },\n\n\n /**\n * Check if the UA is WebKit.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n webkit: function() {\n return _populate() || _webkit;\n },\n\n /**\n * For Push\n * WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n */\n safari: function() {\n return UserAgent_DEPRECATED.webkit();\n },\n\n /**\n * Check if the UA is a Chrome browser.\n *\n *\n * @return float|NaN Version number (if match) or NaN.\n */\n chrome : function() {\n return _populate() || _chrome;\n },\n\n\n /**\n * Check if the user is running Windows.\n *\n * @return bool `true' if the user's OS is Windows.\n */\n windows: function() {\n return _populate() || _windows;\n },\n\n\n /**\n * Check if the user is running Mac OS X.\n *\n * @return float|bool Returns a float if a version number is detected,\n * otherwise true/false.\n */\n osx: function() {\n return _populate() || _osx;\n },\n\n /**\n * Check if the user is running Linux.\n *\n * @return bool `true' if the user's OS is some flavor of Linux.\n */\n linux: function() {\n return _populate() || _linux;\n },\n\n /**\n * Check if the user is running on an iPhone or iPod platform.\n *\n * @return bool `true' if the user is running some flavor of the\n * iPhone OS.\n */\n iphone: function() {\n return _populate() || _iphone;\n },\n\n mobile: function() {\n return _populate() || (_iphone || _ipad || _android || _mobile);\n },\n\n nativeApp: function() {\n // webviews inside of the native apps\n return _populate() || _native;\n },\n\n android: function() {\n return _populate() || _android;\n },\n\n ipad: function() {\n return _populate() || _ipad;\n }\n};\n\nmodule.exports = UserAgent_DEPRECATED;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\n'use strict';\n\nvar canUseDOM = !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners:\n canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature =\n document.implementation &&\n document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM ||\n capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\n'use strict';\n\nvar UserAgent_DEPRECATED = require('./UserAgent_DEPRECATED');\n\nvar isEventSupported = require('./isEventSupported');\n\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks. It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n * 'wheel' -- Chrome(31+), FF(17+), IE(9+)\n * 'mousewheel' -- Chrome, IE(6+), Opera, Safari\n * 'MozMousePixelScroll' -- FF(3.5 only!) (2010-2013) -- don't bother!\n * 'DOMMouseScroll' -- FF(0.9.7+) since 2003\n *\n * So what to do? The is the best:\n *\n * normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas. This code will return an object with properties:\n *\n * spinX -- normalized spin speed (use for zoom) - x plane\n * spinY -- \" - y plane\n * pixelX -- normalized distance (to pixels) - x plane\n * pixelY -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages). Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds. Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n * - spin is trying to normalize how far the wheel was spun (or trackpad\n * dragged). This is super useful for zoom support where you want to\n * throw away the chunky scroll steps on the PC and make those equal to\n * the slow and smooth tiny steps on the Mac. Key data: This code tries to\n * resolve a single slow step on a wheel to 1.\n *\n * - pixel is normalizing the desired scroll delta in pixel units. You'll\n * get the crazy differences between browsers, but at least it'll be in\n * pixels!\n *\n * - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT. This\n * should translate to positive value zooming IN, negative zooming OUT.\n * This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n * - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n * with a mouse. It results in side-scrolling in the browser by default.\n *\n * - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n * - I dropped spinZ/pixelZ. It is supported by the DOM 3 'wheel' event and\n * probably is by browsers in conjunction with fancy 3D controllers .. but\n * you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n * OS X + Chrome (mouse) - 4 pixel delta (wheelDelta -120)\n * OS X + Safari (mouse) - N/A pixel delta (wheelDelta -12)\n * OS X + Firefox (mouse) - 0.1 line delta (wheelDelta N/A)\n * Win8 + Chrome (mouse) - 100 pixel delta (wheelDelta -120)\n * Win8 + Firefox (mouse) - 3 line delta (wheelDelta -120)\n *\n * On the trackpad:\n *\n * OS X + Chrome (trackpad) - 2 pixel delta (wheelDelta -6)\n * OS X + Firefox (trackpad) - 1 pixel delta (wheelDelta N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ. Some browsers provide other values to maintain\n * backward compatibility with older events. Those other values help us\n * better normalize spin speed. Example of what the browsers provide:\n *\n * | event.wheelDelta | event.detail\n * ------------------+------------------+--------------\n * Safari v5/OS X | -120 | 0\n * Safari v5/Win7 | -120 | 0\n * Chrome v17/OS X | -120 | 0\n * Chrome v17/Win7 | -120 | 0\n * IE9/Win7 | -120 | undefined\n * Firefox v4/OS X | undefined | 1\n * Firefox v4/Win7 | undefined | 3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n var sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ( 'axis' in event && event.axis === event.HORIZONTAL_AXIS ) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return { spinX : sX,\n spinY : sY,\n pixelX : pX,\n pixelY : pY };\n}\n\n\n/**\n * The best combination if you prefer spinX + spinY normalization. It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function() /*string*/ {\n return (UserAgent_DEPRECATED.firefox())\n ? 'DOMMouseScroll'\n : (isEventSupported('wheel'))\n ? 'wheel'\n : 'mousewheel';\n};\n\nmodule.exports = normalizeWheel;\n","module.exports = require('./src/normalizeWheel.js');\n","import { __assign, __extends } from 'tslib';\nimport * as React from 'react';\nimport normalizeWheel from 'normalize-wheel';\n\n/**\r\n * Compute the dimension of the crop area based on media size,\r\n * aspect ratio and optionally rotation\r\n */\nfunction getCropSize(mediaWidth, mediaHeight, containerWidth, containerHeight, aspect, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaWidth, mediaHeight, rotation),\n width = _a.width,\n height = _a.height;\n var fittingWidth = Math.min(width, containerWidth);\n var fittingHeight = Math.min(height, containerHeight);\n if (fittingWidth > fittingHeight * aspect) {\n return {\n width: fittingHeight * aspect,\n height: fittingHeight\n };\n }\n return {\n width: fittingWidth,\n height: fittingWidth / aspect\n };\n}\n/**\r\n * Compute media zoom.\r\n * We fit the media into the container with \"max-width: 100%; max-height: 100%;\"\r\n */\nfunction getMediaZoom(mediaSize) {\n // Take the axis with more pixels to improve accuracy\n return mediaSize.width > mediaSize.height ? mediaSize.width / mediaSize.naturalWidth : mediaSize.height / mediaSize.naturalHeight;\n}\n/**\r\n * Ensure a new media position stays in the crop area.\r\n */\nfunction restrictPosition(position, mediaSize, cropSize, zoom, rotation) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var _a = rotateSize(mediaSize.width, mediaSize.height, rotation),\n width = _a.width,\n height = _a.height;\n return {\n x: restrictPositionCoord(position.x, width, cropSize.width, zoom),\n y: restrictPositionCoord(position.y, height, cropSize.height, zoom)\n };\n}\nfunction restrictPositionCoord(position, mediaSize, cropSize, zoom) {\n var maxPosition = mediaSize * zoom / 2 - cropSize / 2;\n return clamp(position, -maxPosition, maxPosition);\n}\nfunction getDistanceBetweenPoints(pointA, pointB) {\n return Math.sqrt(Math.pow(pointA.y - pointB.y, 2) + Math.pow(pointA.x - pointB.x, 2));\n}\nfunction getRotationBetweenPoints(pointA, pointB) {\n return Math.atan2(pointB.y - pointA.y, pointB.x - pointA.x) * 180 / Math.PI;\n}\n/**\r\n * Compute the output cropped area of the media in percentages and pixels.\r\n * x/y are the top-left coordinates on the src media\r\n */\nfunction computeCroppedArea(crop, mediaSize, cropSize, aspect, zoom, rotation, restrictPosition) {\n if (rotation === void 0) {\n rotation = 0;\n }\n if (restrictPosition === void 0) {\n restrictPosition = true;\n }\n // if the media is rotated by the user, we cannot limit the position anymore\n // as it might need to be negative.\n var limitAreaFn = restrictPosition ? limitArea : noOp;\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n // calculate the crop area in percentages\n // in the rotated space\n var croppedAreaPercentages = {\n x: limitAreaFn(100, ((mediaBBoxSize.width - cropSize.width / zoom) / 2 - crop.x / zoom) / mediaBBoxSize.width * 100),\n y: limitAreaFn(100, ((mediaBBoxSize.height - cropSize.height / zoom) / 2 - crop.y / zoom) / mediaBBoxSize.height * 100),\n width: limitAreaFn(100, cropSize.width / mediaBBoxSize.width * 100 / zoom),\n height: limitAreaFn(100, cropSize.height / mediaBBoxSize.height * 100 / zoom)\n };\n // we compute the pixels size naively\n var widthInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.width, croppedAreaPercentages.width * mediaNaturalBBoxSize.width / 100));\n var heightInPixels = Math.round(limitAreaFn(mediaNaturalBBoxSize.height, croppedAreaPercentages.height * mediaNaturalBBoxSize.height / 100));\n var isImgWiderThanHigh = mediaNaturalBBoxSize.width >= mediaNaturalBBoxSize.height * aspect;\n // then we ensure the width and height exactly match the aspect (to avoid rounding approximations)\n // if the media is wider than high, when zoom is 0, the crop height will be equals to image height\n // thus we want to compute the width from the height and aspect for accuracy.\n // Otherwise, we compute the height from width and aspect.\n var sizePixels = isImgWiderThanHigh ? {\n width: Math.round(heightInPixels * aspect),\n height: heightInPixels\n } : {\n width: widthInPixels,\n height: Math.round(widthInPixels / aspect)\n };\n var croppedAreaPixels = __assign(__assign({}, sizePixels), {\n x: Math.round(limitAreaFn(mediaNaturalBBoxSize.width - sizePixels.width, croppedAreaPercentages.x * mediaNaturalBBoxSize.width / 100)),\n y: Math.round(limitAreaFn(mediaNaturalBBoxSize.height - sizePixels.height, croppedAreaPercentages.y * mediaNaturalBBoxSize.height / 100))\n });\n return {\n croppedAreaPercentages: croppedAreaPercentages,\n croppedAreaPixels: croppedAreaPixels\n };\n}\n/**\r\n * Ensure the returned value is between 0 and max\r\n */\nfunction limitArea(max, value) {\n return Math.min(max, Math.max(0, value));\n}\nfunction noOp(_max, value) {\n return value;\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPercentages.\r\n */\nfunction getInitialCropFromCroppedAreaPercentages(croppedAreaPercentages, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n var mediaBBoxSize = rotateSize(mediaSize.width, mediaSize.height, rotation);\n // This is the inverse process of computeCroppedArea\n var zoom = clamp(cropSize.width / mediaBBoxSize.width * (100 / croppedAreaPercentages.width), minZoom, maxZoom);\n var crop = {\n x: zoom * mediaBBoxSize.width / 2 - cropSize.width / 2 - mediaBBoxSize.width * zoom * (croppedAreaPercentages.x / 100),\n y: zoom * mediaBBoxSize.height / 2 - cropSize.height / 2 - mediaBBoxSize.height * zoom * (croppedAreaPercentages.y / 100)\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Compute zoom from the croppedAreaPixels\r\n */\nfunction getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize) {\n var mediaZoom = getMediaZoom(mediaSize);\n return cropSize.height > cropSize.width ? cropSize.height / (croppedAreaPixels.height * mediaZoom) : cropSize.width / (croppedAreaPixels.width * mediaZoom);\n}\n/**\r\n * Compute crop and zoom from the croppedAreaPixels\r\n */\nfunction getInitialCropFromCroppedAreaPixels(croppedAreaPixels, mediaSize, rotation, cropSize, minZoom, maxZoom) {\n if (rotation === void 0) {\n rotation = 0;\n }\n var mediaNaturalBBoxSize = rotateSize(mediaSize.naturalWidth, mediaSize.naturalHeight, rotation);\n var zoom = clamp(getZoomFromCroppedAreaPixels(croppedAreaPixels, mediaSize, cropSize), minZoom, maxZoom);\n var cropZoom = cropSize.height > cropSize.width ? cropSize.height / croppedAreaPixels.height : cropSize.width / croppedAreaPixels.width;\n var crop = {\n x: ((mediaNaturalBBoxSize.width - croppedAreaPixels.width) / 2 - croppedAreaPixels.x) * cropZoom,\n y: ((mediaNaturalBBoxSize.height - croppedAreaPixels.height) / 2 - croppedAreaPixels.y) * cropZoom\n };\n return {\n crop: crop,\n zoom: zoom\n };\n}\n/**\r\n * Return the point that is the center of point a and b\r\n */\nfunction getCenter(a, b) {\n return {\n x: (b.x + a.x) / 2,\n y: (b.y + a.y) / 2\n };\n}\nfunction getRadianAngle(degreeValue) {\n return degreeValue * Math.PI / 180;\n}\n/**\r\n * Returns the new bounding area of a rotated rectangle.\r\n */\nfunction rotateSize(width, height, rotation) {\n var rotRad = getRadianAngle(rotation);\n return {\n width: Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\n height: Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height)\n };\n}\n/**\r\n * Clamp value between min and max\r\n */\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n/**\r\n * Combine multiple class names into a single string.\r\n */\nfunction classNames() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return args.filter(function (value) {\n if (typeof value === 'string' && value.length > 0) {\n return true;\n }\n return false;\n }).join(' ').trim();\n}\n\nvar css_248z = \".reactEasyCrop_Container {\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n overflow: hidden;\\n user-select: none;\\n touch-action: none;\\n cursor: move;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n}\\n\\n.reactEasyCrop_Image,\\n.reactEasyCrop_Video {\\n will-change: transform; /* this improves performances and prevent painting issues on iOS Chrome */\\n}\\n\\n.reactEasyCrop_Contain {\\n max-width: 100%;\\n max-height: 100%;\\n margin: auto;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n.reactEasyCrop_Cover_Horizontal {\\n width: 100%;\\n height: auto;\\n}\\n.reactEasyCrop_Cover_Vertical {\\n width: auto;\\n height: 100%;\\n}\\n\\n.reactEasyCrop_CropArea {\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n box-sizing: border-box;\\n box-shadow: 0 0 0 9999em;\\n color: rgba(0, 0, 0, 0.5);\\n overflow: hidden;\\n}\\n\\n.reactEasyCrop_CropAreaRound {\\n border-radius: 50%;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::before {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 0;\\n bottom: 0;\\n left: 33.33%;\\n right: 33.33%;\\n border-top: 0;\\n border-bottom: 0;\\n}\\n\\n.reactEasyCrop_CropAreaGrid::after {\\n content: ' ';\\n box-sizing: border-box;\\n position: absolute;\\n border: 1px solid rgba(255, 255, 255, 0.5);\\n top: 33.33%;\\n bottom: 33.33%;\\n left: 0;\\n right: 0;\\n border-left: 0;\\n border-right: 0;\\n}\\n\";\n\nvar MIN_ZOOM = 1;\nvar MAX_ZOOM = 3;\nvar KEYBOARD_STEP = 1;\nvar Cropper = /** @class */function (_super) {\n __extends(Cropper, _super);\n function Cropper() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cropperRef = React.createRef();\n _this.imageRef = React.createRef();\n _this.videoRef = React.createRef();\n _this.containerPosition = {\n x: 0,\n y: 0\n };\n _this.containerRef = null;\n _this.styleRef = null;\n _this.containerRect = null;\n _this.mediaSize = {\n width: 0,\n height: 0,\n naturalWidth: 0,\n naturalHeight: 0\n };\n _this.dragStartPosition = {\n x: 0,\n y: 0\n };\n _this.dragStartCrop = {\n x: 0,\n y: 0\n };\n _this.gestureZoomStart = 0;\n _this.gestureRotationStart = 0;\n _this.isTouching = false;\n _this.lastPinchDistance = 0;\n _this.lastPinchRotation = 0;\n _this.rafDragTimeout = null;\n _this.rafPinchTimeout = null;\n _this.wheelTimer = null;\n _this.currentDoc = typeof document !== 'undefined' ? document : null;\n _this.currentWindow = typeof window !== 'undefined' ? window : null;\n _this.resizeObserver = null;\n _this.previousCropSize = null;\n _this.isInitialized = false;\n _this.state = {\n cropSize: null,\n hasWheelJustStarted: false,\n mediaObjectFit: undefined\n };\n _this.initResizeObserver = function () {\n if (typeof window.ResizeObserver === 'undefined' || !_this.containerRef) {\n return;\n }\n var isFirstResize = true;\n _this.resizeObserver = new window.ResizeObserver(function (entries) {\n if (isFirstResize) {\n isFirstResize = false; // observe() is called on mount, we don't want to trigger a recompute on mount\n return;\n }\n _this.computeSizes();\n });\n _this.resizeObserver.observe(_this.containerRef);\n };\n // this is to prevent Safari on iOS >= 10 to zoom the page\n _this.preventZoomSafari = function (e) {\n return e.preventDefault();\n };\n _this.cleanEvents = function () {\n if (!_this.currentDoc) return;\n _this.currentDoc.removeEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.removeEventListener('mouseup', _this.onDragStopped);\n _this.currentDoc.removeEventListener('touchmove', _this.onTouchMove);\n _this.currentDoc.removeEventListener('touchend', _this.onDragStopped);\n _this.currentDoc.removeEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.removeEventListener('gestureend', _this.onGestureEnd);\n _this.currentDoc.removeEventListener('scroll', _this.onScroll);\n };\n _this.clearScrollEvent = function () {\n if (_this.containerRef) _this.containerRef.removeEventListener('wheel', _this.onWheel);\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n };\n _this.onMediaLoad = function () {\n var cropSize = _this.computeSizes();\n if (cropSize) {\n _this.previousCropSize = cropSize;\n _this.emitCropData();\n _this.setInitialCrop(cropSize);\n _this.isInitialized = true;\n }\n if (_this.props.onMediaLoaded) {\n _this.props.onMediaLoaded(_this.mediaSize);\n }\n };\n _this.setInitialCrop = function (cropSize) {\n if (_this.props.initialCroppedAreaPercentages) {\n var _a = getInitialCropFromCroppedAreaPercentages(_this.props.initialCroppedAreaPercentages, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _a.crop,\n zoom = _a.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n } else if (_this.props.initialCroppedAreaPixels) {\n var _b = getInitialCropFromCroppedAreaPixels(_this.props.initialCroppedAreaPixels, _this.mediaSize, _this.props.rotation, cropSize, _this.props.minZoom, _this.props.maxZoom),\n crop = _b.crop,\n zoom = _b.zoom;\n _this.props.onCropChange(crop);\n _this.props.onZoomChange && _this.props.onZoomChange(zoom);\n }\n };\n _this.computeSizes = function () {\n var _a, _b, _c, _d, _e, _f;\n var mediaRef = _this.imageRef.current || _this.videoRef.current;\n if (mediaRef && _this.containerRef) {\n _this.containerRect = _this.containerRef.getBoundingClientRect();\n _this.saveContainerPosition();\n var containerAspect = _this.containerRect.width / _this.containerRect.height;\n var naturalWidth = ((_a = _this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = _this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = _this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = _this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var isMediaScaledDown = mediaRef.offsetWidth < naturalWidth || mediaRef.offsetHeight < naturalHeight;\n var mediaAspect = naturalWidth / naturalHeight;\n // We do not rely on the offsetWidth/offsetHeight if the media is scaled down\n // as the values they report are rounded. That will result in precision losses\n // when calculating zoom. We use the fact that the media is positionned relative\n // to the container. That allows us to use the container's dimensions\n // and natural aspect ratio of the media to calculate accurate media size.\n // However, for this to work, the container should not be rotated\n var renderedMediaSize = void 0;\n if (isMediaScaledDown) {\n switch (_this.state.mediaObjectFit) {\n default:\n case 'contain':\n renderedMediaSize = containerAspect > mediaAspect ? {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n } : {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'horizontal-cover':\n renderedMediaSize = {\n width: _this.containerRect.width,\n height: _this.containerRect.width / mediaAspect\n };\n break;\n case 'vertical-cover':\n renderedMediaSize = {\n width: _this.containerRect.height * mediaAspect,\n height: _this.containerRect.height\n };\n break;\n }\n } else {\n renderedMediaSize = {\n width: mediaRef.offsetWidth,\n height: mediaRef.offsetHeight\n };\n }\n _this.mediaSize = __assign(__assign({}, renderedMediaSize), {\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight\n });\n // set media size in the parent\n if (_this.props.setMediaSize) {\n _this.props.setMediaSize(_this.mediaSize);\n }\n var cropSize = _this.props.cropSize ? _this.props.cropSize : getCropSize(_this.mediaSize.width, _this.mediaSize.height, _this.containerRect.width, _this.containerRect.height, _this.props.aspect, _this.props.rotation);\n if (((_e = _this.state.cropSize) === null || _e === void 0 ? void 0 : _e.height) !== cropSize.height || ((_f = _this.state.cropSize) === null || _f === void 0 ? void 0 : _f.width) !== cropSize.width) {\n _this.props.onCropSizeChange && _this.props.onCropSizeChange(cropSize);\n }\n _this.setState({\n cropSize: cropSize\n }, _this.recomputeCropPosition);\n // pass crop size to parent\n if (_this.props.setCropSize) {\n _this.props.setCropSize(cropSize);\n }\n return cropSize;\n }\n };\n _this.saveContainerPosition = function () {\n if (_this.containerRef) {\n var bounds = _this.containerRef.getBoundingClientRect();\n _this.containerPosition = {\n x: bounds.left,\n y: bounds.top\n };\n }\n };\n _this.onMouseDown = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('mousemove', _this.onMouseMove);\n _this.currentDoc.addEventListener('mouseup', _this.onDragStopped);\n _this.saveContainerPosition();\n _this.onDragStart(Cropper.getMousePoint(e));\n };\n _this.onMouseMove = function (e) {\n return _this.onDrag(Cropper.getMousePoint(e));\n };\n _this.onScroll = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.saveContainerPosition();\n };\n _this.onTouchStart = function (e) {\n if (!_this.currentDoc) return;\n _this.isTouching = true;\n if (_this.props.onTouchRequest && !_this.props.onTouchRequest(e)) {\n return;\n }\n _this.currentDoc.addEventListener('touchmove', _this.onTouchMove, {\n passive: false\n }); // iOS 11 now defaults to passive: true\n _this.currentDoc.addEventListener('touchend', _this.onDragStopped);\n _this.saveContainerPosition();\n if (e.touches.length === 2) {\n _this.onPinchStart(e);\n } else if (e.touches.length === 1) {\n _this.onDragStart(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onTouchMove = function (e) {\n // Prevent whole page from scrolling on iOS.\n e.preventDefault();\n if (e.touches.length === 2) {\n _this.onPinchMove(e);\n } else if (e.touches.length === 1) {\n _this.onDrag(Cropper.getTouchPoint(e.touches[0]));\n }\n };\n _this.onGestureStart = function (e) {\n if (!_this.currentDoc) return;\n e.preventDefault();\n _this.currentDoc.addEventListener('gesturechange', _this.onGestureChange);\n _this.currentDoc.addEventListener('gestureend', _this.onGestureEnd);\n _this.gestureZoomStart = _this.props.zoom;\n _this.gestureRotationStart = _this.props.rotation;\n };\n _this.onGestureChange = function (e) {\n e.preventDefault();\n if (_this.isTouching) {\n // this is to avoid conflict between gesture and touch events\n return;\n }\n var point = Cropper.getMousePoint(e);\n var newZoom = _this.gestureZoomStart - 1 + e.scale;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (_this.props.onRotationChange) {\n var newRotation = _this.gestureRotationStart + e.rotation;\n _this.props.onRotationChange(newRotation);\n }\n };\n _this.onGestureEnd = function (e) {\n _this.cleanEvents();\n };\n _this.onDragStart = function (_a) {\n var _b, _c;\n var x = _a.x,\n y = _a.y;\n _this.dragStartPosition = {\n x: x,\n y: y\n };\n _this.dragStartCrop = __assign({}, _this.props.crop);\n (_c = (_b = _this.props).onInteractionStart) === null || _c === void 0 ? void 0 : _c.call(_b);\n };\n _this.onDrag = function (_a) {\n var x = _a.x,\n y = _a.y;\n if (!_this.currentWindow) return;\n if (_this.rafDragTimeout) _this.currentWindow.cancelAnimationFrame(_this.rafDragTimeout);\n _this.rafDragTimeout = _this.currentWindow.requestAnimationFrame(function () {\n if (!_this.state.cropSize) return;\n if (x === undefined || y === undefined) return;\n var offsetX = x - _this.dragStartPosition.x;\n var offsetY = y - _this.dragStartPosition.y;\n var requestedPosition = {\n x: _this.dragStartCrop.x + offsetX,\n y: _this.dragStartCrop.y + offsetY\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n });\n };\n _this.onDragStopped = function () {\n var _a, _b;\n _this.isTouching = false;\n _this.cleanEvents();\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n _this.onWheel = function (e) {\n if (!_this.currentWindow) return;\n if (_this.props.onWheelRequest && !_this.props.onWheelRequest(e)) {\n return;\n }\n e.preventDefault();\n var point = Cropper.getMousePoint(e);\n var pixelY = normalizeWheel(e).pixelY;\n var newZoom = _this.props.zoom - pixelY * _this.props.zoomSpeed / 200;\n _this.setNewZoom(newZoom, point, {\n shouldUpdatePosition: true\n });\n if (!_this.state.hasWheelJustStarted) {\n _this.setState({\n hasWheelJustStarted: true\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }\n if (_this.wheelTimer) {\n clearTimeout(_this.wheelTimer);\n }\n _this.wheelTimer = _this.currentWindow.setTimeout(function () {\n return _this.setState({\n hasWheelJustStarted: false\n }, function () {\n var _a, _b;\n return (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n });\n }, 250);\n };\n _this.getPointOnContainer = function (_a, containerTopLeft) {\n var x = _a.x,\n y = _a.y;\n if (!_this.containerRect) {\n throw new Error('The Cropper is not mounted');\n }\n return {\n x: _this.containerRect.width / 2 - (x - containerTopLeft.x),\n y: _this.containerRect.height / 2 - (y - containerTopLeft.y)\n };\n };\n _this.getPointOnMedia = function (_a) {\n var x = _a.x,\n y = _a.y;\n var _b = _this.props,\n crop = _b.crop,\n zoom = _b.zoom;\n return {\n x: (x + crop.x) / zoom,\n y: (y + crop.y) / zoom\n };\n };\n _this.setNewZoom = function (zoom, point, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.shouldUpdatePosition,\n shouldUpdatePosition = _c === void 0 ? true : _c;\n if (!_this.state.cropSize || !_this.props.onZoomChange) return;\n var newZoom = clamp(zoom, _this.props.minZoom, _this.props.maxZoom);\n if (shouldUpdatePosition) {\n var zoomPoint = _this.getPointOnContainer(point, _this.containerPosition);\n var zoomTarget = _this.getPointOnMedia(zoomPoint);\n var requestedPosition = {\n x: zoomTarget.x * newZoom - zoomPoint.x,\n y: zoomTarget.y * newZoom - zoomPoint.y\n };\n var newPosition = _this.props.restrictPosition ? restrictPosition(requestedPosition, _this.mediaSize, _this.state.cropSize, newZoom, _this.props.rotation) : requestedPosition;\n _this.props.onCropChange(newPosition);\n }\n _this.props.onZoomChange(newZoom);\n };\n _this.getCropData = function () {\n if (!_this.state.cropSize) {\n return null;\n }\n // this is to ensure the crop is correctly restricted after a zoom back (https://github.com/ValentinH/react-easy-crop/issues/6)\n var restrictedPosition = _this.props.restrictPosition ? restrictPosition(_this.props.crop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : _this.props.crop;\n return computeCroppedArea(restrictedPosition, _this.mediaSize, _this.state.cropSize, _this.getAspect(), _this.props.zoom, _this.props.rotation, _this.props.restrictPosition);\n };\n _this.emitCropData = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropComplete) {\n _this.props.onCropComplete(croppedAreaPercentages, croppedAreaPixels);\n }\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.emitCropAreaChange = function () {\n var cropData = _this.getCropData();\n if (!cropData) return;\n var croppedAreaPercentages = cropData.croppedAreaPercentages,\n croppedAreaPixels = cropData.croppedAreaPixels;\n if (_this.props.onCropAreaChange) {\n _this.props.onCropAreaChange(croppedAreaPercentages, croppedAreaPixels);\n }\n };\n _this.recomputeCropPosition = function () {\n var _a, _b;\n if (!_this.state.cropSize) return;\n var adjustedCrop = _this.props.crop;\n // Only scale if we're initialized and this is a legitimate resize\n if (_this.isInitialized && ((_a = _this.previousCropSize) === null || _a === void 0 ? void 0 : _a.width) && ((_b = _this.previousCropSize) === null || _b === void 0 ? void 0 : _b.height)) {\n var sizeChanged = Math.abs(_this.previousCropSize.width - _this.state.cropSize.width) > 1e-6 || Math.abs(_this.previousCropSize.height - _this.state.cropSize.height) > 1e-6;\n if (sizeChanged) {\n var scaleX = _this.state.cropSize.width / _this.previousCropSize.width;\n var scaleY = _this.state.cropSize.height / _this.previousCropSize.height;\n adjustedCrop = {\n x: _this.props.crop.x * scaleX,\n y: _this.props.crop.y * scaleY\n };\n }\n }\n var newPosition = _this.props.restrictPosition ? restrictPosition(adjustedCrop, _this.mediaSize, _this.state.cropSize, _this.props.zoom, _this.props.rotation) : adjustedCrop;\n _this.previousCropSize = _this.state.cropSize;\n _this.props.onCropChange(newPosition);\n _this.emitCropData();\n };\n _this.onKeyDown = function (event) {\n var _a, _b;\n var _c = _this.props,\n crop = _c.crop,\n onCropChange = _c.onCropChange,\n keyboardStep = _c.keyboardStep,\n zoom = _c.zoom,\n rotation = _c.rotation;\n var step = keyboardStep;\n if (!_this.state.cropSize) return;\n // if the shift key is pressed, reduce the step to allow finer control\n if (event.shiftKey) {\n step *= 0.2;\n }\n var newCrop = __assign({}, crop);\n switch (event.key) {\n case 'ArrowUp':\n newCrop.y -= step;\n event.preventDefault();\n break;\n case 'ArrowDown':\n newCrop.y += step;\n event.preventDefault();\n break;\n case 'ArrowLeft':\n newCrop.x -= step;\n event.preventDefault();\n break;\n case 'ArrowRight':\n newCrop.x += step;\n event.preventDefault();\n break;\n default:\n return;\n }\n if (_this.props.restrictPosition) {\n newCrop = restrictPosition(newCrop, _this.mediaSize, _this.state.cropSize, zoom, rotation);\n }\n if (!event.repeat) {\n (_b = (_a = _this.props).onInteractionStart) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n onCropChange(newCrop);\n };\n _this.onKeyUp = function (event) {\n var _a, _b;\n switch (event.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight':\n event.preventDefault();\n break;\n default:\n return;\n }\n _this.emitCropData();\n (_b = (_a = _this.props).onInteractionEnd) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n return _this;\n }\n Cropper.prototype.componentDidMount = function () {\n if (!this.currentDoc || !this.currentWindow) return;\n if (this.containerRef) {\n if (this.containerRef.ownerDocument) {\n this.currentDoc = this.containerRef.ownerDocument;\n }\n if (this.currentDoc.defaultView) {\n this.currentWindow = this.currentDoc.defaultView;\n }\n this.initResizeObserver();\n // only add window resize listener if ResizeObserver is not supported. Otherwise, it would be redundant\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.addEventListener('resize', this.computeSizes);\n }\n this.props.zoomWithScroll && this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n });\n this.containerRef.addEventListener('gesturestart', this.onGestureStart);\n }\n this.currentDoc.addEventListener('scroll', this.onScroll);\n if (!this.props.disableAutomaticStylesInjection) {\n this.styleRef = this.currentDoc.createElement('style');\n this.styleRef.setAttribute('type', 'text/css');\n if (this.props.nonce) {\n this.styleRef.setAttribute('nonce', this.props.nonce);\n }\n this.styleRef.innerHTML = css_248z;\n this.currentDoc.head.appendChild(this.styleRef);\n }\n // when rendered via SSR, the image can already be loaded and its onLoad callback will never be called\n if (this.imageRef.current && this.imageRef.current.complete) {\n this.onMediaLoad();\n }\n // set image and video refs in the parent if the callbacks exist\n if (this.props.setImageRef) {\n this.props.setImageRef(this.imageRef);\n }\n if (this.props.setVideoRef) {\n this.props.setVideoRef(this.videoRef);\n }\n if (this.props.setCropperRef) {\n this.props.setCropperRef(this.cropperRef);\n }\n };\n Cropper.prototype.componentWillUnmount = function () {\n var _a, _b;\n if (!this.currentDoc || !this.currentWindow) return;\n if (typeof window.ResizeObserver === 'undefined') {\n this.currentWindow.removeEventListener('resize', this.computeSizes);\n }\n (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();\n if (this.containerRef) {\n this.containerRef.removeEventListener('gesturestart', this.preventZoomSafari);\n }\n if (this.styleRef) {\n (_b = this.styleRef.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(this.styleRef);\n }\n this.cleanEvents();\n this.props.zoomWithScroll && this.clearScrollEvent();\n };\n Cropper.prototype.componentDidUpdate = function (prevProps) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (prevProps.rotation !== this.props.rotation) {\n this.computeSizes();\n this.recomputeCropPosition();\n } else if (prevProps.aspect !== this.props.aspect) {\n this.computeSizes();\n } else if (prevProps.objectFit !== this.props.objectFit) {\n this.computeSizes();\n } else if (prevProps.zoom !== this.props.zoom) {\n this.recomputeCropPosition();\n } else if (((_a = prevProps.cropSize) === null || _a === void 0 ? void 0 : _a.height) !== ((_b = this.props.cropSize) === null || _b === void 0 ? void 0 : _b.height) || ((_c = prevProps.cropSize) === null || _c === void 0 ? void 0 : _c.width) !== ((_d = this.props.cropSize) === null || _d === void 0 ? void 0 : _d.width)) {\n this.computeSizes();\n } else if (((_e = prevProps.crop) === null || _e === void 0 ? void 0 : _e.x) !== ((_f = this.props.crop) === null || _f === void 0 ? void 0 : _f.x) || ((_g = prevProps.crop) === null || _g === void 0 ? void 0 : _g.y) !== ((_h = this.props.crop) === null || _h === void 0 ? void 0 : _h.y)) {\n this.emitCropAreaChange();\n }\n if (prevProps.zoomWithScroll !== this.props.zoomWithScroll && this.containerRef) {\n this.props.zoomWithScroll ? this.containerRef.addEventListener('wheel', this.onWheel, {\n passive: false\n }) : this.clearScrollEvent();\n }\n if (prevProps.video !== this.props.video) {\n (_j = this.videoRef.current) === null || _j === void 0 ? void 0 : _j.load();\n }\n var objectFit = this.getObjectFit();\n if (objectFit !== this.state.mediaObjectFit) {\n this.setState({\n mediaObjectFit: objectFit\n }, this.computeSizes);\n }\n };\n Cropper.prototype.getAspect = function () {\n var _a = this.props,\n cropSize = _a.cropSize,\n aspect = _a.aspect;\n if (cropSize) {\n return cropSize.width / cropSize.height;\n }\n return aspect;\n };\n Cropper.prototype.getObjectFit = function () {\n var _a, _b, _c, _d;\n if (this.props.objectFit === 'cover') {\n var mediaRef = this.imageRef.current || this.videoRef.current;\n if (mediaRef && this.containerRef) {\n this.containerRect = this.containerRef.getBoundingClientRect();\n var containerAspect = this.containerRect.width / this.containerRect.height;\n var naturalWidth = ((_a = this.imageRef.current) === null || _a === void 0 ? void 0 : _a.naturalWidth) || ((_b = this.videoRef.current) === null || _b === void 0 ? void 0 : _b.videoWidth) || 0;\n var naturalHeight = ((_c = this.imageRef.current) === null || _c === void 0 ? void 0 : _c.naturalHeight) || ((_d = this.videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) || 0;\n var mediaAspect = naturalWidth / naturalHeight;\n return mediaAspect < containerAspect ? 'horizontal-cover' : 'vertical-cover';\n }\n return 'horizontal-cover';\n }\n return this.props.objectFit;\n };\n Cropper.prototype.onPinchStart = function (e) {\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n this.lastPinchDistance = getDistanceBetweenPoints(pointA, pointB);\n this.lastPinchRotation = getRotationBetweenPoints(pointA, pointB);\n this.onDragStart(getCenter(pointA, pointB));\n };\n Cropper.prototype.onPinchMove = function (e) {\n var _this = this;\n if (!this.currentDoc || !this.currentWindow) return;\n var pointA = Cropper.getTouchPoint(e.touches[0]);\n var pointB = Cropper.getTouchPoint(e.touches[1]);\n var center = getCenter(pointA, pointB);\n this.onDrag(center);\n if (this.rafPinchTimeout) this.currentWindow.cancelAnimationFrame(this.rafPinchTimeout);\n this.rafPinchTimeout = this.currentWindow.requestAnimationFrame(function () {\n var distance = getDistanceBetweenPoints(pointA, pointB);\n var newZoom = _this.props.zoom * (distance / _this.lastPinchDistance);\n _this.setNewZoom(newZoom, center, {\n shouldUpdatePosition: false\n });\n _this.lastPinchDistance = distance;\n var rotation = getRotationBetweenPoints(pointA, pointB);\n var newRotation = _this.props.rotation + (rotation - _this.lastPinchRotation);\n _this.props.onRotationChange && _this.props.onRotationChange(newRotation);\n _this.lastPinchRotation = rotation;\n });\n };\n Cropper.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props,\n image = _b.image,\n video = _b.video,\n mediaProps = _b.mediaProps,\n cropperProps = _b.cropperProps,\n transform = _b.transform,\n _c = _b.crop,\n x = _c.x,\n y = _c.y,\n rotation = _b.rotation,\n zoom = _b.zoom,\n cropShape = _b.cropShape,\n showGrid = _b.showGrid,\n roundCropAreaPixels = _b.roundCropAreaPixels,\n _d = _b.style,\n containerStyle = _d.containerStyle,\n cropAreaStyle = _d.cropAreaStyle,\n mediaStyle = _d.mediaStyle,\n _e = _b.classes,\n containerClassName = _e.containerClassName,\n cropAreaClassName = _e.cropAreaClassName,\n mediaClassName = _e.mediaClassName;\n var objectFit = (_a = this.state.mediaObjectFit) !== null && _a !== void 0 ? _a : this.getObjectFit();\n return React.createElement(\"div\", {\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n ref: function ref(el) {\n return _this.containerRef = el;\n },\n \"data-testid\": \"container\",\n style: containerStyle,\n className: classNames('reactEasyCrop_Container', containerClassName)\n }, image ? React.createElement(\"img\", __assign({\n alt: \"\",\n className: classNames('reactEasyCrop_Image', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n src: image,\n ref: this.imageRef,\n style: __assign(__assign({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n onLoad: this.onMediaLoad\n })) : video && React.createElement(\"video\", __assign({\n autoPlay: true,\n playsInline: true,\n loop: true,\n muted: true,\n className: classNames('reactEasyCrop_Video', objectFit === 'contain' && 'reactEasyCrop_Contain', objectFit === 'horizontal-cover' && 'reactEasyCrop_Cover_Horizontal', objectFit === 'vertical-cover' && 'reactEasyCrop_Cover_Vertical', mediaClassName)\n }, mediaProps, {\n ref: this.videoRef,\n onLoadedMetadata: this.onMediaLoad,\n style: __assign(__assign({}, mediaStyle), {\n transform: transform || \"translate(\".concat(x, \"px, \").concat(y, \"px) rotate(\").concat(rotation, \"deg) scale(\").concat(zoom, \")\")\n }),\n controls: false\n }), (Array.isArray(video) ? video : [{\n src: video\n }]).map(function (item) {\n return React.createElement(\"source\", __assign({\n key: item.src\n }, item));\n })), this.state.cropSize && React.createElement(\"div\", __assign({\n ref: this.cropperRef,\n style: __assign(__assign({}, cropAreaStyle), {\n width: roundCropAreaPixels ? Math.round(this.state.cropSize.width) : this.state.cropSize.width,\n height: roundCropAreaPixels ? Math.round(this.state.cropSize.height) : this.state.cropSize.height\n }),\n tabIndex: 0,\n onKeyDown: this.onKeyDown,\n onKeyUp: this.onKeyUp,\n \"data-testid\": \"cropper\",\n className: classNames('reactEasyCrop_CropArea', cropShape === 'round' && 'reactEasyCrop_CropAreaRound', showGrid && 'reactEasyCrop_CropAreaGrid', cropAreaClassName)\n }, cropperProps)));\n };\n Cropper.defaultProps = {\n zoom: 1,\n rotation: 0,\n aspect: 4 / 3,\n maxZoom: MAX_ZOOM,\n minZoom: MIN_ZOOM,\n cropShape: 'rect',\n objectFit: 'contain',\n showGrid: true,\n style: {},\n classes: {},\n mediaProps: {},\n cropperProps: {},\n zoomSpeed: 1,\n restrictPosition: true,\n zoomWithScroll: true,\n keyboardStep: KEYBOARD_STEP\n };\n Cropper.getMousePoint = function (e) {\n return {\n x: Number(e.clientX),\n y: Number(e.clientY)\n };\n };\n Cropper.getTouchPoint = function (touch) {\n return {\n x: Number(touch.clientX),\n y: Number(touch.clientY)\n };\n };\n return Cropper;\n}(React.Component);\n\nexport { Cropper as default, getInitialCropFromCroppedAreaPercentages, getInitialCropFromCroppedAreaPixels };\n//# sourceMappingURL=index.module.mjs.map\n","import React, { useCallback, useEffect, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport Cropper from \"react-easy-crop\";\r\nimport type { Area } from \"react-easy-crop\";\r\nimport Button from \"../../Button/Button\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\nconst createImage = (url: string): Promise<HTMLImageElement> =>\r\n new Promise((resolve, reject) => {\r\n const image = new Image();\r\n image.addEventListener(\"load\", () => resolve(image));\r\n image.addEventListener(\"error\", (error) => reject(error));\r\n image.setAttribute(\"crossOrigin\", \"anonymous\");\r\n image.src = url;\r\n });\r\n\r\nconst getRadianAngle = (degreeValue: number) => {\r\n return (degreeValue * Math.PI) / 180;\r\n};\r\n\r\nconst rotateSize = (width: number, height: number, rotation: number) => {\r\n const rotRad = getRadianAngle(rotation);\r\n return {\r\n width:\r\n Math.abs(Math.cos(rotRad) * width) + Math.abs(Math.sin(rotRad) * height),\r\n height:\r\n Math.abs(Math.sin(rotRad) * width) + Math.abs(Math.cos(rotRad) * height),\r\n };\r\n};\r\n\r\nconst getCroppedImageBlob = async (\r\n imageSrc: string,\r\n pixelCrop: Area,\r\n fileType = \"image/jpeg\",\r\n rotation = 0,\r\n): Promise<Blob> => {\r\n const image = await createImage(imageSrc);\r\n const canvas = document.createElement(\"canvas\");\r\n const ctx = canvas.getContext(\"2d\");\r\n\r\n if (!ctx) {\r\n throw new Error(\"Canvas context is not available\");\r\n }\r\n\r\n const rotRad = getRadianAngle(rotation);\r\n const { width: bBoxWidth, height: bBoxHeight } = rotateSize(\r\n image.width,\r\n image.height,\r\n rotation,\r\n );\r\n\r\n canvas.width = bBoxWidth;\r\n canvas.height = bBoxHeight;\r\n\r\n ctx.translate(bBoxWidth / 2, bBoxHeight / 2);\r\n ctx.rotate(rotRad);\r\n ctx.translate(-image.width / 2, -image.height / 2);\r\n ctx.drawImage(image, 0, 0);\r\n\r\n const croppedCanvas = document.createElement(\"canvas\");\r\n const croppedCtx = croppedCanvas.getContext(\"2d\");\r\n\r\n if (!croppedCtx) {\r\n throw new Error(\"Canvas context is not available\");\r\n }\r\n\r\n croppedCanvas.width = pixelCrop.width;\r\n croppedCanvas.height = pixelCrop.height;\r\n\r\n croppedCtx.drawImage(\r\n canvas,\r\n pixelCrop.x,\r\n pixelCrop.y,\r\n pixelCrop.width,\r\n pixelCrop.height,\r\n 0,\r\n 0,\r\n pixelCrop.width,\r\n pixelCrop.height,\r\n );\r\n\r\n return new Promise((resolve, reject) => {\r\n croppedCanvas.toBlob(\r\n (blob) => {\r\n if (!blob) {\r\n reject(new Error(\"Image cropping failed\"));\r\n return;\r\n }\r\n resolve(blob);\r\n },\r\n fileType,\r\n 0.95,\r\n );\r\n });\r\n};\r\n\r\ninterface ImageCropperModalProps {\r\n isOpen: boolean;\r\n imageSrc: string;\r\n fileType?: string;\r\n fileName?: string;\r\n aspect?: number;\r\n title?: string;\r\n onClose: () => void;\r\n onApply: (file: File) => void;\r\n}\r\n\r\nconst ImageCropperModal = ({\r\n isOpen,\r\n imageSrc,\r\n fileType = \"image/jpeg\",\r\n fileName = \"cropped-image\",\r\n aspect = 1 / 1,\r\n title = \"Crop Image\",\r\n onClose,\r\n onApply,\r\n}: ImageCropperModalProps) => {\r\n const [crop, setCrop] = useState({ x: 0, y: 0 });\r\n const [zoom, setZoom] = useState(1);\r\n const [croppedAreaPixels, setCroppedAreaPixels] = useState<Area | null>(null);\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n setCrop({ x: 0, y: 0 });\r\n setZoom(1);\r\n setCroppedAreaPixels(null);\r\n }\r\n }, [isOpen]);\r\n\r\n const onCropComplete = useCallback((_area: Area, croppedPixels: Area) => {\r\n setCroppedAreaPixels(croppedPixels);\r\n }, []);\r\n\r\n const handleApply = async () => {\r\n if (!imageSrc || !croppedAreaPixels) {\r\n return;\r\n }\r\n\r\n try {\r\n const blob = await getCroppedImageBlob(\r\n imageSrc,\r\n croppedAreaPixels,\r\n fileType,\r\n );\r\n const fileExtension =\r\n fileType?.split(\"/\")?.[1]?.replace(\"jpeg\", \"jpg\") || \"jpg\";\r\n const croppedFile = new File([blob], `${fileName}.${fileExtension}`, {\r\n type: fileType,\r\n });\r\n onApply?.(croppedFile);\r\n } catch {\r\n onClose?.();\r\n }\r\n };\r\n\r\n if (!isOpen) {\r\n return null;\r\n }\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.cropModal,\r\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\r\n )}\r\n >\r\n <div\r\n className=\"fixed inset-0 bg-gray-500 opacity-75\"\r\n onClick={onClose}\r\n ></div>\r\n\r\n <div className=\"relative bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col dark:bg-gray-800\">\r\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0\">\r\n <h3 className=\"text-lg font-medium text-gray-900 dark:text-white\">\r\n {title}\r\n </h3>\r\n <button\r\n type=\"button\"\r\n onClick={onClose}\r\n className=\"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\"\r\n aria-label=\"Close crop modal\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-6 h-6\" />\r\n </button>\r\n </div>\r\n\r\n <div className=\"p-4 space-y-4\">\r\n <div className=\"relative h-72 w-full bg-gray-900 rounded-md overflow-hidden\">\r\n {imageSrc && (\r\n <Cropper\r\n image={imageSrc}\r\n crop={crop}\r\n zoom={zoom}\r\n aspect={aspect}\r\n onCropChange={setCrop}\r\n onZoomChange={setZoom}\r\n onCropComplete={onCropComplete}\r\n />\r\n )}\r\n </div>\r\n\r\n <div className=\"space-y-2\">\r\n <label className=\"text-sm text-gray-700 dark:text-gray-300\">\r\n Zoom\r\n </label>\r\n <input\r\n type=\"range\"\r\n min={1}\r\n max={3}\r\n step={0.1}\r\n value={zoom}\r\n onChange={(event) => setZoom(Number(event.target.value))}\r\n className=\"w-full\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"px-4 py-3 flex justify-end gap-3 border-t border-gray-200 dark:border-gray-700 sm:!px-6\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={onClose}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n Cancel\r\n </ButtonComponent>\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n Apply Crop\r\n </ButtonComponent>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ImageCropperModal;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport ImageCropperModal from \"./ImageCropperModal\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\nconst revokeBlobUrl = (url?: string) => {\r\n if (typeof url === \"string\" && url.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(url);\r\n }\r\n};\r\n\r\ntype ImageValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface ImagePickerProps {\r\n label?: string;\r\n value: ImageValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n aspect?: number | string;\r\n id: string;\r\n dragDrop?: boolean;\r\n cropImage?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst ImagePicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"image/*\",\r\n aspect = \"1\",\r\n id,\r\n dragDrop = false,\r\n cropImage = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n}: ImagePickerProps) => {\r\n const [image, setImage] = useState<ImageValue>(value);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [cropModalOpen, setCropModalOpen] = useState(false);\r\n const [cropSource, setCropSource] = useState(\"\");\r\n const [selectedFileType, setSelectedFileType] = useState(\"image/jpeg\");\r\n const [selectedFileName, setSelectedFileName] = useState(\"cropped-image\");\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const sourceUrlRef = useRef(\"\");\r\n const previewUrlRef = useRef(\"\");\r\n\r\n useEffect(() => {\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n setImage({ file: value, preview });\r\n } else if (value && typeof value === \"object\" && \"preview\" in value) {\r\n setImage(value);\r\n } else {\r\n setImage(value);\r\n }\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n revokeBlobUrl(previewUrlRef.current);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n };\r\n }, []);\r\n\r\n const closeCropModal = () => {\r\n setCropModalOpen(false);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n sourceUrlRef.current = \"\";\r\n setCropSource(\"\");\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleCroppedImage = (croppedFile: File) => {\r\n const preview = URL.createObjectURL(croppedFile);\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n\r\n setImage({ file: croppedFile, preview });\r\n onChange?.(croppedFile);\r\n closeCropModal();\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n\r\n const file = files[0];\r\n\r\n if (cropImage) {\r\n const source = URL.createObjectURL(file);\r\n revokeBlobUrl(sourceUrlRef.current);\r\n sourceUrlRef.current = source;\r\n setCropSource(source);\r\n setSelectedFileType(file.type || \"image/jpeg\");\r\n setSelectedFileName(\r\n (file.name || \"cropped-image\").replace(/\\.[^/.]+$/, \"\"),\r\n );\r\n setCropModalOpen(true);\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = preview;\r\n\r\n setImage({ file, preview });\r\n onChange?.(file);\r\n };\r\n\r\n const removeImage = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n\r\n revokeBlobUrl(previewUrlRef.current);\r\n previewUrlRef.current = \"\";\r\n\r\n setImage(null);\r\n onChange?.(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"image/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n const imagePreview =\r\n image && typeof image === \"object\" && \"preview\" in image\r\n ? image.preview\r\n : typeof image === \"string\"\r\n ? image\r\n : \"\";\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.image,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-md p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !image}\r\n className=\"absolute opacity-0 right-[50%] top-[80%] -translate-y-1/2 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {image ? (\r\n <div className=\"relative group\">\r\n <img\r\n src={imagePreview}\r\n alt=\"preview\"\r\n className=\"object-cover w-20 h-20 rounded-full shadow-md\"\r\n />\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeImage}\r\n className=\"absolute top-0 -right-2 bg-red-500 text-white rounded-full p-1 shadow-lg hover:bg-red-600 transition-colors focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2\"\r\n aria-label=\"Remove image\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon\r\n icon=\"ri:image-add-fill\"\r\n className=\"text-gray-400 w-10 h-10\"\r\n />\r\n </div>\r\n )}\r\n\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n {image ? \"Change Image\" : \"Select Image\"}\r\n </ButtonComponent>\r\n\r\n {dragDrop && !image && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {dragDrop && isDragging && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-md\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg\">\r\n Drop image here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n\r\n <ImageCropperModal\r\n isOpen={cropModalOpen}\r\n imageSrc={cropSource}\r\n fileType={selectedFileType}\r\n fileName={selectedFileName}\r\n onClose={closeCropModal}\r\n onApply={handleCroppedImage}\r\n aspect={Number(aspect)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default ImagePicker;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n label?: string;\r\n value: any;\r\n required: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n type: string;\r\n onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\r\n negativeNumberAllow?: boolean;\r\n defaultValue?: any;\r\n field: Record<string, any>;\r\n onChange: (value: any) => void;\r\n mask?: string;\r\n maskApplyOnValue?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n label,\r\n value,\r\n name,\r\n required,\r\n parentClass = \"\",\r\n className = \"\",\r\n type = \"text\",\r\n onKeyDown,\r\n negativeNumberAllow = true,\r\n defaultValue = \"\",\r\n field = {},\r\n onChange,\r\n mask = \"\",\r\n errorMessage = \"\",\r\n maskApplyOnValue = true,\r\n ...props\r\n },\r\n ref,\r\n ) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (type === \"number\") {\r\n const blockedKeys = [\"e\", \"E\", \"+\"];\r\n\r\n if (blockedKeys.includes(e.key)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (negativeNumberAllow == false && e.key === \"-\") {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if ([\"ArrowUp\", \"ArrowDown\"].includes(e.key)) {\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n onKeyDown?.(e);\r\n };\r\n\r\n const combinedClassName = joinClasses(\r\n crudClasses.field.input,\r\n \"h-10 placeholder-gray-400 dark:placeholder-gray-400\",\r\n type === \"password\" ? \"pr-10\" : \"\",\r\n type === \"number\" ? \"no-spinner\" : \"\",\r\n className,\r\n errorMessage ? \"border-red-500\" : \"\",\r\n );\r\n\r\n function applyMask(rawValue: any, maskValue: string) {\r\n if (!rawValue) return rawValue;\r\n const cleanValue = String(rawValue).replace(/[^a-zA-Z0-9]/g, \"\");\r\n let result = \"\";\r\n let valueIndex = 0;\r\n\r\n for (\r\n let i = 0;\r\n i < maskValue?.length && valueIndex < cleanValue.length;\r\n i++\r\n ) {\r\n const maskChar = maskValue[i];\r\n const valueChar = cleanValue[valueIndex];\r\n\r\n if (maskChar === \"9\") {\r\n if (/\\d/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"A\") {\r\n if (/[a-zA-Z]/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"X\") {\r\n if (/[a-zA-Z0-9]/.test(valueChar)) {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n valueIndex++;\r\n i--;\r\n }\r\n } else if (maskChar === \"*\") {\r\n result += valueChar;\r\n valueIndex++;\r\n } else {\r\n result += maskChar;\r\n\r\n if (valueChar === maskChar) {\r\n valueIndex++;\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n useEffect(() => {\r\n if (defaultValue) {\r\n const localValue = value || defaultValue;\r\n setTimeout(() => {\r\n onChange?.(localValue);\r\n }, 100);\r\n }\r\n }, [defaultValue]);\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel\r\n label={label}\r\n required={required}\r\n infoText={field?.infoText}\r\n />\r\n <div className=\"relative\">\r\n <input\r\n type={type === \"password\" && showPassword ? \"text\" : type}\r\n ref={ref}\r\n id={`field-${name}`}\r\n required={required}\r\n onKeyDown={handleKeyDown}\r\n className={combinedClassName}\r\n value={mask ? applyMask(value, mask) : value}\r\n onChange={(e) => {\r\n mask && maskApplyOnValue\r\n ? onChange(applyMask(e.target.value, mask))\r\n : onChange(e.target.value);\r\n }}\r\n {...props}\r\n />\r\n\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n\r\n {type === \"password\" && (\r\n <button\r\n type=\"button\"\r\n tabIndex={-1}\r\n onClick={() => setShowPassword((prev) => !prev)}\r\n className=\"absolute inset-y-0 right-3 flex items-center text-gray-400 hover:text-gray-600 dark:text-gray-400 dark:hover:text-gray-200\"\r\n >\r\n <Icon\r\n icon={\r\n showPassword ? \"mdi:eye-outline\" : \"mdi:eye-off-outline\"\r\n }\r\n className=\"w-5 h-5\"\r\n />\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nInput.displayName = \"Input\";\r\n\r\nexport { Input };\r\n","import { Editor } from \"@tinymce/tinymce-react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TinyEditorProps {\r\n editorKey: string;\r\n value: string;\r\n name: string;\r\n onChange: (content: string) => void;\r\n label?: string;\r\n required?: boolean;\r\n placeholder?: string;\r\n parentClass?: string;\r\n height?: number;\r\n inline?: boolean;\r\n disabled?: boolean;\r\n plugins?: string[];\r\n toolbar?: string;\r\n menubar?: boolean;\r\n fontFamily?: string;\r\n initConfig?: Record<string, any>;\r\n errorMessage?: string;\r\n imageUploadHandler?: (blobInfo: any) => Promise<string>;\r\n}\r\n\r\nconst TinyEditor = ({\r\n editorKey = \"\",\r\n value = \"\",\r\n name = \"\",\r\n onChange,\r\n label = \"\",\r\n required = false,\r\n placeholder = \"\",\r\n parentClass = \"col-span-12\",\r\n height = 400,\r\n inline = false,\r\n disabled = false,\r\n plugins,\r\n toolbar,\r\n menubar = false,\r\n fontFamily = \"Inter, sans-serif\",\r\n initConfig = {},\r\n imageUploadHandler,\r\n errorMessage = \"\",\r\n}: TinyEditorProps) => {\r\n const defaultPlugins = [\r\n \"advlist\",\r\n \"autolink\",\r\n \"lists\",\r\n \"link\",\r\n \"image\",\r\n \"charmap\",\r\n \"preview\",\r\n \"anchor\",\r\n \"searchreplace\",\r\n \"visualblocks\",\r\n \"code\",\r\n \"fullscreen\",\r\n \"insertdatetime\",\r\n \"media\",\r\n \"table\",\r\n \"help\",\r\n \"wordcount\",\r\n ];\r\n\r\n const defaultToolbar =\r\n \"undo redo | blocks | bold italic underline forecolor backcolor | \" +\r\n \"alignleft aligncenter alignright alignjustify | \" +\r\n \"bullist numlist outdent indent | link image media table | \" +\r\n \"removeformat | code fullscreen preview\";\r\n\r\n const handleImageUpload = (blobInfo: any) => {\r\n return new Promise<string>((resolve, reject) => {\r\n if (!imageUploadHandler) {\r\n resolve(`data:${blobInfo.blob().type};base64,${blobInfo.base64()}`);\r\n return;\r\n }\r\n\r\n imageUploadHandler(blobInfo)\r\n .then((url) => {\r\n if (!url) {\r\n reject(\"Upload failed: No URL returned\");\r\n } else {\r\n resolve(url);\r\n }\r\n })\r\n .catch((error) => {\r\n reject(\r\n typeof error === \"string\"\r\n ? error\r\n : error?.message || \"Image upload failed\",\r\n );\r\n });\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n className={joinClasses(crudClasses.field.wrapper, parentClass)}\r\n id={`field-${name}`}\r\n >\r\n {label && <InputLabel label={label} required={required} />}\r\n\r\n <Editor\r\n apiKey={editorKey}\r\n value={value}\r\n disabled={disabled}\r\n init={{\r\n height,\r\n inline,\r\n menubar,\r\n branding: false,\r\n statusbar: true,\r\n automatic_uploads: true,\r\n images_upload_handler: handleImageUpload,\r\n plugins: plugins ?? defaultPlugins,\r\n toolbar: toolbar ?? defaultToolbar,\r\n placeholder,\r\n content_style: `\r\n body {\r\n font-family: ${fontFamily};\r\n border: ${errorMessage ? \"1px solid blue\" : \"\"};\r\n }\r\n `,\r\n ...initConfig,\r\n }}\r\n onEditorChange={(content) => {\r\n onChange?.(content);\r\n }}\r\n />\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TinyEditor;\r\n","module.exports =\r\n/******/ (function(modules) { // webpackBootstrap\r\n/******/ \t// The module cache\r\n/******/ \tvar installedModules = {};\r\n/******/\r\n/******/ \t// The require function\r\n/******/ \tfunction __webpack_require__(moduleId) {\r\n/******/\r\n/******/ \t\t// Check if module is in cache\r\n/******/ \t\tif(installedModules[moduleId]) {\r\n/******/ \t\t\treturn installedModules[moduleId].exports;\r\n/******/ \t\t}\r\n/******/ \t\t// Create a new module (and put it into the cache)\r\n/******/ \t\tvar module = installedModules[moduleId] = {\r\n/******/ \t\t\ti: moduleId,\r\n/******/ \t\t\tl: false,\r\n/******/ \t\t\texports: {}\r\n/******/ \t\t};\r\n/******/\r\n/******/ \t\t// Execute the module function\r\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\r\n/******/\r\n/******/ \t\t// Flag the module as loaded\r\n/******/ \t\tmodule.l = true;\r\n/******/\r\n/******/ \t\t// Return the exports of the module\r\n/******/ \t\treturn module.exports;\r\n/******/ \t}\r\n/******/\r\n/******/\r\n/******/ \t// expose the modules object (__webpack_modules__)\r\n/******/ \t__webpack_require__.m = modules;\r\n/******/\r\n/******/ \t// expose the module cache\r\n/******/ \t__webpack_require__.c = installedModules;\r\n/******/\r\n/******/ \t// define getter function for harmony exports\r\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\r\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\r\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\r\n/******/ \t\t}\r\n/******/ \t};\r\n/******/\r\n/******/ \t// define __esModule on exports\r\n/******/ \t__webpack_require__.r = function(exports) {\r\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\r\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\r\n/******/ \t\t}\r\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\r\n/******/ \t};\r\n/******/\r\n/******/ \t// create a fake namespace object\r\n/******/ \t// mode & 1: value is a module id, require it\r\n/******/ \t// mode & 2: merge all properties of value into the ns\r\n/******/ \t// mode & 4: return value when already ns object\r\n/******/ \t// mode & 8|1: behave like require\r\n/******/ \t__webpack_require__.t = function(value, mode) {\r\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\r\n/******/ \t\tif(mode & 8) return value;\r\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\r\n/******/ \t\tvar ns = Object.create(null);\r\n/******/ \t\t__webpack_require__.r(ns);\r\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\r\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\r\n/******/ \t\treturn ns;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\r\n/******/ \t__webpack_require__.n = function(module) {\r\n/******/ \t\tvar getter = module && module.__esModule ?\r\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\r\n/******/ \t\t\tfunction getModuleExports() { return module; };\r\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\r\n/******/ \t\treturn getter;\r\n/******/ \t};\r\n/******/\r\n/******/ \t// Object.prototype.hasOwnProperty.call\r\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\r\n/******/\r\n/******/ \t// __webpack_public_path__\r\n/******/ \t__webpack_require__.p = \"\";\r\n/******/\r\n/******/\r\n/******/ \t// Load entry module and return exports\r\n/******/ \treturn __webpack_require__(__webpack_require__.s = 10);\r\n/******/ })\r\n/************************************************************************/\r\n/******/ ([\r\n/* 0 */\r\n/***/ (function(module, exports) {\r\n\r\nmodule.exports = require(\"react\");\r\n\r\n/***/ }),\r\n/* 1 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar api = __webpack_require__(3);\r\n var content = __webpack_require__(7);\r\n\r\n content = content.__esModule ? content.default : content;\r\n\r\n if (typeof content === 'string') {\r\n content = [[module.i, content, '']];\r\n }\r\n\r\nvar options = {};\r\n\r\noptions.insert = \"head\";\r\noptions.singleton = false;\r\n\r\nvar update = api(content, options);\r\n\r\n\r\n\r\nmodule.exports = content.locals || {};\r\n\r\n/***/ }),\r\n/* 2 */\r\n/***/ (function(module, exports) {\r\n\r\nmodule.exports = require(\"react-dom\");\r\n\r\n/***/ }),\r\n/* 3 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\nvar isOldIE = function isOldIE() {\r\n var memo;\r\n return function memorize() {\r\n if (typeof memo === 'undefined') {\r\n // Test for IE <= 9 as proposed by Browserhacks\r\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\r\n // Tests for existence of standard globals is to allow style-loader\r\n // to operate correctly into non-standard environments\r\n // @see https://github.com/webpack-contrib/style-loader/issues/177\r\n memo = Boolean(window && document && document.all && !window.atob);\r\n }\r\n\r\n return memo;\r\n };\r\n}();\r\n\r\nvar getTarget = function getTarget() {\r\n var memo = {};\r\n return function memorize(target) {\r\n if (typeof memo[target] === 'undefined') {\r\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\r\n\r\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\r\n try {\r\n // This will throw an exception if access to iframe is blocked\r\n // due to cross-origin restrictions\r\n styleTarget = styleTarget.contentDocument.head;\r\n } catch (e) {\r\n // istanbul ignore next\r\n styleTarget = null;\r\n }\r\n }\r\n\r\n memo[target] = styleTarget;\r\n }\r\n\r\n return memo[target];\r\n };\r\n}();\r\n\r\nvar stylesInDom = [];\r\n\r\nfunction getIndexByIdentifier(identifier) {\r\n var result = -1;\r\n\r\n for (var i = 0; i < stylesInDom.length; i++) {\r\n if (stylesInDom[i].identifier === identifier) {\r\n result = i;\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n}\r\n\r\nfunction modulesToDom(list, options) {\r\n var idCountMap = {};\r\n var identifiers = [];\r\n\r\n for (var i = 0; i < list.length; i++) {\r\n var item = list[i];\r\n var id = options.base ? item[0] + options.base : item[0];\r\n var count = idCountMap[id] || 0;\r\n var identifier = \"\".concat(id, \" \").concat(count);\r\n idCountMap[id] = count + 1;\r\n var index = getIndexByIdentifier(identifier);\r\n var obj = {\r\n css: item[1],\r\n media: item[2],\r\n sourceMap: item[3]\r\n };\r\n\r\n if (index !== -1) {\r\n stylesInDom[index].references++;\r\n stylesInDom[index].updater(obj);\r\n } else {\r\n stylesInDom.push({\r\n identifier: identifier,\r\n updater: addStyle(obj, options),\r\n references: 1\r\n });\r\n }\r\n\r\n identifiers.push(identifier);\r\n }\r\n\r\n return identifiers;\r\n}\r\n\r\nfunction insertStyleElement(options) {\r\n var style = document.createElement('style');\r\n var attributes = options.attributes || {};\r\n\r\n if (typeof attributes.nonce === 'undefined') {\r\n var nonce = true ? __webpack_require__.nc : undefined;\r\n\r\n if (nonce) {\r\n attributes.nonce = nonce;\r\n }\r\n }\r\n\r\n Object.keys(attributes).forEach(function (key) {\r\n style.setAttribute(key, attributes[key]);\r\n });\r\n\r\n if (typeof options.insert === 'function') {\r\n options.insert(style);\r\n } else {\r\n var target = getTarget(options.insert || 'head');\r\n\r\n if (!target) {\r\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\r\n }\r\n\r\n target.appendChild(style);\r\n }\r\n\r\n return style;\r\n}\r\n\r\nfunction removeStyleElement(style) {\r\n // istanbul ignore if\r\n if (style.parentNode === null) {\r\n return false;\r\n }\r\n\r\n style.parentNode.removeChild(style);\r\n}\r\n/* istanbul ignore next */\r\n\r\n\r\nvar replaceText = function replaceText() {\r\n var textStore = [];\r\n return function replace(index, replacement) {\r\n textStore[index] = replacement;\r\n return textStore.filter(Boolean).join('\\n');\r\n };\r\n}();\r\n\r\nfunction applyToSingletonTag(style, index, remove, obj) {\r\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\r\n\r\n /* istanbul ignore if */\r\n\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = replaceText(index, css);\r\n } else {\r\n var cssNode = document.createTextNode(css);\r\n var childNodes = style.childNodes;\r\n\r\n if (childNodes[index]) {\r\n style.removeChild(childNodes[index]);\r\n }\r\n\r\n if (childNodes.length) {\r\n style.insertBefore(cssNode, childNodes[index]);\r\n } else {\r\n style.appendChild(cssNode);\r\n }\r\n }\r\n}\r\n\r\nfunction applyToTag(style, options, obj) {\r\n var css = obj.css;\r\n var media = obj.media;\r\n var sourceMap = obj.sourceMap;\r\n\r\n if (media) {\r\n style.setAttribute('media', media);\r\n } else {\r\n style.removeAttribute('media');\r\n }\r\n\r\n if (sourceMap && typeof btoa !== 'undefined') {\r\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\r\n } // For old IE\r\n\r\n /* istanbul ignore if */\r\n\r\n\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = css;\r\n } else {\r\n while (style.firstChild) {\r\n style.removeChild(style.firstChild);\r\n }\r\n\r\n style.appendChild(document.createTextNode(css));\r\n }\r\n}\r\n\r\nvar singleton = null;\r\nvar singletonCounter = 0;\r\n\r\nfunction addStyle(obj, options) {\r\n var style;\r\n var update;\r\n var remove;\r\n\r\n if (options.singleton) {\r\n var styleIndex = singletonCounter++;\r\n style = singleton || (singleton = insertStyleElement(options));\r\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\r\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\r\n } else {\r\n style = insertStyleElement(options);\r\n update = applyToTag.bind(null, style, options);\r\n\r\n remove = function remove() {\r\n removeStyleElement(style);\r\n };\r\n }\r\n\r\n update(obj);\r\n return function updateStyle(newObj) {\r\n if (newObj) {\r\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\r\n return;\r\n }\r\n\r\n update(obj = newObj);\r\n } else {\r\n remove();\r\n }\r\n };\r\n}\r\n\r\nmodule.exports = function (list, options) {\r\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\r\n // tags it will allow on a page\r\n\r\n if (!options.singleton && typeof options.singleton !== 'boolean') {\r\n options.singleton = isOldIE();\r\n }\r\n\r\n list = list || [];\r\n var lastIdentifiers = modulesToDom(list, options);\r\n return function update(newList) {\r\n newList = newList || [];\r\n\r\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\r\n return;\r\n }\r\n\r\n for (var i = 0; i < lastIdentifiers.length; i++) {\r\n var identifier = lastIdentifiers[i];\r\n var index = getIndexByIdentifier(identifier);\r\n stylesInDom[index].references--;\r\n }\r\n\r\n var newLastIdentifiers = modulesToDom(newList, options);\r\n\r\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\r\n var _identifier = lastIdentifiers[_i];\r\n\r\n var _index = getIndexByIdentifier(_identifier);\r\n\r\n if (stylesInDom[_index].references === 0) {\r\n stylesInDom[_index].updater();\r\n\r\n stylesInDom.splice(_index, 1);\r\n }\r\n }\r\n\r\n lastIdentifiers = newLastIdentifiers;\r\n };\r\n};\r\n\r\n/***/ }),\r\n/* 4 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n\"use strict\";\r\n\r\n\r\n/*\r\n MIT License http://www.opensource.org/licenses/mit-license.php\r\n Author Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\n// eslint-disable-next-line func-names\r\nmodule.exports = function (useSourceMap) {\r\n var list = []; // return the list of modules as css string\r\n\r\n list.toString = function toString() {\r\n return this.map(function (item) {\r\n var content = cssWithMappingToString(item, useSourceMap);\r\n\r\n if (item[2]) {\r\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\r\n }\r\n\r\n return content;\r\n }).join('');\r\n }; // import a list of modules into the list\r\n // eslint-disable-next-line func-names\r\n\r\n\r\n list.i = function (modules, mediaQuery, dedupe) {\r\n if (typeof modules === 'string') {\r\n // eslint-disable-next-line no-param-reassign\r\n modules = [[null, modules, '']];\r\n }\r\n\r\n var alreadyImportedModules = {};\r\n\r\n if (dedupe) {\r\n for (var i = 0; i < this.length; i++) {\r\n // eslint-disable-next-line prefer-destructuring\r\n var id = this[i][0];\r\n\r\n if (id != null) {\r\n alreadyImportedModules[id] = true;\r\n }\r\n }\r\n }\r\n\r\n for (var _i = 0; _i < modules.length; _i++) {\r\n var item = [].concat(modules[_i]);\r\n\r\n if (dedupe && alreadyImportedModules[item[0]]) {\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n\r\n if (mediaQuery) {\r\n if (!item[2]) {\r\n item[2] = mediaQuery;\r\n } else {\r\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\r\n }\r\n }\r\n\r\n list.push(item);\r\n }\r\n };\r\n\r\n return list;\r\n};\r\n\r\nfunction cssWithMappingToString(item, useSourceMap) {\r\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\r\n\r\n var cssMapping = item[3];\r\n\r\n if (!cssMapping) {\r\n return content;\r\n }\r\n\r\n if (useSourceMap && typeof btoa === 'function') {\r\n var sourceMapping = toComment(cssMapping);\r\n var sourceURLs = cssMapping.sources.map(function (source) {\r\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\r\n });\r\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\r\n }\r\n\r\n return [content].join('\\n');\r\n} // Adapted from convert-source-map (MIT)\r\n\r\n\r\nfunction toComment(sourceMap) {\r\n // eslint-disable-next-line no-undef\r\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\r\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\r\n return \"/*# \".concat(data, \" */\");\r\n}\r\n\r\n/***/ }),\r\n/* 5 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar api = __webpack_require__(3);\r\n var content = __webpack_require__(6);\r\n\r\n content = content.__esModule ? content.default : content;\r\n\r\n if (typeof content === 'string') {\r\n content = [[module.i, content, '']];\r\n }\r\n\r\nvar options = {};\r\n\r\noptions.insert = \"head\";\r\noptions.singleton = false;\r\n\r\nvar update = api(content, options);\r\n\r\n\r\n\r\nmodule.exports = content.locals || {};\r\n\r\n/***/ }),\r\n/* 6 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// Imports\r\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(4);\r\nexports = ___CSS_LOADER_API_IMPORT___(false);\r\n// Module\r\nexports.push([module.i, \".resizeImageWrapper {\\r\\n outline: 3px solid #b4d7ff;\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.resizer {\\r\\n position: absolute;\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n background-color: #4099ff;\\r\\n right: -5px;\\r\\n bottom: -5px;\\r\\n cursor: se-resize;\\r\\n}\\r\\n\\r\\n.resizer.topRight {\\r\\n right: -5px;\\r\\n top: -5px;\\r\\n cursor: ne-resize;\\r\\n}\\r\\n\\r\\n.resizer.bottomLeft {\\r\\n bottom: -5px;\\r\\n left: -5px;\\r\\n cursor: ne-resize;\\r\\n}\\r\\n\\r\\n.resizer.topLeft {\\r\\n top: -5px;\\r\\n left: -5px;\\r\\n cursor: se-resize;\\r\\n}\\r\\n\\r\\n\\r\\n/* Wrapper for iframe and overlay */\\r\\n.iframe-wrapper {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n/* Overlay shown on hover */\\r\\n.iframe-wrapper .iframe-overlay {\\r\\n position: absolute;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n background: rgba(0, 0, 0, 0.35);\\r\\n z-index: 5;\\r\\n pointer-events: none;\\r\\n display: none;\\r\\n}\\r\\n\\r\\n/* Settings button */\\r\\n.iframe-wrapper .iframe-settings-btn {\\r\\n position: absolute;\\r\\n top: 5px;\\r\\n right: 5px;\\r\\n z-index: 10;\\r\\n display: none;\\r\\n background: #fff;\\r\\n border: 1px solid #ccc;\\r\\n border-radius: 4px;\\r\\n padding: 4px 6px;\\r\\n cursor: pointer;\\r\\n pointer-events: auto;\\r\\n text-align: center;\\r\\n}\\r\\n\\r\\n/* Show both overlay and button on hover */\\r\\n.iframe-wrapper:hover .iframe-overlay,\\r\\n.iframe-wrapper:hover .iframe-settings-btn {\\r\\n display: block;\\r\\n}\", \"\"]);\r\n// Exports\r\nmodule.exports = exports;\r\n\r\n\r\n/***/ }),\r\n/* 7 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// Imports\r\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(4);\r\nexports = ___CSS_LOADER_API_IMPORT___(false);\r\n// Module\r\nexports.push([module.i, \":root {\\r\\n --editor-background-color: #fff;\\r\\n --editor-border-color: #eee;\\r\\n --editor-text-color: #414141;\\r\\n --editor-toolbar-button-background: #fff;\\r\\n --editor-toolbar-text-color: #414141;\\r\\n --editor-toolbar-button-hover-background: #efefef;\\r\\n --editor-toolbar-button-selected-background: #dee0e2;\\r\\n --editor-svg-color: #414141;\\r\\n --editor-save-button-background: rgb(9, 134, 62);\\r\\n}\\r\\n\\r\\nhtml,\\r\\nbody {\\r\\n padding: 0;\\r\\n margin: 0;\\r\\n box-sizing: border-box;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI img {\\r\\n max-width: 100%;\\r\\n height: auto;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq p,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq pre,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h2,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h3,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h4,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h5,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h6,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq blockquote,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectOption___7easq h1 {\\r\\n margin: 0;\\r\\n color: var(--editor-toolbar-text-color) !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI {\\r\\n background-color: var(--editor-background-color);\\r\\n border: 2px solid var(--editor-border-color);\\r\\n color: var(--editor-text-color);\\r\\n line-height: 16px !important;\\r\\n font-family: system-ui !important;\\r\\n border-radius: 10px;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj p {\\r\\n margin: 0 0 1em 0 !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__actionComponents___nnaIk {\\r\\n margin: 0px 12px;\\r\\n box-shadow: 0 2px 2px -2px rgba(34, 47, 62, 0.1),\\r\\n 0 8px 8px -4px rgba(34, 47, 62, 0.07);\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbar___3YLm2 {\\r\\n /* border-bottom: 1px solid var(--editor-border-color); */\\r\\n font-size: 18px;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n flex-wrap: wrap;\\r\\n margin: 6px 0px;\\r\\n position: relative;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbarWrapper___Sl-RX {\\r\\n background-position: center top 42px;\\r\\n background-size: calc(100% - 0px * 2) calc(100% - 0px);\\r\\n background-attachment: local;\\r\\n background-color: #fff;\\r\\n background-image: repeating-linear-gradient(\\r\\n #e3e3e3 0 1px,\\r\\n transparent 1px 44px\\r\\n );\\r\\n background-repeat: no-repeat;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbar___3YLm2 .style-module__hr1___2GDDO {\\r\\n position: absolute;\\r\\n width: 98%;\\r\\n border-color: var(--editor-border-color);\\r\\n border: none;\\r\\n border-top: 1px solid var(--editor-border-color);\\r\\n height: 1px;\\r\\n display: none;\\r\\n top: 32px;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbar___3YLm2 .style-module__hr2___2wfnq {\\r\\n top: 64px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbar___3YLm2 .style-module__buttonGroup___2VL8t {\\r\\n display: inline-block;\\r\\n border-right: 1px solid var(--editor-border-color);\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbar___3YLm2 button {\\r\\n background: var(--editor-toolbar-button-background);\\r\\n outline: none;\\r\\n border: none;\\r\\n border-radius: 4px;\\r\\n cursor: pointer;\\r\\n padding: 6px 10px;\\r\\n color: var(--editor-toolbar-text-color);\\r\\n line-height: 16px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__wysiwygEditorToolbarWrapper___Sl-RX button {\\r\\n margin-block: 6px;\\r\\n}\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button:disabled,\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button.style-module__disabled___31WG5 {\\r\\n cursor: not-allowed;\\r\\n}\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button:disabled svg,\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button.style-module__disabled___31WG5 svg {\\r\\n fill: #9fa2a6;\\r\\n}\\r\\n\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button:hover {\\r\\n background-color: var(--editor-toolbar-button-hover-background);\\r\\n}\\r\\n\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 input {\\r\\n background-color: transparent;\\r\\n border: 1px solid var(--editor-border-color);\\r\\n outline: none;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 select,\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 select:focus-visible {\\r\\n border: none !important;\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj {\\r\\n padding: 8px 12px;\\r\\n margin: 2px;\\r\\n height: 250px;\\r\\n overflow: auto;\\r\\n resize: vertical;\\r\\n max-width: 100% !important;\\r\\n line-height: normal;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__placeholderText___20Ilw {\\r\\n opacity: 0.8;\\r\\n font-style: italic;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h1,\\r\\n.style-module__mlMainContentBox___3RMYj h2,\\r\\n.style-module__mlMainContentBox___3RMYj h3,\\r\\n.style-module__mlMainContentBox___3RMYj h4,\\r\\n.style-module__mlMainContentBox___3RMYj h5,\\r\\n.style-module__mlMainContentBox___3RMYj h6,\\r\\n.style-module__mlMainContentBox___3RMYj p {\\r\\n margin-top: 0;\\r\\n color: var(--editor-text-color);\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h1 {\\r\\n font-size: 2em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h2 {\\r\\n font-size: 1.5em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h3 {\\r\\n font-size: 1.17em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h4 {\\r\\n font-size: 1em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h5 {\\r\\n font-size: 0.83em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj h6 {\\r\\n font-size: 0.67em;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj p {\\r\\n font-size: 1em;\\r\\n}\\r\\n\\r\\n.style-module__linkImage___M2hpC {\\r\\n height: 80px;\\r\\n width: 80px;\\r\\n object-fit: cover;\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-radius: 5px;\\r\\n}\\r\\n\\r\\n.style-module__linkImageBox___d0yYz {\\r\\n height: 80px;\\r\\n width: 80px;\\r\\n position: relative;\\r\\n margin-top: 10px;\\r\\n}\\r\\n.style-module__linkImageCross___WbyR3 {\\r\\n position: absolute;\\r\\n top: -5px;\\r\\n right: -7px;\\r\\n height: 20px;\\r\\n width: 20px;\\r\\n background-color: red;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n border-radius: 50%;\\r\\n color: #fff;\\r\\n cursor: pointer;\\r\\n padding-bottom: 3px;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj:focus-visible {\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.style-module__wysiwygEditorSource___2DKV1 {\\r\\n width: 98%;\\r\\n height: 80%;\\r\\n outline: none;\\r\\n padding: 10px;\\r\\n font-family: \\\"Courier New\\\", Monospace !important;\\r\\n font-size: small;\\r\\n white-space: pre-wrap;\\r\\n margin: 0;\\r\\n display: block;\\r\\n font-size: 16px;\\r\\n resize: none;\\r\\n}\\r\\n\\r\\n/* Modal.css */\\r\\n\\r\\n.style-module__modalOverlay___TXsmk {\\r\\n font-family: system-ui !important;\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n background-color: rgba(0, 0, 0, 0.5);\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n z-index: 999999;\\r\\n}\\r\\n\\r\\n.style-module__imageModelOverlay___8jCM7 {\\r\\n z-index: 999999;\\r\\n}\\r\\n\\r\\n.style-module__fillScreenView___13J2K {\\r\\n z-index: 999999;\\r\\n}\\r\\n\\r\\n.style-module__modelTitle___3jHG7 {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n}\\r\\n\\r\\n.style-module__modelTitle___3jHG7 h2 {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.style-module__modelTitle___3jHG7 svg {\\r\\n font-size: 25px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.style-module__modalPopup___1C0ia {\\r\\n background-color: #fff;\\r\\n padding: 20px;\\r\\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\\r\\n width: 400px;\\r\\n max-width: 85%;\\r\\n color: #000;\\r\\n border-radius: 5px;\\r\\n}\\r\\n\\r\\n.style-module__fillScreenView___13J2K .style-module__modalPopup___1C0ia {\\r\\n max-width: 100% !important;\\r\\n width: 100vw !important;\\r\\n height: 100vh !important;\\r\\n z-index: 1;\\r\\n padding: 0 !important;\\r\\n overflow: hidden;\\r\\n border-radius: 0 !important;\\r\\n}\\r\\n\\r\\n.style-module__modalPopup___1C0ia hr {\\r\\n margin-bottom: 0;\\r\\n}\\r\\n\\r\\n.style-module__modalCloseBtn___2Qx0Z {\\r\\n position: absolute;\\r\\n top: 10px;\\r\\n right: 10px;\\r\\n background: none;\\r\\n border: none;\\r\\n cursor: pointer;\\r\\n padding: 5px 10px;\\r\\n font-size: 16px;\\r\\n}\\r\\n\\r\\n.style-module__wysiwygEditorToolbar___3YLm2 button svg {\\r\\n fill: var(--editor-svg-color);\\r\\n color: var(--editor-svg-color);\\r\\n display: inline-block;\\r\\n height: 15px;\\r\\n width: 14px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__customSelect___vdO64 {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n cursor: pointer;\\r\\n font-size: 16px;\\r\\n padding: 6px;\\r\\n color: var(--editor-toolbar-text-color);\\r\\n line-height: 16px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__customSelectFormat___3e6iP {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n cursor: pointer;\\r\\n font-size: 14px;\\r\\n padding: 6px;\\r\\n line-height: 16px;\\r\\n margin-inline: 2px;\\r\\n background-color: #f7f7f7 !important;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__customSelectFormat___3e6iP:hover {\\r\\n background-color: var(--editor-toolbar-button-hover-background) !important;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__customSelectFormat___3e6iP .style-module__selectSelected___2eABi {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: center;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__customSelectFormat___3e6iP .style-module__selectSelected___2eABi svg {\\r\\n width: 10px;\\r\\n height: 10px;\\r\\n margin-inline-start: 12px;\\r\\n opacity: 0.5;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__mainColorComponent___KneIc svg {\\r\\n height: 15px !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 {\\r\\n position: absolute;\\r\\n background-color: #fff;\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-radius: 2px;\\r\\n z-index: 2;\\r\\n width: 160px;\\r\\n max-height: 200px;\\r\\n overflow-y: auto;\\r\\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\\r\\n top: 29px;\\r\\n left: 0;\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 button {\\r\\n display: flex !important;\\r\\n width: 100%;\\r\\n padding: 7px;\\r\\n font-family: system-ui !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__pItems___1bRzo .style-module__selectItems___3G3Z7 {\\r\\n left: 142px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF {\\r\\n position: absolute;\\r\\n background-color: var(--editor-background-color);\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-top: none;\\r\\n border-radius: 2px;\\r\\n z-index: 1;\\r\\n max-height: 200px;\\r\\n overflow-y: auto;\\r\\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\\r\\n left: 0;\\r\\n top: 30px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF .style-module__selectOption___7easq:hover {\\r\\n background-color: var(--editor-toolbar-button-hover-background) !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h1 {\\r\\n font-size: 32px !important;\\r\\n font-weight: 600;\\r\\n line-height: 32px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h2 {\\r\\n font-size: 28px !important;\\r\\n font-weight: 600;\\r\\n line-height: 28px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h3 {\\r\\n font-size: 24px !important;\\r\\n font-weight: 600;\\r\\n line-height: 24px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h4 {\\r\\n font-size: 20px !important;\\r\\n line-height: 20px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h5 {\\r\\n font-size: 16px !important;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF h6 {\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7.style-module__show___3qCvb {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 .style-module__selectOption___7easq,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsFormat___3EcHF .style-module__selectOption___7easq {\\r\\n padding: 6px 10px;\\r\\n cursor: pointer;\\r\\n font-size: 16px;\\r\\n white-space: nowrap;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 .style-module__selectInsert___2lLJI svg {\\r\\n height: 20px;\\r\\n width: 20px;\\r\\n margin-right: 7px;\\r\\n color: var(--editor-svg-color);\\r\\n fill: var(--editor-svg-color);\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 button svg {\\r\\n height: 16px !important;\\r\\n width: 16px !important;\\r\\n margin-top: 2px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 .style-module__selectInsert___2lLJI span {\\r\\n margin-top: 2px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectedOption___bGTuj {\\r\\n background-color: var(--editor-toolbar-button-selected-background) !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItems___3G3Z7 .style-module__selectOption___7easq:hover,\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectInsert___2lLJI:hover {\\r\\n background-color: var(--editor-toolbar-button-hover-background) !important;\\r\\n}\\r\\n\\r\\n.style-module__formControlInput___JxKoB {\\r\\n font-family: system-ui !important;\\r\\n width: 100%;\\r\\n padding: 7px;\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-radius: 3px;\\r\\n}\\r\\n\\r\\n.style-module__formControlInput___JxKoB:focus-visible {\\r\\n outline: none;\\r\\n}\\r\\n\\r\\n.style-module__saveButton___jY5in {\\r\\n background-color: var(--editor-save-button-background);\\r\\n color: #fff;\\r\\n padding: 7px 14px;\\r\\n border: none;\\r\\n margin-top: 10px;\\r\\n border-radius: 3px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.style-module__saveButton___jY5in:disabled {\\r\\n opacity: 0.4;\\r\\n cursor: not-allowed;\\r\\n}\\r\\n\\r\\n.style-module__cancel__btn___3wtVx {\\r\\n background-color: red;\\r\\n color: #fff;\\r\\n padding: 7px 14px;\\r\\n border: none;\\r\\n margin-top: 10px;\\r\\n border-radius: 3px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.style-module__selectType___2EuiV button {\\r\\n padding: 6px 20px;\\r\\n background-color: var(--editor-toolbar-button-background);\\r\\n border: 1px solid var(--editor-border-color);\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.style-module__selectType___2EuiV button.style-module__selectedType___1pN_w {\\r\\n background-color: #efefef;\\r\\n}\\r\\n\\r\\n.style-module__specialCharBox___5ivgz {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n}\\r\\n\\r\\n.style-module__specialChar___3kuh4 {\\r\\n width: 30px;\\r\\n height: 30px;\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n cursor: pointer;\\r\\n border-radius: 2px;\\r\\n}\\r\\n\\r\\n.style-module__specialChar___3kuh4:hover {\\r\\n background-color: #dee0e2;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectInsert___2lLJI {\\r\\n min-width: 120px;\\r\\n font-size: 16px;\\r\\n text-align: left;\\r\\n padding: 8px 10px;\\r\\n white-space: nowrap;\\r\\n display: flex;\\r\\n border-top: 1px solid var(--editor-border-color) !important;\\r\\n color: var(--editor-text-color) !important;\\r\\n background-color: var(--editor-background-color);\\r\\n border-radius: 0 !important;\\r\\n margin: 0 !important;\\r\\n}\\r\\n\\r\\n/* width */\\r\\n.style-module__reactEditorMain___20UxI ::-webkit-scrollbar {\\r\\n width: 5px;\\r\\n}\\r\\n\\r\\n/* Track */\\r\\n.style-module__reactEditorMain___20UxI ::-webkit-scrollbar-track {\\r\\n background: #f1f1f1;\\r\\n}\\r\\n\\r\\n/* Handle */\\r\\n.style-module__reactEditorMain___20UxI ::-webkit-scrollbar-thumb {\\r\\n background: #c4c4c4;\\r\\n}\\r\\n\\r\\n/* Handle on hover */\\r\\n.style-module__reactEditorMain___20UxI ::-webkit-scrollbar-thumb:hover {\\r\\n background: #555;\\r\\n}\\r\\n\\r\\n.style-module__fullScreenModel___2BTIF {\\r\\n width: 95% !important;\\r\\n height: 85vh;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj blockquote {\\r\\n border-left: 2px solid var(--editor-border-color);\\r\\n border-left-width: 5px;\\r\\n margin-left: 1.5rem;\\r\\n padding: 2px 0;\\r\\n padding-left: 1rem;\\r\\n font-style: italic;\\r\\n font-family: Georgia, Times, \\\"Times New Roman\\\", serif;\\r\\n color: var(--editor-text-color);\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectItemsNested___3AX3C.style-module__left___19fvP {\\r\\n left: -100%;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectFormationDropdown___2zsBU {\\r\\n position: absolute;\\r\\n background-color: var(--editor-background-color);\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-radius: 4px;\\r\\n left: 154px;\\r\\n display: none;\\r\\n min-width: 140px;\\r\\n z-index: 2;\\r\\n max-height: 200px;\\r\\n overflow-x: hidden;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__fontSizeDropdown___2JM1U {\\r\\n min-width: 90px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__fontSizeDropdown___2JM1U .style-module__selectOption___7easq {\\r\\n padding: 10px;\\r\\n border-bottom: 1px solid var(--editor-border-color);\\r\\n font-size: 16px;\\r\\n width: 98%;\\r\\n margin: 0;\\r\\n border-radius: 0 !important;\\r\\n font-family: system-ui !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__selectFormationDropdown___2zsBU.style-module__show___3qCvb {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__fontFamilyOption___1iKD6 {\\r\\n display: block;\\r\\n width: 99%;\\r\\n padding: 9px !important;\\r\\n border-top: 1px solid var(--editor-border-color) !important;\\r\\n margin: 0 !important;\\r\\n border-radius: 0 !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__fontFamilyOption___1iKD6:hover {\\r\\n background-color: var(--editor-toolbar-button-hover-background);\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__bottomColoredLine___2ZzSJ {\\r\\n height: 3px;\\r\\n width: 14px;\\r\\n background-color: var(--editor-svg-color);\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__mainColorComponent___KneIc {\\r\\n position: relative;\\r\\n display: inline-block;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__openColorBox___HXFEl {\\r\\n position: absolute;\\r\\n height: 140px;\\r\\n width: 140px;\\r\\n background-color: var(--editor-background-color);\\r\\n border: 1px solid var(--editor-border-color);\\r\\n top: 30px;\\r\\n left: -1px;\\r\\n display: none;\\r\\n z-index: 1;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__colorBoxGrid___2aldn button {\\r\\n padding: 0 !important;\\r\\n margin: 0 !important;\\r\\n border-radius: 0 !important;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__openColorBox___HXFEl.style-module__show___3qCvb {\\r\\n display: block;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__colorBox___34xoe {\\r\\n height: 28px;\\r\\n width: 28px;\\r\\n cursor: pointer;\\r\\n background-color: var(--editor-background-color);\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__customColorPicker___1m1Pk {\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n align-items: center;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__customColorPicker___1m1Pk svg {\\r\\n height: 20px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__increaseIconSize___jwjQX svg {\\r\\n height: 20px !important;\\r\\n width: 17px !important;\\r\\n /* margin-top: 3px; */\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__increaseIconSize___jwjQX button {\\r\\n padding: 3px 10px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__colorBox___34xoe:hover {\\r\\n transform: scale(1.2);\\r\\n transition: transform 0.5s ease;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__verticalLine___3Ck-S {\\r\\n height: 32px;\\r\\n width: 12px;\\r\\n /* background-color: var(--editor-border-color); */\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorMt2___6i1Q_ {\\r\\n margin-top: 2px;\\r\\n}\\r\\n.style-module__reactEditorMt10___2Crph {\\r\\n margin-top: 10px;\\r\\n}\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorMe5___280IF {\\r\\n margin-right: 5px;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorTextEnd___1pcIh {\\r\\n text-align: right;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorTextLeft___3E-uy {\\r\\n text-align: left;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorDFlex___XY9O6,\\r\\n.style-module__reactEditorDFlex___XY9O6 {\\r\\n display: flex;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorW47___2e5OR,\\r\\n.style-module__reactEditorW47___2e5OR {\\r\\n width: 47%;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorW45___18O_s,\\r\\n.style-module__reactEditorW45___18O_s {\\r\\n width: 40%;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__justifyContentBetween___17lWt,\\r\\n.style-module__justifyContentBetween___17lWt {\\r\\n justify-content: space-between;\\r\\n}\\r\\n\\r\\n.style-module__reactEditorMain___20UxI .style-module__reactEditorFlexColumn___kYPWH,\\r\\n.style-module__reactEditorFlexColumn___kYPWH {\\r\\n flex-direction: column;\\r\\n}\\r\\n\\r\\n.style-module__editorErrorMessage___3IFX_ {\\r\\n color: red;\\r\\n}\\r\\n\\r\\n.style-module__mlMainContentBox___3RMYj:empty:before {\\r\\n content: attr(data-placeholder);\\r\\n color: #aaa;\\r\\n pointer-events: none;\\r\\n}\\r\\n[contenteditable][data-mlx-editor-empty=\\\"true\\\"]::before {\\r\\n content: attr(data-placeholder);\\r\\n color: #aaa;\\r\\n pointer-events: none;\\r\\n position: absolute;\\r\\n}\\r\\n\\r\\n.style-module__fullScreen___2IkPb {\\r\\n position: fixed !important;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100% !important;\\r\\n height: 100% !important;\\r\\n background-color: var(--editor-toolbar-button-background);\\r\\n overflow: hidden;\\r\\n z-index: 99999 !important;\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopupBackground___2kc56 {\\r\\n position: absolute;\\r\\n cursor: pointer;\\r\\n background-color: var(--editor-toolbar-button-background);\\r\\n border: 1px solid var(--editor-border-color);\\r\\n border-radius: 5px;\\r\\n z-index: 1000;\\r\\n min-width: 100px;\\r\\n padding: 3px 0px;\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopupBackground___2kc56 hr {\\r\\n margin: 0;\\r\\n border: none;\\r\\n border-top: 1px solid var(--editor-border-color);\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopup___2fZw0 {\\r\\n padding: 5px 10px;\\r\\n font-family: system-ui;\\r\\n font-size: 15px;\\r\\n color: var(--editor-text-color);\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopup___2fZw0:hover {\\r\\n background: var(--editor-toolbar-button-hover-background);\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopup___2fZw0 svg {\\r\\n margin-right: 5px;\\r\\n height: 20px;\\r\\n width: 20px;\\r\\n vertical-align: bottom;\\r\\n}\\r\\n\\r\\n.style-module__rightClickPopup___2fZw0.style-module__openLink___1piNb svg {\\r\\n height: 15px;\\r\\n margin-bottom: 1px;\\r\\n}\\r\\n\\r\\n.style-module__lockUnlockIcon___1F-wI svg {\\r\\n height: 16px;\\r\\n margin-top: 38px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\ninput::-webkit-outer-spin-button,\\r\\ninput::-webkit-inner-spin-button {\\r\\n -webkit-appearance: none;\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n/* Firefox */\\r\\ninput[type=\\\"number\\\"] {\\r\\n -moz-appearance: textfield;\\r\\n}\\r\\n\\r\\n.style-module__content__editable__container___2AcZS {\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.style-module__image__submit__container___2vOVM {\\r\\n display: flex;\\r\\n justify-content: space-between;\\r\\n align-items: flex-end;\\r\\n margin-top: 10px;\\r\\n}\\r\\n\\r\\n.style-module__image__submit__container___2vOVM img {\\r\\n width: 80px;\\r\\n height: 80px;\\r\\n border-radius: 5px;\\r\\n border: 1px solid;\\r\\n cursor: pointer;\\r\\n background-color: rgb(0 0 0 / 13%);\\r\\n object-fit: cover;\\r\\n}\\r\\n\\r\\n.style-module__image__cropper_btn___Jv5gI {\\r\\n display: flex;\\r\\n justify-content: center;\\r\\n gap: 10px;\\r\\n}\\r\\n\\r\\n.style-module__image__cropper__box___JKomv img {\\r\\n background-color: rgb(0 0 0 / 13%);\\r\\n}\\r\\n\\r\\n.style-module__image__preview__box___2hEkQ {\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.style-module__image__preview__box___2hEkQ:last-child {\\r\\n max-height: 400px;\\r\\n overflow: auto;\\r\\n}\\r\\n\\r\\n.style-module__image__preview__box___2hEkQ svg {\\r\\n position: absolute;\\r\\n top: 2px;\\r\\n right: 2px;\\r\\n height: 20px;\\r\\n fill: #fff;\\r\\n}\\r\\n\", \"\"]);\r\n// Exports\r\nexports.locals = {\r\n\t\"reactEditorMain\": \"style-module__reactEditorMain___20UxI\",\r\n\t\"selectOption\": \"style-module__selectOption___7easq\",\r\n\t\"mlMainContentBox\": \"style-module__mlMainContentBox___3RMYj\",\r\n\t\"actionComponents\": \"style-module__actionComponents___nnaIk\",\r\n\t\"wysiwygEditorToolbar\": \"style-module__wysiwygEditorToolbar___3YLm2\",\r\n\t\"wysiwygEditorToolbarWrapper\": \"style-module__wysiwygEditorToolbarWrapper___Sl-RX\",\r\n\t\"hr1\": \"style-module__hr1___2GDDO\",\r\n\t\"hr2\": \"style-module__hr2___2wfnq\",\r\n\t\"buttonGroup\": \"style-module__buttonGroup___2VL8t\",\r\n\t\"disabled\": \"style-module__disabled___31WG5\",\r\n\t\"placeholderText\": \"style-module__placeholderText___20Ilw\",\r\n\t\"linkImage\": \"style-module__linkImage___M2hpC\",\r\n\t\"linkImageBox\": \"style-module__linkImageBox___d0yYz\",\r\n\t\"linkImageCross\": \"style-module__linkImageCross___WbyR3\",\r\n\t\"wysiwygEditorSource\": \"style-module__wysiwygEditorSource___2DKV1\",\r\n\t\"modalOverlay\": \"style-module__modalOverlay___TXsmk\",\r\n\t\"imageModelOverlay\": \"style-module__imageModelOverlay___8jCM7\",\r\n\t\"fillScreenView\": \"style-module__fillScreenView___13J2K\",\r\n\t\"modelTitle\": \"style-module__modelTitle___3jHG7\",\r\n\t\"modalPopup\": \"style-module__modalPopup___1C0ia\",\r\n\t\"modalCloseBtn\": \"style-module__modalCloseBtn___2Qx0Z\",\r\n\t\"customSelect\": \"style-module__customSelect___vdO64\",\r\n\t\"customSelectFormat\": \"style-module__customSelectFormat___3e6iP\",\r\n\t\"selectSelected\": \"style-module__selectSelected___2eABi\",\r\n\t\"mainColorComponent\": \"style-module__mainColorComponent___KneIc\",\r\n\t\"selectItems\": \"style-module__selectItems___3G3Z7\",\r\n\t\"pItems\": \"style-module__pItems___1bRzo\",\r\n\t\"selectItemsFormat\": \"style-module__selectItemsFormat___3EcHF\",\r\n\t\"show\": \"style-module__show___3qCvb\",\r\n\t\"selectInsert\": \"style-module__selectInsert___2lLJI\",\r\n\t\"selectedOption\": \"style-module__selectedOption___bGTuj\",\r\n\t\"formControlInput\": \"style-module__formControlInput___JxKoB\",\r\n\t\"saveButton\": \"style-module__saveButton___jY5in\",\r\n\t\"cancel__btn\": \"style-module__cancel__btn___3wtVx\",\r\n\t\"selectType\": \"style-module__selectType___2EuiV\",\r\n\t\"selectedType\": \"style-module__selectedType___1pN_w\",\r\n\t\"specialCharBox\": \"style-module__specialCharBox___5ivgz\",\r\n\t\"specialChar\": \"style-module__specialChar___3kuh4\",\r\n\t\"fullScreenModel\": \"style-module__fullScreenModel___2BTIF\",\r\n\t\"selectItemsNested\": \"style-module__selectItemsNested___3AX3C\",\r\n\t\"left\": \"style-module__left___19fvP\",\r\n\t\"selectFormationDropdown\": \"style-module__selectFormationDropdown___2zsBU\",\r\n\t\"fontSizeDropdown\": \"style-module__fontSizeDropdown___2JM1U\",\r\n\t\"fontFamilyOption\": \"style-module__fontFamilyOption___1iKD6\",\r\n\t\"bottomColoredLine\": \"style-module__bottomColoredLine___2ZzSJ\",\r\n\t\"openColorBox\": \"style-module__openColorBox___HXFEl\",\r\n\t\"colorBoxGrid\": \"style-module__colorBoxGrid___2aldn\",\r\n\t\"colorBox\": \"style-module__colorBox___34xoe\",\r\n\t\"customColorPicker\": \"style-module__customColorPicker___1m1Pk\",\r\n\t\"increaseIconSize\": \"style-module__increaseIconSize___jwjQX\",\r\n\t\"verticalLine\": \"style-module__verticalLine___3Ck-S\",\r\n\t\"reactEditorMt2\": \"style-module__reactEditorMt2___6i1Q_\",\r\n\t\"reactEditorMt10\": \"style-module__reactEditorMt10___2Crph\",\r\n\t\"reactEditorMe5\": \"style-module__reactEditorMe5___280IF\",\r\n\t\"reactEditorTextEnd\": \"style-module__reactEditorTextEnd___1pcIh\",\r\n\t\"reactEditorTextLeft\": \"style-module__reactEditorTextLeft___3E-uy\",\r\n\t\"reactEditorDFlex\": \"style-module__reactEditorDFlex___XY9O6\",\r\n\t\"reactEditorW47\": \"style-module__reactEditorW47___2e5OR\",\r\n\t\"reactEditorW45\": \"style-module__reactEditorW45___18O_s\",\r\n\t\"justifyContentBetween\": \"style-module__justifyContentBetween___17lWt\",\r\n\t\"reactEditorFlexColumn\": \"style-module__reactEditorFlexColumn___kYPWH\",\r\n\t\"editorErrorMessage\": \"style-module__editorErrorMessage___3IFX_\",\r\n\t\"fullScreen\": \"style-module__fullScreen___2IkPb\",\r\n\t\"rightClickPopupBackground\": \"style-module__rightClickPopupBackground___2kc56\",\r\n\t\"rightClickPopup\": \"style-module__rightClickPopup___2fZw0\",\r\n\t\"openLink\": \"style-module__openLink___1piNb\",\r\n\t\"lockUnlockIcon\": \"style-module__lockUnlockIcon___1F-wI\",\r\n\t\"content__editable__container\": \"style-module__content__editable__container___2AcZS\",\r\n\t\"image__submit__container\": \"style-module__image__submit__container___2vOVM\",\r\n\t\"image__cropper_btn\": \"style-module__image__cropper_btn___Jv5gI\",\r\n\t\"image__cropper__box\": \"style-module__image__cropper__box___JKomv\",\r\n\t\"image__preview__box\": \"style-module__image__preview__box___2hEkQ\"\r\n};\r\nmodule.exports = exports;\r\n\r\n\r\n/***/ }),\r\n/* 8 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\nvar api = __webpack_require__(3);\r\n var content = __webpack_require__(9);\r\n\r\n content = content.__esModule ? content.default : content;\r\n\r\n if (typeof content === 'string') {\r\n content = [[module.i, content, '']];\r\n }\r\n\r\nvar options = {};\r\n\r\noptions.insert = \"head\";\r\noptions.singleton = false;\r\n\r\nvar update = api(content, options);\r\n\r\n\r\n\r\nmodule.exports = content.locals || {};\r\n\r\n/***/ }),\r\n/* 9 */\r\n/***/ (function(module, exports, __webpack_require__) {\r\n\r\n// Imports\r\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(4);\r\nexports = ___CSS_LOADER_API_IMPORT___(false);\r\n// Module\r\nexports.push([module.i, \"@keyframes marching-ants{0%{background-position:0 0,0 100%,0 0,100% 0}to{background-position:20px 0,-20px 100%,0 -20px,100% 20px}}:root{--rc-drag-handle-size: 12px;--rc-drag-handle-mobile-size: 24px;--rc-drag-handle-bg-colour: rgba(0, 0, 0, .2);--rc-drag-bar-size: 6px;--rc-border-color: rgba(255, 255, 255, .7);--rc-focus-color: #0088ff}.ReactCrop{position:relative;display:inline-block;cursor:crosshair;max-width:100%}.ReactCrop *,.ReactCrop *:before,.ReactCrop *:after{box-sizing:border-box}.ReactCrop--disabled,.ReactCrop--locked{cursor:inherit}.ReactCrop__child-wrapper{overflow:hidden;max-height:inherit}.ReactCrop__child-wrapper>img,.ReactCrop__child-wrapper>video{display:block;max-width:100%;max-height:inherit}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>img,.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__child-wrapper>video{touch-action:none}.ReactCrop:not(.ReactCrop--disabled) .ReactCrop__crop-selection{touch-action:none}.ReactCrop__crop-mask{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;width:calc(100% + .5px);height:calc(100% + .5px)}.ReactCrop__crop-selection{position:absolute;top:0;left:0;transform:translateZ(0);cursor:move}.ReactCrop--disabled .ReactCrop__crop-selection{cursor:inherit}.ReactCrop--circular-crop .ReactCrop__crop-selection{border-radius:50%}.ReactCrop--circular-crop .ReactCrop__crop-selection:after{pointer-events:none;content:\\\"\\\";position:absolute;top:-1px;right:-1px;bottom:-1px;left:-1px;border:1px solid var(--rc-border-color);opacity:.3}.ReactCrop--no-animate .ReactCrop__crop-selection{outline:1px dashed white}.ReactCrop__crop-selection:not(.ReactCrop--no-animate .ReactCrop__crop-selection){animation:marching-ants 1s;background-image:linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to right,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%),linear-gradient(to bottom,#fff 50%,#444 50%);background-size:10px 1px,10px 1px,1px 10px,1px 10px;background-position:0 0,0 100%,0 0,100% 0;background-repeat:repeat-x,repeat-x,repeat-y,repeat-y;color:#fff;animation-play-state:running;animation-timing-function:linear;animation-iteration-count:infinite}.ReactCrop__crop-selection:focus{outline:2px solid var(--rc-focus-color);outline-offset:-1px}.ReactCrop--invisible-crop .ReactCrop__crop-mask,.ReactCrop--invisible-crop .ReactCrop__crop-selection{display:none}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after,.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{content:\\\"\\\";display:block;position:absolute;background-color:#fff6}.ReactCrop__rule-of-thirds-vt:before,.ReactCrop__rule-of-thirds-vt:after{width:1px;height:100%}.ReactCrop__rule-of-thirds-vt:before{left:33.3333333333%}.ReactCrop__rule-of-thirds-vt:after{left:66.6666666667%}.ReactCrop__rule-of-thirds-hz:before,.ReactCrop__rule-of-thirds-hz:after{width:100%;height:1px}.ReactCrop__rule-of-thirds-hz:before{top:33.3333333333%}.ReactCrop__rule-of-thirds-hz:after{top:66.6666666667%}.ReactCrop__drag-handle{position:absolute;width:var(--rc-drag-handle-size);height:var(--rc-drag-handle-size);background-color:var(--rc-drag-handle-bg-colour);border:1px solid var(--rc-border-color)}.ReactCrop__drag-handle:focus{background:var(--rc-focus-color)}.ReactCrop .ord-nw{top:0;left:0;transform:translate(-50%,-50%);cursor:nw-resize}.ReactCrop .ord-n{top:0;left:50%;transform:translate(-50%,-50%);cursor:n-resize}.ReactCrop .ord-ne{top:0;right:0;transform:translate(50%,-50%);cursor:ne-resize}.ReactCrop .ord-e{top:50%;right:0;transform:translate(50%,-50%);cursor:e-resize}.ReactCrop .ord-se{bottom:0;right:0;transform:translate(50%,50%);cursor:se-resize}.ReactCrop .ord-s{bottom:0;left:50%;transform:translate(-50%,50%);cursor:s-resize}.ReactCrop .ord-sw{bottom:0;left:0;transform:translate(-50%,50%);cursor:sw-resize}.ReactCrop .ord-w{top:50%;left:0;transform:translate(-50%,-50%);cursor:w-resize}.ReactCrop__disabled .ReactCrop__drag-handle{cursor:inherit}.ReactCrop__drag-bar{position:absolute}.ReactCrop__drag-bar.ord-n{top:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(-50%)}.ReactCrop__drag-bar.ord-e{right:0;top:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(50%)}.ReactCrop__drag-bar.ord-s{bottom:0;left:0;width:100%;height:var(--rc-drag-bar-size);transform:translateY(50%)}.ReactCrop__drag-bar.ord-w{top:0;left:0;width:var(--rc-drag-bar-size);height:100%;transform:translate(-50%)}.ReactCrop--new-crop .ReactCrop__drag-bar,.ReactCrop--new-crop .ReactCrop__drag-handle,.ReactCrop--fixed-aspect .ReactCrop__drag-bar,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-n,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-e,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-s,.ReactCrop--fixed-aspect .ReactCrop__drag-handle.ord-w{display:none}@media (pointer: coarse){.ReactCrop .ord-n,.ReactCrop .ord-e,.ReactCrop .ord-s,.ReactCrop .ord-w{display:none}.ReactCrop__drag-handle{width:var(--rc-drag-handle-mobile-size);height:var(--rc-drag-handle-mobile-size)}}\\n\", \"\"]);\r\n// Exports\r\nmodule.exports = exports;\r\n\r\n\r\n/***/ }),\r\n/* 10 */\r\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\r\n\r\n\"use strict\";\r\n// ESM COMPAT FLAG\r\n__webpack_require__.r(__webpack_exports__);\r\n\r\n// EXPORTS\r\n__webpack_require__.d(__webpack_exports__, \"default\", function() { return /* binding */ ReactEditorKit; });\r\n\r\n// EXTERNAL MODULE: external \"react\"\r\nvar external_react_ = __webpack_require__(0);\r\nvar external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);\r\n\r\n// EXTERNAL MODULE: ./src/css/style.css\r\nvar css_style = __webpack_require__(5);\r\n\r\n// EXTERNAL MODULE: ./src/css/style.module.css\r\nvar style_module = __webpack_require__(1);\r\nvar style_module_default = /*#__PURE__*/__webpack_require__.n(style_module);\r\n\r\n// CONCATENATED MODULE: ./src/components/SVGImages/SelectAll.jsx\r\n\r\nfunction SelectAll() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"16\",\r\n height: \"16\",\r\n viewBox: \"0 0 16 16\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n \"fill-rule\": \"evenodd\",\r\n d: \"M1.75 1H1v2.25a.75.75 0 0 0 1.5 0V2.5h.75a.75.75 0 0 0 0-1.5zm0 5a.75.75 0 0 1 .75.75v2.5a.75.75 0 0 1-1.5 0v-2.5A.75.75 0 0 1 1.75 6m7.106 2.856l1.507 3.517l2.01-2.01zm-.558-1.871l5.344 2.29a1 1 0 0 1 .314 1.627l-.997.996l1.821 1.822a.75.75 0 1 1-1.06 1.06l-1.822-1.821l-.996.997a1 1 0 0 1-1.627-.314l-2.29-5.344c-.356-.83.483-1.669 1.313-1.313M1.75 15H1v-2.25a.75.75 0 0 1 1.5 0v.75h.75a.75.75 0 0 1 0 1.5zM6 1.75A.75.75 0 0 1 6.75 1h2.5a.75.75 0 0 1 0 1.5h-2.5A.75.75 0 0 1 6 1.75M14.25 1H15v2.25a.75.75 0 0 1-1.5 0V2.5h-.75a.75.75 0 0 1 0-1.5z\",\r\n \"clip-rule\": \"evenodd\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/LineHeightIcon.jsx\r\n\r\nfunction LineHeightIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\",\r\n strokeWidth: \"2\",\r\n d: \"M6 10V5m0 0L4 7m2-2l2 2m-2 7v5m0 0l2-2m-2 2l-2-2m8-10h8m0 5h-8m0 5h8\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/ColorPickerIcon.jsx\r\n\r\nfunction ColorPickerIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M512 256c0 .9 0 1.8 0 2.7c-.4 36.5-33.6 61.3-70.1 61.3H344c-26.5 0-48 21.5-48 48c0 3.4 .4 6.7 1 9.9c2.1 10.2 6.5 20 10.8 29.9c6.1 13.8 12.1 27.5 12.1 42c0 31.8-21.6 60.7-53.4 62c-3.5 .1-7 .2-10.6 .2C114.6 512 0 397.4 0 256S114.6 0 256 0S512 114.6 512 256zM128 288a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm0-96a32 32 0 1 0 0-64 32 32 0 1 0 0 64zM288 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zm96 96a32 32 0 1 0 0-64 32 32 0 1 0 0 64z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/BackgroundColorIcon.jsx\r\n\r\nfunction BackgroundColorIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 576 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M41.4 9.4C53.9-3.1 74.1-3.1 86.6 9.4L168 90.7l53.1-53.1c28.1-28.1 73.7-28.1 101.8 0L474.3 189.1c28.1 28.1 28.1 73.7 0 101.8L283.9 481.4c-37.5 37.5-98.3 37.5-135.8 0L30.6 363.9c-37.5-37.5-37.5-98.3 0-135.8L122.7 136 41.4 54.6c-12.5-12.5-12.5-32.8 0-45.3zm176 221.3L168 181.3 75.9 273.4c-4.2 4.2-7 9.3-8.4 14.6H386.7l42.3-42.3c3.1-3.1 3.1-8.2 0-11.3L277.7 82.9c-3.1-3.1-8.2-3.1-11.3 0L213.3 136l49.4 49.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0zM512 512c-35.3 0-64-28.7-64-64c0-25.2 32.6-79.6 51.2-108.7c6-9.4 19.5-9.4 25.5 0C543.4 368.4 576 422.8 576 448c0 35.3-28.7 64-64 64z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/TextColorUpperIcon.jsx\r\n\r\nfunction TextColorUpperIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M254 52.8C249.3 40.3 237.3 32 224 32s-25.3 8.3-30 20.8L57.8 416H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-1.8l18-48H303.8l18 48H320c-17.7 0-32 14.3-32 32s14.3 32 32 32h96c17.7 0 32-14.3 32-32s-14.3-32-32-32H390.2L254 52.8zM279.8 304H168.2L224 155.1 279.8 304z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/FontSizeIcon.jsx\r\n\r\nfunction FontSizeIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 20 20\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M16 9v8h-2V9h-4V7h10v2zM8 5v12H6V5H0V3h15v2z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/FontFamilyIcon.jsx\r\n\r\nfunction FontFamilyIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 15 15\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M2.5 4.5C2.5 3.099 3.599 2 5 2h7.499a.5.5 0 0 1 .001 1H8.692l-.287.855A1887.39 1887.39 0 0 1 7.343 7H8.5a.5.5 0 0 1 0 1H7.004a286.12 286.12 0 0 1-1.046 3.039c-.322.9-.75 1.447-1.29 1.739c-.505.273-1.026.272-1.384.272H3.25a.55.55 0 0 1 0-1.1c.392 0 .654-.01.894-.14c.22-.119.511-.395.778-1.142c.185-.517.532-1.527.92-2.668H4.5a.5.5 0 0 1 0-1h1.682a1350.118 1350.118 0 0 0 1.18-3.496L7.533 3H5c-.849 0-1.5.651-1.5 1.5a.5.5 0 0 1-1 0\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/HorizontalLineIcon.jsx\r\n\r\nfunction HorizontalLineIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M19 13H5v-2h14z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/PrintIcon.jsx\r\n\r\nfunction PrintIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M7 2a1 1 0 0 0-1 1v4H4a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-2h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-2V3a1 1 0 0 0-1-1zm10 12H7a1 1 0 0 0-1 1v2H4V9h16v8h-2v-2a1 1 0 0 0-1-1m-1-7H8V4h8zM5 10v2h3v-2zm11 6v4H8v-4z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/PreviewIcon.jsx\r\n\r\nfunction PreviewIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 48 48\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"g\", {\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeLinejoin: \"round\",\r\n strokeWidth: \"4\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M24 36c11.046 0 20-12 20-12s-8.954-12-20-12S4 24 4 24s8.954 12 20 12Z\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M24 29a5 5 0 1 0 0-10a5 5 0 0 0 0 10Z\"\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/EmptyFileIcon.jsx\r\n\r\nfunction EmptyFileIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 256 256\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"m212.24 83.76l-56-56A6 6 0 0 0 152 26H56a14 14 0 0 0-14 14v176a14 14 0 0 0 14 14h144a14 14 0 0 0 14-14V88a6 6 0 0 0-1.76-4.24M158 46.48L193.52 82H158ZM200 218H56a2 2 0 0 1-2-2V40a2 2 0 0 1 2-2h90v50a6 6 0 0 0 6 6h50v122a2 2 0 0 1-2 2\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/FileUploadIcon.jsx\r\n\r\nfunction FileUploadIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n fillRule: \"evenodd\",\r\n d: \"M4.25 5A2.75 2.75 0 0 1 7 2.25h7.987a1.75 1.75 0 0 1 1.422.73l3.013 4.197c.213.298.328.655.328 1.02V19A2.75 2.75 0 0 1 17 21.75H7A2.75 2.75 0 0 1 4.25 19zM7 3.75c-.69 0-1.25.56-1.25 1.25v14c0 .69.56 1.25 1.25 1.25h10c.69 0 1.25-.56 1.25-1.25V8.897H15a.75.75 0 0 1-.75-.75V3.75z\",\r\n \"clip-rule\": \"evenodd\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M15.086 13.219a.75.75 0 0 1-1.055.117l-1.28-1.026v3.44a.75.75 0 0 1-1.5 0v-3.44l-1.282 1.026a.75.75 0 0 1-.937-1.172l2.497-1.998a.747.747 0 0 1 .465-.166h.008c.18 0 .344.064.473.17l2.494 1.994a.75.75 0 0 1 .117 1.055\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/FullscreenExit.jsx\r\n\r\nfunction FullscreenExit() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M18 7h4v2h-6V3h2zM8 9H2V7h4V3h2zm10 8v4h-2v-6h6v2zM8 15v6H6v-4H2v-2z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/FullscreenIcon.jsx\r\n\r\nfunction FullscreenIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M7 14H5v5h5v-2H7zm-2-4h2V7h3V5H5zm12 7h-3v2h5v-5h-2zM14 5v2h3v3h2V5z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/SpecialCharIcon.jsx\r\n\r\nfunction SpecialCharIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M12 5Q9.546 5 7.83 6.715q-1.715 1.716-1.715 4.17q0 1.844 1.037 3.352q1.036 1.507 2.77 2.15q.388.165.637.475q.249.311.249.711v1.215q0 .51-.351.861t-.86.351H5q-.413 0-.707-.293Q4 19.413 4 19t.293-.707Q4.587 18 5 18h3.615q-2.08-.99-3.29-2.904q-1.21-1.913-1.21-4.211q0-3.281 2.302-5.583T12 3q3.28 0 5.583 2.302t2.302 5.583q0 2.298-1.21 4.211q-1.21 1.914-3.29 2.904H19q.413 0 .707.293q.293.294.293.707t-.293.707Q19.413 20 19 20h-4.596q-.51 0-.86-.351q-.352-.35-.352-.86v-1.216q0-.4.25-.71q.248-.311.637-.476q1.733-.643 2.77-2.15q1.036-1.508 1.036-3.352q0-2.454-1.716-4.17Q14.454 5 12 5\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/CrossImage.jsx\r\n\r\nfunction CrossImage() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 16 16\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\",\r\n strokeWidth: \"1.5\",\r\n d: \"m11.25 4.75l-6.5 6.5m0-6.5l6.5 6.5\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/BlockQuote.jsx\r\n\r\nfunction BlockQuote() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 20 20\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M5.315 3.401c-1.61 0-2.916 1.343-2.916 3c0 1.656 1.306 3 2.916 3c2.915 0 .972 5.799-2.916 5.799v1.4c6.939.001 9.658-13.199 2.916-13.199m8.4 0c-1.609 0-2.915 1.343-2.915 3c0 1.656 1.306 3 2.915 3c2.916 0 .973 5.799-2.915 5.799v1.4c6.938.001 9.657-13.199 2.915-13.199\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/LTRIcon.jsx\r\n\r\nfunction LTRIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1.17em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 14 12\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M9 2v9a1 1 0 0 1-2 0V6H6a3 3 0 1 1 0-6h7a1 1 0 0 1 0 2h-1v9a1 1 0 0 1-2 0V2zM1.657 9L.284 10.36a.955.955 0 0 0 0 1.358a.977.977 0 0 0 1.373 0L3.716 9.68a.955.955 0 0 0 0-1.36l-2.06-2.038a.977.977 0 0 0-1.372 0a.955.955 0 0 0 0 1.359zM7 2H6a1 1 0 1 0 0 2h1z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/RTLIcon.jsx\r\n\r\nfunction RTLIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1.17em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 14 12\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M6.007 2v9a1 1 0 0 1-2.002 0V6H3.004A3.002 3.002 0 0 1 0 3c0-1.657 1.345-3 3.004-3h7.008a1 1 0 1 1 0 2h-1v9a1 1 0 0 1-2.003 0V2zm6.284 6.877l1.416 1.414a1 1 0 0 1 0 1.414c-.391.39-1.025.39-1.416 0l-2.124-2.121a1 1 0 0 1 0-1.415l2.124-2.12a1.002 1.002 0 0 1 1.416 0a1 1 0 0 1 0 1.413L12.29 8.877ZM4.005 2H3.004a1 1 0 1 0 0 2h1V2Z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/OrderdList.jsx\r\n\r\nfunction OrderdList() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M24 56c0-13.3 10.7-24 24-24H80c13.3 0 24 10.7 24 24V176h16c13.3 0 24 10.7 24 24s-10.7 24-24 24H40c-13.3 0-24-10.7-24-24s10.7-24 24-24H56V80H48C34.7 80 24 69.3 24 56zM86.7 341.2c-6.5-7.4-18.3-6.9-24 1.2L51.5 357.9c-7.7 10.8-22.7 13.3-33.5 5.6s-13.3-22.7-5.6-33.5l11.1-15.6c23.7-33.2 72.3-35.6 99.2-4.9c21.3 24.4 20.8 60.9-1.1 84.7L86.8 432H120c13.3 0 24 10.7 24 24s-10.7 24-24 24H32c-9.5 0-18.2-5.6-22-14.4s-2.1-18.9 4.3-25.9l72-78c5.3-5.8 5.4-14.6 .3-20.5zM224 64H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32zm0 160H480c17.7 0 32 14.3 32 32s-14.3 32-32 32H224c-17.7 0-32-14.3-32-32s14.3-32 32-32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/UnorderdList.jsx\r\n\r\nfunction UnorderdList() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M64 144a48 48 0 1 0 0-96a48 48 0 1 0 0 96m128-80c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32zm0 160c-17.7 0-32 14.3-32 32s14.3 32 32 32h288c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 464a48 48 0 1 0 0-96a48 48 0 1 0 0 96m48-208a48 48 0 1 0-96 0a48 48 0 1 0 96 0\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/BgColorIcon.jsx\r\n\r\nfunction BgColorIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M16.56 8.94L7.62 0L6.21 1.41l2.38 2.38l-5.15 5.15a1.49 1.49 0 0 0 0 2.12l5.5 5.5c.29.29.68.44 1.06.44s.77-.15 1.06-.44l5.5-5.5c.59-.58.59-1.53 0-2.12M5.21 10L10 5.21L14.79 10zM19 11.5s-2 2.17-2 3.5c0 1.1.9 2 2 2s2-.9 2-2c0-1.33-2-3.5-2-3.5M2 20h20v4H2z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/TextColorIcon.jsx\r\n\r\nfunction TextColorIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M2 20h20v4H2zm3.49-3h2.42l1.27-3.58h5.65L16.09 17h2.42L13.25 3h-2.5zm4.42-5.61l2.03-5.79h.12l2.03 5.79z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/UnderlineIcon.jsx\r\n\r\nfunction UnderlineIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M16 64c0-17.7 14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H128V224c0 53 43 96 96 96s96-43 96-96V96H304c-17.7 0-32-14.3-32-32s14.3-32 32-32h96c17.7 0 32 14.3 32 32s-14.3 32-32 32H384V224c0 88.4-71.6 160-160 160s-160-71.6-160-160V96H48C30.3 96 16 81.7 16 64zM0 448c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/ClearFormatting.jsx\r\n\r\nfunction ClearFormatting() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 640 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L355.7 253.5 400.2 96H503L497 120.2c-4.3 17.1 6.1 34.5 23.3 38.8s34.5-6.1 38.8-23.3l11-44.1C577.6 61.3 554.7 32 523.5 32H376.1h-.3H204.5c-22 0-41.2 15-46.6 36.4l-6.3 25.2L38.8 5.1zm168 131.7c.1-.3 .2-.7 .3-1L217 96H333.7L301.3 210.8l-94.5-74.1zM327.3 353.9L272.9 311 243.3 416H192c-17.7 0-32 14.3-32 32s14.3 32 32 32H352c17.7 0 32-14.3 32-32s-14.3-32-32-32H309.8l17.6-62.1z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/SuperscriptIcon.jsx\r\n\r\nfunction SuperscriptIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M480 32c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 73.5 404.3 80 416 80v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V32zM32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/SubscriptIcon.jsx\r\n\r\nfunction SubscriptIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M32 64C14.3 64 0 78.3 0 96s14.3 32 32 32H47.3l89.6 128L47.3 384H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H64c10.4 0 20.2-5.1 26.2-13.6L176 311.8l85.8 122.6c6 8.6 15.8 13.6 26.2 13.6h32c17.7 0 32-14.3 32-32s-14.3-32-32-32H304.7L215.1 256l89.6-128H320c17.7 0 32-14.3 32-32s-14.3-32-32-32H288c-10.4 0-20.2 5.1-26.2 13.6L176 200.2 90.2 77.6C84.2 69.1 74.4 64 64 64H32zM480 320c0-11.1-5.7-21.4-15.2-27.2s-21.2-6.4-31.1-1.4l-32 16c-15.8 7.9-22.2 27.1-14.3 42.9C393 361.5 404.3 368 416 368v80c-17.7 0-32 14.3-32 32s14.3 32 32 32h32 32c17.7 0 32-14.3 32-32s-14.3-32-32-32V320z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/RedoIcon.jsx\r\n\r\nfunction RedoIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M463.5 224H472c13.3 0 24-10.7 24-24V72c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8H463.5z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/UndoIcon.jsx\r\n\r\nfunction UndoIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M48.5 224H40c-13.3 0-24-10.7-24-24V72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8H48.5z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/LinkIcon.jsx\r\n\r\nfunction LinkIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 640 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/ItalicIcon.jsx\r\n\r\nfunction ItalicIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 384 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M128 64c0-17.7 14.3-32 32-32H352c17.7 0 32 14.3 32 32s-14.3 32-32 32H293.3L160 416h64c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H90.7L224 96H160c-17.7 0-32-14.3-32-32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/DecreaseIndentIcon.jsx\r\n\r\nfunction DecreaseIndentIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 20 20\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M1 1h18v2H1zm6 8h12v2H7zm-6 8h18v2H1zM7 5h12v2H7zm0 8h12v2H7zM5 6v8l-4-4z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/IncreaseIndentIcon.jsx\r\n\r\nfunction IncreaseIndentIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 20 20\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M1 1h18v2H1zm6 8h12v2H7zm-6 8h18v2H1zM7 5h12v2H7zm0 8h12v2H7zM1 6l4 4l-4 4z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/ImageIcon.jsx\r\n\r\nfunction ImageIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"15\",\r\n height: \"15\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M0 96c0-35.3 28.7-64 64-64h384c35.3 0 64 28.7 64 64v320c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64zm323.8 106.5c-4.5-6.6-11.9-10.5-19.8-10.5s-15.4 3.9-19.8 10.5l-87 127.6l-26.5-33.1c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4S78.8 416 88 416h336c8.9 0 17.1-4.9 21.2-12.8s3.6-17.4-1.4-24.7zM112 192a48 48 0 1 0 0-96a48 48 0 1 0 0 96\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/VideoIcon.jsx\r\n\r\nfunction VideoIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"48\",\r\n height: \"48\",\r\n viewBox: \"0 0 48 48\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"g\", {\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n \"stroke-linecap\": \"round\",\r\n \"stroke-linejoin\": \"round\",\r\n \"stroke-width\": \"4\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M11 7h26v34H11zm-7 4h7v26H4zm33 0h7v26h-7z\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"m22 20l6 4l-6 4z\"\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/BoldIcon.jsx\r\n\r\nfunction BoldIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 384 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M0 64C0 46.3 14.3 32 32 32H80 96 224c70.7 0 128 57.3 128 128c0 31.3-11.3 60.1-30 82.3c37.1 22.4 62 63.1 62 109.7c0 70.7-57.3 128-128 128H96 80 32c-17.7 0-32-14.3-32-32s14.3-32 32-32H48V256 96H32C14.3 96 0 81.7 0 64zM224 224c35.3 0 64-28.7 64-64s-28.7-64-64-64H112V224H224zM112 288V416H256c35.3 0 64-28.7 64-64s-28.7-64-64-64H224 112z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/CodeIcon.jsx\r\n\r\nfunction CodeIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 24 24\",\r\n style: {\r\n marginTop: \"0px\"\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6l6 6zm5.2 0l4.6-4.6l-4.6-4.6L16 6l6 6l-6 6z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/AlignRight.jsx\r\n\r\nfunction AlignRight() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M448 64c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H192c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/AlignJustify.jsx\r\n\r\nfunction AlignJustify() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M448 64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64S14.3 96 32 96H416c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/AlignCenter.jsx\r\n\r\nfunction AlignCenter() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M352 64c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32H32c-17.7 0-32 14.3-32 32s14.3 32 32 32H416c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32H416c17.7 0 32-14.3 32-32s-14.3-32-32-32H32c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32H128c-17.7 0-32 14.3-32 32s14.3 32 32 32H320c17.7 0 32-14.3 32-32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/AlignLeft.jsx\r\n\r\nfunction AlignLeft() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M288 64c0 17.7-14.3 32-32 32H32C14.3 96 0 81.7 0 64S14.3 32 32 32H256c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H256c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32H416c17.7 0 32 14.3 32 32s-14.3 32-32 32H32c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32s14.3-32 32-32H416c17.7 0 32 14.3 32 32z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/RemoveLinkIcon.jsx\r\n\r\nfunction RemoveLinkIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 640 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM116.6 187.9L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9zM220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3L220.9 270z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/UnlockIcon.jsx\r\n\r\nfunction UnlockIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M144 144c0-44.2 35.8-80 80-80c31.9 0 59.4 18.6 72.3 45.7c7.6 16 26.7 22.8 42.6 15.2s22.8-26.7 15.2-42.6C331 33.7 281.5 0 224 0C144.5 0 80 64.5 80 144v48H64c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V256c0-35.3-28.7-64-64-64H144V144z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/LockIcon.jsx\r\n\r\nfunction LockIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 448 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M144 144v48H304V144c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192V144C80 64.5 144.5 0 224 0s144 64.5 144 144v48h16c35.3 0 64 28.7 64 64V448c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V256c0-35.3 28.7-64 64-64H80z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/CropIcon.jsx\r\n\r\nfunction CropIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M128 32c0-17.7-14.3-32-32-32S64 14.3 64 32l0 32L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l32 0 0 256c0 35.3 28.7 64 64 64l224 0 0-64-224 0 0-352zM384 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-32 32 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-32 0 0-256c0-35.3-28.7-64-64-64L160 64l0 64 224 0 0 352z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/loader.gif\r\n/* harmony default export */ var loader = (\"data:image/gif;base64,R0lGODlhngHpANUrAJycnPLy8tjY2AAAANTU1Pb29sTExMrKysLCwtbW1ru7u/j4+Ojo6LKysu7u7tzc3Ly8vNDQ0BEREbCwsL6+vqqqqiIiIs7OzuDg4KampkRERDMzM7i4uMzMzIiIiHd3d8jIyN3d3WZmZlVVVfT09OTk5JmZmcbGxqCgoOzs7JaWlv///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc0MEVDNDE3NTBFNDExRTE5OTAzODVFNEI4NUU1MDAzIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc0MEVDNDE4NTBFNDExRTE5OTAzODVFNEI4NUU1MDAzIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzQwRUM0MTU1MEU0MTFFMTk5MDM4NUU0Qjg1RTUwMDMiIHN0UmVmOmRv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\");\r\n// CONCATENATED MODULE: ./src/components/index.js\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// CONCATENATED MODULE: ./src/components/SpecialChars.jsx\r\n\r\n\r\nfunction SpecialChars(_ref) {\r\n var handleCharSelect = _ref.handleCharSelect;\r\n var specialCharacters = [\"★\", \"❤\", \"☀\", \"✈\", \"♪\", \"✔\", \"⇧\", \"⇩\", \"♠\", \"♣\", \"♥\", \"♦\", \"♪\", \"♫\", \"☎\", \"✉\", \"☂\", \"☔\", \"☕\", \"⚓\", \"⚡\", \"⚠\", \"⚽\", \"⚾\", \"✂\", \"✏\", \"✒\", \"✨\", \"❄\", \"❅\", \"❆\", \"❇\", \"❈\", \"❉\", \"❊\", \"❋\", \"❌\", \"❍\", \"❎\", \"❏\", \"❐\", \"❑\", \"❒\", \"⚪\", \"⚫\", \"◆\", \"◇\", \"◈\", \"◉\", \"◊\", \"○\", \"◌\", \"◍\", \"◎\", \"●\", \"◐\", \"◑\", \"◒\", \"◓\", \"◔\", \"◕\", \"◖\", \"◗\", \"◘\", \"◙\", \"◚\", \"◛\", \"◜\", \"◝\", \"◞\", \"◟\", \"◠\", \"◡\", \"◢\", \"◣\", \"◤\", \"◥\", \"◦\", \"◧\", \"◨\", \"◩\", \"◪\", \"◫\", \"◬\", \"◭\", \"◮\", \"◯\", \"❘\", \"❙\", \"❚\", \"❛\", \"❜\", \"❝\", \"❞\", \"❟\", \"❠\", \"⚀\", \"⚁\", \"⚂\", \"⚃\", \"⚄\", \"⚅\", \"⚆\", \"⚇\", \"⚈\", \"⚉\", \"⚘\", \"⚙\", \"⚚\", \"⚛\", \"⚜\", \"⚝\", \"€\", \"¥\", \"£\", \"₪\", \"₩\", \"₱\", \"₲\", \"₳\", \"₴\", \"₵\", \"₦\", \"₭\", \"₮\", \"₯\", \"₨\", \"₰\", \"&\", \"<\", \">\", '\"', \"'\", \"¢\", \"£\", \"¥\", \"€\", \"©\", \"®\", \"™\", \"§\", \"×\", \"÷\"\r\n // Add more special characters as needed\r\n ];\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.specialCharBox\r\n }, specialCharacters.map(function (_char, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleCharSelect(e, _char);\r\n },\r\n className: style_module_default.a.specialChar\r\n }, _char);\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/ArrowDown.jsx\r\n\r\nfunction ArrowDown() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n width: \"10\",\r\n height: \"10\",\r\n focusable: \"false\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8Z\",\r\n \"fill-rule\": \"nonzero\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SelectFormat.jsx\r\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\r\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\r\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\nfunction SelectFormat(_ref) {\r\n var remove_from_toolbar = _ref.remove_from_toolbar,\r\n editorRef = _ref.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = _slicedToArray(_useState, 2),\r\n isOpen = _useState2[0],\r\n setIsOpen = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(\"Paragraph\"),\r\n _useState4 = _slicedToArray(_useState3, 2),\r\n selectedOption = _useState4[0],\r\n setSelectedOption = _useState4[1];\r\n var selectRef = Object(external_react_[\"useRef\"])(null);\r\n var formats = [{\r\n label: \"Paragraph\",\r\n value: \"p\"\r\n }, {\r\n label: \"Heading 1\",\r\n value: \"h1\"\r\n }, {\r\n label: \"Heading 2\",\r\n value: \"h2\"\r\n }, {\r\n label: \"Heading 3\",\r\n value: \"h3\"\r\n }, {\r\n label: \"Heading 4\",\r\n value: \"h4\"\r\n }, {\r\n label: \"Heading 5\",\r\n value: \"h5\"\r\n }, {\r\n label: \"Heading 6\",\r\n value: \"h6\"\r\n }, {\r\n label: \"Blockquote\",\r\n value: \"blockquote\"\r\n }, {\r\n label: \"Preformatted\",\r\n value: \"pre\"\r\n }];\r\n if ((remove_from_toolbar === null || remove_from_toolbar === void 0 ? void 0 : remove_from_toolbar.length) > 0) {\r\n var _find_remove$options;\r\n var find_remove = remove_from_toolbar.find(function (toolbar) {\r\n return toolbar.name === \"format\";\r\n });\r\n if ((find_remove === null || find_remove === void 0 ? void 0 : (_find_remove$options = find_remove.options) === null || _find_remove$options === void 0 ? void 0 : _find_remove$options.length) > 0) {\r\n formats = formats.filter(function (item) {\r\n return !(find_remove !== null && find_remove !== void 0 && find_remove.options.includes(item.value));\r\n });\r\n }\r\n }\r\n var toggleSelect = function toggleSelect(e) {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n };\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n document.execCommand(\"formatBlock\", false, option.value);\r\n setSelectedOption(option.label);\r\n setIsOpen(false);\r\n };\r\n var getClosestBlockElement = function getClosestBlockElement() {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n var range = selection.getRangeAt(0);\r\n var commonAncestorContainer = range.commonAncestorContainer;\r\n var node = commonAncestorContainer;\r\n while (node) {\r\n if (node.nodeName.match(/^(p|div|h[1-6]|blockquote|pre)$/i)) {\r\n return node.nodeName.toLowerCase();\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n return null;\r\n };\r\n var handleKeyDown = function handleKeyDown() {\r\n var editor = editorRef.current;\r\n if (!editor) return;\r\n if (!editor.contains(window.getSelection().anchorNode)) {\r\n return;\r\n }\r\n editor.focus();\r\n if (editor.innerText.trim() === \"\") {\r\n setSelectedOption(\"Paragraph\");\r\n }\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleClickOutside = function handleClickOutside(event) {\r\n if (!selectRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode)) {\r\n var formatBlock = getClosestBlockElement();\r\n if (formatBlock) {\r\n var find = formats.find(function (format) {\r\n return format.value === formatBlock;\r\n });\r\n if (find) {\r\n setSelectedOption(find.label);\r\n } else {\r\n setSelectedOption(\"Paragraph\");\r\n }\r\n }\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n return function () {\r\n document.removeEventListener(\"click\", handleClickOutside);\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n };\r\n }, [editorRef]);\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.customSelectFormat,\r\n onClick: toggleSelect,\r\n ref: selectRef,\r\n style: {\r\n minWidth: \"120px\"\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectSelected\r\n }, selectedOption, /*#__PURE__*/external_react_default.a.createElement(ArrowDown, null)), isOpen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectItemsFormat\r\n }, formats.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: style_module_default.a.selectOption\r\n }, /*#__PURE__*/external_react_default.a.createElement(option.value, null, option.label));\r\n })));\r\n}\r\n/* harmony default export */ var components_SelectFormat = (SelectFormat);\r\n// CONCATENATED MODULE: ./src/components/ButtonFunction.jsx\r\nfunction ButtonFunction_slicedToArray(r, e) { return ButtonFunction_arrayWithHoles(r) || ButtonFunction_iterableToArrayLimit(r, e) || ButtonFunction_unsupportedIterableToArray(r, e) || ButtonFunction_nonIterableRest(); }\r\nfunction ButtonFunction_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction ButtonFunction_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return ButtonFunction_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ButtonFunction_arrayLikeToArray(r, a) : void 0; } }\r\nfunction ButtonFunction_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction ButtonFunction_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction ButtonFunction_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\nvar ButtonFunction_ButtonFunction = function ButtonFunction(props) {\r\n var name = props.name,\r\n icon = props.icon,\r\n title = props.title,\r\n item = props.item,\r\n disabled = props.disabled,\r\n editorRef = props.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = ButtonFunction_slicedToArray(_useState, 2),\r\n isSelected = _useState2[0],\r\n setIsSelected = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(true),\r\n _useState4 = ButtonFunction_slicedToArray(_useState3, 2),\r\n isDisabled = _useState4[0],\r\n setIsDisabled = _useState4[1];\r\n var handleClick = function handleClick(e, ref) {\r\n e.preventDefault();\r\n ref.current.focus();\r\n if (!ref.current) return;\r\n if (!ref.current.contains(window.getSelection().anchorNode)) {\r\n return;\r\n }\r\n if (item !== null && item !== void 0 && item.handleClick) {\r\n item.handleClick(item);\r\n if (!item.add_functionality) return;\r\n }\r\n setIsSelected(!isSelected);\r\n document.execCommand(name);\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (!(editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode))) {\r\n return;\r\n }\r\n var is_selected = document.queryCommandState(name);\r\n var isRedoEnabled = document.queryCommandEnabled(name);\r\n setIsDisabled(!isRedoEnabled);\r\n setIsSelected(is_selected);\r\n };\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"input\", handleSelectionChange);\r\n return function () {\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.removeEventListener(\"input\", handleSelectionChange);\r\n };\r\n }, [editorRef, name]);\r\n var handleClasses = function handleClasses() {\r\n var className = \"\";\r\n if (isSelected) {\r\n className = style_module_default.a.selectedOption || \"\";\r\n }\r\n if (name === \"redo\" || name === \"undo\") {\r\n if (isDisabled) {\r\n className += \" \".concat(style_module_default.a.disabled || \"\");\r\n }\r\n }\r\n return className.trim();\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleClick(e, editorRef);\r\n },\r\n className: handleClasses(),\r\n title: item !== null && item !== void 0 && item.title ? item.title : title,\r\n disabled: disabled\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : icon);\r\n};\r\n/* harmony default export */ var components_ButtonFunction = (ButtonFunction_ButtonFunction);\r\n// CONCATENATED MODULE: ./src/components/constant.js\r\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\r\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\r\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\r\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\r\nvar TOOLBAR_ITEMS = [\"undo\", \"redo\", \"|\", \"format\", \"fontfamily\", \"fontsize\", \"|\", \"bold\", \"italic\", \"underline\", \"superscript\", \"subscript\", \"|\",\r\n// \"alignLeft\",\r\n// \"alignCenter\",\r\n// \"alignRight\",\r\n// \"alignJustify\",\r\n\"alignment\", \"|\", \"indent\", \"outdent\", \"|\", \"orderedList\", \"unorderedList\", \"|\", \"removeFormat\", \"|\", \"textColor\", \"backgroundColor\", \"|\", \"ltr\", \"rtl\", \"|\", \"copy\", \"cut\", \"paste\", \"select_all\", \"|\", \"image\", \"link\", \"video\", \"|\", \"source_code\", \"full_screen\", \"special_character\", \"horizontal_line\"];\r\nvar NAVBAR_ITEMS = [\"file\", \"view\", \"insert\", \"format\", \"|\", \"select_all\", \"|\", \"image\", \"link\", \"video\", \"|\", \"copy\", \"cut\", \"paste\", \"|\"];\r\nvar FORMAT_OPTIONS = [\"bold\", \"italic\", \"underline\", \"superscript\", \"subscript\", \"font\", \"font_size\", \"alignment\"];\r\nvar INSER_OPTIONS = [\"image\", \"link\", \"video\", \"hr_line\", \"special_char\"];\r\nvar FILE_OPTIONS = [\"new_document\", \"preview\", \"print\"];\r\nvar VIEW_OPTIONS = [\"source_code\", \"full_screen\"];\r\nfunction generateRandomID(length) {\r\n var characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\r\n var id = \"\";\r\n for (var i = 0; i < length; i++) {\r\n var randomIndex = Math.floor(Math.random() * characters.length);\r\n id += characters.charAt(randomIndex);\r\n }\r\n return id;\r\n}\r\nfunction transformHTML(htmlString) {\r\n var parser = new DOMParser();\r\n if (htmlString) {\r\n var doc = parser.parseFromString(htmlString, \"text/html\");\r\n doc.querySelectorAll(\"div\").forEach(function (divElement) {\r\n var pElement = doc.createElement(\"p\");\r\n pElement.innerHTML = divElement.innerHTML;\r\n divElement.replaceWith(pElement);\r\n });\r\n var transformedHTML = doc.body.innerHTML;\r\n transformedHTML = transformedHTML.replace(/<br\\s*\\/?>/g, \" \");\r\n transformedHTML = transformedHTML.replace(/<(?=[^/])/g, function (match) {\r\n return \"\\n\".concat(match);\r\n });\r\n transformedHTML = transformedHTML.trim();\r\n var lines = transformedHTML.split(\"\\n\");\r\n var processedLines = lines.map(function (line) {\r\n var hasLeading = /^<.*?>|<.*?>$/.test(line);\r\n if (!hasLeading && line.trim()) {\r\n return \"<p>\".concat(line, \"</p>\");\r\n }\r\n return line;\r\n });\r\n return processedLines.join(\"\\n\").trim();\r\n }\r\n return \"\";\r\n}\r\nvar remove_resizer = function remove_resizer() {\r\n var element = document.querySelector(\".resizeImageWrapper\");\r\n var image_element = document.querySelector(\".resizer-image\");\r\n if (element && image_element) {\r\n element.insertAdjacentElement(\"afterend\", image_element);\r\n image_element.classList.remove(\"resizer-image\");\r\n element.parentNode.removeChild(element);\r\n }\r\n};\r\nvar getCroppedImage = /*#__PURE__*/function () {\r\n var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(image, crop, originalFile) {\r\n var canvas, scaleX, scaleY, ctx;\r\n return _regeneratorRuntime().wrap(function _callee$(_context) {\r\n while (1) switch (_context.prev = _context.next) {\r\n case 0:\r\n if (!(!crop || !image)) {\r\n _context.next = 3;\r\n break;\r\n }\r\n console.error(\"No crop data or image reference\");\r\n return _context.abrupt(\"return\", null);\r\n case 3:\r\n canvas = document.createElement(\"canvas\");\r\n scaleX = image.naturalWidth / image.width;\r\n scaleY = image.naturalHeight / image.height;\r\n canvas.width = crop.width;\r\n canvas.height = crop.height;\r\n ctx = canvas.getContext(\"2d\"); // Preserve transparency by clearing canvas with transparent pixels\r\n ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n ctx.drawImage(image, crop.x * scaleX, crop.y * scaleY, crop.width * scaleX, crop.height * scaleY, 0, 0, crop.width, crop.height);\r\n return _context.abrupt(\"return\", new Promise(function (resolve) {\r\n // Determine the correct file type and extension\r\n var fileType = \"image/png\"; // Default to PNG for transparency support\r\n var fileExt = \"png\";\r\n if (originalFile) {\r\n if (typeof originalFile === \"string\") {\r\n // Extract extension from URL\r\n var urlParts = originalFile.split(\".\");\r\n fileExt = urlParts[urlParts.length - 1].toLowerCase();\r\n fileType = \"image/\".concat(fileExt === \"jpg\" ? \"jpeg\" : fileExt);\r\n } else {\r\n // Use the original file's type\r\n fileType = originalFile.type || \"image/png\";\r\n fileExt = fileType.split(\"/\").pop();\r\n if (fileExt === \"jpeg\") fileExt = \"jpg\";\r\n }\r\n }\r\n\r\n // Use PNG if we need transparency, regardless of original format\r\n var needsTransparency = fileType === \"image/png\" || fileType === \"image/gif\";\r\n var outputType = needsTransparency ? \"image/png\" : fileType;\r\n canvas.toBlob(function (blob) {\r\n if (!blob) {\r\n console.error(\"Canvas is empty\");\r\n resolve(null);\r\n return;\r\n }\r\n var fileName = \"cropped-image.png\"; // Default name with PNG\r\n if (originalFile) {\r\n if (typeof originalFile === \"string\") {\r\n var _urlParts = originalFile.split(\"/\");\r\n var originalName = _urlParts[_urlParts.length - 1].replace(/\\.[^/.]+$/, \"\");\r\n fileName = \"\".concat(originalName, \"-cropped.\").concat(fileExt);\r\n } else {\r\n var _originalName = originalFile.name.replace(/\\.[^/.]+$/, \"\") || \"cropped-image\";\r\n fileName = \"\".concat(_originalName, \"-cropped.\").concat(fileExt);\r\n }\r\n }\r\n var file = new File([blob], fileName, {\r\n type: outputType,\r\n lastModified: Date.now()\r\n });\r\n resolve(file);\r\n }, outputType,\r\n // Use the determined output type\r\n outputType === \"image/jpeg\" ? 0.9 : 1 // Only apply quality for JPEG\r\n );\r\n }));\r\n case 12:\r\n case \"end\":\r\n return _context.stop();\r\n }\r\n }, _callee);\r\n }));\r\n return function getCroppedImage(_x, _x2, _x3) {\r\n return _ref.apply(this, arguments);\r\n };\r\n}();\r\n// CONCATENATED MODULE: ./src/components/SelectInsert.jsx\r\nfunction SelectInsert_slicedToArray(r, e) { return SelectInsert_arrayWithHoles(r) || SelectInsert_iterableToArrayLimit(r, e) || SelectInsert_unsupportedIterableToArray(r, e) || SelectInsert_nonIterableRest(); }\r\nfunction SelectInsert_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectInsert_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectInsert_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectInsert_arrayLikeToArray(r, a) : void 0; } }\r\nfunction SelectInsert_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction SelectInsert_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction SelectInsert_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\nfunction SelectFileOptions(props) {\r\n var _options;\r\n var onSelectOption = props.onSelectOption,\r\n handleInsertHR = props.handleInsertHR,\r\n item = props.item,\r\n remove_from_navbar = props.remove_from_navbar;\r\n var options = item.options;\r\n if (!options) {\r\n options = INSER_OPTIONS;\r\n }\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = SelectInsert_slicedToArray(_useState, 2),\r\n isShow = _useState2[0],\r\n setIsShow = _useState2[1];\r\n var handleSelect = function handleSelect(e, type) {\r\n e.preventDefault();\r\n setIsShow(false);\r\n if (type === \"hr_line\") {\r\n handleInsertHR(e);\r\n } else {\r\n onSelectOption(e, type);\r\n }\r\n };\r\n if ((remove_from_navbar === null || remove_from_navbar === void 0 ? void 0 : remove_from_navbar.length) > 0) {\r\n var _find_remove$options;\r\n var find_remove = remove_from_navbar.find(function (toolbar) {\r\n return toolbar.name === \"insert\";\r\n });\r\n if ((find_remove === null || find_remove === void 0 ? void 0 : (_find_remove$options = find_remove.options) === null || _find_remove$options === void 0 ? void 0 : _find_remove$options.length) > 0) {\r\n options = options.filter(function (item) {\r\n return !(find_remove !== null && find_remove !== void 0 && find_remove.options.includes(item));\r\n });\r\n }\r\n }\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.customSelect,\r\n onMouseEnter: function onMouseEnter() {\r\n return setIsShow(true);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setIsShow(false);\r\n }\r\n }, item !== null && item !== void 0 && item.title ? item.title : \"Insert\", /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectItems, \" \").concat(isShow ? \"\".concat(style_module_default.a.show) : \"\")\r\n }, ((_options = options) === null || _options === void 0 ? void 0 : _options.length) > 0 && options.map(function (option, index) {\r\n var is_image = option === \"image\" || option.name === \"image\";\r\n var is_link = option === \"link\" || option.name === \"link\";\r\n var is_video = option === \"video\" || option.name === \"video\";\r\n var is_hr_line = option === \"hr_line\" || option.name === \"hr_line\";\r\n var is_special_char = option === \"special_char\" || option.name === \"special_char\";\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index)\r\n }, is_image && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"image\");\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(ImageIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Image\")), is_link && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"link\");\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(LinkIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Link\")), is_video && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"video\");\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(VideoIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Video\")), is_hr_line && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"hr_line\");\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(HorizontalLineIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Horizontal Line\")), is_special_char && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"special_char\");\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(SpecialCharIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Special Char\")));\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SelectView.jsx\r\nfunction SelectView_slicedToArray(r, e) { return SelectView_arrayWithHoles(r) || SelectView_iterableToArrayLimit(r, e) || SelectView_unsupportedIterableToArray(r, e) || SelectView_nonIterableRest(); }\r\nfunction SelectView_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectView_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectView_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectView_arrayLikeToArray(r, a) : void 0; } }\r\nfunction SelectView_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction SelectView_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction SelectView_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\nfunction SelectView_SelectFileOptions(props) {\r\n var handleViewSource = props.handleViewSource,\r\n isFullScreen = props.isFullScreen,\r\n toggleFullScreen = props.toggleFullScreen,\r\n item = props.item,\r\n isPlaceholder = props.isPlaceholder,\r\n placeholder = props.placeholder,\r\n value = props.value,\r\n remove_from_navbar = props.remove_from_navbar;\r\n var options = item.options;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = SelectView_slicedToArray(_useState, 2),\r\n isShow = _useState2[0],\r\n setIsShow = _useState2[1];\r\n var handleSelect = function handleSelect(e, type, option) {\r\n e.preventDefault();\r\n setIsShow(false);\r\n if (option !== null && option !== void 0 && option.handleClick) {\r\n option.handleClick(option, item);\r\n if (!option.add_functionality) return;\r\n }\r\n if (type === \"code\") {\r\n handleViewSource();\r\n } else if (type === \"screen\") {\r\n toggleFullScreen();\r\n }\r\n };\r\n if (!options) {\r\n options = VIEW_OPTIONS;\r\n }\r\n if ((remove_from_navbar === null || remove_from_navbar === void 0 ? void 0 : remove_from_navbar.length) > 0) {\r\n var _find_remove$options;\r\n var find_remove = remove_from_navbar.find(function (toolbar) {\r\n return toolbar.name === \"view\";\r\n });\r\n if ((find_remove === null || find_remove === void 0 ? void 0 : (_find_remove$options = find_remove.options) === null || _find_remove$options === void 0 ? void 0 : _find_remove$options.length) > 0) {\r\n options = options.filter(function (item) {\r\n return !(find_remove !== null && find_remove !== void 0 && find_remove.options.includes(item));\r\n });\r\n }\r\n }\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.customSelect,\r\n onMouseEnter: function onMouseEnter() {\r\n return setIsShow(true);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setIsShow(false);\r\n }\r\n }, item !== null && item !== void 0 && item.title ? item.title : \"View\", /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectItems, \" \").concat(isShow ? \"\".concat(style_module_default.a.show) : \"\")\r\n }, options.map(function (option, index) {\r\n var is_source_code = option === \"source_code\" || option.name === \"source_code\";\r\n var is_full_screen = option === \"full_screen\" || option.name === \"full_screen\";\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index)\r\n }, is_source_code && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"code\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(CodeIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Source Code\")), is_full_screen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"screen\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : isFullScreen ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(FullscreenExit, null), \" \", /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Exit Full Screen\")) : /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(FullscreenIcon, null), \" \", /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Full Screen\"))));\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SelectFileOptions.jsx\r\nfunction SelectFileOptions_slicedToArray(r, e) { return SelectFileOptions_arrayWithHoles(r) || SelectFileOptions_iterableToArrayLimit(r, e) || SelectFileOptions_unsupportedIterableToArray(r, e) || SelectFileOptions_nonIterableRest(); }\r\nfunction SelectFileOptions_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectFileOptions_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectFileOptions_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectFileOptions_arrayLikeToArray(r, a) : void 0; } }\r\nfunction SelectFileOptions_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction SelectFileOptions_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction SelectFileOptions_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\nfunction SelectFileOptions_SelectFileOptions(props) {\r\n var handleNewDocument = props.handleNewDocument,\r\n handlePreview = props.handlePreview,\r\n handlePrint = props.handlePrint,\r\n item = props.item,\r\n remove_from_navbar = props.remove_from_navbar;\r\n var options = item.options;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = SelectFileOptions_slicedToArray(_useState, 2),\r\n isShow = _useState2[0],\r\n setIsShow = _useState2[1];\r\n var handleSelect = function handleSelect(e, type, option) {\r\n e.preventDefault();\r\n setIsShow(false);\r\n if (option !== null && option !== void 0 && option.handleClick) {\r\n option.handleClick(option, item);\r\n if (!option.add_functionality) return;\r\n }\r\n if (type === \"new_document\") {\r\n handleNewDocument();\r\n } else if (type === \"preview\") {\r\n handlePreview();\r\n } else if (type === \"print\") {\r\n setTimeout(function () {\r\n handlePrint();\r\n }, 1);\r\n } else {\r\n // handleViewSource();\r\n }\r\n };\r\n if (!options) {\r\n options = FILE_OPTIONS;\r\n }\r\n if ((remove_from_navbar === null || remove_from_navbar === void 0 ? void 0 : remove_from_navbar.length) > 0) {\r\n var _find_remove$options;\r\n var find_remove = remove_from_navbar.find(function (toolbar) {\r\n return toolbar.name === \"file\";\r\n });\r\n if ((find_remove === null || find_remove === void 0 ? void 0 : (_find_remove$options = find_remove.options) === null || _find_remove$options === void 0 ? void 0 : _find_remove$options.length) > 0) {\r\n options = options.filter(function (item) {\r\n return !(find_remove !== null && find_remove !== void 0 && find_remove.options.includes(item));\r\n });\r\n }\r\n }\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.customSelect,\r\n onMouseEnter: function onMouseEnter() {\r\n return setIsShow(true);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setIsShow(false);\r\n }\r\n }, item !== null && item !== void 0 && item.title ? item.title : \"File\", /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectItems, \" \").concat(isShow ? \"\".concat(style_module_default.a.show) : \"\")\r\n }, options.map(function (option, index) {\r\n var is_new_document = option === \"new_document\" || option.name === \"new_document\";\r\n var is_preview = option === \"preview\" || option.name === \"preview\";\r\n var is_print = option === \"print\" || option.name === \"print\";\r\n var is_upload_file = option === \"upload_file\" || option.name === \"upload_file\";\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index)\r\n }, is_new_document && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"new_document\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(EmptyFileIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"New Document\")), is_preview && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"preview\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(PreviewIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Preview\")), is_print && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleSelect(e, \"print\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(PrintIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Print\")));\r\n })));\r\n}\r\n// EXTERNAL MODULE: external \"react-dom\"\r\nvar external_react_dom_ = __webpack_require__(2);\r\nvar external_react_dom_default = /*#__PURE__*/__webpack_require__.n(external_react_dom_);\r\n\r\n// CONCATENATED MODULE: ./src/components/Model.jsx\r\n\r\n\r\n\r\n\r\nvar Model_Modal = function Modal(props) {\r\n var onClose = props.onClose,\r\n children = props.children,\r\n title = props.title,\r\n className = props.className,\r\n isFullScreen = props.isFullScreen;\r\n return /*#__PURE__*/external_react_dom_default.a.createPortal( /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.modalOverlay, \" \").concat(isFullScreen ? \"\".concat(style_module_default.a.fillScreenView) : \"\")\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.modalPopup, \" \").concat(className ? className : \"\"),\r\n onClick: function onClick(e) {\r\n return e.stopPropagation();\r\n }\r\n }, !isFullScreen && /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.modelTitle\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"h2\", null, title), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.cross,\r\n onClick: onClose\r\n }, /*#__PURE__*/external_react_default.a.createElement(CrossImage, null))), /*#__PURE__*/external_react_default.a.createElement(\"hr\", null)), children)), document.getElementById(\"modal-root\"));\r\n};\r\n/* harmony default export */ var Model = (Model_Modal);\r\n// CONCATENATED MODULE: ./src/components/ViewSourceModel.jsx\r\n\r\n\r\n\r\nfunction ViewSourceModal(props) {\r\n var viewSource = props.viewSource,\r\n setViewSource = props.setViewSource,\r\n sourceCode = props.sourceCode,\r\n setSourceCode = props.setSourceCode,\r\n handleSaveSource = props.handleSaveSource;\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.mlMainContentBox\r\n }, /*#__PURE__*/external_react_default.a.createElement(Model, {\r\n isOpen: viewSource,\r\n onClose: function onClose() {\r\n return setViewSource(false);\r\n },\r\n title: \"Source Code\",\r\n className: style_module_default.a.fullScreenModel\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"textarea\", {\r\n className: style_module_default.a.wysiwygEditorSource,\r\n value: sourceCode,\r\n onChange: function onChange(e) {\r\n return setSourceCode(e.target.value);\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorTextEnd\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.saveButton,\r\n onClick: handleSaveSource\r\n }, \"Save\"))));\r\n}\r\n// CONCATENATED MODULE: ./src/components/PreviewModel.jsx\r\n\r\n\r\n\r\nfunction PreviewModel(props) {\r\n var openPreview = props.openPreview,\r\n setOpenPreview = props.setOpenPreview,\r\n previewContent = props.previewContent;\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.mlMainContentBox\r\n }, /*#__PURE__*/external_react_default.a.createElement(Model, {\r\n isOpen: openPreview,\r\n onClose: function onClose() {\r\n return setOpenPreview(false);\r\n },\r\n title: \"Preview\",\r\n className: style_module_default.a.fullScreenModel\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10,\r\n dangerouslySetInnerHTML: {\r\n __html: previewContent\r\n }\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SelectFamily.jsx\r\n\r\n\r\nfunction SelectFamily(_ref) {\r\n var handleHideChildOptions = _ref.handleHideChildOptions,\r\n editorRef = _ref.editorRef;\r\n var fontFamilies = [{\r\n name: \"Arial\",\r\n style: \"Arial, sans-serif\"\r\n }, {\r\n name: \"Helvetica\",\r\n style: \"Helvetica, sans-serif\"\r\n }, {\r\n name: \"Times New Roman\",\r\n style: \"Times New Roman, serif\"\r\n }, {\r\n name: \"Courier New\",\r\n style: \"Courier New, monospace\"\r\n }, {\r\n name: \"Courier\",\r\n style: \"Courier, monospace\"\r\n }, {\r\n name: \"Verdana\",\r\n style: \"Verdana, sans-serif\"\r\n }, {\r\n name: \"Georgia\",\r\n style: \"Georgia, serif\"\r\n }, {\r\n name: \"Palatino\",\r\n style: \"Palatino, serif\"\r\n }, {\r\n name: \"Garamond\",\r\n style: \"Garamond, serif\"\r\n }, {\r\n name: \"Bookman\",\r\n style: \"Bookman, serif\"\r\n }, {\r\n name: \"Comic Sans MS\",\r\n style: \"Comic Sans MS, sans-serif\"\r\n }, {\r\n name: \"Trebuchet MS\",\r\n style: \"Trebuchet MS, sans-serif\"\r\n }, {\r\n name: \"Arial Black\",\r\n style: \"Arial Black, sans-serif\"\r\n }, {\r\n name: \"Impact\",\r\n style: \"Impact, sans-serif\"\r\n }, {\r\n name: \"Roboto\",\r\n style: \"Roboto, sans-serif\"\r\n }, {\r\n name: \"Open Sans\",\r\n style: \"Open Sans, sans-serif\"\r\n }, {\r\n name: \"Lato\",\r\n style: \"Lato, sans-serif\"\r\n }, {\r\n name: \"Montserrat\",\r\n style: \"Montserrat, sans-serif\"\r\n }, {\r\n name: \"Roboto Condensed\",\r\n style: \"Roboto Condensed, sans-serif\"\r\n }, {\r\n name: \"Oswald\",\r\n style: \"Oswald, sans-serif\"\r\n }, {\r\n name: \"Raleway\",\r\n style: \"Raleway, sans-serif\"\r\n }, {\r\n name: \"Noto Sans\",\r\n style: \"Noto Sans, sans-serif\"\r\n }, {\r\n name: \"Poppins\",\r\n style: \"Poppins, sans-serif\"\r\n }, {\r\n name: \"Ubuntu\",\r\n style: \"Ubuntu, sans-serif\"\r\n }, {\r\n name: \"Source Sans Pro\",\r\n style: \"Source Sans Pro, sans-serif\"\r\n }\r\n // Add more font families as needed\r\n ];\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n var selection = window.getSelection();\r\n if (!selection.isCollapsed) {\r\n document.execCommand(\"styleWithCSS\", false, true);\r\n document.execCommand(\"fontName\", false, option.style);\r\n } else {\r\n document.execCommand(\"styleWithCSS\", false, true);\r\n document.execCommand(\"fontName\", false, option.style);\r\n }\r\n handleHideChildOptions();\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, fontFamilies.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n key: \"key\".concat(index),\r\n style: {\r\n fontFamily: option.style\r\n },\r\n className: style_module_default.a.fontFamilyOption,\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n }\r\n }, option.name);\r\n }));\r\n}\r\n/* harmony default export */ var components_SelectFamily = (SelectFamily);\r\n// CONCATENATED MODULE: ./src/components/SelectFontSize.jsx\r\n\r\n\r\nfunction SelectFontSize(_ref) {\r\n var handleHideChildOptions = _ref.handleHideChildOptions;\r\n var fontSizes = [\"10\", \"12\", \"14\", \"16\", \"18\", \"20\", \"24\", \"28\", \"32\", \"36\", \"48\", \"60\", \"72\"];\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n var selection = window.getSelection();\r\n if (!selection.isCollapsed) {\r\n // If there's a text selection, apply font size to selected text\r\n document.execCommand(\"styleWithCSS\", false, true);\r\n document.execCommand(\"fontSize\", false, \"1\"); // Required for compatibility\r\n var range = selection.getRangeAt(0);\r\n var span = document.createElement(\"span\");\r\n span.style.fontSize = option + \"px\";\r\n range.surroundContents(span);\r\n } else {\r\n // If there's no selection, insert a styled span at caret position\r\n var _range = selection.getRangeAt(0);\r\n var _span = document.createElement(\"span\");\r\n _span.style.fontSize = option + \"px\";\r\n _span.innerHTML = \"\\u200B\"; // Zero-width space to keep the span visible\r\n _range.insertNode(_span);\r\n // Move caret inside the span\r\n _range.setStart(_span, 1);\r\n _range.setEnd(_span, 1);\r\n selection.removeAllRanges();\r\n selection.addRange(_range);\r\n }\r\n handleHideChildOptions();\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, fontSizes.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: style_module_default.a.selectOption\r\n }, \"\".concat(option, \"px\"));\r\n }));\r\n}\r\n/* harmony default export */ var components_SelectFontSize = (SelectFontSize);\r\n// CONCATENATED MODULE: ./src/components/SelectAlignment.jsx\r\n\r\n\r\n\r\nfunction SelectAlignment(_ref) {\r\n var handleHideChildOptions = _ref.handleHideChildOptions;\r\n var alignments = [{\r\n title: \"Left\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignLeft, null),\r\n type: \"justifyLeft\"\r\n }, {\r\n title: \"Center\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignCenter, null),\r\n type: \"justifyCenter\"\r\n }, {\r\n title: \"Right\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignRight, null),\r\n type: \"justifyRight\"\r\n }, {\r\n title: \"Justify\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignJustify, null),\r\n type: \"justifyFull\"\r\n }];\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n document.execCommand(option.type);\r\n handleHideChildOptions();\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, alignments.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: \"\".concat(style_module_default.a.selectOption, \" \").concat(style_module_default.a.reactEditorTextLeft)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\r\n className: style_module_default.a.reactEditorMe5\r\n }, option.icon), option.title);\r\n }));\r\n}\r\n/* harmony default export */ var components_SelectAlignment = (SelectAlignment);\r\n// CONCATENATED MODULE: ./src/components/SelectLineHeight.jsx\r\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || SelectLineHeight_unsupportedIterableToArray(r) || _nonIterableSpread(); }\r\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectLineHeight_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectLineHeight_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectLineHeight_arrayLikeToArray(r, a) : void 0; } }\r\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\r\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return SelectLineHeight_arrayLikeToArray(r); }\r\nfunction SelectLineHeight_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\n\r\n\r\nfunction SelectLineHeight(_ref) {\r\n var handleHideChildOptions = _ref.handleHideChildOptions;\r\n var lineHeightOptions = [1, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0];\r\n var handleOptionClick = function handleOptionClick(e, value) {\r\n e.preventDeafult();\r\n var selection = window.getSelection(); // Get current selection\r\n\r\n // Check if there's a valid selection and text\r\n if (selection && selection.rangeCount > 0 && selection.toString().trim() !== \"\") {\r\n var range = selection.getRangeAt(0); // Get range of current selection\r\n var lineHeightStyle = \"line-height: \".concat(value, \";\");\r\n\r\n // Traverse through each node in the range and apply line height style\r\n var applyLineHeight = function applyLineHeight(node) {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n var wrapperSpan = document.createElement(\"span\");\r\n wrapperSpan.style.cssText = lineHeightStyle;\r\n wrapperSpan.appendChild(node.cloneNode(true));\r\n return wrapperSpan;\r\n } else if (node.nodeType === Node.ELEMENT_NODE && node.tagName.toLowerCase() === \"p\") {\r\n var newNode = node.cloneNode(false);\r\n // Use the spread operator to convert NodeList to an array and iterate over each child node\r\n _toConsumableArray(node.childNodes).forEach(function (childNode) {\r\n newNode.appendChild(applyLineHeight(childNode));\r\n });\r\n return newNode;\r\n } else {\r\n return node.cloneNode(true); // For other element nodes, just clone them without modifying\r\n }\r\n };\r\n var modifiedContents = applyLineHeight(range.cloneContents());\r\n\r\n // Replace the original selection with the modified content\r\n range.deleteContents();\r\n range.insertNode(modifiedContents);\r\n\r\n // Restore selection\r\n selection.removeAllRanges(); // Remove existing ranges\r\n selection.addRange(range); // Restore original selection\r\n }\r\n handleHideChildOptions();\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, lineHeightOptions.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: style_module_default.a.selectOption\r\n }, option);\r\n }));\r\n}\r\n/* harmony default export */ var components_SelectLineHeight = (SelectLineHeight);\r\n// CONCATENATED MODULE: ./src/components/SelectFormations.jsx\r\nfunction SelectFormations_slicedToArray(r, e) { return SelectFormations_arrayWithHoles(r) || SelectFormations_iterableToArrayLimit(r, e) || SelectFormations_unsupportedIterableToArray(r, e) || SelectFormations_nonIterableRest(); }\r\nfunction SelectFormations_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectFormations_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectFormations_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectFormations_arrayLikeToArray(r, a) : void 0; } }\r\nfunction SelectFormations_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction SelectFormations_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction SelectFormations_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction SelectFormations_SelectFileOptions(props) {\r\n var _options;\r\n var item = props.item,\r\n isFullScreen = props.isFullScreen,\r\n remove_from_navbar = props.remove_from_navbar,\r\n editorRef = props.editorRef;\r\n var options = item.options;\r\n if (!options) {\r\n options = FORMAT_OPTIONS;\r\n }\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = SelectFormations_slicedToArray(_useState, 2),\r\n showFormatOptions = _useState2[0],\r\n setShowFormatOptions = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(0),\r\n _useState4 = SelectFormations_slicedToArray(_useState3, 2),\r\n showChildOptions = _useState4[0],\r\n setShowChildOptions = _useState4[1];\r\n var _useState5 = Object(external_react_[\"useState\"])(0),\r\n _useState6 = SelectFormations_slicedToArray(_useState5, 2),\r\n dropdownTop = _useState6[0],\r\n setDropdownTop = _useState6[1];\r\n var random_id = generateRandomID(16);\r\n var handleShowFamily = function handleShowFamily(option, event) {\r\n if (event) {\r\n var parent = document.getElementById(random_id);\r\n var parent_top = parent.getBoundingClientRect().top;\r\n var top = event.currentTarget.getBoundingClientRect().top;\r\n setDropdownTop(isFullScreen ? top : top - parent_top);\r\n }\r\n setShowFormatOptions(true);\r\n setShowChildOptions(option);\r\n };\r\n var handleHideChildOptions = function handleHideChildOptions() {\r\n setShowFormatOptions(false);\r\n setShowChildOptions(0);\r\n };\r\n var handleClick = function handleClick(e, name, option) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n if (option !== null && option !== void 0 && option.handleClick) {\r\n option.handleClick(option, item);\r\n if (!option.add_functionality) return;\r\n }\r\n document.execCommand(name);\r\n handleHideChildOptions();\r\n };\r\n if ((remove_from_navbar === null || remove_from_navbar === void 0 ? void 0 : remove_from_navbar.length) > 0) {\r\n var _find_remove$options;\r\n var find_remove = remove_from_navbar.find(function (toolbar) {\r\n return toolbar.name === \"format\";\r\n });\r\n if ((find_remove === null || find_remove === void 0 ? void 0 : (_find_remove$options = find_remove.options) === null || _find_remove$options === void 0 ? void 0 : _find_remove$options.length) > 0) {\r\n options = options.filter(function (item) {\r\n return !(find_remove !== null && find_remove !== void 0 && find_remove.options.includes(item));\r\n });\r\n }\r\n }\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.customSelect,\r\n onMouseOver: function onMouseOver() {\r\n return setShowFormatOptions(true);\r\n },\r\n onMouseLeave: handleHideChildOptions,\r\n id: random_id\r\n }, item !== null && item !== void 0 && item.title ? item.title : \"Format\", /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectItems, \" \").concat(showFormatOptions ? \"\".concat(style_module_default.a.show) : \"\")\r\n }, ((_options = options) === null || _options === void 0 ? void 0 : _options.length) > 0 && options.map(function (option, index) {\r\n var is_bold = option === \"bold\" || option.name === \"bold\";\r\n var is_italic = option === \"italic\" || option.name === \"italic\";\r\n var is_underline = option === \"underline\" || option.name === \"underline\";\r\n var is_superscript = option === \"superscript\" || option.name === \"superscript\";\r\n var is_subscript = option === \"subscript\" || option.name === \"subscript\";\r\n var is_font = option === \"font\" || option.name === \"font\";\r\n var is_font_size = option === \"font_size\" || option.name === \"font_size\";\r\n var is_alignment = option === \"alignment\" || option.name === \"alignment\";\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, is_bold && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleClick(e, \"bold\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(BoldIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Bold\")), is_italic && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleClick(e, \"italic\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(ItalicIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Italic\")), is_underline && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleClick(e, \"underline\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(UnderlineIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Underline\")), is_superscript && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleClick(e, \"superscript\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(SuperscriptIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Superscript\")), is_subscript && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.selectInsert,\r\n onClick: function onClick(e) {\r\n return handleClick(e, \"subscript\", option);\r\n }\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(SubscriptIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Subscript\")), is_font && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n onMouseOver: function onMouseOver(e) {\r\n handleShowFamily(1, e);\r\n },\r\n onMouseLeave: handleHideChildOptions\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(FontFamilyIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Font Family\"))), is_font_size && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n onMouseOver: function onMouseOver(e) {\r\n handleShowFamily(2, e);\r\n },\r\n onMouseLeave: handleHideChildOptions\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(FontSizeIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Font Size\"))), is_alignment && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n onMouseOver: function onMouseOver(e) {\r\n handleShowFamily(3, e);\r\n },\r\n onMouseLeave: handleHideChildOptions\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectInsert\r\n }, option !== null && option !== void 0 && option.icon ? option.icon : /*#__PURE__*/external_react_default.a.createElement(AlignLeft, null), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, option !== null && option !== void 0 && option.title ? option.title : \"Align\"))));\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectFormationDropdown, \" \").concat(showChildOptions === 1 ? \"\".concat(style_module_default.a.show) : \"\"),\r\n onMouseOver: function onMouseOver() {\r\n handleShowFamily(1);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setShowChildOptions(false);\r\n },\r\n style: {\r\n top: dropdownTop\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_SelectFamily, {\r\n handleHideChildOptions: handleHideChildOptions,\r\n editorRef: editorRef\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectFormationDropdown, \" \").concat(style_module_default.a.fontSizeDropdown, \" \").concat(showChildOptions === 2 ? \"\".concat(style_module_default.a.show) : \"\"),\r\n onMouseOver: function onMouseOver() {\r\n handleShowFamily(2);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setShowChildOptions(false);\r\n },\r\n style: {\r\n top: dropdownTop\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_SelectFontSize, {\r\n handleHideChildOptions: handleHideChildOptions\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectFormationDropdown, \" \").concat(style_module_default.a.fontSizeDropdown, \" \").concat(showChildOptions === 3 ? \"\".concat(style_module_default.a.show) : \"\"),\r\n onMouseOver: function onMouseOver() {\r\n handleShowFamily(3);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setShowChildOptions(false);\r\n },\r\n style: {\r\n top: dropdownTop\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_SelectAlignment, {\r\n handleHideChildOptions: handleHideChildOptions\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.selectFormationDropdown, \" \").concat(style_module_default.a.fontSizeDropdown, \" \").concat(showChildOptions === 4 ? \"\".concat(style_module_default.a.show) : \"\"),\r\n onMouseOver: function onMouseOver() {\r\n handleShowFamily(4);\r\n },\r\n onMouseLeave: function onMouseLeave() {\r\n return setShowChildOptions(false);\r\n },\r\n style: {\r\n top: dropdownTop\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_SelectLineHeight, {\r\n handleHideChildOptions: handleHideChildOptions\r\n })));\r\n}\r\n// CONCATENATED MODULE: ./src/components/ManageColors.jsx\r\nfunction ManageColors_slicedToArray(r, e) { return ManageColors_arrayWithHoles(r) || ManageColors_iterableToArrayLimit(r, e) || ManageColors_unsupportedIterableToArray(r, e) || ManageColors_nonIterableRest(); }\r\nfunction ManageColors_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction ManageColors_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return ManageColors_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ManageColors_arrayLikeToArray(r, a) : void 0; } }\r\nfunction ManageColors_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction ManageColors_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction ManageColors_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\nfunction rgbToHex(rgb) {\r\n var _rgb$match = rgb.match(/\\d+/g),\r\n _rgb$match2 = ManageColors_slicedToArray(_rgb$match, 3),\r\n r = _rgb$match2[0],\r\n g = _rgb$match2[1],\r\n b = _rgb$match2[2];\r\n var hexR = parseInt(r).toString(16).padStart(2, \"0\");\r\n var hexG = parseInt(g).toString(16).padStart(2, \"0\");\r\n var hexB = parseInt(b).toString(16).padStart(2, \"0\");\r\n var hexColor = \"#\".concat(hexR).concat(hexG).concat(hexB);\r\n return hexColor;\r\n}\r\nfunction ManageColors(props) {\r\n var type = props.type,\r\n item = props.item,\r\n title = props.title,\r\n editorRef = props.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(\"#000\"),\r\n _useState2 = ManageColors_slicedToArray(_useState, 2),\r\n value = _useState2[0],\r\n setValue = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(false),\r\n _useState4 = ManageColors_slicedToArray(_useState3, 2),\r\n openColor = _useState4[0],\r\n setOpenColor = _useState4[1];\r\n var colorPickerRef = Object(external_react_[\"useRef\"])(null);\r\n var handleChangeColor = function handleChangeColor(e, color, input) {\r\n e.preventDefault();\r\n if (!input) {\r\n setOpenColor(false);\r\n }\r\n if (item !== null && item !== void 0 && item.handleClick) {\r\n item.handleClick(item);\r\n if (!item.add_functionality) return;\r\n }\r\n setValue(color);\r\n document.execCommand(type, false, color);\r\n if (!input) {\r\n setOpenColor(false);\r\n }\r\n };\r\n var handleClick = function handleClick(e) {\r\n e.preventDefault();\r\n setOpenColor(true);\r\n };\r\n var handleOutsideClick = function handleOutsideClick(e) {\r\n if (colorPickerRef.current && !colorPickerRef.current.contains(e.target)) {\r\n setOpenColor(false);\r\n }\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (!(editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode))) {\r\n return;\r\n }\r\n var appliedColor = \"transparent\";\r\n if (type === \"foreColor\") {\r\n appliedColor = document.queryCommandValue(type);\r\n } else {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n var range = selection.getRangeAt(0);\r\n var ancestor = range.commonAncestorContainer;\r\n if (ancestor.nodeType === 3) {\r\n var parentElement = ancestor.parentElement;\r\n appliedColor = window.getComputedStyle(parentElement).backgroundColor;\r\n } else {\r\n appliedColor = window.getComputedStyle(ancestor).backgroundColor;\r\n }\r\n }\r\n }\r\n if (appliedColor && appliedColor !== \"transparent\") {\r\n setValue(rgbToHex(appliedColor));\r\n }\r\n };\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"mousedown\", handleOutsideClick);\r\n return function () {\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"mousedown\", handleOutsideClick);\r\n };\r\n }, [editorRef]);\r\n\r\n // document.documentElement.style.setProperty(variable, newColor);\r\n\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.mainColorComponent,\r\n ref: colorPickerRef\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleClick,\r\n title: item !== null && item !== void 0 && item.title ? item.title : title\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorDFlex, \" \").concat(style_module_default.a.reactEditorFlexColumn)\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : type === \"foreColor\" ? /*#__PURE__*/external_react_default.a.createElement(TextColorUpperIcon, null) : /*#__PURE__*/external_react_default.a.createElement(BackgroundColorIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.bottomColoredLine,\r\n style: {\r\n backgroundColor: value\r\n }\r\n }))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.openColorBox, \" \").concat(openColor ? style_module_default.a.show : \"\")\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.colorBoxGrid, \" \").concat(style_module_default.a.reactEditorDFlex)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#BFEDD2\"\r\n },\r\n title: \"Light Green\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#BFEDD2\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#FBEEB8\"\r\n },\r\n title: \"Light Yellow\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#FBEEB8\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#F8CAC6\"\r\n },\r\n title: \"Light Red\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#BFEDD2\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#ECCAFA\"\r\n },\r\n title: \"Light Purple\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#ECCAFA\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#C2E0F4\"\r\n },\r\n title: \"Light Blue\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#C2E0F4\");\r\n }\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.colorBoxGrid, \" \").concat(style_module_default.a.reactEditorDFlex)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#2DC26B\"\r\n },\r\n title: \"Green\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#2DC26B\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#F1C40F\"\r\n },\r\n title: \"Yellow\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#F1C40F\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#E03E2D\"\r\n },\r\n title: \"Red\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#E03E2D\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#B96AD9\"\r\n },\r\n title: \"Purple\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#B96AD9\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#3598DB\"\r\n },\r\n title: \"Blue\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#3598DB\");\r\n }\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.colorBoxGrid, \" \").concat(style_module_default.a.reactEditorDFlex)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#169179\"\r\n },\r\n title: \"Dark Turquoise\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#169179\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#E67E23\"\r\n },\r\n title: \"Orange\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#E67E23\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#BA372A\"\r\n },\r\n title: \"Dark Red\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#BA372A\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#843FA1\"\r\n },\r\n title: \"Dark Purple\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#843FA1\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#236FA1\"\r\n },\r\n title: \"Dark Blue\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#236FA1\");\r\n }\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.colorBoxGrid, \" \").concat(style_module_default.a.reactEditorDFlex)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#ECF0F1\"\r\n },\r\n title: \"Light Gray\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#ECF0F1\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#CED4D9\"\r\n },\r\n title: \"Medium Gray\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#CED4D9\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#95A5A6\"\r\n },\r\n title: \"Gray\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#95A5A6\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#7E8C8D\"\r\n },\r\n title: \"Dark Gray\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#7E8C8D\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#34495E\"\r\n },\r\n title: \"Navy Blue\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#34495E\");\r\n }\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.colorBoxGrid, \" \").concat(style_module_default.a.reactEditorDFlex)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#fff\"\r\n },\r\n title: \"White\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#fff\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n backgroundColor: \"#000\"\r\n },\r\n title: \"Black\",\r\n onClick: function onClick(e) {\r\n return handleChangeColor(e, \"#000\");\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n pointerEvents: \"none\"\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n style: {\r\n pointerEvents: \"none\"\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.colorBox,\r\n title: \"Custom color\",\r\n style: {\r\n cursor: \"pointer\",\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"input-color\",\r\n type: \"color\",\r\n value: value,\r\n onChange: function onChange(e) {\r\n return handleChangeColor(e, e.target.value, \"input\");\r\n }\r\n })))));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SimpleButton.jsx\r\n\r\nfunction SimpleButton(props) {\r\n var name = props.name,\r\n icon = props.icon,\r\n title = props.title,\r\n item = props.item,\r\n editorRef = props.editorRef;\r\n var handleClick = function handleClick(e) {\r\n e.preventDefault();\r\n if (item !== null && item !== void 0 && item.handleClick) {\r\n item.handleClick(item);\r\n if (!item.add_functionality) return;\r\n }\r\n if (editorRef.current) {\r\n editorRef.current.dir = name; // Set text direction to LTR for the editor area\r\n }\r\n };\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleClick,\r\n title: item !== null && item !== void 0 && item.title ? item.title : title\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : icon);\r\n}\r\n// CONCATENATED MODULE: ./src/components/ViewLoadingModel.jsx\r\n// Modal.js\r\n\r\n\r\n\r\n\r\nvar ViewLoadingModel_ViewLoadingModel = function ViewLoadingModel() {\r\n return /*#__PURE__*/external_react_dom_default.a.createPortal( /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.modalOverlay, \" \").concat(style_module_default.a.imageModelOverly)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n onClick: function onClick(e) {\r\n return e.stopPropagation();\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"img\", {\r\n src: loader,\r\n alt: \"\"\r\n }))), document.getElementById(\"modal-root\"));\r\n};\r\n/* harmony default export */ var components_ViewLoadingModel = (ViewLoadingModel_ViewLoadingModel);\r\n// CONCATENATED MODULE: ./src/components/SVGImages/PasteIcon.jsx\r\n\r\nfunction PasteIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M104.6 48H64C28.7 48 0 76.7 0 112v272c0 35.3 28.7 64 64 64h96v-48H64c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16h16c0 17.7 14.3 32 32 32h72.4c17.6-19.6 43.2-32 71.6-32h62c-7.1-27.6-32.2-48-62-48h-40.6C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48m39.4 8a16 16 0 1 1 32 0a16 16 0 1 1-32 0m304 408H256c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16h140.1l67.9 67.9V448c0 8.8-7.2 16-16 16m-192 48h192c35.3 0 64-28.7 64-64V243.9c0-12.7-5.1-24.9-14.1-33.9L430 142.1c-9-9-21.2-14.1-33.9-14.1H256c-35.3 0-64 28.7-64 64v256c0 35.3 28.7 64 64 64\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/CutIcon.jsx\r\n\r\nfunction CutIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 16 16\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n fillRule: \"evenodd\",\r\n d: \"m5.142 11.074l-1.912.548a2.532 2.532 0 1 1-1.395-4.867l1.947-.559a2.532 2.532 0 0 1 2.555.713l1.53-5.335c.139-.485.6-.897 1.159-1.238c.27-.164.52-.278.779-.32c.814-.132 1.503.558 1.261 1.422L9.574 6.643l4.988-1.43c.864-.242 1.554.447 1.422 1.26c-.042.26-.156.51-.32.78c-.341.56-.753 1.02-1.238 1.16L9.523 9.817a2.53 2.53 0 0 1 .56 2.4l-.56 1.947a2.532 2.532 0 1 1-4.867-1.395zm.33-1.148l.48-1.673a1.52 1.52 0 0 0-1.89-1.083l-1.948.558a1.52 1.52 0 0 0 .837 2.92zm3.773-2.135l-.33 1.148l5.232-1.5c.324-.093 1.182-1.39.694-1.253zM5.63 13.049a1.52 1.52 0 0 0 2.92.837l.559-1.947a1.52 1.52 0 0 0-1.553-1.935l2.537-8.845c.136-.488-1.16.37-1.253.694zm.973.279l.559-1.947a.506.506 0 1 1 .973.279l-.558 1.947a.506.506 0 1 1-.974-.28m-3.93-3.653a.506.506 0 1 1-.28-.973l1.947-.558a.506.506 0 0 1 .28.973z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/CopyIcon.jsx\r\n\r\nfunction CopyIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: \"1em\",\r\n height: \"1em\",\r\n viewBox: \"0 0 16 16\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M0 2.729V2a1 1 0 0 1 1-1h2v1H1v12h4v1H1a1 1 0 0 1-1-1V9zM12 5V2a1 1 0 0 0-1-1H9v1h2v3zm-1 1h2v9H6V6zV5H6a1 1 0 0 0-1 1v9a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2z\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n fill: \"currentColor\",\r\n d: \"M7 10h5V9H7zm0-2h5V7H7zm0 4h5v-1H7zm0 2h5v-1H7zM9 2V1a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v1h1V1h4v1zM3 3h6V2H3z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/LinkModal.jsx\r\nfunction LinkModal_typeof(o) { \"@babel/helpers - typeof\"; return LinkModal_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, LinkModal_typeof(o); }\r\nfunction LinkModal_regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ LinkModal_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == LinkModal_typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(LinkModal_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\r\nfunction LinkModal_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\r\nfunction LinkModal_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { LinkModal_asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { LinkModal_asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\r\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\r\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\r\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\r\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == LinkModal_typeof(i) ? i : i + \"\"; }\r\nfunction _toPrimitive(t, r) { if (\"object\" != LinkModal_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != LinkModal_typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\r\nfunction LinkModal_slicedToArray(r, e) { return LinkModal_arrayWithHoles(r) || LinkModal_iterableToArrayLimit(r, e) || LinkModal_unsupportedIterableToArray(r, e) || LinkModal_nonIterableRest(); }\r\nfunction LinkModal_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction LinkModal_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return LinkModal_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? LinkModal_arrayLikeToArray(r, a) : void 0; } }\r\nfunction LinkModal_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction LinkModal_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction LinkModal_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\nfunction LinkModal(props) {\r\n var onLinkInsert = props.onLinkInsert,\r\n item = props.item,\r\n setIsOpenModel = props.setIsOpenModel,\r\n selectedData = props.selectedData,\r\n imageUrl = props.imageUrl,\r\n setImageUrl = props.setImageUrl,\r\n image_handler = props.image_handler,\r\n setIsLoading = props.setIsLoading;\r\n var _useState = Object(external_react_[\"useState\"])({}),\r\n _useState2 = LinkModal_slicedToArray(_useState, 2),\r\n errorMessage = _useState2[0],\r\n setErrorMessage = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])({\r\n text: \"\",\r\n link: \"\",\r\n open_new_tab: false,\r\n link_type: \"text\"\r\n }),\r\n _useState4 = LinkModal_slicedToArray(_useState3, 2),\r\n inputs = _useState4[0],\r\n setInputs = _useState4[1];\r\n var handleLinkInsert = function handleLinkInsert(e) {\r\n e.preventDefault();\r\n if (!inputs.link) {\r\n var error = {\r\n type: \"link\",\r\n message: \"Please add link URL\"\r\n };\r\n setErrorMessage(error);\r\n return;\r\n } else if (inputs.link_type === \"image\" && !imageUrl) {\r\n var _error = {\r\n type: \"image\",\r\n message: \"Please upload image\"\r\n };\r\n setErrorMessage(_error);\r\n return;\r\n } else if (inputs.link_type === \"button\" && !inputs.text) {\r\n var _error2 = {\r\n type: \"button\",\r\n message: \"Please add text to display on button\"\r\n };\r\n setErrorMessage(_error2);\r\n return;\r\n }\r\n if (item !== null && item !== void 0 && item.handleSubmit) {\r\n item.handleSubmit(item);\r\n if (!item.add_functionality) {\r\n setIsOpenModel(\"\");\r\n return;\r\n }\r\n }\r\n onLinkInsert(inputs);\r\n };\r\n var handleChange = function handleChange(event) {\r\n var _event$target = event.target,\r\n name = _event$target.name,\r\n value = _event$target.value;\r\n setInputs(function (old) {\r\n return _objectSpread(_objectSpread({}, old), {}, _defineProperty({}, name, value));\r\n });\r\n };\r\n var handleCross = function handleCross() {\r\n setImageUrl(\"\");\r\n };\r\n var handleChangeFile = /*#__PURE__*/function () {\r\n var _ref = LinkModal_asyncToGenerator( /*#__PURE__*/LinkModal_regeneratorRuntime().mark(function _callee(event) {\r\n var files, data, image_path;\r\n return LinkModal_regeneratorRuntime().wrap(function _callee$(_context) {\r\n while (1) switch (_context.prev = _context.next) {\r\n case 0:\r\n files = event.target.files;\r\n data = {\r\n image: files[0]\r\n };\r\n if (!image_handler) {\r\n _context.next = 10;\r\n break;\r\n }\r\n setIsLoading(true);\r\n _context.next = 6;\r\n return image_handler(data);\r\n case 6:\r\n image_path = _context.sent;\r\n if (image_path) {\r\n setImageUrl(image_path);\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(false);\r\n }\r\n _context.next = 11;\r\n break;\r\n case 10:\r\n setImageUrl(URL.createObjectURL(data.image));\r\n case 11:\r\n case \"end\":\r\n return _context.stop();\r\n }\r\n }, _callee);\r\n }));\r\n return function handleChangeFile(_x) {\r\n return _ref.apply(this, arguments);\r\n };\r\n }();\r\n var handleChangeType = function handleChangeType(e, value) {\r\n e.preventDefault();\r\n setInputs(function (old) {\r\n return _objectSpread(_objectSpread({}, old), {}, {\r\n link_type: value\r\n });\r\n });\r\n setErrorMessage(\"\");\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (selectedData !== null && selectedData !== void 0 && selectedData.text) {\r\n var selected_data = _objectSpread({}, selectedData);\r\n var type = selected_data.link_type;\r\n if (!type) {\r\n selected_data.link_type = \"text\";\r\n }\r\n setInputs(selected_data);\r\n }\r\n }, [selectedData]);\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectType\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.link_type === \"text\" ? style_module_default.a.selectedType : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"text\");\r\n }\r\n }, \"Text\"), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.link_type === \"image\" ? style_module_default.a.selectedType : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"image\");\r\n }\r\n }, \"Image\"), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.link_type === \"button\" ? style_module_default.a.selectedType : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"button\");\r\n }\r\n }, \"Button\")), /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"link\"\r\n }, \"URL*\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"link\",\r\n type: \"text\",\r\n name: \"link\",\r\n autoFocus: true,\r\n className: style_module_default.a.formControlInput,\r\n value: inputs.link,\r\n onChange: handleChange\r\n }), errorMessage.type === \"link\" && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage.message))), inputs.link_type === \"image\" ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, imageUrl ? /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.linkImageBox\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"span\", {\r\n className: style_module_default.a.linkImageCross,\r\n onClick: handleCross\r\n }, \"x\"), /*#__PURE__*/external_react_default.a.createElement(\"img\", {\r\n src: imageUrl,\r\n alt: \"ImageLink\",\r\n className: style_module_default.a.linkImage\r\n })) : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"image\"\r\n }, \"Choose File *\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n type: \"file\",\r\n id: \"image\",\r\n name: \"image\",\r\n className: style_module_default.a.formControlInput,\r\n accept: \"image/*\",\r\n onChange: handleChangeFile\r\n }), errorMessage.type === \"image\" && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage.message)))) : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"text\"\r\n }, \"Text to display \".concat(inputs.link_type === \"button\" ? \"*\" : \"\")), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"text\",\r\n type: \"text\",\r\n name: \"text\",\r\n value: inputs.text,\r\n onChange: handleChange,\r\n className: style_module_default.a.formControlInput\r\n }), errorMessage.type === \"button\" && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage.message))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"open_new_tab\"\r\n }, \"Open in\"), /*#__PURE__*/external_react_default.a.createElement(\"select\", {\r\n name: \"open_new_tab\",\r\n id: \"open_new_tab\",\r\n className: \"\".concat(style_module_default.a.formControlInput, \" \").concat(style_module_default.a.reactEditorMt2),\r\n value: inputs.open_new_tab,\r\n onChange: handleChange\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"option\", {\r\n value: false\r\n }, \"Current window\"), /*#__PURE__*/external_react_default.a.createElement(\"option\", {\r\n value: true\r\n }, \"New window\"))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorTextEnd\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.saveButton,\r\n onClick: handleLinkInsert\r\n }, \"Save\"))));\r\n}\r\n// CONCATENATED MODULE: ./node_modules/react-image-crop/dist/index.js\r\nvar _ = Object.defineProperty;\r\nvar $ = (a, h, e) => h in a ? _(a, h, { enumerable: !0, configurable: !0, writable: !0, value: e }) : a[h] = e;\r\nvar m = (a, h, e) => $(a, typeof h != \"symbol\" ? h + \"\" : h, e);\r\n\r\nconst E = {\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n unit: \"px\"\r\n}, b = (a, h, e) => Math.min(Math.max(a, h), e), H = (...a) => a.filter((h) => h && typeof h == \"string\").join(\" \"), X = (a, h) => a === h || a.width === h.width && a.height === h.height && a.x === h.x && a.y === h.y && a.unit === h.unit;\r\nfunction B(a, h, e, n) {\r\n const t = D(a, e, n);\r\n return a.width && (t.height = t.width / h), a.height && (t.width = t.height * h), t.y + t.height > n && (t.height = n - t.y, t.width = t.height * h), t.x + t.width > e && (t.width = e - t.x, t.height = t.width / h), a.unit === \"%\" ? v(t, e, n) : t;\r\n}\r\nfunction L(a, h, e) {\r\n const n = D(a, h, e);\r\n return n.x = (h - n.width) / 2, n.y = (e - n.height) / 2, a.unit === \"%\" ? v(n, h, e) : n;\r\n}\r\nfunction v(a, h, e) {\r\n return a.unit === \"%\" ? { ...E, ...a, unit: \"%\" } : {\r\n unit: \"%\",\r\n x: a.x ? a.x / h * 100 : 0,\r\n y: a.y ? a.y / e * 100 : 0,\r\n width: a.width ? a.width / h * 100 : 0,\r\n height: a.height ? a.height / e * 100 : 0\r\n };\r\n}\r\nfunction D(a, h, e) {\r\n return a.unit ? a.unit === \"px\" ? { ...E, ...a, unit: \"px\" } : {\r\n unit: \"px\",\r\n x: a.x ? a.x * h / 100 : 0,\r\n y: a.y ? a.y * e / 100 : 0,\r\n width: a.width ? a.width * h / 100 : 0,\r\n height: a.height ? a.height * e / 100 : 0\r\n } : { ...E, ...a, unit: \"px\" };\r\n}\r\nfunction k(a, h, e, n, t, d = 0, r = 0, o = n, w = t) {\r\n const i = { ...a };\r\n let s = Math.min(d, n), c = Math.min(r, t), g = Math.min(o, n), p = Math.min(w, t);\r\n h && (h > 1 ? (s = r ? r * h : s, c = s / h, g = o * h) : (c = d ? d / h : c, s = c * h, p = w / h)), i.y < 0 && (i.height = Math.max(i.height + i.y, c), i.y = 0), i.x < 0 && (i.width = Math.max(i.width + i.x, s), i.x = 0);\r\n const l = n - (i.x + i.width);\r\n l < 0 && (i.x = Math.min(i.x, n - s), i.width += l);\r\n const C = t - (i.y + i.height);\r\n if (C < 0 && (i.y = Math.min(i.y, t - c), i.height += C), i.width < s && ((e === \"sw\" || e == \"nw\") && (i.x -= s - i.width), i.width = s), i.height < c && ((e === \"nw\" || e == \"ne\") && (i.y -= c - i.height), i.height = c), i.width > g && ((e === \"sw\" || e == \"nw\") && (i.x -= g - i.width), i.width = g), i.height > p && ((e === \"nw\" || e == \"ne\") && (i.y -= p - i.height), i.height = p), h) {\r\n const y = i.width / i.height;\r\n if (y < h) {\r\n const f = Math.max(i.width / h, c);\r\n (e === \"nw\" || e == \"ne\") && (i.y -= f - i.height), i.height = f;\r\n } else if (y > h) {\r\n const f = Math.max(i.height * h, s);\r\n (e === \"sw\" || e == \"nw\") && (i.x -= f - i.width), i.width = f;\r\n }\r\n }\r\n return i;\r\n}\r\nfunction I(a, h, e, n) {\r\n const t = { ...a };\r\n return h === \"ArrowLeft\" ? n === \"nw\" ? (t.x -= e, t.y -= e, t.width += e, t.height += e) : n === \"w\" ? (t.x -= e, t.width += e) : n === \"sw\" ? (t.x -= e, t.width += e, t.height += e) : n === \"ne\" ? (t.y += e, t.width -= e, t.height -= e) : n === \"e\" ? t.width -= e : n === \"se\" && (t.width -= e, t.height -= e) : h === \"ArrowRight\" && (n === \"nw\" ? (t.x += e, t.y += e, t.width -= e, t.height -= e) : n === \"w\" ? (t.x += e, t.width -= e) : n === \"sw\" ? (t.x += e, t.width -= e, t.height -= e) : n === \"ne\" ? (t.y -= e, t.width += e, t.height += e) : n === \"e\" ? t.width += e : n === \"se\" && (t.width += e, t.height += e)), h === \"ArrowUp\" ? n === \"nw\" ? (t.x -= e, t.y -= e, t.width += e, t.height += e) : n === \"n\" ? (t.y -= e, t.height += e) : n === \"ne\" ? (t.y -= e, t.width += e, t.height += e) : n === \"sw\" ? (t.x += e, t.width -= e, t.height -= e) : n === \"s\" ? t.height -= e : n === \"se\" && (t.width -= e, t.height -= e) : h === \"ArrowDown\" && (n === \"nw\" ? (t.x += e, t.y += e, t.width -= e, t.height -= e) : n === \"n\" ? (t.y += e, t.height -= e) : n === \"ne\" ? (t.y += e, t.width -= e, t.height -= e) : n === \"sw\" ? (t.x -= e, t.width += e, t.height += e) : n === \"s\" ? t.height += e : n === \"se\" && (t.width += e, t.height += e)), t;\r\n}\r\nconst M = { capture: !0, passive: !1 };\r\nlet N = 0;\r\nconst dist_x = class x extends external_react_[\"PureComponent\"] {\r\n constructor() {\r\n super(...arguments);\r\n m(this, \"docMoveBound\", !1);\r\n m(this, \"mouseDownOnCrop\", !1);\r\n m(this, \"dragStarted\", !1);\r\n m(this, \"evData\", {\r\n startClientX: 0,\r\n startClientY: 0,\r\n startCropX: 0,\r\n startCropY: 0,\r\n clientX: 0,\r\n clientY: 0,\r\n isResize: !0\r\n });\r\n m(this, \"componentRef\", Object(external_react_[\"createRef\"])());\r\n m(this, \"mediaRef\", Object(external_react_[\"createRef\"])());\r\n m(this, \"resizeObserver\");\r\n m(this, \"initChangeCalled\", !1);\r\n m(this, \"instanceId\", `rc-${N++}`);\r\n m(this, \"state\", {\r\n cropIsActive: !1,\r\n newCropIsBeingDrawn: !1\r\n });\r\n m(this, \"onCropPointerDown\", (e) => {\r\n const { crop: n, disabled: t } = this.props, d = this.getBox();\r\n if (!n)\r\n return;\r\n const r = D(n, d.width, d.height);\r\n if (t)\r\n return;\r\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\r\n const o = e.target.dataset.ord, w = !!o;\r\n let i = e.clientX, s = e.clientY, c = r.x, g = r.y;\r\n if (o) {\r\n const p = e.clientX - d.x, l = e.clientY - d.y;\r\n let C = 0, y = 0;\r\n o === \"ne\" || o == \"e\" ? (C = p - (r.x + r.width), y = l - r.y, c = r.x, g = r.y + r.height) : o === \"se\" || o === \"s\" ? (C = p - (r.x + r.width), y = l - (r.y + r.height), c = r.x, g = r.y) : o === \"sw\" || o == \"w\" ? (C = p - r.x, y = l - (r.y + r.height), c = r.x + r.width, g = r.y) : (o === \"nw\" || o == \"n\") && (C = p - r.x, y = l - r.y, c = r.x + r.width, g = r.y + r.height), i = c + d.x + C, s = g + d.y + y;\r\n }\r\n this.evData = {\r\n startClientX: i,\r\n startClientY: s,\r\n startCropX: c,\r\n startCropY: g,\r\n clientX: e.clientX,\r\n clientY: e.clientY,\r\n isResize: w,\r\n ord: o\r\n }, this.mouseDownOnCrop = !0, this.setState({ cropIsActive: !0 });\r\n });\r\n m(this, \"onComponentPointerDown\", (e) => {\r\n const { crop: n, disabled: t, locked: d, keepSelection: r, onChange: o } = this.props, w = this.getBox();\r\n if (t || d || r && n)\r\n return;\r\n e.cancelable && e.preventDefault(), this.bindDocMove(), this.componentRef.current.focus({ preventScroll: !0 });\r\n const i = e.clientX - w.x, s = e.clientY - w.y, c = {\r\n unit: \"px\",\r\n x: i,\r\n y: s,\r\n width: 0,\r\n height: 0\r\n };\r\n this.evData = {\r\n startClientX: e.clientX,\r\n startClientY: e.clientY,\r\n startCropX: i,\r\n startCropY: s,\r\n clientX: e.clientX,\r\n clientY: e.clientY,\r\n isResize: !0\r\n }, this.mouseDownOnCrop = !0, o(D(c, w.width, w.height), v(c, w.width, w.height)), this.setState({ cropIsActive: !0, newCropIsBeingDrawn: !0 });\r\n });\r\n m(this, \"onDocPointerMove\", (e) => {\r\n const { crop: n, disabled: t, onChange: d, onDragStart: r } = this.props, o = this.getBox();\r\n if (t || !n || !this.mouseDownOnCrop)\r\n return;\r\n e.cancelable && e.preventDefault(), this.dragStarted || (this.dragStarted = !0, r && r(e));\r\n const { evData: w } = this;\r\n w.clientX = e.clientX, w.clientY = e.clientY;\r\n let i;\r\n w.isResize ? i = this.resizeCrop() : i = this.dragCrop(), X(n, i) || d(\r\n D(i, o.width, o.height),\r\n v(i, o.width, o.height)\r\n );\r\n });\r\n m(this, \"onComponentKeyDown\", (e) => {\r\n const { crop: n, disabled: t, onChange: d, onComplete: r } = this.props;\r\n if (t)\r\n return;\r\n const o = e.key;\r\n let w = !1;\r\n if (!n)\r\n return;\r\n const i = this.getBox(), s = this.makePixelCrop(i), g = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? x.nudgeStepLarge : e.shiftKey ? x.nudgeStepMedium : x.nudgeStep;\r\n if (o === \"ArrowLeft\" ? (s.x -= g, w = !0) : o === \"ArrowRight\" ? (s.x += g, w = !0) : o === \"ArrowUp\" ? (s.y -= g, w = !0) : o === \"ArrowDown\" && (s.y += g, w = !0), w) {\r\n e.cancelable && e.preventDefault(), s.x = b(s.x, 0, i.width - s.width), s.y = b(s.y, 0, i.height - s.height);\r\n const p = D(s, i.width, i.height), l = v(s, i.width, i.height);\r\n d(p, l), r && r(p, l);\r\n }\r\n });\r\n m(this, \"onHandlerKeyDown\", (e, n) => {\r\n const {\r\n aspect: t = 0,\r\n crop: d,\r\n disabled: r,\r\n minWidth: o = 0,\r\n minHeight: w = 0,\r\n maxWidth: i,\r\n maxHeight: s,\r\n onChange: c,\r\n onComplete: g\r\n } = this.props, p = this.getBox();\r\n if (r || !d)\r\n return;\r\n if (e.key === \"ArrowUp\" || e.key === \"ArrowDown\" || e.key === \"ArrowLeft\" || e.key === \"ArrowRight\")\r\n e.stopPropagation(), e.preventDefault();\r\n else\r\n return;\r\n const C = (navigator.platform.match(\"Mac\") ? e.metaKey : e.ctrlKey) ? x.nudgeStepLarge : e.shiftKey ? x.nudgeStepMedium : x.nudgeStep, y = D(d, p.width, p.height), f = I(y, e.key, C, n), R = k(\r\n f,\r\n t,\r\n n,\r\n p.width,\r\n p.height,\r\n o,\r\n w,\r\n i,\r\n s\r\n );\r\n if (!X(d, R)) {\r\n const Y = v(R, p.width, p.height);\r\n c(R, Y), g && g(R, Y);\r\n }\r\n });\r\n m(this, \"onDocPointerDone\", (e) => {\r\n const { crop: n, disabled: t, onComplete: d, onDragEnd: r } = this.props, o = this.getBox();\r\n this.unbindDocMove(), !(t || !n) && this.mouseDownOnCrop && (this.mouseDownOnCrop = !1, this.dragStarted = !1, r && r(e), d && d(D(n, o.width, o.height), v(n, o.width, o.height)), this.setState({ cropIsActive: !1, newCropIsBeingDrawn: !1 }));\r\n });\r\n m(this, \"onDragFocus\", () => {\r\n var e;\r\n (e = this.componentRef.current) == null || e.scrollTo(0, 0);\r\n });\r\n }\r\n get document() {\r\n return document;\r\n }\r\n // We unfortunately get the bounding box every time as x+y changes\r\n // due to scrolling.\r\n getBox() {\r\n const e = this.mediaRef.current;\r\n if (!e)\r\n return { x: 0, y: 0, width: 0, height: 0 };\r\n const { x: n, y: t, width: d, height: r } = e.getBoundingClientRect();\r\n return { x: n, y: t, width: d, height: r };\r\n }\r\n componentDidUpdate(e) {\r\n const { crop: n, onComplete: t } = this.props;\r\n if (t && !e.crop && n) {\r\n const { width: d, height: r } = this.getBox();\r\n d && r && t(D(n, d, r), v(n, d, r));\r\n }\r\n }\r\n componentWillUnmount() {\r\n this.resizeObserver && this.resizeObserver.disconnect(), this.unbindDocMove();\r\n }\r\n bindDocMove() {\r\n this.docMoveBound || (this.document.addEventListener(\"pointermove\", this.onDocPointerMove, M), this.document.addEventListener(\"pointerup\", this.onDocPointerDone, M), this.document.addEventListener(\"pointercancel\", this.onDocPointerDone, M), this.docMoveBound = !0);\r\n }\r\n unbindDocMove() {\r\n this.docMoveBound && (this.document.removeEventListener(\"pointermove\", this.onDocPointerMove, M), this.document.removeEventListener(\"pointerup\", this.onDocPointerDone, M), this.document.removeEventListener(\"pointercancel\", this.onDocPointerDone, M), this.docMoveBound = !1);\r\n }\r\n getCropStyle() {\r\n const { crop: e } = this.props;\r\n if (e)\r\n return {\r\n top: `${e.y}${e.unit}`,\r\n left: `${e.x}${e.unit}`,\r\n width: `${e.width}${e.unit}`,\r\n height: `${e.height}${e.unit}`\r\n };\r\n }\r\n dragCrop() {\r\n const { evData: e } = this, n = this.getBox(), t = this.makePixelCrop(n), d = e.clientX - e.startClientX, r = e.clientY - e.startClientY;\r\n return t.x = b(e.startCropX + d, 0, n.width - t.width), t.y = b(e.startCropY + r, 0, n.height - t.height), t;\r\n }\r\n getPointRegion(e, n, t, d) {\r\n const { evData: r } = this, o = r.clientX - e.x, w = r.clientY - e.y;\r\n let i;\r\n d && n ? i = n === \"nw\" || n === \"n\" || n === \"ne\" : i = w < r.startCropY;\r\n let s;\r\n return t && n ? s = n === \"nw\" || n === \"w\" || n === \"sw\" : s = o < r.startCropX, s ? i ? \"nw\" : \"sw\" : i ? \"ne\" : \"se\";\r\n }\r\n resolveMinDimensions(e, n, t = 0, d = 0) {\r\n const r = Math.min(t, e.width), o = Math.min(d, e.height);\r\n return !n || !r && !o ? [r, o] : n > 1 ? r ? [r, r / n] : [o * n, o] : o ? [o * n, o] : [r, r / n];\r\n }\r\n resizeCrop() {\r\n const { evData: e } = this, { aspect: n = 0, maxWidth: t, maxHeight: d } = this.props, r = this.getBox(), [o, w] = this.resolveMinDimensions(r, n, this.props.minWidth, this.props.minHeight);\r\n let i = this.makePixelCrop(r);\r\n const s = this.getPointRegion(r, e.ord, o, w), c = e.ord || s;\r\n let g = e.clientX - e.startClientX, p = e.clientY - e.startClientY;\r\n (o && c === \"nw\" || c === \"w\" || c === \"sw\") && (g = Math.min(g, -o)), (w && c === \"nw\" || c === \"n\" || c === \"ne\") && (p = Math.min(p, -w));\r\n const l = {\r\n unit: \"px\",\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0\r\n };\r\n s === \"ne\" ? (l.x = e.startCropX, l.width = g, n ? (l.height = l.width / n, l.y = e.startCropY - l.height) : (l.height = Math.abs(p), l.y = e.startCropY - l.height)) : s === \"se\" ? (l.x = e.startCropX, l.y = e.startCropY, l.width = g, n ? l.height = l.width / n : l.height = p) : s === \"sw\" ? (l.x = e.startCropX + g, l.y = e.startCropY, l.width = Math.abs(g), n ? l.height = l.width / n : l.height = p) : s === \"nw\" && (l.x = e.startCropX + g, l.width = Math.abs(g), n ? (l.height = l.width / n, l.y = e.startCropY - l.height) : (l.height = Math.abs(p), l.y = e.startCropY + p));\r\n const C = k(\r\n l,\r\n n,\r\n s,\r\n r.width,\r\n r.height,\r\n o,\r\n w,\r\n t,\r\n d\r\n );\r\n return n || x.xyOrds.indexOf(c) > -1 ? i = C : x.xOrds.indexOf(c) > -1 ? (i.x = C.x, i.width = C.width) : x.yOrds.indexOf(c) > -1 && (i.y = C.y, i.height = C.height), i.x = b(i.x, 0, r.width - i.width), i.y = b(i.y, 0, r.height - i.height), i;\r\n }\r\n renderCropSelection() {\r\n const {\r\n ariaLabels: e = x.defaultProps.ariaLabels,\r\n disabled: n,\r\n locked: t,\r\n renderSelectionAddon: d,\r\n ruleOfThirds: r,\r\n crop: o\r\n } = this.props, w = this.getCropStyle();\r\n if (o)\r\n return /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n style: w,\r\n className: \"ReactCrop__crop-selection\",\r\n onPointerDown: this.onCropPointerDown,\r\n \"aria-label\": e.cropArea,\r\n tabIndex: 0,\r\n onKeyDown: this.onComponentKeyDown,\r\n role: \"group\"\r\n },\r\n !n && !t && /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__drag-elements\", onFocus: this.onDragFocus }, /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-n\", \"data-ord\": \"n\" }), /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-e\", \"data-ord\": \"e\" }), /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-s\", \"data-ord\": \"s\" }), /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__drag-bar ord-w\", \"data-ord\": \"w\" }), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-nw\",\r\n \"data-ord\": \"nw\",\r\n tabIndex: 0,\r\n \"aria-label\": e.nwDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"nw\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-n\",\r\n \"data-ord\": \"n\",\r\n tabIndex: 0,\r\n \"aria-label\": e.nDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"n\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-ne\",\r\n \"data-ord\": \"ne\",\r\n tabIndex: 0,\r\n \"aria-label\": e.neDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"ne\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-e\",\r\n \"data-ord\": \"e\",\r\n tabIndex: 0,\r\n \"aria-label\": e.eDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"e\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-se\",\r\n \"data-ord\": \"se\",\r\n tabIndex: 0,\r\n \"aria-label\": e.seDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"se\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-s\",\r\n \"data-ord\": \"s\",\r\n tabIndex: 0,\r\n \"aria-label\": e.sDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"s\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-sw\",\r\n \"data-ord\": \"sw\",\r\n tabIndex: 0,\r\n \"aria-label\": e.swDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"sw\"),\r\n role: \"button\"\r\n }\r\n ), /* @__PURE__ */ external_react_default.a.createElement(\r\n \"div\",\r\n {\r\n className: \"ReactCrop__drag-handle ord-w\",\r\n \"data-ord\": \"w\",\r\n tabIndex: 0,\r\n \"aria-label\": e.wDragHandle,\r\n onKeyDown: (i) => this.onHandlerKeyDown(i, \"w\"),\r\n role: \"button\"\r\n }\r\n )),\r\n d && /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__selection-addon\", onPointerDown: (i) => i.stopPropagation() }, d(this.state)),\r\n r && /* @__PURE__ */ external_react_default.a.createElement(external_react_default.a.Fragment, null, /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-hz\" }), /* @__PURE__ */ external_react_default.a.createElement(\"div\", { className: \"ReactCrop__rule-of-thirds-vt\" }))\r\n );\r\n }\r\n makePixelCrop(e) {\r\n const n = { ...E, ...this.props.crop || {} };\r\n return D(n, e.width, e.height);\r\n }\r\n render() {\r\n const { aspect: e, children: n, circularCrop: t, className: d, crop: r, disabled: o, locked: w, style: i, ruleOfThirds: s } = this.props, { cropIsActive: c, newCropIsBeingDrawn: g } = this.state, p = r ? this.renderCropSelection() : null, l = H(\r\n \"ReactCrop\",\r\n d,\r\n c && \"ReactCrop--active\",\r\n o && \"ReactCrop--disabled\",\r\n w && \"ReactCrop--locked\",\r\n g && \"ReactCrop--new-crop\",\r\n r && e && \"ReactCrop--fixed-aspect\",\r\n r && t && \"ReactCrop--circular-crop\",\r\n r && s && \"ReactCrop--rule-of-thirds\",\r\n !this.dragStarted && r && !r.width && !r.height && \"ReactCrop--invisible-crop\",\r\n t && \"ReactCrop--no-animate\"\r\n );\r\n return /* @__PURE__ */ external_react_default.a.createElement(\"div\", { ref: this.componentRef, className: l, style: i }, /* @__PURE__ */ external_react_default.a.createElement(\"div\", { ref: this.mediaRef, className: \"ReactCrop__child-wrapper\", onPointerDown: this.onComponentPointerDown }, n), r ? /* @__PURE__ */ external_react_default.a.createElement(\"svg\", { className: \"ReactCrop__crop-mask\", width: \"100%\", height: \"100%\" }, /* @__PURE__ */ external_react_default.a.createElement(\"defs\", null, /* @__PURE__ */ external_react_default.a.createElement(\"mask\", { id: `hole-${this.instanceId}` }, /* @__PURE__ */ external_react_default.a.createElement(\"rect\", { width: \"100%\", height: \"100%\", fill: \"white\" }), t ? /* @__PURE__ */ external_react_default.a.createElement(\r\n \"ellipse\",\r\n {\r\n cx: `${r.x + r.width / 2}${r.unit}`,\r\n cy: `${r.y + r.height / 2}${r.unit}`,\r\n rx: `${r.width / 2}${r.unit}`,\r\n ry: `${r.height / 2}${r.unit}`,\r\n fill: \"black\"\r\n }\r\n ) : /* @__PURE__ */ external_react_default.a.createElement(\r\n \"rect\",\r\n {\r\n x: `${r.x}${r.unit}`,\r\n y: `${r.y}${r.unit}`,\r\n width: `${r.width}${r.unit}`,\r\n height: `${r.height}${r.unit}`,\r\n fill: \"black\"\r\n }\r\n ))), /* @__PURE__ */ external_react_default.a.createElement(\"rect\", { fill: \"black\", fillOpacity: 0.5, width: \"100%\", height: \"100%\", mask: `url(#hole-${this.instanceId})` })) : void 0, p);\r\n }\r\n};\r\nm(dist_x, \"xOrds\", [\"e\", \"w\"]), m(dist_x, \"yOrds\", [\"n\", \"s\"]), m(dist_x, \"xyOrds\", [\"nw\", \"ne\", \"se\", \"sw\"]), m(dist_x, \"nudgeStep\", 1), m(dist_x, \"nudgeStepMedium\", 10), m(dist_x, \"nudgeStepLarge\", 100), m(dist_x, \"defaultProps\", {\r\n ariaLabels: {\r\n cropArea: \"Use the arrow keys to move the crop selection area\",\r\n nwDragHandle: \"Use the arrow keys to move the north west drag handle to change the crop selection area\",\r\n nDragHandle: \"Use the up and down arrow keys to move the north drag handle to change the crop selection area\",\r\n neDragHandle: \"Use the arrow keys to move the north east drag handle to change the crop selection area\",\r\n eDragHandle: \"Use the up and down arrow keys to move the east drag handle to change the crop selection area\",\r\n seDragHandle: \"Use the arrow keys to move the south east drag handle to change the crop selection area\",\r\n sDragHandle: \"Use the up and down arrow keys to move the south drag handle to change the crop selection area\",\r\n swDragHandle: \"Use the arrow keys to move the south west drag handle to change the crop selection area\",\r\n wDragHandle: \"Use the up and down arrow keys to move the west drag handle to change the crop selection area\"\r\n }\r\n});\r\nlet S = dist_x;\r\n\r\n\r\n// CONCATENATED MODULE: ./src/components/ImageCropper.jsx\r\nfunction ImageCropper_slicedToArray(r, e) { return ImageCropper_arrayWithHoles(r) || ImageCropper_iterableToArrayLimit(r, e) || ImageCropper_unsupportedIterableToArray(r, e) || ImageCropper_nonIterableRest(); }\r\nfunction ImageCropper_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction ImageCropper_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return ImageCropper_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ImageCropper_arrayLikeToArray(r, a) : void 0; } }\r\nfunction ImageCropper_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction ImageCropper_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction ImageCropper_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\nvar ImageCropper_ImageCropper = function ImageCropper(_ref) {\r\n var imageSrc = _ref.imageSrc,\r\n onCropComplete = _ref.onCropComplete,\r\n _ref$aspectRatio = _ref.aspectRatio,\r\n aspectRatio = _ref$aspectRatio === void 0 ? 16 / 9 : _ref$aspectRatio;\r\n var _useState = Object(external_react_[\"useState\"])({\r\n aspect: aspectRatio\r\n }),\r\n _useState2 = ImageCropper_slicedToArray(_useState, 2),\r\n crop = _useState2[0],\r\n setCrop = _useState2[1];\r\n var imgRef = Object(external_react_[\"useRef\"])(null);\r\n var onImageLoaded = Object(external_react_[\"useCallback\"])(function (img) {\r\n imgRef.current = img;\r\n return false;\r\n }, []);\r\n var handleCropComplete = Object(external_react_[\"useCallback\"])(function (crop) {\r\n onCropComplete(crop, imgRef.current);\r\n }, [onCropComplete]);\r\n return /*#__PURE__*/external_react_default.a.createElement(S, {\r\n crop: crop,\r\n onChange: setCrop,\r\n onComplete: handleCropComplete\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"img\", {\r\n ref: imgRef,\r\n src: imageSrc,\r\n alt: \"Crop preview\",\r\n onLoad: function onLoad(e) {\r\n return onImageLoaded(e.currentTarget);\r\n }\r\n }));\r\n};\r\n// CONCATENATED MODULE: ./src/components/ImageModal.jsx\r\nfunction ImageModal_typeof(o) { \"@babel/helpers - typeof\"; return ImageModal_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, ImageModal_typeof(o); }\r\nfunction ImageModal_regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ ImageModal_regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == ImageModal_typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(ImageModal_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\r\nfunction ImageModal_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\r\nfunction ImageModal_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { ImageModal_asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { ImageModal_asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\r\nfunction ImageModal_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\r\nfunction ImageModal_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ImageModal_ownKeys(Object(t), !0).forEach(function (r) { ImageModal_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ImageModal_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\r\nfunction ImageModal_defineProperty(e, r, t) { return (r = ImageModal_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\r\nfunction ImageModal_toPropertyKey(t) { var i = ImageModal_toPrimitive(t, \"string\"); return \"symbol\" == ImageModal_typeof(i) ? i : i + \"\"; }\r\nfunction ImageModal_toPrimitive(t, r) { if (\"object\" != ImageModal_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != ImageModal_typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\r\nfunction ImageModal_slicedToArray(r, e) { return ImageModal_arrayWithHoles(r) || ImageModal_iterableToArrayLimit(r, e) || ImageModal_unsupportedIterableToArray(r, e) || ImageModal_nonIterableRest(); }\r\nfunction ImageModal_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction ImageModal_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return ImageModal_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? ImageModal_arrayLikeToArray(r, a) : void 0; } }\r\nfunction ImageModal_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction ImageModal_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction ImageModal_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction ImageModal(props) {\r\n var onImageInsert = props.onImageInsert,\r\n item = props.item,\r\n setIsLoading = props.setIsLoading,\r\n image_handler = props.image_handler,\r\n selectedData = props.selectedData;\r\n var _useState = Object(external_react_[\"useState\"])(\"\"),\r\n _useState2 = ImageModal_slicedToArray(_useState, 2),\r\n errorMessage = _useState2[0],\r\n setErrorMessage = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(0),\r\n _useState4 = ImageModal_slicedToArray(_useState3, 2),\r\n heightRatio = _useState4[0],\r\n setHeightRatio = _useState4[1];\r\n var _useState5 = Object(external_react_[\"useState\"])(true),\r\n _useState6 = ImageModal_slicedToArray(_useState5, 2),\r\n isLocked = _useState6[0],\r\n setIsLocked = _useState6[1];\r\n var _useState7 = Object(external_react_[\"useState\"])(false),\r\n _useState8 = ImageModal_slicedToArray(_useState7, 2),\r\n allowSHW = _useState8[0],\r\n setAllowSHW = _useState8[1];\r\n var _useState9 = Object(external_react_[\"useState\"])(\"default\"),\r\n _useState10 = ImageModal_slicedToArray(_useState9, 2),\r\n showComponent = _useState10[0],\r\n setShowComponent = _useState10[1];\r\n var _useState11 = Object(external_react_[\"useState\"])(null),\r\n _useState12 = ImageModal_slicedToArray(_useState11, 2),\r\n completedCrop = _useState12[0],\r\n setCompletedCrop = _useState12[1];\r\n var _useState13 = Object(external_react_[\"useState\"])(null),\r\n _useState14 = ImageModal_slicedToArray(_useState13, 2),\r\n imageRef = _useState14[0],\r\n setImageRef = _useState14[1];\r\n var _useState15 = Object(external_react_[\"useState\"])({\r\n link: \"\",\r\n height: \"\",\r\n width: \"\",\r\n image: null,\r\n type: \"general\"\r\n }),\r\n _useState16 = ImageModal_slicedToArray(_useState15, 2),\r\n inputs = _useState16[0],\r\n setInputs = _useState16[1];\r\n var handleChangeFile = function handleChangeFile(event) {\r\n var _event$target = event.target,\r\n name = _event$target.name,\r\n files = _event$target.files;\r\n setInputs(function (oldInputs) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, oldInputs), {}, ImageModal_defineProperty(ImageModal_defineProperty(ImageModal_defineProperty({}, name, files[0]), \"height\", \"\"), \"width\", \"\"));\r\n });\r\n };\r\n var MAX_RETRIES = 3;\r\n var get_image_dimentions = function get_image_dimentions(image_path) {\r\n var retries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\r\n var img_width = 0;\r\n var img_height = 0;\r\n var img = new Image();\r\n img.onload = function () {\r\n img_width = img.width;\r\n img_height = img.height;\r\n var ratio = img_width / img_height;\r\n setHeightRatio(ratio);\r\n setAllowSHW(true);\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n width: img_width,\r\n height: img_height\r\n });\r\n });\r\n setIsLoading(false);\r\n };\r\n img.onerror = function () {\r\n setIsLoading(false);\r\n if (retries < MAX_RETRIES) {\r\n get_image_dimentions(image_path, retries + 1);\r\n }\r\n };\r\n img.src = image_path;\r\n };\r\n var handleLinkInsert = /*#__PURE__*/function () {\r\n var _ref = ImageModal_asyncToGenerator( /*#__PURE__*/ImageModal_regeneratorRuntime().mark(function _callee(e) {\r\n var error_message, _error_message, image_path;\r\n return ImageModal_regeneratorRuntime().wrap(function _callee$(_context) {\r\n while (1) switch (_context.prev = _context.next) {\r\n case 0:\r\n e.preventDefault();\r\n if (!(inputs.type === \"general\")) {\r\n _context.next = 9;\r\n break;\r\n }\r\n if (inputs.link) {\r\n _context.next = 6;\r\n break;\r\n }\r\n error_message = \"Image source is required\";\r\n setErrorMessage(error_message);\r\n return _context.abrupt(\"return\");\r\n case 6:\r\n onImageInsert(inputs);\r\n _context.next = 29;\r\n break;\r\n case 9:\r\n if (inputs.image) {\r\n _context.next = 13;\r\n break;\r\n }\r\n _error_message = \"Please upload image\";\r\n setErrorMessage(_error_message);\r\n return _context.abrupt(\"return\");\r\n case 13:\r\n if (!image_handler) {\r\n _context.next = 22;\r\n break;\r\n }\r\n setIsLoading(true);\r\n _context.next = 17;\r\n return image_handler(ImageModal_objectSpread({}, inputs), item);\r\n case 17:\r\n image_path = _context.sent;\r\n if (image_path) {\r\n get_image_dimentions(image_path);\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n type: \"general\",\r\n link: image_path\r\n });\r\n });\r\n } else {\r\n setIsLoading(false);\r\n }\r\n return _context.abrupt(\"return\");\r\n case 22:\r\n inputs.link = URL.createObjectURL(inputs.image);\r\n inputs.width = \"\";\r\n inputs.height = \"\";\r\n case 25:\r\n if (inputs.link) {\r\n _context.next = 28;\r\n break;\r\n }\r\n setIsLoading(false);\r\n return _context.abrupt(\"return\");\r\n case 28:\r\n onImageInsert(inputs);\r\n case 29:\r\n case \"end\":\r\n return _context.stop();\r\n }\r\n }, _callee);\r\n }));\r\n return function handleLinkInsert(_x) {\r\n return _ref.apply(this, arguments);\r\n };\r\n }();\r\n var handleChangeHW = function handleChangeHW(event) {\r\n var _event$target2 = event.target,\r\n name = _event$target2.name,\r\n value = _event$target2.value;\r\n var height = inputs.height;\r\n var width = inputs.width;\r\n if (name === \"width\") {\r\n height = value / heightRatio;\r\n width = value;\r\n } else {\r\n width = value * heightRatio;\r\n height = value;\r\n }\r\n height = Math.round(height);\r\n width = Math.round(width);\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n height: height,\r\n width: width\r\n });\r\n });\r\n };\r\n var handleChange = function handleChange(event) {\r\n var _event$target3 = event.target,\r\n name = _event$target3.name,\r\n value = _event$target3.value;\r\n if (isLocked && name !== \"link\" && allowSHW && inputs.link) {\r\n handleChangeHW(event);\r\n return;\r\n }\r\n if (name === \"link\" && value === \"\") {\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n height: 0,\r\n width: 0\r\n });\r\n });\r\n setAllowSHW(false);\r\n }\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, ImageModal_defineProperty({}, name, value));\r\n });\r\n };\r\n var handleChangeType = function handleChangeType(e, value) {\r\n e.preventDefault();\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n type: value,\r\n image: null\r\n });\r\n });\r\n setErrorMessage(\"\");\r\n };\r\n var handleCropComplete = Object(external_react_[\"useCallback\"])(function (crop, imgRef) {\r\n setCompletedCrop(crop);\r\n setImageRef(imgRef);\r\n }, []);\r\n var handleCancel = Object(external_react_[\"useCallback\"])(function () {\r\n setShowComponent(\"default\");\r\n setCompletedCrop(null);\r\n }, []);\r\n var applyCrop = Object(external_react_[\"useCallback\"])( /*#__PURE__*/ImageModal_asyncToGenerator( /*#__PURE__*/ImageModal_regeneratorRuntime().mark(function _callee2() {\r\n var croppedImageFile;\r\n return ImageModal_regeneratorRuntime().wrap(function _callee2$(_context2) {\r\n while (1) switch (_context2.prev = _context2.next) {\r\n case 0:\r\n if (!(!completedCrop || !imageRef)) {\r\n _context2.next = 3;\r\n break;\r\n }\r\n console.error(\"No crop data or image reference\");\r\n return _context2.abrupt(\"return\");\r\n case 3:\r\n _context2.next = 5;\r\n return getCroppedImage(imageRef, completedCrop, inputs.image);\r\n case 5:\r\n croppedImageFile = _context2.sent;\r\n if (croppedImageFile) {\r\n _context2.next = 9;\r\n break;\r\n }\r\n console.error(\"Failed to crop image\");\r\n return _context2.abrupt(\"return\");\r\n case 9:\r\n setInputs(function (old) {\r\n return ImageModal_objectSpread(ImageModal_objectSpread({}, old), {}, {\r\n image: croppedImageFile\r\n });\r\n });\r\n handleCancel();\r\n case 11:\r\n case \"end\":\r\n return _context2.stop();\r\n }\r\n }, _callee2);\r\n })), [completedCrop, imageRef, handleCancel, inputs.image]);\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (selectedData !== null && selectedData !== void 0 && selectedData.link) {\r\n var height = parseFloat(selectedData.height);\r\n var width = parseFloat(selectedData.width);\r\n var ratio = width / height;\r\n setHeightRatio(ratio);\r\n setAllowSHW(true);\r\n setInputs(ImageModal_objectSpread(ImageModal_objectSpread(ImageModal_objectSpread({}, inputs), selectedData), {}, {\r\n height: height,\r\n width: width\r\n }));\r\n }\r\n }, [selectedData, inputs]);\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (showComponent === \"default\") return;\r\n var reactCropElem = document.querySelector(\".ReactCrop\");\r\n console.log(reactCropElem, \"reactCropElemreactCropElem\");\r\n reactCropElem.style.maxHeight = \"350px\";\r\n }, [showComponent]);\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, showComponent === \"crop\" ? /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.image__cropper__box\r\n }, inputs.image && /*#__PURE__*/external_react_default.a.createElement(ImageCropper_ImageCropper, {\r\n imageSrc: URL.createObjectURL(inputs.image),\r\n onCropComplete: handleCropComplete\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.image__cropper_btn\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: applyCrop,\r\n disabled: !completedCrop,\r\n className: style_module_default.a.saveButton\r\n }, \"Apply Crop\"), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleCancel,\r\n className: style_module_default.a.cancel__btn\r\n }, \"Cancel\"))) : /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectType\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.type === \"general\" ? \"\".concat(style_module_default.a.selectedType) : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"general\");\r\n }\r\n }, \"General\"), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.type === \"upload\" ? \"\".concat(style_module_default.a.selectedType) : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"upload\");\r\n }\r\n }, \"Upload\")), /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, inputs.type === \"general\" ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"link\"\r\n }, \"Source\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"link\",\r\n type: \"text\",\r\n name: \"link\",\r\n autoFocus: true,\r\n className: style_module_default.a.formControlInput,\r\n value: inputs.link,\r\n onChange: handleChange\r\n }), errorMessage && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorDFlex, \" \").concat(style_module_default.a.justifyContentBetween)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorMt10, \" \").concat(style_module_default.a.reactEditorW45)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"height\"\r\n }, \"Height\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"height\",\r\n type: \"number\",\r\n name: \"height\",\r\n value: inputs.height,\r\n onChange: handleChange,\r\n className: style_module_default.a.formControlInput\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorMt10, \" \").concat(style_module_default.a.reactEditorW45)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"width\"\r\n }, \"Width\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"width\",\r\n type: \"number\",\r\n name: \"width\",\r\n value: inputs.width,\r\n onChange: handleChange,\r\n className: style_module_default.a.formControlInput\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.lockUnlockIcon,\r\n onClick: function onClick() {\r\n return setIsLocked(!isLocked);\r\n }\r\n }, isLocked ? /*#__PURE__*/external_react_default.a.createElement(LockIcon, null) : /*#__PURE__*/external_react_default.a.createElement(UnlockIcon, null)))) : /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"image\"\r\n }, \"Choose File\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n type: \"file\",\r\n id: \"image\",\r\n name: \"image\",\r\n className: style_module_default.a.formControlInput,\r\n accept: \"image/*\",\r\n onChange: handleChangeFile\r\n }), errorMessage && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.image__submit__container\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", null, inputs.type === \"upload\" && inputs.image && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.image__preview__box\r\n }, /*#__PURE__*/external_react_default.a.createElement(CropIcon, null), /*#__PURE__*/external_react_default.a.createElement(\"img\", {\r\n src: URL.createObjectURL(inputs.image),\r\n alt: \"\",\r\n srcset: \"\",\r\n title: \"Click to crop image\",\r\n onClick: function onClick() {\r\n return setShowComponent(\"crop\");\r\n }\r\n }))), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.saveButton,\r\n onClick: handleLinkInsert\r\n }, \"Save\")))));\r\n}\r\n// CONCATENATED MODULE: ./src/components/MediaModal.jsx\r\nfunction MediaModal_typeof(o) { \"@babel/helpers - typeof\"; return MediaModal_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, MediaModal_typeof(o); }\r\nfunction MediaModal_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\r\nfunction MediaModal_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? MediaModal_ownKeys(Object(t), !0).forEach(function (r) { MediaModal_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : MediaModal_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\r\nfunction MediaModal_defineProperty(e, r, t) { return (r = MediaModal_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\r\nfunction MediaModal_toPropertyKey(t) { var i = MediaModal_toPrimitive(t, \"string\"); return \"symbol\" == MediaModal_typeof(i) ? i : i + \"\"; }\r\nfunction MediaModal_toPrimitive(t, r) { if (\"object\" != MediaModal_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != MediaModal_typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\r\nfunction MediaModal_slicedToArray(r, e) { return MediaModal_arrayWithHoles(r) || MediaModal_iterableToArrayLimit(r, e) || MediaModal_unsupportedIterableToArray(r, e) || MediaModal_nonIterableRest(); }\r\nfunction MediaModal_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction MediaModal_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return MediaModal_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? MediaModal_arrayLikeToArray(r, a) : void 0; } }\r\nfunction MediaModal_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction MediaModal_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction MediaModal_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\nfunction MediaModal(_ref) {\r\n var onMediaInsert = _ref.onMediaInsert,\r\n _ref$targetElement = _ref.targetElement,\r\n targetElement = _ref$targetElement === void 0 ? null : _ref$targetElement,\r\n _ref$targetElementTyp = _ref.targetElementType,\r\n targetElementType = _ref$targetElementTyp === void 0 ? \"\" : _ref$targetElementTyp;\r\n var _useState = Object(external_react_[\"useState\"])(\"\"),\r\n _useState2 = MediaModal_slicedToArray(_useState, 2),\r\n errorMessage = _useState2[0],\r\n setErrorMessage = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])({\r\n link: \"\",\r\n height: \"\",\r\n embed_code: \"\",\r\n width: \"\",\r\n type: \"general\"\r\n }),\r\n _useState4 = MediaModal_slicedToArray(_useState3, 2),\r\n inputs = _useState4[0],\r\n setInputs = _useState4[1];\r\n var handleChangeFile = function handleChangeFile(event) {\r\n var _event$target = event.target,\r\n name = _event$target.name,\r\n files = _event$target.files;\r\n setInputs(function (old) {\r\n return MediaModal_objectSpread(MediaModal_objectSpread({}, old), {}, MediaModal_defineProperty({}, name, files[0]));\r\n });\r\n };\r\n var handleSubmit = function handleSubmit(e) {\r\n e.preventDefault();\r\n if (inputs.type === \"general\" && !inputs.link) {\r\n var error_message = \"Video source is required\";\r\n setErrorMessage(error_message);\r\n return;\r\n } else if (inputs.type === \"upload\" && !inputs.link) {\r\n var _error_message = \"Please upload media file\";\r\n setErrorMessage(_error_message);\r\n return;\r\n } else if (inputs.type === \"embed\" && !inputs.embed_code) {\r\n var _error_message2 = \"Please add video embed code\";\r\n setErrorMessage(_error_message2);\r\n return;\r\n }\r\n onMediaInsert(inputs, targetElement);\r\n };\r\n var handleChange = function handleChange(event) {\r\n var _event$target2 = event.target,\r\n name = _event$target2.name,\r\n value = _event$target2.value;\r\n setInputs(function (old) {\r\n return MediaModal_objectSpread(MediaModal_objectSpread({}, old), {}, MediaModal_defineProperty({}, name, value));\r\n });\r\n };\r\n var handleChangeType = function handleChangeType(e, value) {\r\n e.preventDefault();\r\n setInputs(function (old) {\r\n return MediaModal_objectSpread(MediaModal_objectSpread({}, old), {}, {\r\n type: value\r\n });\r\n });\r\n setErrorMessage(\"\");\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (targetElement) {\r\n var newInputs = {\r\n link: targetElement.getAttribute(\"src\") || \"\",\r\n height: targetElement.getAttribute(\"height\") || \"\",\r\n width: targetElement.getAttribute(\"width\") || \"\",\r\n embed_code: targetElementType == \"general\" ? \"\" : targetElement.outerHTML || \"\",\r\n type: targetElementType || \"general\"\r\n };\r\n setInputs(newInputs);\r\n }\r\n }, [targetElement, targetElementType]);\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.mediaModal\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectType\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.type === \"general\" ? \"\".concat(style_module_default.a.selectedType) : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"general\");\r\n }\r\n }, \"General\"), /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: \"\".concat(inputs.type === \"embed\" ? \"\".concat(style_module_default.a.selectedType) : \"\"),\r\n onClick: function onClick(e) {\r\n return handleChangeType(e, \"embed\");\r\n }\r\n }, \"Embed\")), /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, inputs.type === \"general\" ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"link\"\r\n }, \"Source\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"link\",\r\n type: \"text\",\r\n name: \"link\",\r\n autoFocus: true,\r\n className: style_module_default.a.formControlInput,\r\n value: inputs.link,\r\n onChange: handleChange\r\n }), errorMessage && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorDFlex, \" \").concat(style_module_default.a.justifyContentBetween)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorMt10, \" \").concat(style_module_default.a.reactEditorW47)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"height\"\r\n }, \"Height\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"height\",\r\n type: \"number\",\r\n name: \"height\",\r\n value: inputs.height,\r\n onChange: handleChange,\r\n className: style_module_default.a.formControlInput\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.reactEditorMt10, \" \").concat(style_module_default.a.reactEditorW47)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"width\"\r\n }, \"Width\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n id: \"width\",\r\n type: \"number\",\r\n name: \"width\",\r\n value: inputs.width,\r\n onChange: handleChange,\r\n className: style_module_default.a.formControlInput\r\n })))) : inputs.type === \"embed\" ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"embed_code\"\r\n }, \"Paste your embed code below:\"), /*#__PURE__*/external_react_default.a.createElement(\"textarea\", {\r\n id: \"embed_code\",\r\n name: \"embed_code\",\r\n rows: 5,\r\n autoFocus: true,\r\n className: style_module_default.a.formControlInput,\r\n value: inputs.embed_code,\r\n onChange: handleChange\r\n }), errorMessage && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage)))) : /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorMt10\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"label\", {\r\n htmlFor: \"link\"\r\n }, \"Choose File\"), /*#__PURE__*/external_react_default.a.createElement(\"input\", {\r\n type: \"file\",\r\n id: \"link\",\r\n name: \"link\",\r\n className: style_module_default.a.formControlInput,\r\n accept: \"video/*\",\r\n onChange: handleChangeFile\r\n }), errorMessage && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.editorErrorMessage\r\n }, \"*\", \"\".concat(errorMessage)))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.reactEditorTextEnd\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.saveButton,\r\n onClick: handleSubmit\r\n }, \"Save\"))));\r\n}\r\n// CONCATENATED MODULE: ./src/components/SVGImages/OpenLinkIcon.jsx\r\n\r\nfunction OpenLinkIcon() {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"svg\", {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n viewBox: \"0 0 512 512\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"path\", {\r\n d: \"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.7L201.4 265.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3V192c0 17.7 14.3 32 32 32s32-14.3 32-32V32c0-17.7-14.3-32-32-32H320zM80 32C35.8 32 0 67.8 0 112V432c0 44.2 35.8 80 80 80H400c44.2 0 80-35.8 80-80V320c0-17.7-14.3-32-32-32s-32 14.3-32 32V432c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16V112c0-8.8 7.2-16 16-16H192c17.7 0 32-14.3 32-32s-14.3-32-32-32H80z\"\r\n }));\r\n}\r\n// CONCATENATED MODULE: ./src/components/RightClickLinkPopup.jsx\r\nfunction RightClickLinkPopup_slicedToArray(r, e) { return RightClickLinkPopup_arrayWithHoles(r) || RightClickLinkPopup_iterableToArrayLimit(r, e) || RightClickLinkPopup_unsupportedIterableToArray(r, e) || RightClickLinkPopup_nonIterableRest(); }\r\nfunction RightClickLinkPopup_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction RightClickLinkPopup_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return RightClickLinkPopup_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? RightClickLinkPopup_arrayLikeToArray(r, a) : void 0; } }\r\nfunction RightClickLinkPopup_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction RightClickLinkPopup_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction RightClickLinkPopup_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar RightClickLinkPopup_RightClickLinkPopup = function RightClickLinkPopup(_ref) {\r\n var _selectedEvent$parent3;\r\n var editorRef = _ref.editorRef,\r\n setIsOpenModel = _ref.setIsOpenModel,\r\n setSelectedData = _ref.setSelectedData,\r\n setSelectedEvent = _ref.setSelectedEvent,\r\n selectedEvent = _ref.selectedEvent,\r\n setImageUrl = _ref.setImageUrl,\r\n handleRemoveLink = _ref.handleRemoveLink,\r\n selectedRange = _ref.selectedRange;\r\n var popupRef = Object(external_react_[\"useRef\"])(null);\r\n var _useState = Object(external_react_[\"useState\"])({\r\n x: 0,\r\n y: 0\r\n }),\r\n _useState2 = RightClickLinkPopup_slicedToArray(_useState, 2),\r\n popupPosition = _useState2[0],\r\n setPopupPosition = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(false),\r\n _useState4 = RightClickLinkPopup_slicedToArray(_useState3, 2),\r\n popupVisible = _useState4[0],\r\n setPopupVisible = _useState4[1];\r\n var getSelectedText = function getSelectedText() {\r\n if (selectedRange) {\r\n var selectedText = selectedRange.toString();\r\n return selectedText;\r\n }\r\n return \"\";\r\n };\r\n var handleRightClick = function handleRightClick(event) {\r\n event.preventDefault();\r\n remove_resizer();\r\n var target = event.target;\r\n var parentRect = target.parentElement.getBoundingClientRect();\r\n setPopupPosition({\r\n x: event.clientX - parentRect.left,\r\n y: event.clientY - parentRect.top\r\n });\r\n var tagNames = [\"IMG\", \"A\", \"BUTTON\"];\r\n if (tagNames.includes(target.tagName)) {\r\n setSelectedEvent(target);\r\n }\r\n setPopupVisible(true);\r\n };\r\n var handleClickOutside = function handleClickOutside(event) {\r\n if (popupRef.current && !popupRef.current.contains(event.target)) {\r\n setPopupVisible(false);\r\n }\r\n };\r\n var handleOpenLinkPopup = function handleOpenLinkPopup() {\r\n var open_new_tab = false;\r\n var link_url = \"\";\r\n var link_text = getSelectedText() || \"\";\r\n var link_type = \"text\";\r\n if ((selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) === \"A\") {\r\n link_url = selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.href;\r\n link_text = getSelectedText() || (selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.textContent.trim());\r\n open_new_tab = (selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.target) === \"_blank\";\r\n } else if ((selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) === \"IMG\") {\r\n link_text = \"Image\";\r\n link_type = \"image\";\r\n setImageUrl(selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.src);\r\n } else if ((selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) === \"BUTTON\") {\r\n link_text = selectedEvent.textContent;\r\n link_type = \"button\";\r\n }\r\n var parentElement = selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.parentElement;\r\n if ((parentElement === null || parentElement === void 0 ? void 0 : parentElement.tagName) === \"A\") {\r\n setSelectedEvent(parentElement);\r\n link_url = parentElement === null || parentElement === void 0 ? void 0 : parentElement.href;\r\n open_new_tab = (parentElement === null || parentElement === void 0 ? void 0 : parentElement.target) === \"_blank\";\r\n }\r\n var selected_object = {\r\n link: link_url,\r\n text: link_text,\r\n open_new_tab: open_new_tab,\r\n link_type: link_type\r\n };\r\n setSelectedData(selected_object);\r\n setPopupVisible(false);\r\n setIsOpenModel(\"link\");\r\n };\r\n var handleOpenLink = function handleOpenLink() {\r\n var _selectedEvent$parent;\r\n var link = selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.href;\r\n if ((selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) !== \"A\" && (selectedEvent === null || selectedEvent === void 0 ? void 0 : (_selectedEvent$parent = selectedEvent.parentElement) === null || _selectedEvent$parent === void 0 ? void 0 : _selectedEvent$parent.tagName) === \"A\") {\r\n var _selectedEvent$parent2;\r\n link = selectedEvent === null || selectedEvent === void 0 ? void 0 : (_selectedEvent$parent2 = selectedEvent.parentElement) === null || _selectedEvent$parent2 === void 0 ? void 0 : _selectedEvent$parent2.href;\r\n }\r\n window.open(link);\r\n setPopupVisible(false);\r\n };\r\n var handleRemove = function handleRemove() {\r\n handleRemoveLink();\r\n setPopupVisible(false);\r\n };\r\n var handleImageLink = function handleImageLink() {\r\n var _selectedEvent$style, _selectedEvent$style2;\r\n setPopupVisible(false);\r\n var height = (_selectedEvent$style = selectedEvent.style) === null || _selectedEvent$style === void 0 ? void 0 : _selectedEvent$style.height;\r\n var width = (_selectedEvent$style2 = selectedEvent.style) === null || _selectedEvent$style2 === void 0 ? void 0 : _selectedEvent$style2.width;\r\n if (!height) {\r\n height = selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.offsetHeight;\r\n }\r\n if (!width) {\r\n width = selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.offsetWidth;\r\n }\r\n setSelectedData({\r\n link: selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.src,\r\n height: height,\r\n width: width\r\n });\r\n setIsOpenModel(\"image\");\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var editor = editorRef.current;\r\n if (editor) {\r\n editor.addEventListener(\"contextmenu\", handleRightClick);\r\n }\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return function () {\r\n if (editor) {\r\n editor.removeEventListener(\"contextmenu\", handleRightClick);\r\n }\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [editorRef]);\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, popupVisible && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.rightClickPopupBackground,\r\n style: {\r\n top: popupPosition.y,\r\n left: popupPosition.x\r\n },\r\n ref: popupRef\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.rightClickPopup,\r\n onClick: handleOpenLinkPopup\r\n }, /*#__PURE__*/external_react_default.a.createElement(LinkIcon, null), \" Link...\"), ((selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) === \"A\" || (selectedEvent === null || selectedEvent === void 0 ? void 0 : (_selectedEvent$parent3 = selectedEvent.parentElement) === null || _selectedEvent$parent3 === void 0 ? void 0 : _selectedEvent$parent3.tagName) === \"A\") && /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.rightClickPopup,\r\n onClick: handleRemove\r\n }, /*#__PURE__*/external_react_default.a.createElement(RemoveLinkIcon, null), \" Remove Link...\"), \" \", /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.rightClickPopup, \" \").concat(style_module_default.a.openLink),\r\n onClick: handleOpenLink\r\n }, /*#__PURE__*/external_react_default.a.createElement(OpenLinkIcon, null), \" Open Link...\")), (selectedEvent === null || selectedEvent === void 0 ? void 0 : selectedEvent.tagName) === \"IMG\" && /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"hr\", null), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.rightClickPopup,\r\n ref: popupRef,\r\n onClick: handleImageLink\r\n }, /*#__PURE__*/external_react_default.a.createElement(ImageIcon, null), \" Image...\"))));\r\n};\r\n/* harmony default export */ var components_RightClickLinkPopup = (RightClickLinkPopup_RightClickLinkPopup);\r\n// CONCATENATED MODULE: ./src/components/SelectFontFamily.jsx\r\nfunction SelectFontFamily_slicedToArray(r, e) { return SelectFontFamily_arrayWithHoles(r) || SelectFontFamily_iterableToArrayLimit(r, e) || SelectFontFamily_unsupportedIterableToArray(r, e) || SelectFontFamily_nonIterableRest(); }\r\nfunction SelectFontFamily_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction SelectFontFamily_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return SelectFontFamily_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? SelectFontFamily_arrayLikeToArray(r, a) : void 0; } }\r\nfunction SelectFontFamily_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction SelectFontFamily_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction SelectFontFamily_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\nfunction SelectFontFamily(_ref) {\r\n var editorRef = _ref.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = SelectFontFamily_slicedToArray(_useState, 2),\r\n isOpen = _useState2[0],\r\n setIsOpen = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(\"Default\"),\r\n _useState4 = SelectFontFamily_slicedToArray(_useState3, 2),\r\n selectedOption = _useState4[0],\r\n setSelectedOption = _useState4[1];\r\n var selectRef = Object(external_react_[\"useRef\"])(null);\r\n var fontFamilies = [{\r\n label: \"Arial\",\r\n value: \"Arial, sans-serif\"\r\n }, {\r\n label: \"Helvetica\",\r\n value: \"Helvetica, sans-serif\"\r\n }, {\r\n label: \"Times New Roman\",\r\n value: \"Times New Roman, serif\"\r\n }, {\r\n label: \"Courier New\",\r\n value: \"Courier New, monospace\"\r\n }, {\r\n label: \"Courier\",\r\n value: \"Courier, monospace\"\r\n }, {\r\n label: \"Verdana\",\r\n value: \"Verdana, sans-serif\"\r\n }, {\r\n label: \"Georgia\",\r\n value: \"Georgia, serif\"\r\n }, {\r\n label: \"Palatino\",\r\n value: \"Palatino, serif\"\r\n }, {\r\n label: \"Garamond\",\r\n value: \"Garamond, serif\"\r\n }, {\r\n label: \"Bookman\",\r\n value: \"Bookman, serif\"\r\n }, {\r\n label: \"Comic Sans MS\",\r\n value: \"Comic Sans MS, sans-serif\"\r\n }, {\r\n label: \"Trebuchet MS\",\r\n value: \"Trebuchet MS, sans-serif\"\r\n }, {\r\n label: \"Arial Black\",\r\n value: \"Arial Black, sans-serif\"\r\n }, {\r\n label: \"Impact\",\r\n value: \"Impact, sans-serif\"\r\n }, {\r\n label: \"Roboto\",\r\n value: \"Roboto, sans-serif\"\r\n }, {\r\n label: \"Open Sans\",\r\n value: \"Open Sans, sans-serif\"\r\n }, {\r\n label: \"Lato\",\r\n value: \"Lato, sans-serif\"\r\n }, {\r\n label: \"Montserrat\",\r\n value: \"Montserrat, sans-serif\"\r\n }, {\r\n label: \"Roboto Condensed\",\r\n value: \"Roboto Condensed, sans-serif\"\r\n }, {\r\n label: \"Oswald\",\r\n value: \"Oswald, sans-serif\"\r\n }, {\r\n label: \"Raleway\",\r\n value: \"Raleway, sans-serif\"\r\n }, {\r\n label: \"Noto Sans\",\r\n value: \"Noto Sans, sans-serif\"\r\n }, {\r\n label: \"Poppins\",\r\n value: \"Poppins, sans-serif\"\r\n }, {\r\n label: \"Ubuntu\",\r\n value: \"Ubuntu, sans-serif\"\r\n }, {\r\n label: \"Source Sans Pro\",\r\n value: \"Source Sans Pro, sans-serif\"\r\n }];\r\n var toggleSelect = function toggleSelect(e) {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n };\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n document.execCommand(\"styleWithCSS\", false, true);\r\n document.execCommand(\"fontName\", false, option.value);\r\n setSelectedOption(option.label);\r\n setIsOpen(false);\r\n };\r\n var getCurrentFontFamily = function getCurrentFontFamily() {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n var range = selection.getRangeAt(0);\r\n var startNode = range.startContainer;\r\n var node = startNode;\r\n while (node && node !== editorRef.current) {\r\n if (node.nodeType === Node.ELEMENT_NODE && node.style.fontFamily) {\r\n var fontFamily = node.style.fontFamily.replace(/\"/g, \"\");\r\n // Check for exact matches first\r\n for (var _i = 0, _fontFamilies = fontFamilies; _i < _fontFamilies.length; _i++) {\r\n var family = _fontFamilies[_i];\r\n var primaryFont = family.value.split(\",\")[0].trim();\r\n // Match exact value or primary font at start of font stack\r\n if (fontFamily === family.value || fontFamily.startsWith(\"\".concat(primaryFont, \",\")) || fontFamily === primaryFont) {\r\n return family.label;\r\n }\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n }\r\n return null;\r\n };\r\n var handleKeyDown = function handleKeyDown() {\r\n var editor = editorRef.current;\r\n if (!editor) return;\r\n if (!editor.contains(window.getSelection().anchorNode)) {\r\n return;\r\n }\r\n editor.focus();\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleClickOutside = function handleClickOutside(event) {\r\n if (selectRef.current && !selectRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode)) {\r\n var currentFont = getCurrentFontFamily();\r\n if (currentFont) {\r\n setSelectedOption(currentFont);\r\n } else {\r\n setSelectedOption(\"Default\");\r\n }\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n return function () {\r\n document.removeEventListener(\"click\", handleClickOutside);\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n };\r\n }, [editorRef]);\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.customSelectFormat,\r\n onClick: toggleSelect,\r\n ref: selectRef,\r\n style: {\r\n minWidth: \"120px\"\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectSelected\r\n }, selectedOption, /*#__PURE__*/external_react_default.a.createElement(ArrowDown, null)), isOpen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectItemsFormat,\r\n style: {\r\n maxHeight: \"200px\",\r\n overflowY: \"auto\"\r\n }\r\n }, fontFamilies.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: style_module_default.a.selectOption,\r\n style: {\r\n fontFamily: option.value\r\n }\r\n }, option.label);\r\n })));\r\n}\r\n/* harmony default export */ var components_SelectFontFamily = (SelectFontFamily);\r\n// CONCATENATED MODULE: ./src/components/AlignmentOptions.jsx\r\nfunction AlignmentOptions_slicedToArray(r, e) { return AlignmentOptions_arrayWithHoles(r) || AlignmentOptions_iterableToArrayLimit(r, e) || AlignmentOptions_unsupportedIterableToArray(r, e) || AlignmentOptions_nonIterableRest(); }\r\nfunction AlignmentOptions_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction AlignmentOptions_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return AlignmentOptions_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? AlignmentOptions_arrayLikeToArray(r, a) : void 0; } }\r\nfunction AlignmentOptions_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction AlignmentOptions_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction AlignmentOptions_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nfunction AlignmentOptions(_ref) {\r\n var _alignments$, _alignments$find;\r\n var editorRef = _ref.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = AlignmentOptions_slicedToArray(_useState, 2),\r\n isOpen = _useState2[0],\r\n setIsOpen = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(\"Alignment\"),\r\n _useState4 = AlignmentOptions_slicedToArray(_useState3, 2),\r\n selectedOption = _useState4[0],\r\n setSelectedOption = _useState4[1];\r\n var selectRef = Object(external_react_[\"useRef\"])(null);\r\n var alignments = [{\r\n label: \"Left\",\r\n value: \"left\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignLeft, null)\r\n }, {\r\n label: \"Center\",\r\n value: \"center\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignCenter, null)\r\n }, {\r\n label: \"Right\",\r\n value: \"right\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignRight, null)\r\n }, {\r\n label: \"Justify\",\r\n value: \"justify\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignJustify, null)\r\n }];\r\n var toggleSelect = function toggleSelect(e) {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n };\r\n var handleOptionClick = function handleOptionClick(e, alignment) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n document.execCommand(\"justify\" + alignment.value.charAt(0).toUpperCase() + alignment.value.slice(1));\r\n setSelectedOption(alignment.label);\r\n setIsOpen(false);\r\n };\r\n var getCurrentAlignment = function getCurrentAlignment() {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n var range = selection.getRangeAt(0);\r\n var startNode = range.startContainer;\r\n var node = startNode;\r\n var _loop = function _loop() {\r\n if (node.nodeType === Node.ELEMENT_NODE && node.style.textAlign) {\r\n var alignment = node.style.textAlign;\r\n var foundAlignment = alignments.find(function (a) {\r\n return a.value === alignment;\r\n });\r\n if (foundAlignment) {\r\n return {\r\n v: foundAlignment.label\r\n };\r\n }\r\n }\r\n node = node.parentNode;\r\n },\r\n _ret;\r\n while (node && node !== editorRef.current) {\r\n _ret = _loop();\r\n if (_ret) return _ret.v;\r\n }\r\n }\r\n return null;\r\n };\r\n var handleKeyDown = function handleKeyDown() {\r\n var editor = editorRef.current;\r\n if (!editor) return;\r\n if (!editor.contains(window.getSelection().anchorNode)) {\r\n return;\r\n }\r\n editor.focus();\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleClickOutside = function handleClickOutside(event) {\r\n if (selectRef.current && !selectRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode)) {\r\n var currentAlignment = getCurrentAlignment();\r\n if (currentAlignment) {\r\n setSelectedOption(currentAlignment);\r\n } else {\r\n setSelectedOption(\"Alignment\");\r\n }\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n return function () {\r\n document.removeEventListener(\"click\", handleClickOutside);\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n };\r\n }, [editorRef]);\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.customSelectFormat,\r\n onClick: toggleSelect,\r\n ref: selectRef\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n style: {\r\n display: \"flex\"\r\n }\r\n }, selectedOption === \"Alignment\" ? /*#__PURE__*/external_react_default.a.createElement(\"span\", null, (_alignments$ = alignments[0]) === null || _alignments$ === void 0 ? void 0 : _alignments$.icon) : /*#__PURE__*/external_react_default.a.createElement(\"span\", null, (_alignments$find = alignments.find(function (a) {\r\n return a.label === selectedOption;\r\n })) === null || _alignments$find === void 0 ? void 0 : _alignments$find.icon), /*#__PURE__*/external_react_default.a.createElement(\"span\", {\r\n className: style_module_default.a.selectSelected\r\n }, /*#__PURE__*/external_react_default.a.createElement(ArrowDown, null))), isOpen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectItemsFormat\r\n }, alignments.map(function (alignment, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, alignment);\r\n },\r\n className: style_module_default.a.selectOption,\r\n style: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"8px\",\r\n textAlign: alignment.value,\r\n fontSize: \"12px\"\r\n }\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"span\", null, alignment.icon), /*#__PURE__*/external_react_default.a.createElement(\"span\", null, alignment.label));\r\n })));\r\n}\r\n/* harmony default export */ var components_AlignmentOptions = (AlignmentOptions);\r\n// CONCATENATED MODULE: ./src/components/FontSize.jsx\r\nfunction FontSize_slicedToArray(r, e) { return FontSize_arrayWithHoles(r) || FontSize_iterableToArrayLimit(r, e) || FontSize_unsupportedIterableToArray(r, e) || FontSize_nonIterableRest(); }\r\nfunction FontSize_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction FontSize_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return FontSize_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? FontSize_arrayLikeToArray(r, a) : void 0; } }\r\nfunction FontSize_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction FontSize_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction FontSize_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\n\r\n\r\n\r\nfunction FontSize(_ref) {\r\n var editorRef = _ref.editorRef;\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = FontSize_slicedToArray(_useState, 2),\r\n isOpen = _useState2[0],\r\n setIsOpen = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(\"16px\"),\r\n _useState4 = FontSize_slicedToArray(_useState3, 2),\r\n selectedOption = _useState4[0],\r\n setSelectedOption = _useState4[1];\r\n var selectRef = Object(external_react_[\"useRef\"])(null);\r\n var fontSizes = [{\r\n label: \"10px\",\r\n value: \"10\"\r\n }, {\r\n label: \"12px\",\r\n value: \"12\"\r\n }, {\r\n label: \"14px\",\r\n value: \"14\"\r\n }, {\r\n label: \"16px\",\r\n value: \"16\"\r\n }, {\r\n label: \"18px\",\r\n value: \"18\"\r\n }, {\r\n label: \"20px\",\r\n value: \"20\"\r\n }, {\r\n label: \"24px\",\r\n value: \"24\"\r\n }, {\r\n label: \"28px\",\r\n value: \"28\"\r\n }, {\r\n label: \"32px\",\r\n value: \"32\"\r\n }, {\r\n label: \"36px\",\r\n value: \"36\"\r\n }, {\r\n label: \"48px\",\r\n value: \"48\"\r\n }, {\r\n label: \"60px\",\r\n value: \"60\"\r\n }, {\r\n label: \"72px\",\r\n value: \"72\"\r\n }];\r\n var toggleSelect = function toggleSelect(e) {\r\n e.preventDefault();\r\n setIsOpen(!isOpen);\r\n };\r\n var handleOptionClick = function handleOptionClick(e, option) {\r\n e.preventDefault();\r\n editorRef.current.focus();\r\n var selection = window.getSelection();\r\n if (!selection.rangeCount) return;\r\n var range = selection.getRangeAt(0);\r\n var selectedNode = range.commonAncestorContainer;\r\n var selectedText = range.toString();\r\n var value = option.value + \"px\";\r\n var findParentSpan = function findParentSpan(node) {\r\n while (node && node !== editorRef.current) {\r\n if (node.nodeType === 1 && node.tagName === \"SPAN\") {\r\n if (node.textContent == selectedText || node.innerText == selectedText) {\r\n return node;\r\n } else {\r\n return null;\r\n }\r\n }\r\n node = node.parentNode;\r\n }\r\n return null;\r\n };\r\n var existingSpan = findParentSpan(selectedNode);\r\n if (!selection.isCollapsed) {\r\n if (existingSpan) {\r\n existingSpan.style.fontSize = value;\r\n } else {\r\n var span = document.createElement(\"span\");\r\n span.style.fontSize = value;\r\n\r\n // To safely wrap the selection without breaking HTML structure\r\n var content = range.extractContents();\r\n span.appendChild(content);\r\n range.insertNode(span);\r\n }\r\n } else {\r\n // No selection — insert empty span at caret\r\n var _span = document.createElement(\"span\");\r\n _span.style.fontSize = value;\r\n _span.innerHTML = \"\\u200B\";\r\n range.insertNode(_span);\r\n\r\n // Place caret inside span\r\n range.setStart(_span.firstChild, 1);\r\n range.setEnd(_span.firstChild, 1);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n setSelectedOption(option.label);\r\n setIsOpen(false);\r\n };\r\n var getCurrentFontSize = function getCurrentFontSize() {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n var range = selection.getRangeAt(0);\r\n var startNode = range.startContainer;\r\n var node = startNode;\r\n var _loop = function _loop() {\r\n if (node.nodeType === Node.ELEMENT_NODE && node.style.fontSize) {\r\n var fontSize = node.style.fontSize;\r\n // Remove 'px' and find matching option\r\n var sizeValue = fontSize.replace(\"px\", \"\");\r\n var foundSize = fontSizes.find(function (size) {\r\n return size.value === sizeValue;\r\n });\r\n if (foundSize) {\r\n return {\r\n v: foundSize.label\r\n };\r\n }\r\n }\r\n node = node.parentNode;\r\n },\r\n _ret;\r\n while (node && node !== editorRef.current) {\r\n _ret = _loop();\r\n if (_ret) return _ret.v;\r\n }\r\n }\r\n return null;\r\n };\r\n var handleKeyDown = function handleKeyDown() {\r\n var editor = editorRef.current;\r\n if (!editor) return;\r\n if (!editor.contains(window.getSelection().anchorNode)) {\r\n return;\r\n }\r\n editor.focus();\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleClickOutside = function handleClickOutside(event) {\r\n if (selectRef.current && !selectRef.current.contains(event.target)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n var handleSelectionChange = function handleSelectionChange() {\r\n var _editorRef$current;\r\n if (editorRef !== null && editorRef !== void 0 && (_editorRef$current = editorRef.current) !== null && _editorRef$current !== void 0 && _editorRef$current.contains(window.getSelection().anchorNode)) {\r\n var currentSize = getCurrentFontSize();\r\n if (currentSize) {\r\n setSelectedOption(currentSize);\r\n } else {\r\n setSelectedOption(\"16px\");\r\n }\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n document.addEventListener(\"selectionchange\", handleSelectionChange);\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n return function () {\r\n document.removeEventListener(\"click\", handleClickOutside);\r\n document.removeEventListener(\"selectionchange\", handleSelectionChange);\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n };\r\n }, [editorRef]);\r\n return /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n className: style_module_default.a.customSelectFormat,\r\n onClick: toggleSelect,\r\n ref: selectRef\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectSelected\r\n }, selectedOption, /*#__PURE__*/external_react_default.a.createElement(ArrowDown, null)), isOpen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.selectItemsFormat,\r\n style: {\r\n maxHeight: \"200px\",\r\n overflowY: \"auto\"\r\n }\r\n }, fontSizes.map(function (option, index) {\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index),\r\n onClick: function onClick(e) {\r\n return handleOptionClick(e, option);\r\n },\r\n className: style_module_default.a.selectOption,\r\n style: {\r\n fontSize: \"14px\"\r\n }\r\n }, option.label);\r\n })));\r\n}\r\n/* harmony default export */ var components_FontSize = (FontSize);\r\n// EXTERNAL MODULE: ./node_modules/react-image-crop/dist/ReactCrop.css\r\nvar ReactCrop = __webpack_require__(8);\r\n\r\n// CONCATENATED MODULE: ./src/index.js\r\nfunction src_typeof(o) { \"@babel/helpers - typeof\"; return src_typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, src_typeof(o); }\r\nvar _excluded = [\"theme_config\", \"toolbar\", \"navbar\", \"value\", \"onChange\", \"getEditorRef\", \"mainProps\", \"placeholder\", \"image_handler\", \"handleFullScreen\", \"remove_from_toolbar\", \"remove_from_navbar\", \"style\"];\r\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\r\nfunction src_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\r\nfunction src_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? src_ownKeys(Object(t), !0).forEach(function (r) { src_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : src_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\r\nfunction src_defineProperty(e, r, t) { return (r = src_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\r\nfunction src_toPropertyKey(t) { var i = src_toPrimitive(t, \"string\"); return \"symbol\" == src_typeof(i) ? i : i + \"\"; }\r\nfunction src_toPrimitive(t, r) { if (\"object\" != src_typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != src_typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\r\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = src_unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\r\nfunction src_toConsumableArray(r) { return src_arrayWithoutHoles(r) || src_iterableToArray(r) || src_unsupportedIterableToArray(r) || src_nonIterableSpread(); }\r\nfunction src_nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction src_iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\r\nfunction src_arrayWithoutHoles(r) { if (Array.isArray(r)) return src_arrayLikeToArray(r); }\r\nfunction src_slicedToArray(r, e) { return src_arrayWithHoles(r) || src_iterableToArrayLimit(r, e) || src_unsupportedIterableToArray(r, e) || src_nonIterableRest(); }\r\nfunction src_nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\r\nfunction src_unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return src_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? src_arrayLikeToArray(r, a) : void 0; } }\r\nfunction src_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\r\nfunction src_iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\r\nfunction src_arrayWithHoles(r) { if (Array.isArray(r)) return r; }\r\nfunction _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }\r\nfunction _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.indexOf(n) >= 0) continue; t[n] = r[n]; } return t; }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nvar show_final_options = function show_final_options(options, remove, all_options) {\r\n if (!options) {\r\n options = all_options;\r\n }\r\n if (remove) {\r\n options = options.filter(function (item) {\r\n if (typeof item === \"string\") {\r\n return !remove.includes(item);\r\n } else {\r\n return !remove.includes(item.name);\r\n }\r\n });\r\n // remove | dublication\r\n options = options.filter(function (item, index) {\r\n return item !== \"|\" || index === 0 || options[index - 1] !== \"|\";\r\n });\r\n }\r\n return options;\r\n};\r\nvar isValidURL = function isValidURL(str) {\r\n // Regular expression to check if the string is a valid URL\r\n var pattern = new RegExp(\"^(https?:\\\\/\\\\/)?\" +\r\n // protocol\r\n \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|\" +\r\n // domain name\r\n \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" +\r\n // OR ip (v4) address\r\n \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*\" +\r\n // port and path\r\n \"(\\\\?[;&a-z\\\\d%_.~+=-]*)?\" +\r\n // query string\r\n \"(\\\\#[-a-z\\\\d_]*)?$\", \"i\"); // fragment locator\r\n return pattern.test(str);\r\n};\r\nfunction ReactEditorKit(props) {\r\n var theme_config = props.theme_config,\r\n toolbar = props.toolbar,\r\n navbar = props.navbar,\r\n value = props.value,\r\n onChange = props.onChange,\r\n getEditorRef = props.getEditorRef,\r\n mainProps = props.mainProps,\r\n placeholder = props.placeholder,\r\n image_handler = props.image_handler,\r\n handleFullScreen = props.handleFullScreen,\r\n remove_from_toolbar = props.remove_from_toolbar,\r\n remove_from_navbar = props.remove_from_navbar,\r\n style = props.style,\r\n others = _objectWithoutProperties(props, _excluded);\r\n var editorRef = Object(external_react_[\"useRef\"])(null);\r\n var _useState = Object(external_react_[\"useState\"])(false),\r\n _useState2 = src_slicedToArray(_useState, 2),\r\n viewSource = _useState2[0],\r\n setViewSource = _useState2[1];\r\n var _useState3 = Object(external_react_[\"useState\"])(false),\r\n _useState4 = src_slicedToArray(_useState3, 2),\r\n isLoading = _useState4[0],\r\n setIsLoading = _useState4[1];\r\n var _useState5 = Object(external_react_[\"useState\"])(false),\r\n _useState6 = src_slicedToArray(_useState5, 2),\r\n openPreview = _useState6[0],\r\n setOpenPreview = _useState6[1];\r\n var _useState7 = Object(external_react_[\"useState\"])(false),\r\n _useState8 = src_slicedToArray(_useState7, 2),\r\n init = _useState8[0],\r\n setInit = _useState8[1];\r\n var _useState9 = Object(external_react_[\"useState\"])(null),\r\n _useState10 = src_slicedToArray(_useState9, 2),\r\n sourceCode = _useState10[0],\r\n setSourceCode = _useState10[1];\r\n var _useState11 = Object(external_react_[\"useState\"])(false),\r\n _useState12 = src_slicedToArray(_useState11, 2),\r\n isFullScreen = _useState12[0],\r\n setIsFullScreen = _useState12[1];\r\n var _useState13 = Object(external_react_[\"useState\"])(\"\"),\r\n _useState14 = src_slicedToArray(_useState13, 2),\r\n imageUrl = _useState14[0],\r\n setImageUrl = _useState14[1];\r\n var _useState15 = Object(external_react_[\"useState\"])(\"\"),\r\n _useState16 = src_slicedToArray(_useState15, 2),\r\n isOpenModel = _useState16[0],\r\n setIsOpenModel = _useState16[1];\r\n var _useState17 = Object(external_react_[\"useState\"])(null),\r\n _useState18 = src_slicedToArray(_useState17, 2),\r\n targetElement = _useState18[0],\r\n setTargetElement = _useState18[1];\r\n var _useState19 = Object(external_react_[\"useState\"])(null),\r\n _useState20 = src_slicedToArray(_useState19, 2),\r\n targetElementType = _useState20[0],\r\n setTargetElementType = _useState20[1];\r\n var _useState21 = Object(external_react_[\"useState\"])(\"\"),\r\n _useState22 = src_slicedToArray(_useState21, 2),\r\n previewContent = _useState22[0],\r\n setPreviewContent = _useState22[1];\r\n var _useState23 = Object(external_react_[\"useState\"])({\r\n link: \"\",\r\n height: \"\",\r\n width: \"\",\r\n type: \"general\",\r\n text: \"\",\r\n open_new_tab: false\r\n }),\r\n _useState24 = src_slicedToArray(_useState23, 2),\r\n selectedData = _useState24[0],\r\n setSelectedData = _useState24[1];\r\n var _useState25 = Object(external_react_[\"useState\"])(null),\r\n _useState26 = src_slicedToArray(_useState25, 2),\r\n selectedEvent = _useState26[0],\r\n setSelectedEvent = _useState26[1];\r\n var _useState27 = Object(external_react_[\"useState\"])(true),\r\n _useState28 = src_slicedToArray(_useState27, 2),\r\n isPlaceholder = _useState28[0],\r\n setIsPlaceholder = _useState28[1];\r\n var _useState29 = Object(external_react_[\"useState\"])({}),\r\n _useState30 = src_slicedToArray(_useState29, 2),\r\n selectedItem = _useState30[0],\r\n setSelectedItem = _useState30[1];\r\n var _useState31 = Object(external_react_[\"useState\"])(null),\r\n _useState32 = src_slicedToArray(_useState31, 2),\r\n selectedRange = _useState32[0],\r\n setSelectedRange = _useState32[1];\r\n var _useState33 = Object(external_react_[\"useState\"])(false),\r\n _useState34 = src_slicedToArray(_useState33, 2),\r\n showHR1 = _useState34[0],\r\n setShowHR1 = _useState34[1];\r\n var _useState35 = Object(external_react_[\"useState\"])(false),\r\n _useState36 = src_slicedToArray(_useState35, 2),\r\n showHR2 = _useState36[0],\r\n setShowHR2 = _useState36[1];\r\n var _useState37 = Object(external_react_[\"useState\"])(false),\r\n _useState38 = src_slicedToArray(_useState37, 2),\r\n showHR3 = _useState38[0],\r\n setShowHR3 = _useState38[1];\r\n var checkIfImageExists = function checkIfImageExists() {\r\n var editor = editorRef === null || editorRef === void 0 ? void 0 : editorRef.current;\r\n if (editor) {\r\n var imgTag = editor.querySelector(\"img\");\r\n if (imgTag) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n return false;\r\n };\r\n var handleInput = function handleInput() {\r\n setInit(true);\r\n var editor = editorRef === null || editorRef === void 0 ? void 0 : editorRef.current;\r\n if (!editor) return;\r\n var isImageExists = checkIfImageExists();\r\n if (!isImageExists) {\r\n var element = document.querySelector(\".resizeImageWrapper\");\r\n if (element) {\r\n element.parentNode.removeChild(element);\r\n }\r\n setSelectedEvent(null);\r\n }\r\n\r\n // --- CAREFUL WRAPPING OF FIRST LINE ---\r\n var hasOnlyTextOrBR = src_toConsumableArray(editor.childNodes).every(function (node) {\r\n return node.nodeType === Node.TEXT_NODE || node.nodeType === Node.ELEMENT_NODE && node.nodeName === \"BR\";\r\n });\r\n if (hasOnlyTextOrBR && editor.textContent.trim() !== \"\") {\r\n var selection = window.getSelection();\r\n var range = selection === null || selection === void 0 ? void 0 : selection.getRangeAt(0);\r\n\r\n // Save caret position relative to start\r\n var preCaretRange = range === null || range === void 0 ? void 0 : range.cloneRange();\r\n preCaretRange === null || preCaretRange === void 0 ? void 0 : preCaretRange.selectNodeContents(editor);\r\n preCaretRange === null || preCaretRange === void 0 ? void 0 : preCaretRange.setEnd(range.startContainer, range.startOffset);\r\n var caretOffset = (preCaretRange === null || preCaretRange === void 0 ? void 0 : preCaretRange.toString().length) || 0;\r\n\r\n // Wrap text in a <p>\r\n var wrapper = document.createElement(\"p\");\r\n while (editor.firstChild) {\r\n wrapper.appendChild(editor.firstChild);\r\n }\r\n editor.appendChild(wrapper);\r\n\r\n // Restore caret\r\n var newNode = wrapper.firstChild;\r\n var offset = caretOffset;\r\n\r\n // Traverse to the correct offset\r\n var setCaret = function setCaret(node, offset) {\r\n var range = document.createRange();\r\n var selection = window.getSelection();\r\n range.setStart(node, offset);\r\n range.collapse(true);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n };\r\n var traverse = function traverse(node) {\r\n if (node.nodeType === Node.TEXT_NODE) {\r\n if (offset <= node.length) {\r\n setCaret(node, offset);\r\n throw \"done\"; // stop traversal\r\n } else {\r\n offset -= node.length;\r\n }\r\n } else {\r\n for (var i = 0; i < node.childNodes.length; i++) {\r\n traverse(node.childNodes[i]);\r\n }\r\n }\r\n };\r\n try {\r\n traverse(wrapper);\r\n } catch (e) {}\r\n }\r\n function clearEditorFormatting(editor, tempDiv) {\r\n if (editor.getAttribute(\"data-mlx-editor-empty\") || editor.classList.contains(\"empty\")) {\r\n editor.setAttribute(\"data-mlx-editor-empty\", \"true\");\r\n var childdiv;\r\n if (tempDiv.tagName.toLowerCase() === \"div\") {\r\n // Create a new <p> element\r\n var p = document.createElement(\"p\");\r\n // Copy the contents of tempDiv to the <p> element\r\n p.innerHTML = tempDiv.innerHTML;\r\n // Preserve attributes if needed\r\n var _iterator = _createForOfIteratorHelper(tempDiv.attributes),\r\n _step;\r\n try {\r\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\r\n var attr = _step.value;\r\n p.setAttribute(attr.name, attr.value);\r\n }\r\n } catch (err) {\r\n _iterator.e(err);\r\n } finally {\r\n _iterator.f();\r\n }\r\n childdiv = p.outerHTML;\r\n } else {\r\n childdiv = tempDiv.outerHTML;\r\n }\r\n editor.innerHTML = childdiv;\r\n return;\r\n }\r\n editor.setAttribute(\"data-mlx-editor-empty\", \"true\");\r\n // Save current selection\r\n var selection = window.getSelection();\r\n var range = document.createRange();\r\n // Completely clear the editor\r\n\r\n range.selectNodeContents(editor);\r\n range.collapse(true);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n editor.innerHTML = \"<p><br></p>\";\r\n document.execCommand(\"removeFormat\", false, null);\r\n // Reset any formatting\r\n // Optional: Reset any CSS styles\r\n editor.style.cssText = \"\";\r\n }\r\n\r\n // Usage:\r\n var content = editor.innerHTML;\r\n content = transformHTML(content);\r\n var tempDiv = document.createElement(\"div\");\r\n tempDiv.innerHTML = content;\r\n var checkEditorIsEmptyAndGetTagName = isEditorEmpty(editor.innerHTML);\r\n // First check if the content is \"effectively empty\" (if spaces exist then condition will be false)\r\n var isEffectivelyEmpty = (!tempDiv.textContent || tempDiv.textContent.replace(/\\s/g, \"\").length === 0) && checkEditorIsEmptyAndGetTagName.isEmpty;\r\n if (isEffectivelyEmpty) {\r\n clearEditorFormatting(editor, checkEditorIsEmptyAndGetTagName.tempDiv);\r\n } else {\r\n editor.removeAttribute(\"data-mlx-editor-empty\");\r\n onChange === null || onChange === void 0 ? void 0 : onChange(tempDiv.innerHTML);\r\n }\r\n };\r\n function isEditorEmpty(html) {\r\n // Create a temporary DOM element to parse and inspect the structure\r\n var temp = document.createElement(\"div\");\r\n temp.innerHTML = html;\r\n // Remove whitespace text nodes with text type elements\r\n temp.childNodes.forEach(function (node) {\r\n if (node.type == Node.TEXT_NODE && !node.textContent.trim()) {\r\n temp.removeChild(node);\r\n }\r\n });\r\n\r\n // Case 1: Only a single <br>\r\n if (temp.children.length === 0 || temp.innerHTML === \"<br>\") {\r\n var pTagDiv = document.createElement(\"P\");\r\n pTagDiv.innerHTML = \"<br>\";\r\n return {\r\n tempDiv: pTagDiv,\r\n isEmpty: true\r\n };\r\n }\r\n\r\n // Case 2: Only a <p> with a <br> inside (ignore styles)\r\n if (temp.children.length === 1 && temp.children[0].children.length === 1 && temp.children[0].children[0].tagName === \"BR\") {\r\n return {\r\n tempDiv: temp.children[0],\r\n isEmpty: true\r\n };\r\n }\r\n return {\r\n isEmpty: false\r\n };\r\n }\r\n var handleEditorKeyDown = function handleEditorKeyDown(event) {\r\n if (event.key === \"Enter\" && !event.shiftKey) {\r\n var _currentNode;\r\n event.preventDefault();\r\n var editor = editorRef.current;\r\n var selection = window.getSelection();\r\n if (!selection.rangeCount || !editor) return;\r\n var range = selection.getRangeAt(0);\r\n var currentNode = range.startContainer;\r\n var listItemNode = null;\r\n // Traverse up to find the nearest LI element\r\n while (currentNode && currentNode !== editor) {\r\n if (currentNode.nodeName === \"LI\") {\r\n listItemNode = currentNode;\r\n break;\r\n }\r\n currentNode = currentNode.parentNode;\r\n }\r\n if (listItemNode) {\r\n // Create new LI\r\n var newLI = document.createElement(\"li\");\r\n newLI.appendChild(document.createElement(\"br\"));\r\n // Insert after current LI\r\n if (listItemNode.nextSibling) {\r\n listItemNode.parentNode.insertBefore(newLI, listItemNode.nextSibling);\r\n } else {\r\n listItemNode.parentNode.appendChild(newLI);\r\n }\r\n\r\n // Move cursor into new LI\r\n var _selection = window.getSelection();\r\n var _range = document.createRange();\r\n _range.selectNodeContents(newLI);\r\n _range.collapse(true);\r\n _selection.removeAllRanges();\r\n _selection.addRange(_range);\r\n return;\r\n }\r\n\r\n // Step 1: Find the containing <p>\r\n while (currentNode && currentNode.nodeName !== \"P\" && currentNode !== editor) {\r\n currentNode = currentNode.parentNode;\r\n }\r\n var currentP = ((_currentNode = currentNode) === null || _currentNode === void 0 ? void 0 : _currentNode.nodeName) === \"P\" ? currentNode : null;\r\n\r\n // Step 2: Wrap if no <p> exists\r\n if (!currentP) {\r\n currentP = document.createElement(\"p\");\r\n currentP.appendChild(document.createElement(\"br\"));\r\n editor.appendChild(currentP);\r\n var _newRange = document.createRange();\r\n _newRange.setStart(currentP, 0);\r\n _newRange.collapse(true);\r\n selection.removeAllRanges();\r\n selection.addRange(_newRange);\r\n return;\r\n }\r\n\r\n // Step 3: Split text manually at caret position\r\n var offset = range.startOffset;\r\n var container = range.startContainer;\r\n var newP = document.createElement(\"p\");\r\n if (container.nodeType === Node.TEXT_NODE) {\r\n var text = container.nodeValue;\r\n var beforeText = text.slice(0, offset);\r\n var afterText = text.slice(offset);\r\n\r\n // Update current node text\r\n container.nodeValue = beforeText;\r\n\r\n // Insert after text into new <p>\r\n if (afterText) {\r\n var afterTextNode = document.createTextNode(afterText);\r\n newP.appendChild(afterTextNode);\r\n } else {\r\n newP.appendChild(document.createElement(\"br\"));\r\n }\r\n } else {\r\n newP.appendChild(document.createElement(\"br\"));\r\n }\r\n\r\n // Step 4: Insert new <p> after current\r\n var parent = currentP.parentNode;\r\n\r\n // Only insert if parent is valid and accepts <p>\r\n if (parent && parent.contains(currentP)) {\r\n if (currentP.nextSibling) {\r\n parent.insertBefore(newP, currentP.nextSibling);\r\n } else {\r\n parent.appendChild(newP);\r\n }\r\n }\r\n // Step 5: Place caret in new <p>\r\n var newRange = document.createRange();\r\n newRange.setStart(newP, 0);\r\n newRange.collapse(true);\r\n selection.removeAllRanges();\r\n selection.addRange(newRange);\r\n }\r\n };\r\n var handleOpenModel = function handleOpenModel(e, type, item) {\r\n e.preventDefault();\r\n setIsOpenModel(type);\r\n setSelectedItem(item);\r\n };\r\n var handleCloseModel = function handleCloseModel(e) {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n setImageUrl(\"\");\r\n setTargetElement(\"\");\r\n setIsOpenModel(\"\");\r\n setSelectedData({});\r\n setSelectedEvent(null);\r\n };\r\n var handleSaveSource = function handleSaveSource(e) {\r\n e.preventDefault();\r\n if (editorRef !== null && editorRef !== void 0 && editorRef.current) {\r\n var trimmedSourceCode = sourceCode.replace(/\\n\\s*\\n/g, \"\\n\").replace(/\\s+/g, \" \").trim();\r\n editorRef.current.innerHTML = trimmedSourceCode;\r\n setViewSource(false);\r\n if (onChange) {\r\n onChange(trimmedSourceCode);\r\n }\r\n }\r\n };\r\n var handleSelectAll = function handleSelectAll(e) {\r\n e.preventDefault();\r\n var selection = window.getSelection();\r\n if (!selection.toString()) {\r\n var range = document.createRange();\r\n range.selectNodeContents(editorRef === null || editorRef === void 0 ? void 0 : editorRef.current);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n } else {\r\n selection.removeAllRanges();\r\n }\r\n };\r\n var handleInsertHRClick = function handleInsertHRClick() {\r\n handleFocusEditor();\r\n document.execCommand(\"insertHorizontalRule\");\r\n };\r\n var handleFocusEditor = function handleFocusEditor() {\r\n var editor = editorRef === null || editorRef === void 0 ? void 0 : editorRef.current;\r\n if (editor && selectedRange) {\r\n var selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(selectedRange);\r\n editor.focus();\r\n }\r\n };\r\n var handleLinkInsert = function handleLinkInsert(props) {\r\n var text = props.text,\r\n link = props.link,\r\n open_new_tab = props.open_new_tab,\r\n link_type = props.link_type;\r\n if (!text) {\r\n text = link;\r\n }\r\n var linkHTML = \"<a href=\\\"\".concat(link, \"\\\"\");\r\n if (open_new_tab && open_new_tab !== \"false\") {\r\n linkHTML += ' target=\"_blank\"';\r\n }\r\n if (link_type === \"image\" && imageUrl) {\r\n // Use selectedEvent if available; otherwise, fall back to default image HTML\r\n if (selectedEvent) {\r\n if (selectedEvent.tagName === \"IMG\") {\r\n var src = selectedEvent.src;\r\n if (src === imageUrl) {\r\n text = selectedEvent.outerHTML;\r\n } else {\r\n text = \"<img src=\\\"\".concat(imageUrl, \"\\\" alt=\\\"ImageLink\\\" />\");\r\n }\r\n } else if (selectedEvent.tagName === \"A\") {\r\n var childNode = selectedEvent.firstChild;\r\n if (childNode && childNode.nodeType === Node.ELEMENT_NODE && childNode.tagName === \"IMG\" && childNode.src === imageUrl) {\r\n text = childNode.outerHTML;\r\n } else {\r\n text = \"<img src=\\\"\".concat(imageUrl, \"\\\" alt=\\\"ImageLink\\\" />\");\r\n }\r\n } else {\r\n text = \"<img src=\\\"\".concat(imageUrl, \"\\\" alt=\\\"ImageLink\\\" />\");\r\n }\r\n } else {\r\n text = \"<img src=\\\"\".concat(imageUrl, \"\\\" alt=\\\"ImageLink\\\" />\");\r\n }\r\n } else if (link_type === \"button\") {\r\n text = \"<button contentEditable=false>\".concat(text, \"</button>\");\r\n }\r\n linkHTML += \">\".concat(text, \"</a>\");\r\n if (selectedEvent && selectedEvent.parentElement) {\r\n selectedEvent.parentElement.removeChild(selectedEvent);\r\n } else {\r\n restoreSelection();\r\n }\r\n handleFocusEditor();\r\n document.execCommand(\"insertHTML\", false, linkHTML);\r\n handleCloseModel();\r\n };\r\n var handleRemoveLink = function handleRemoveLink() {\r\n var linkHTML = \"\".concat(selectedEvent.textContent.trim());\r\n if (selectedEvent.tagName === \"IMG\") {\r\n linkHTML = \"<img src=\\\"\".concat(selectedEvent.src, \"\\\" alt=\\\"ImageLink\\\" />\");\r\n }\r\n if (selectedEvent) {\r\n var parentElement = selectedEvent.parentElement;\r\n if (parentElement) {\r\n parentElement.removeChild(selectedEvent);\r\n }\r\n }\r\n handleFocusEditor();\r\n document.execCommand(\"insertHTML\", false, linkHTML);\r\n handleCloseModel();\r\n };\r\n var handleImageInsert = function handleImageInsert(data) {\r\n var link = data.link,\r\n height = data.height,\r\n width = data.width;\r\n if (selectedEvent && selectedData) {\r\n selectedEvent.src = link;\r\n if (height) {\r\n selectedEvent.style.height = \"\".concat(height, \"px\");\r\n } else {\r\n selectedEvent.style.height = null;\r\n }\r\n if (width) {\r\n selectedEvent.style.width = \"\".concat(width, \"px\");\r\n } else {\r\n selectedEvent.style.width = null;\r\n }\r\n setTimeout(function () {\r\n setIsLoading(false);\r\n handleCloseModel();\r\n }, 0);\r\n } else {\r\n handleFocusEditor();\r\n var imgElement = \"<img src=\\\"\".concat(link, \"\\\" alt=\\\"Image\\\" style=\\\"\");\r\n if (height) {\r\n imgElement += \"height:\".concat(height, \"px;\");\r\n }\r\n if (width) {\r\n imgElement += \"width:\".concat(width, \"px;\");\r\n }\r\n imgElement += \"\\\"/>\";\r\n document.execCommand(\"insertHTML\", false, imgElement);\r\n // Ensure editor picks up the change\r\n var editorElement = document.querySelector('[contenteditable=\"true\"]');\r\n if (editorElement) {\r\n editorElement.dispatchEvent(new Event(\"input\", {\r\n bubbles: true\r\n }));\r\n }\r\n setIsLoading(false);\r\n handleCloseModel();\r\n }\r\n };\r\n var handleMediaInsert = function handleMediaInsert(data, targetElement) {\r\n var link = data.link,\r\n height = data.height,\r\n width = data.width,\r\n type = data.type,\r\n embed_code = data.embed_code;\r\n var editorNode = editorRef.current;\r\n var iframeHTML = \"\";\r\n if (type === \"general\") {\r\n // Check if it's a direct video link\r\n if (link.match(/\\.(mp4|mov|avi|wmv)$/)) {\r\n iframeHTML = \"<video width=\\\"\".concat(width || \"640\", \"\\\" height=\\\"\").concat(height || \"360\", \"\\\" controls><source src=\\\"\").concat(link, \"\\\" type=\\\"video/mp4\\\"></video>\");\r\n } else {\r\n // Check for specific video platforms\r\n var youtubeRegex = /(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com\\/(?:[^\\/\\n\\s]+\\/\\S+\\/|(?:v|e(?:mbed)?)\\/|\\S*?[?&]v=)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})/;\r\n var vimeoRegex = /(?:https?:\\/\\/)?(?:www\\.)?vimeo.com\\/(\\d+)/;\r\n if (link.match(youtubeRegex)) {\r\n var videoId = link.match(youtubeRegex)[1];\r\n iframeHTML = \"<iframe width=\\\"\".concat(width || \"640\", \"\\\" height=\\\"\").concat(height || \"360\", \"\\\" src=\\\"https://www.youtube.com/embed/\").concat(videoId, \"\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\");\r\n } else if (link.match(vimeoRegex)) {\r\n var _videoId = link.match(vimeoRegex)[1];\r\n iframeHTML = \"<iframe src=\\\"https://player.vimeo.com/video/\".concat(_videoId, \"\\\" width=\\\"\").concat(width || \"640\", \"\\\" height=\\\"\").concat(height || \"360\", \"\\\" frameborder=\\\"0\\\" allow=\\\"autoplay; fullscreen; picture-in-picture\\\" allowfullscreen></iframe>\");\r\n } else {\r\n // Insert custom embed code if available\r\n iframeHTML = embed_code || \"\";\r\n }\r\n }\r\n } else if (type === \"embed\" && embed_code && editorNode) {\r\n iframeHTML = embed_code;\r\n }\r\n if (targetElement && editorNode && iframeHTML) {\r\n handleFocusEditor();\r\n targetElement.parentNode.setAttribute(\"data-mtl-link-type\", type);\r\n targetElement.outerHTML = iframeHTML;\r\n } else if (editorNode && iframeHTML) {\r\n var wrapper = createIframeWrapperWithSettings(iframeHTML, type, function (wrapper) {\r\n var iframe_element = wrapper.querySelector(\"iframe\");\r\n setTargetElement(iframe_element);\r\n setTargetElementType(wrapper.getAttribute(\"data-mtl-link-type\") || \"general\");\r\n setIsOpenModel(\"video\");\r\n });\r\n handleFocusEditor();\r\n // document.execCommand(\"insertHTML\", false, wrapper.outerHTML);\r\n var selection = window.getSelection();\r\n if (!selection.rangeCount) return;\r\n var range = selection.getRangeAt(0);\r\n range.deleteContents();\r\n range.insertNode(wrapper);\r\n\r\n // Move cursor after the inserted element\r\n range.setStartAfter(wrapper);\r\n range.setEndAfter(wrapper);\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n }\r\n setTargetElement(null);\r\n setIsOpenModel(\"\"); // Assuming this is setting some state related to the modal\r\n };\r\n function createIframeWrapperWithSettings(iframeHTML, type, onSettingsClick) {\r\n var iframeElement = document.createElement(\"div\");\r\n iframeElement.innerHTML = iframeHTML;\r\n // Create wrapper\r\n var wrapper = document.createElement(\"div\");\r\n wrapper.className = \"iframe-wrapper\";\r\n wrapper.contentEditable = \"true\";\r\n wrapper.setAttribute(\"data-mtl-link-type\", type);\r\n var overlay = document.createElement(\"div\");\r\n overlay.className = \"iframe-overlay\";\r\n var settingsBtn = document.createElement(\"button\");\r\n settingsBtn.className = \"iframe-settings-btn\";\r\n settingsBtn.contentEditable = \"false\";\r\n settingsBtn.innerHTML = \"<div style=\\\"display: flex; align-items: center;\\\"><svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\"><path fill=\\\"currentColor\\\" d=\\\"M10.275 22q-.425 0-.75-.275t-.375-.7l-.3-2.225q-.325-.125-.612-.3t-.563-.375l-1.55.65q-.625.275-1.25.05t-.975-.8l-1.175-2.05q-.35-.575-.2-1.225t.675-1.075l1.325-1Q4.5 12.5 4.5 12.337v-.675q0-.162.025-.337l-1.325-1Q2.675 9.9 2.525 9.25t.2-1.225L3.9 5.975q.35-.575.975-.8t1.25.05l1.55.65q.275-.2.575-.375t.6-.3l.2-1.65q.075-.675.575-1.113T10.8 2h2.4q.675 0 1.175.438t.575 1.112l.2 1.65q.325.125.613.3t.562.375l1.5-.65q.625-.275 1.263-.05t.987.8l1.175 2.05q.35.575.213 1.225t-.663 1.075L19.125 11.6q-.275.2-.562.3t-.638.1h-2.35q0-1.45-1.037-2.475T12.05 8.5q-1.475 0-2.488 1.013T8.55 12q0 1.2.688 2.1T11 15.35v5.8q0 .35-.2.6t-.525.25M20 22h-6q-.425 0-.712-.288T13 21v-6q0-.425.288-.712T14 14h6q.425 0 .713.288T21 15v2l1.575-1.575q.125-.125.275-.062t.15.237v4.8q0 .175-.15.238t-.275-.063L21 19v2q0 .425-.288.713T20 22\\\"/></svg> <span style=\\\"margin-inline: 8px;\\\">Settings</span></div>\";\r\n settingsBtn.addEventListener(\"click\", function (e) {\r\n e.stopPropagation();\r\n if (typeof onSettingsClick === \"function\") {\r\n onSettingsClick(wrapper);\r\n }\r\n });\r\n\r\n // Build DOM structure\r\n wrapper.appendChild(overlay);\r\n wrapper.appendChild(settingsBtn);\r\n wrapper.appendChild(iframeElement.childNodes[0]);\r\n return wrapper;\r\n }\r\n var handlePrint = function handlePrint() {\r\n var data = editorRef.current.innerHTML;\r\n var iframe = document.createElement(\"iframe\");\r\n iframe.style.display = \"none\";\r\n document.body.appendChild(iframe);\r\n var iframeDoc = iframe.contentDocument || iframe.contentWindow.document;\r\n iframeDoc.write(data);\r\n iframeDoc.close();\r\n iframe.contentWindow.print();\r\n setTimeout(function () {\r\n document.body.removeChild(iframe);\r\n }, 100);\r\n };\r\n var handleCharSelect = function handleCharSelect(e, _char) {\r\n e.preventDefault();\r\n if ((editorRef === null || editorRef === void 0 ? void 0 : editorRef.current) !== null) {\r\n handleFocusEditor();\r\n document.execCommand(\"insertHTML\", false, _char);\r\n setTargetElement(null);\r\n setIsOpenModel(\"\");\r\n }\r\n };\r\n var cleanHTML = function cleanHTML(html) {\r\n var cleanedHTML = html.replace(/style=\"[^\"]*\"/g, \"\");\r\n return cleanedHTML;\r\n };\r\n var onPaste = function onPaste(event) {\r\n event.preventDefault();\r\n navigator.clipboard.read().then(function (clipboardItems) {\r\n clipboardItems.forEach(function (item) {\r\n if (item.types.includes(\"image/png\") || item.types.includes(\"image/jpeg\")) {\r\n item.getType(item.types[0]).then(function (imageBlob) {\r\n var imgElement = \"<img src=\\\"\".concat(URL.createObjectURL(imageBlob), \"\\\" alt=\\\"Image\\\">\");\r\n document.execCommand(\"insertHTML\", false, imgElement);\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading image content:\", error);\r\n });\r\n } else if (item.types.includes(\"text/html\")) {\r\n item.getType(\"text/html\").then(function (htmlBlob) {\r\n htmlBlob.text().then(function (htmlContent) {\r\n var cleanedHTML = cleanHTML(htmlContent);\r\n var withoutComments = cleanedHTML.replace(/<!--[\\s\\S]*?-->/g, \"\");\r\n document.execCommand(\"insertHTML\", false, withoutComments);\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading HTML content:\", error);\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error getting HTML type from ClipboardItem:\", error);\r\n });\r\n } else if (item.types.includes(\"text/plain\")) {\r\n item.getType(\"text/plain\").then(function (textBlob) {\r\n textBlob.text().then(function (text) {\r\n if (isValidURL(text)) {\r\n // Insert the URL as a link\r\n var linkElement = \"<a href=\\\"\".concat(text, \"\\\" target=\\\"_blank\\\">\").concat(text, \"</a>\");\r\n document.execCommand(\"insertHTML\", false, linkElement);\r\n } else {\r\n // Insert plain text\r\n document.execCommand(\"insertText\", false, text);\r\n }\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading text content:\", error);\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error getting text type from ClipboardItem:\", error);\r\n });\r\n }\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading clipboard:\", error);\r\n });\r\n };\r\n var handleBlur = function handleBlur() {\r\n handleSelection();\r\n };\r\n var handleNewDocument = function handleNewDocument() {\r\n editorRef.current.innerHTML = \"\";\r\n };\r\n var handlePreview = function handlePreview() {\r\n setPreviewContent(editorRef === null || editorRef === void 0 ? void 0 : editorRef.current.innerHTML);\r\n setOpenPreview(true);\r\n };\r\n var handleViewSource = function handleViewSource() {\r\n if (!viewSource && editorRef !== null && editorRef !== void 0 && editorRef.current) {\r\n var content = editorRef === null || editorRef === void 0 ? void 0 : editorRef.current.innerHTML;\r\n var formattedContent = transformHTML(content);\r\n setSourceCode(formattedContent);\r\n } else {\r\n setSourceCode(\"\");\r\n }\r\n setViewSource(!viewSource);\r\n };\r\n var toggleFullScreen = function toggleFullScreen() {\r\n setIsFullScreen(!isFullScreen);\r\n };\r\n var handleKeyDown = function handleKeyDown(event) {\r\n if (event.key === \"Escape\") {\r\n setIsFullScreen(false);\r\n }\r\n };\r\n var handlePlaceholder = function handlePlaceholder() {\r\n var editor = editorRef === null || editorRef === void 0 ? void 0 : editorRef.current;\r\n if (!editor) {\r\n return;\r\n }\r\n if (editor.innerText.trim() === \"\") {\r\n editor.classList.add(\"empty\");\r\n setIsPlaceholder(true);\r\n } else {\r\n editor.classList.remove(\"empty\");\r\n setIsPlaceholder(false);\r\n }\r\n };\r\n var handleSelection = function handleSelection() {\r\n var selection = window.getSelection();\r\n if (selection.rangeCount > 0) {\r\n setSelectedRange(selection.getRangeAt(0));\r\n }\r\n };\r\n var restoreSelection = function restoreSelection() {\r\n if (selectedRange) {\r\n var selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(selectedRange);\r\n }\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n var handleFullScreenChange = function handleFullScreenChange() {\r\n setIsFullScreen(document.fullscreenElement !== null);\r\n };\r\n handlePlaceholder();\r\n document.addEventListener(\"keydown\", handleKeyDown);\r\n document.addEventListener(\"input\", handlePlaceholder);\r\n document.addEventListener(\"fullscreenchange\", handleFullScreenChange);\r\n return function () {\r\n document.removeEventListener(\"keydown\", handleKeyDown);\r\n document.removeEventListener(\"input\", handlePlaceholder);\r\n document.removeEventListener(\"fullscreenchange\", handleFullScreenChange);\r\n };\r\n }, []);\r\n var model_component = function model_component() {\r\n if (isOpenModel === \"link\") {\r\n return {\r\n component: /*#__PURE__*/external_react_default.a.createElement(LinkModal, {\r\n onLinkInsert: handleLinkInsert,\r\n item: selectedItem,\r\n setIsOpenModel: setIsOpenModel,\r\n selectedData: selectedData,\r\n imageUrl: imageUrl,\r\n setImageUrl: setImageUrl,\r\n image_handler: image_handler,\r\n setIsLoading: setIsLoading\r\n }),\r\n title: \"\".concat(selectedData !== null && selectedData !== void 0 && selectedData.link ? \"Update\" : \"Insert\", \" Link\")\r\n };\r\n } else if (isOpenModel === \"image\") {\r\n return {\r\n component: /*#__PURE__*/external_react_default.a.createElement(ImageModal, {\r\n onImageInsert: handleImageInsert,\r\n item: selectedItem,\r\n setIsLoading: setIsLoading,\r\n setIsOpenModel: setIsOpenModel,\r\n image_handler: image_handler,\r\n selectedData: selectedData\r\n }),\r\n title: \"\".concat(selectedData !== null && selectedData !== void 0 && selectedData.link ? \"Update\" : \"Insert\", \" Image\")\r\n };\r\n } else if (isOpenModel === \"video\") {\r\n return {\r\n component: /*#__PURE__*/external_react_default.a.createElement(MediaModal, {\r\n onMediaInsert: handleMediaInsert,\r\n targetElement: targetElement,\r\n targetElementType: targetElementType\r\n }),\r\n title: \"\".concat(selectedData !== null && selectedData !== void 0 && selectedData.link ? \"Update\" : \"Insert\", \" Video\")\r\n };\r\n } else if (isOpenModel === \"special_char\") {\r\n return {\r\n component: /*#__PURE__*/external_react_default.a.createElement(SpecialChars, {\r\n handleCharSelect: handleCharSelect\r\n }),\r\n title: \"Insert Special Characters\"\r\n };\r\n }\r\n };\r\n if (theme_config && Object.keys(theme_config).length > 0) {\r\n Object.keys(theme_config).forEach(function (key, index) {\r\n document.documentElement.style.setProperty(\"--editor-\".concat(key), theme_config[key]);\r\n });\r\n }\r\n toolbar = show_final_options(toolbar, remove_from_toolbar, TOOLBAR_ITEMS);\r\n navbar = show_final_options(navbar, remove_from_navbar, NAVBAR_ITEMS);\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (!init) {\r\n if (editorRef.current && value) {\r\n editorRef.current.innerHTML = value;\r\n setInit(true);\r\n }\r\n }\r\n if (!value) {\r\n editorRef.current.innerHTML = \"\";\r\n }\r\n if (getEditorRef) {\r\n getEditorRef(editorRef);\r\n }\r\n }, [isFullScreen, editorRef, value]);\r\n var handlePaste = function handlePaste(e) {\r\n e.preventDefault();\r\n if (!editorRef.current) {\r\n setTimeout(function () {\r\n editorRef.current.focus();\r\n }, 0);\r\n } else {\r\n restoreSelection();\r\n }\r\n navigator.clipboard.read().then(function (clipboardItems) {\r\n clipboardItems.forEach(function (item) {\r\n if (item.types.includes(\"image/png\") || item.types.includes(\"image/jpeg\")) {\r\n item.getType(item.types[0]).then(function (imageBlob) {\r\n var imgElement = \"<img src=\\\"\".concat(URL.createObjectURL(imageBlob), \"\\\" alt=\\\"Image\\\">\");\r\n document.execCommand(\"insertHTML\", false, imgElement);\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading image content:\", error);\r\n });\r\n } else if (item.types.includes(\"text/html\")) {\r\n item.getType(\"text/html\").then(function (htmlBlob) {\r\n htmlBlob.text().then(function (htmlContent) {\r\n var cleanedHTML = cleanHTML(htmlContent);\r\n var withoutComments = cleanedHTML.replace(/<!--[\\s\\S]*?-->/g, \"\");\r\n document.execCommand(\"insertHTML\", false, withoutComments);\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading HTML content:\", error);\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error getting HTML type from ClipboardItem:\", error);\r\n });\r\n } else if (item.types.includes(\"text/plain\")) {\r\n item.getType(\"text/plain\").then(function (textBlob) {\r\n textBlob.text().then(function (text) {\r\n if (isValidURL(text)) {\r\n // Insert the URL as a link\r\n var linkElement = \"<a href=\\\"\".concat(text, \"\\\" target=\\\"_blank\\\">\").concat(text, \"</a>\");\r\n document.execCommand(\"insertHTML\", false, linkElement);\r\n } else {\r\n // Insert plain text\r\n document.execCommand(\"insertText\", false, text);\r\n }\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading text content:\", error);\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error getting text type from ClipboardItem:\", error);\r\n });\r\n }\r\n });\r\n })[\"catch\"](function (error) {\r\n console.error(\"Error reading clipboard:\", error);\r\n });\r\n };\r\n var handle_resize = function handle_resize() {\r\n var hr_1 = document.getElementsByClassName(\"style_wysiwygEditorToolbar__2W7yf\")[0];\r\n if (hr_1) {\r\n setShowHR1(hr_1.offsetHeight > 34);\r\n }\r\n var hr_2 = document.getElementsByClassName(\"style_wysiwygEditorToolbar__2W7yf\")[1];\r\n if (hr_2) {\r\n setShowHR2(hr_2.offsetHeight > 34);\r\n setShowHR3(hr_2.offsetHeight > 65);\r\n }\r\n };\r\n var setCursorAtStart = function setCursorAtStart() {\r\n var editor = editorRef.current;\r\n if (editor) {\r\n var range = document.createRange();\r\n if (editor.childNodes.length > 0) {\r\n range.setStart(editor.childNodes[0], 0);\r\n } else {\r\n range.setStart(editor, 0);\r\n }\r\n range.collapse(true);\r\n var selection = window.getSelection();\r\n selection.removeAllRanges();\r\n selection.addRange(range);\r\n // Update selectedRange state\r\n setSelectedRange(range);\r\n }\r\n };\r\n var handleMouseDown = function handleMouseDown(e, left) {\r\n e.preventDefault();\r\n var startX = e.clientX;\r\n var element = document.querySelector(\".resizeImageWrapper\");\r\n var image_element = document.querySelector(\".resizer-image\");\r\n var startWidth = parseFloat(image_element.style.width);\r\n var startHeight = parseFloat(image_element.style.height);\r\n if (isNaN(startHeight)) {\r\n startHeight = parseFloat(image_element.offsetHeight);\r\n }\r\n if (isNaN(startWidth)) {\r\n startWidth = parseFloat(image_element.offsetWidth);\r\n }\r\n var heightRatio = startHeight / startWidth;\r\n var handleMouseMove = function handleMouseMove(e) {\r\n var newWidth = startWidth + (e.clientX - startX);\r\n if (left) {\r\n newWidth = startWidth - (e.clientX - startX);\r\n }\r\n var width = newWidth > 50 ? newWidth : 50;\r\n var height = heightRatio * width;\r\n height = Math.round(height);\r\n width = Math.round(width);\r\n element.style.width = \"\".concat(width, \"px\");\r\n element.style.height = \"\".concat(height, \"px\");\r\n image_element.style.width = \"\".concat(width, \"px\");\r\n image_element.style.height = \"\".concat(height, \"px\");\r\n };\r\n var handleMouseUp = function handleMouseUp() {\r\n window.removeEventListener(\"mousemove\", handleMouseMove);\r\n window.removeEventListener(\"mouseup\", handleMouseUp);\r\n };\r\n window.addEventListener(\"mousemove\", handleMouseMove);\r\n window.addEventListener(\"mouseup\", handleMouseUp);\r\n };\r\n var handleClickImage = function handleClickImage(event) {\r\n if (event.target.tagName === \"IMG\" && editorRef.current.contains(event.target)) {\r\n var _event$target$parentE, _event$target$parentE2;\r\n var hasClass = (_event$target$parentE = event.target.parentElement) === null || _event$target$parentE === void 0 ? void 0 : (_event$target$parentE2 = _event$target$parentE.classList) === null || _event$target$parentE2 === void 0 ? void 0 : _event$target$parentE2.contains(\"resizeImageWrapper\");\r\n if (hasClass) return;\r\n var image_element = document.querySelector(\".resizer-image\");\r\n if (image_element) remove_resizer();\r\n var imgElement = event.target;\r\n var imageWidth = imgElement.offsetWidth;\r\n var divElement = document.createElement(\"div\");\r\n divElement.style.display = \"inline-block\";\r\n divElement.style.width = \"\".concat(imageWidth, \"px\");\r\n divElement.classList.add(\"resizeImageWrapper\");\r\n var resizer = document.createElement(\"div\");\r\n resizer.classList.add(\"resizer\");\r\n resizer.onmousedown = handleMouseDown;\r\n var resizerRight = document.createElement(\"div\");\r\n resizerRight.classList.add(\"resizer\", \"topRight\");\r\n resizerRight.onmousedown = handleMouseDown;\r\n var resizerBottom = document.createElement(\"div\");\r\n resizerBottom.classList.add(\"resizer\", \"bottomLeft\");\r\n resizerBottom.onmousedown = function (e) {\r\n return handleMouseDown(e, \"left\");\r\n };\r\n var resizerBottomRight = document.createElement(\"div\");\r\n resizerBottomRight.classList.add(\"resizer\", \"topLeft\");\r\n resizerBottomRight.onmousedown = function (e) {\r\n return handleMouseDown(e, \"left\");\r\n };\r\n imgElement.classList.add(\"resizer-image\");\r\n var clonedImgElement = imgElement.cloneNode(true);\r\n divElement.appendChild(clonedImgElement);\r\n divElement.appendChild(resizer);\r\n divElement.appendChild(resizerRight);\r\n divElement.appendChild(resizerBottom);\r\n divElement.appendChild(resizerBottomRight);\r\n imgElement.parentNode.replaceChild(divElement, imgElement);\r\n } else {\r\n var _event$target, _event$target$classLi, _event$target2, _event$target2$parent, _event$target2$parent2;\r\n var target = (_event$target = event.target) === null || _event$target === void 0 ? void 0 : (_event$target$classLi = _event$target.classList) === null || _event$target$classLi === void 0 ? void 0 : _event$target$classLi.contains(\"resizeImageWrapper\");\r\n var _hasClass = (_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : (_event$target2$parent = _event$target2.parentElement) === null || _event$target2$parent === void 0 ? void 0 : (_event$target2$parent2 = _event$target2$parent.classList) === null || _event$target2$parent2 === void 0 ? void 0 : _event$target2$parent2.contains(\"resizeImageWrapper\");\r\n if (!target && !_hasClass) {\r\n remove_resizer();\r\n }\r\n }\r\n };\r\n Object(external_react_[\"useEffect\"])(function () {\r\n handle_resize();\r\n setCursorAtStart();\r\n var editor = editorRef.current;\r\n if (editor) {\r\n window.addEventListener(\"click\", handleClickImage);\r\n editor.addEventListener(\"mouseup\", handleSelection);\r\n editor.addEventListener(\"keyup\", handleSelection);\r\n }\r\n window.addEventListener(\"resize\", handle_resize);\r\n return function () {\r\n window.removeEventListener(\"resize\", handle_resize);\r\n if (editor) {\r\n window.removeEventListener(\"click\", handleClickImage);\r\n editor.removeEventListener(\"mouseup\", handleSelection);\r\n editor.removeEventListener(\"keyup\", handleSelection);\r\n }\r\n };\r\n }, [editorRef]);\r\n Object(external_react_[\"useEffect\"])(function () {\r\n if (isFullScreen || isOpenModel || viewSource || openPreview) {\r\n document.body.style.overflow = \"hidden\";\r\n } else {\r\n document.body.style.overflow = \"auto\";\r\n }\r\n }, [isFullScreen, isOpenModel, viewSource, openPreview]);\r\n var dynamicStyle = isFullScreen && document.getElementById(\"action-components\") ? {\r\n height: \"calc(100vh - \".concat(document.getElementById(\"action-components\").offsetHeight, \"px - 22px)\")\r\n } : {};\r\n return /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(\"div\", _extends({}, mainProps, {\r\n className: \"\".concat(style_module_default.a.reactEditorMain, \" \").concat(isFullScreen ? style_module_default.a.fullScreen : \"\"),\r\n id: \"react-editor\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n id: \"action-components\",\r\n className: \"\".concat(style_module_default.a.actionComponents)\r\n }, navbar.length > 0 && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.wysiwygEditorToolbar),\r\n id: \"editor-navbar\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"hr\", {\r\n className: style_module_default.a.hr1,\r\n style: {\r\n display: showHR1 ? \"block\" : \"none\"\r\n }\r\n }), navbar.map(function (item, index) {\r\n var is_line = Boolean(item === \"|\");\r\n var is_file = item === \"file\" || item.name === \"file\";\r\n var is_view = item === \"view\" || item.name === \"view\";\r\n var is_format = item === \"format\" || item.name === \"format\";\r\n var is_insert = item === \"insert\" || item.name === \"insert\";\r\n var is_copy = item === \"copy\" || item.name === \"copy\";\r\n var is_cut = item === \"cut\" || item.name === \"cut\";\r\n var is_paste = item === \"paste\" || item.name === \"paste\";\r\n var is_select_all = item === \"select_all\" || item.name === \"select_all\";\r\n var is_image = item === \"image\" || item.name === \"image\";\r\n var is_link = item === \"link\" || item.name === \"link\";\r\n var is_video = item === \"video\" || item.name === \"video\";\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index)\r\n }, is_line && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.verticalLine\r\n }), is_file && /*#__PURE__*/external_react_default.a.createElement(SelectFileOptions_SelectFileOptions, {\r\n handleNewDocument: handleNewDocument,\r\n handlePreview: handlePreview,\r\n handlePrint: handlePrint,\r\n item: item,\r\n remove_from_navbar: remove_from_navbar\r\n }), is_view && /*#__PURE__*/external_react_default.a.createElement(SelectView_SelectFileOptions, {\r\n isFullScreen: isFullScreen,\r\n handleViewSource: handleViewSource,\r\n toggleFullScreen: toggleFullScreen,\r\n item: item,\r\n isPlaceholder: isPlaceholder,\r\n placeholder: placeholder,\r\n value: value,\r\n remove_from_navbar: remove_from_navbar\r\n }), is_insert && /*#__PURE__*/external_react_default.a.createElement(SelectFileOptions, {\r\n onSelectOption: handleOpenModel,\r\n handleInsertHR: handleInsertHRClick,\r\n item: item,\r\n remove_from_navbar: remove_from_navbar\r\n }), is_format && /*#__PURE__*/external_react_default.a.createElement(SelectFormations_SelectFileOptions, {\r\n item: item,\r\n isFullScreen: isFullScreen,\r\n remove_from_navbar: remove_from_navbar,\r\n editorRef: editorRef\r\n }), is_select_all && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleSelectAll,\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Select All\",\r\n disabled: isPlaceholder && placeholder && !value\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(SelectAll, null))), is_image && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"image\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Upload Image\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(ImageIcon, null))), is_link && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"link\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Add Link\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(LinkIcon, null))), is_video && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"video\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Upload Video\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(VideoIcon, null))), is_copy && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"copy\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(CopyIcon, null),\r\n title: \"Copy\",\r\n item: item,\r\n disabled: isPlaceholder && placeholder && !value\r\n })), is_cut && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"cut\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(CutIcon, null),\r\n title: \"Cut\",\r\n item: item,\r\n disabled: isPlaceholder && placeholder && !value\r\n })), is_paste && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handlePaste,\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Paste\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(PasteIcon, null))));\r\n })), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.wysiwygEditorToolbar, \" \").concat(style_module_default.a.wysiwygEditorToolbarWrapper)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"hr\", {\r\n className: style_module_default.a.hr1,\r\n style: {\r\n display: showHR2 ? \"block\" : \"none\"\r\n }\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"hr\", {\r\n className: \"\".concat(style_module_default.a.hr1, \" \").concat(style_module_default.a.hr2),\r\n style: {\r\n display: showHR3 ? \"block\" : \"none\"\r\n }\r\n }), toolbar.map(function (item, index) {\r\n var is_line = Boolean(item === \"|\");\r\n var is_undo = item === \"undo\" || item.name === \"undo\";\r\n var is_redo = item === \"redo\" || item.name === \"redo\";\r\n var is_bold = item === \"bold\" || item.name === \"bold\";\r\n var is_italic = item === \"italic\" || item.name === \"italic\";\r\n var is_underline = item === \"underline\" || item.name === \"underline\";\r\n var is_superscript = item === \"superscript\" || item.name === \"superscript\";\r\n var is_subscript = item === \"subscript\" || item.name === \"subscript\";\r\n var is_alignLeft = item === \"alignLeft\" || item.name === \"alignLeft\";\r\n var is_alignCenter = item === \"alignCenter\" || item.name === \"alignCenter\";\r\n var is_alignRight = item === \"alignRight\" || item.name === \"alignRight\";\r\n var is_alignJustify = item === \"alignJustify\" || item.name === \"alignJustify\";\r\n var is_alignment = item === \"alignment\" || item.name === \"alignment\";\r\n var is_indent = item === \"indent\" || item.name === \"indent\";\r\n var is_outdent = item === \"outdent\" || item.name === \"outdent\";\r\n var is_orderedList = item === \"orderedList\" || item.name === \"orderedList\";\r\n var is_unorderedList = item === \"unorderedList\" || item.name === \"unorderedList\";\r\n var is_removeFormat = item === \"removeFormat\" || item.name === \"removeFormat\";\r\n var is_textColor = item === \"textColor\" || item.name === \"textColor\";\r\n var is_backgroundColor = item === \"backgroundColor\" || item.name === \"backgroundColor\";\r\n var is_ltr = item === \"ltr\" || item.name === \"ltr\";\r\n var is_rtl = item === \"rtl\" || item.name === \"rtl\";\r\n var is_format = item === \"format\" || item.name === \"format\";\r\n var is_fontfamily = item === \"fontfamily\" || item.name === \"fontfamily\";\r\n var is_fontSize = item === \"fontsize\" || item.name === \"fontsize\";\r\n var is_copy = item === \"copy\" || item.name === \"copy\";\r\n var is_cut = item === \"cut\" || item.name === \"cut\";\r\n var is_paste = item === \"paste\" || item.name === \"paste\";\r\n var is_select_all = item === \"select_all\" || item.name === \"select_all\";\r\n var is_image = item === \"image\" || item.name === \"image\";\r\n var is_link = item === \"link\" || item.name === \"link\";\r\n var is_video = item === \"video\" || item.name === \"video\";\r\n var source_code = item === \"source_code\" || item.name === \"source_code\";\r\n var is_fullscreen = item === \"full_screen\" || item.name === \"full_screen\";\r\n var is_hr_line = item === \"horizontal_line\" || item.name === \"horizontal_line\";\r\n var is_special_char = item === \"special_character\" || item.name === \"special_character\";\r\n return /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n key: \"key\".concat(index)\r\n }, is_line && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.verticalLine\r\n }), is_undo && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"undo\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(UndoIcon, null),\r\n title: item.title ? item.title : \"Undo\",\r\n item: item\r\n }), is_redo && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"redo\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(RedoIcon, null),\r\n title: \"Redo\",\r\n item: item\r\n }), is_format && /*#__PURE__*/external_react_default.a.createElement(components_SelectFormat, {\r\n remove_from_toolbar: remove_from_toolbar,\r\n editorRef: editorRef\r\n }), is_fontfamily && /*#__PURE__*/external_react_default.a.createElement(components_SelectFontFamily, {\r\n editorRef: editorRef\r\n }), is_fontSize && /*#__PURE__*/external_react_default.a.createElement(components_FontSize, {\r\n editorRef: editorRef\r\n }), is_bold && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"bold\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(BoldIcon, null),\r\n title: \"Bold\",\r\n item: item\r\n }), is_italic && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"italic\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(ItalicIcon, null),\r\n title: \"Italic\",\r\n item: item\r\n }), is_underline && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"underline\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(UnderlineIcon, null),\r\n title: \"Underline\",\r\n item: item\r\n }), is_superscript && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"superscript\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(SuperscriptIcon, null),\r\n title: \"Superscript\",\r\n item: item\r\n }), is_subscript && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"subscript\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(SubscriptIcon, null),\r\n title: \"Subscript\",\r\n item: item\r\n }), is_alignment && /*#__PURE__*/external_react_default.a.createElement(components_AlignmentOptions, {\r\n editorRef: editorRef\r\n }), is_alignLeft && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"justifyLeft\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignLeft, null),\r\n title: \"Align Left\",\r\n item: item\r\n }), is_alignCenter && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"justifyCenter\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignCenter, null),\r\n title: \"Align Center\",\r\n item: item\r\n }), is_alignRight && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"justifyRight\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignRight, null),\r\n title: \"Align Right\",\r\n item: item\r\n }), is_alignJustify && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"justifyFull\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(AlignJustify, null),\r\n title: \"Align Justify\",\r\n item: item\r\n }), is_indent && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"indent\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(IncreaseIndentIcon, null),\r\n title: \"Increase IndentIcon\",\r\n item: item\r\n }), is_outdent && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"outdent\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(DecreaseIndentIcon, null),\r\n title: \"Decrease IndentIcon\",\r\n item: item\r\n }), is_orderedList && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"insertOrderedList\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(OrderdList, null),\r\n title: \"Insert/Remove Numbered List\",\r\n item: item\r\n }), is_unorderedList && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"insertUnorderedList\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(UnorderdList, null),\r\n title: \"Insert/Remove Bulleted List\",\r\n item: item\r\n }), is_removeFormat && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"removeFormat\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(ClearFormatting, null),\r\n title: \"Remove Format\",\r\n item: item\r\n }), is_textColor && /*#__PURE__*/external_react_default.a.createElement(ManageColors, {\r\n type: \"foreColor\",\r\n title: \"Text Color\",\r\n item: item,\r\n editorRef: editorRef\r\n }), is_backgroundColor && /*#__PURE__*/external_react_default.a.createElement(ManageColors, {\r\n type: \"hiliteColor\",\r\n title: \"Background Color\",\r\n item: item,\r\n editorRef: editorRef\r\n }), is_ltr && /*#__PURE__*/external_react_default.a.createElement(SimpleButton, {\r\n name: \"ltr\",\r\n title: \"Left To Right\",\r\n item: item,\r\n icon: /*#__PURE__*/external_react_default.a.createElement(LTRIcon, null),\r\n editorRef: editorRef\r\n }), is_rtl && /*#__PURE__*/external_react_default.a.createElement(SimpleButton, {\r\n name: \"rtl\",\r\n title: \"Right To Left\",\r\n item: item,\r\n icon: /*#__PURE__*/external_react_default.a.createElement(RTLIcon, null),\r\n editorRef: editorRef\r\n }), is_select_all && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleSelectAll,\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Select All\",\r\n disabled: isPlaceholder && placeholder && !value\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(SelectAll, null)), is_image && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"image\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Upload Image\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(ImageIcon, null)), is_link && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"link\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Add Link\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(LinkIcon, null)), is_video && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"video\", item);\r\n },\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Upload Video\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(VideoIcon, null)), is_copy && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"copy\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(CopyIcon, null),\r\n title: \"Copy\",\r\n item: item,\r\n disabled: isPlaceholder && placeholder && !value\r\n }), is_cut && /*#__PURE__*/external_react_default.a.createElement(components_ButtonFunction, {\r\n editorRef: editorRef,\r\n name: \"cut\",\r\n icon: /*#__PURE__*/external_react_default.a.createElement(CutIcon, null),\r\n title: \"Cut\",\r\n item: item,\r\n disabled: isPlaceholder && placeholder && !value\r\n }), is_paste && /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handlePaste,\r\n title: item !== null && item !== void 0 && item.title ? item.title : \"Paste\"\r\n }, item !== null && item !== void 0 && item.icon ? item.icon : /*#__PURE__*/external_react_default.a.createElement(PasteIcon, null)), source_code && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleViewSource,\r\n title: (item === null || item === void 0 ? void 0 : item.title) || \"Source Code\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(CodeIcon, null))), is_fullscreen && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: toggleFullScreen,\r\n title: isFullScreen ? (item === null || item === void 0 ? void 0 : item.title) || \"Exit Full Screen\" : (item === null || item === void 0 ? void 0 : item.title) || \"Full Screen\"\r\n }, isFullScreen ? /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(FullscreenExit, null)) : /*#__PURE__*/external_react_default.a.createElement(external_react_default.a.Fragment, null, /*#__PURE__*/external_react_default.a.createElement(FullscreenIcon, null)))), is_hr_line && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: handleInsertHRClick,\r\n title: (item === null || item === void 0 ? void 0 : item.title) || \"Horizontal Line\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(HorizontalLineIcon, null))), is_special_char && /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: style_module_default.a.increaseIconSize\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"button\", {\r\n onClick: function onClick(e) {\r\n return handleOpenModel(e, \"special_char\");\r\n },\r\n title: (item === null || item === void 0 ? void 0 : item.title) || \"Special Char\"\r\n }, /*#__PURE__*/external_react_default.a.createElement(SpecialCharIcon, null))));\r\n }))), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n className: \"\".concat(style_module_default.a.content__editable__container)\r\n }, /*#__PURE__*/external_react_default.a.createElement(\"div\", _extends({}, others, {\r\n className: \"\".concat(style_module_default.a.mlMainContentBox),\r\n autoFocus: isFullScreen,\r\n contentEditable: true,\r\n ref: editorRef,\r\n onPaste: onPaste,\r\n spellCheck: \"true\",\r\n onInput: handleInput,\r\n onBlur: handleBlur,\r\n \"data-placeholder\": placeholder,\r\n onKeyDown: handleEditorKeyDown\r\n // id=\"editable\"\r\n ,\r\n style: src_objectSpread(src_objectSpread({}, style), dynamicStyle)\r\n })), /*#__PURE__*/external_react_default.a.createElement(components_RightClickLinkPopup, {\r\n editorRef: editorRef,\r\n setIsOpenModel: setIsOpenModel,\r\n setSelectedData: setSelectedData,\r\n setSelectedEvent: setSelectedEvent,\r\n setImageUrl: setImageUrl,\r\n selectedEvent: selectedEvent,\r\n handleRemoveLink: handleRemoveLink,\r\n selectedRange: selectedRange\r\n }))), isLoading && /*#__PURE__*/external_react_default.a.createElement(components_ViewLoadingModel, {\r\n viewSource: viewSource,\r\n setViewSource: setViewSource,\r\n sourceCode: sourceCode,\r\n setSourceCode: setSourceCode,\r\n handleSaveSource: handleSaveSource\r\n }), isOpenModel && /*#__PURE__*/external_react_default.a.createElement(Model, {\r\n isOpen: isOpenModel,\r\n onClose: handleCloseModel,\r\n title: model_component().title\r\n }, model_component().component), viewSource && /*#__PURE__*/external_react_default.a.createElement(ViewSourceModal, {\r\n viewSource: viewSource,\r\n setViewSource: setViewSource,\r\n sourceCode: sourceCode,\r\n setSourceCode: setSourceCode,\r\n handleSaveSource: handleSaveSource\r\n }), openPreview && /*#__PURE__*/external_react_default.a.createElement(PreviewModel, {\r\n openPreview: openPreview,\r\n setOpenPreview: setOpenPreview,\r\n previewContent: previewContent\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n id: \"modal-root\"\r\n }), /*#__PURE__*/external_react_default.a.createElement(\"div\", {\r\n id: \"full-screen-overlay\"\r\n }));\r\n}\r\n\r\n/***/ })\r\n/******/ ]);","import ReactEditor from \"react-text-editor-kit/react-editor/build/index.js\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface FreeEditorProps {\r\n value: string;\r\n name: string;\r\n onChange: (content: string) => void;\r\n label?: string;\r\n required?: boolean;\r\n placeholder?: string;\r\n parentClass?: string;\r\n height?: number;\r\n disabled?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst FreeEditor = ({\r\n value = \"\",\r\n name = \"\",\r\n onChange,\r\n label = \"\",\r\n required = false,\r\n placeholder = \"\",\r\n parentClass = \"col-span-12\",\r\n height = 300,\r\n disabled = false,\r\n errorMessage = \"\",\r\n}: FreeEditorProps) => {\r\n const getEditorRef = (_ref: unknown) => {};\r\n\r\n return (\r\n <div\r\n className={joinClasses(crudClasses.field.wrapper, parentClass)}\r\n id={`field-${name}`}\r\n >\r\n {label && <InputLabel label={label} required={required} />}\r\n\r\n <ReactEditor\r\n value={value}\r\n onChange={(content: string) => onChange?.(content || \"\")}\r\n getEditorRef={getEditorRef}\r\n placeholder={placeholder}\r\n mainProps={{\r\n className: `${disabled ? \"pointer-events-none opacity-70\" : \"\"}`,\r\n style: { minHeight: `${height}px` },\r\n }}\r\n />\r\n\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FreeEditor;\r\n","import React, { useEffect } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface CheckboxOption {\r\n label: string;\r\n value: any;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface CheckboxProps {\r\n name: string;\r\n label?: string;\r\n options: CheckboxOption[];\r\n value: any;\r\n onChange: (value: any, name?: string) => void;\r\n disabled?: boolean;\r\n required?: boolean;\r\n parentClass?: string;\r\n className?: string;\r\n multiSelect?: boolean;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Checkbox = ({\r\n name = \"\",\r\n label = \"\",\r\n options = [],\r\n value = null,\r\n onChange,\r\n disabled = false,\r\n required = false,\r\n parentClass = \"col-span-12\",\r\n className = \"\",\r\n errorMessage = \"\",\r\n multiSelect = false,\r\n}: CheckboxProps) => {\r\n const multiple = Array.isArray(options) && options.length > 0;\r\n\r\n const isChecked = (optionValue?: any) => {\r\n if (multiple) {\r\n if (!multiSelect) return value === optionValue;\r\n return Array.isArray(value) && value.includes(optionValue);\r\n }\r\n return Boolean(value);\r\n };\r\n\r\n const handleSingleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange?.(e.target.checked, name);\r\n };\r\n\r\n const handleMultipleChange = (optionValue: any, checked: boolean) => {\r\n if (!onChange) return;\r\n\r\n if (!multiSelect) {\r\n if (checked) {\r\n onChange(optionValue, name);\r\n } else {\r\n onChange(\"\", name);\r\n }\r\n } else {\r\n const newValue = Array.isArray(value) ? [...value] : [];\r\n if (checked) {\r\n if (!newValue.includes(optionValue)) newValue.push(optionValue);\r\n } else {\r\n const index = newValue.indexOf(optionValue);\r\n if (index > -1) newValue.splice(index, 1);\r\n }\r\n onChange(newValue, name);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n let initialVal;\r\n\r\n if (multiple) {\r\n if (multiSelect) {\r\n // Ensure array for multiselect\r\n initialVal = Array.isArray(value) ? value : [];\r\n } else {\r\n // Single select from multiple options\r\n initialVal = value || \"\";\r\n }\r\n } else {\r\n // Single checkbox\r\n initialVal = Boolean(value);\r\n }\r\n\r\n setTimeout(() => {\r\n onChange?.(initialVal, name);\r\n }, 100);\r\n }, []);\r\n\r\n if (multiple) {\r\n return (\r\n <>\r\n <div className={joinClasses(crudClasses.field.wrapper, parentClass)}>\r\n <InputLabel label={label} required={required} />\r\n <div className=\"flex flex-col space-y-2\">\r\n {options.map((opt, idx) => (\r\n <div key={opt.value || opt.label} className=\"flex items-center\">\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n id={`field-${name}`}\r\n value={opt.value}\r\n checked={isChecked(opt.value)}\r\n disabled={disabled || Boolean(opt.disabled)}\r\n required={required && idx === 0}\r\n onChange={(e) =>\r\n handleMultipleChange(opt.value, e.target.checked)\r\n }\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"h-4 w-4 cursor-pointer text-blue-600 border-gray-300 rounded focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400\",\r\n className,\r\n )}\r\n />\r\n {opt.label && (\r\n <label\r\n htmlFor={name}\r\n className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 select-none\"\r\n >\r\n {opt.label}\r\n </label>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n \"flex items-center\",\r\n parentClass,\r\n )}\r\n >\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n checked={isChecked()}\r\n disabled={disabled}\r\n required={required}\r\n onChange={handleSingleChange}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"h-4 w-4 text-blue-600 cursor-pointer border-gray-300 rounded focus:ring-2 focus:ring-blue-500 dark:focus:ring-blue-400\",\r\n className,\r\n )}\r\n />\r\n {label && (\r\n <label\r\n htmlFor={name}\r\n className=\"ml-2 text-sm text-gray-700 dark:text-gray-200 select-none\"\r\n >\r\n {label}\r\n </label>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Checkbox;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype MediaValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface AudioPickerProps {\r\n label?: string;\r\n value: MediaValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n id: string;\r\n dragDrop?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxSize?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst AudioPicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"audio/*\",\r\n id,\r\n dragDrop = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n maxSize = 0,\r\n}: AudioPickerProps) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [audio, setAudio] = useState<{ file?: File; preview?: string } | null>(\r\n null,\r\n );\r\n const [isDragging, setIsDragging] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const maxSizeBytes = maxSize * 1024 * 1024;\r\n\r\n useEffect(() => {\r\n if (!value) {\r\n cleanupAudio();\r\n setAudio(null);\r\n return;\r\n }\r\n\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n setAudio({ file: value, preview });\r\n\r\n return () => {\r\n URL.revokeObjectURL(preview);\r\n };\r\n } else if (typeof value === \"string\") {\r\n setAudio({ preview: value });\r\n } else if (value?.preview) {\r\n setAudio(value);\r\n }\r\n }, [value]);\r\n\r\n const cleanupAudio = () => {\r\n if (audio?.preview && audio.preview.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(audio.preview);\r\n }\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) {\r\n return;\r\n }\r\n const file = files[0];\r\n\r\n if (maxSizeBytes && file.size > maxSizeBytes) {\r\n enqueueSnackbar(\r\n `Audio is too large. Maximum allowed size is ${maxSize} MB`,\r\n { variant: \"warning\" },\r\n );\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n cleanupAudio();\r\n setAudio({ file, preview });\r\n onChange?.(file);\r\n };\r\n\r\n const removeAudio = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n\r\n cleanupAudio();\r\n setAudio(null);\r\n onChange?.(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"audio/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.audio,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-lg p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !audio}\r\n className=\"absolute opacity-0 right-[50%] top-[80%] -translate-y-1/2 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {audio ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"relative w-full\">\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeAudio}\r\n className=\"absolute top-0 -right-2 bg-red-500 text-white rounded-full p-1 shadow-lg hover:bg-red-600 transition-colors z-10 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 dark:focus:ring-offset-gray-800\"\r\n aria-label=\"Remove audio\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n\r\n <audio\r\n key={audio.preview}\r\n src={audio.preview}\r\n controls\r\n controlsList=\"nodownload\"\r\n />\r\n </div>\r\n <ButtonComponent type=\"button\" onClick={handleButtonClick}>\r\n <span>Change Audio File</span>\r\n </ButtonComponent>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon icon=\"mdi:music\" className=\"text-gray-400 w-10 h-10\" />\r\n </div>\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n >\r\n <span>Choose Audio File</span>\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your audio file here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {dragDrop && isDragging && !audio && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop audio here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default AudioPicker;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport ImageCropperModal from \"./ImageCropperModal\";\r\nimport Button from \"../../Button/Button\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype ImageValueItem = File | { file?: File; preview?: string } | string;\r\n\r\ninterface GalleryItem {\r\n id: string;\r\n file: File | null;\r\n preview: string;\r\n createdBlobUrl?: string;\r\n}\r\n\r\ninterface MultiImagePickerProps {\r\n label?: string;\r\n value: ImageValueItem[];\r\n onChange: (files: ImageValueItem[]) => void;\r\n required?: boolean;\r\n accept?: string;\r\n aspect?: number | string;\r\n id: string;\r\n dragDrop?: boolean;\r\n cropImage?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxImages?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst toGalleryItem = (item: ImageValueItem): GalleryItem | null => {\r\n if (!item) {\r\n return null;\r\n }\r\n\r\n if (item instanceof File) {\r\n const preview = URL.createObjectURL(item);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n }\r\n\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: null,\r\n preview: item,\r\n };\r\n }\r\n\r\n if (typeof item === \"object\") {\r\n if (item.preview) {\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item.file || null,\r\n preview: item.preview,\r\n };\r\n }\r\n if (item.file) {\r\n const preview = URL.createObjectURL(item.file);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file: item.file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst MultiImagePicker = ({\r\n label = \"\",\r\n value = [],\r\n onChange,\r\n required = false,\r\n accept = \"image/*\",\r\n aspect = \"1\",\r\n id,\r\n dragDrop = false,\r\n cropImage = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n maxImages,\r\n errorMessage = \"\",\r\n}: MultiImagePickerProps) => {\r\n const [images, setImages] = useState<GalleryItem[]>([]);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [cropModalOpen, setCropModalOpen] = useState(false);\r\n const [cropSource, setCropSource] = useState(\"\");\r\n const [selectedFileType, setSelectedFileType] = useState(\"image/jpeg\");\r\n const [selectedFileName, setSelectedFileName] = useState(\"cropped-image\");\r\n const [cropTargetId, setCropTargetId] = useState<string | null>(null);\r\n\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n const replaceInputRef = useRef<HTMLInputElement | null>(null);\r\n const cropSourceUrlRef = useRef(\"\");\r\n const imagesRef = useRef<GalleryItem[]>([]);\r\n\r\n useEffect(() => {\r\n imagesRef.current = images;\r\n }, [images]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n imagesRef.current.forEach((img) => {\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n });\r\n if (cropSourceUrlRef.current) {\r\n URL.revokeObjectURL(cropSourceUrlRef.current);\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!Array.isArray(value)) {\r\n setImages([]);\r\n return;\r\n }\r\n\r\n const nextItems = value\r\n .map((item) => toGalleryItem(item))\r\n .filter(Boolean) as GalleryItem[];\r\n\r\n setImages((prev) => {\r\n prev.forEach((img) => {\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n });\r\n return nextItems;\r\n });\r\n }, [value]);\r\n\r\n const remainingSlots =\r\n typeof maxImages === \"number\" && maxImages > 0\r\n ? Math.max(maxImages - images.length, 0)\r\n : Number.POSITIVE_INFINITY;\r\n\r\n const closeCropModal = () => {\r\n setCropModalOpen(false);\r\n if (cropSourceUrlRef.current) {\r\n URL.revokeObjectURL(cropSourceUrlRef.current);\r\n cropSourceUrlRef.current = \"\";\r\n }\r\n setCropSource(\"\");\r\n setCropTargetId(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const openCropModal = (item: GalleryItem) => {\r\n setCropSource(item.preview);\r\n setSelectedFileType(item.file?.type || \"image/jpeg\");\r\n setSelectedFileName(\r\n (item.file?.name || \"cropped-image\").replace(/\\.[^/.]+$/, \"\"),\r\n );\r\n setCropTargetId(item.id);\r\n setCropModalOpen(true);\r\n };\r\n\r\n const handleCroppedImage = (croppedFile: File) => {\r\n const preview = URL.createObjectURL(croppedFile);\r\n\r\n setImages((prev) => {\r\n const next = prev.map((img) => {\r\n if (img.id !== cropTargetId) {\r\n return img;\r\n }\r\n\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n\r\n return {\r\n ...img,\r\n file: croppedFile,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n\r\n return next;\r\n });\r\n\r\n closeCropModal();\r\n };\r\n\r\n const addFiles = (files: FileList | null) => {\r\n if (!files || files.length === 0 || remainingSlots === 0) {\r\n return;\r\n }\r\n\r\n const selected = Array.from(files)\r\n .filter((file) => file.type.includes(\"image/\"))\r\n .slice(0, remainingSlots);\r\n\r\n if (selected.length === 0) {\r\n return;\r\n }\r\n\r\n const mapped: GalleryItem[] = selected.map((file) => {\r\n const preview = URL.createObjectURL(file);\r\n return {\r\n id: `${Date.now()}-${Math.random()}`,\r\n file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n setImages((prev) => {\r\n const next = [...prev, ...mapped];\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n return next;\r\n });\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const removeImage = (idToRemove: string) => {\r\n setImages((prev) => {\r\n const target = prev.find((img) => img.id === idToRemove);\r\n if (target?.createdBlobUrl) {\r\n URL.revokeObjectURL(target.createdBlobUrl);\r\n }\r\n const next = prev.filter((img) => img.id !== idToRemove);\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n return next;\r\n });\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleReplaceClick = (idToReplace: string) => {\r\n setCropTargetId(idToReplace);\r\n replaceInputRef.current?.click();\r\n };\r\n\r\n const handleReplaceImage = (files: FileList | null) => {\r\n if (!files || files.length === 0 || !cropTargetId) {\r\n return;\r\n }\r\n\r\n const file = Array.from(files).find((item) => item.type.includes(\"image/\"));\r\n if (!file) {\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n\r\n setImages((prev) => {\r\n const next = prev.map((img) => {\r\n if (img.id !== cropTargetId) {\r\n return img;\r\n }\r\n\r\n if (img.createdBlobUrl) {\r\n URL.revokeObjectURL(img.createdBlobUrl);\r\n }\r\n\r\n return {\r\n ...img,\r\n file,\r\n preview,\r\n createdBlobUrl: preview,\r\n };\r\n });\r\n\r\n onChange?.(\r\n next.map((img) => {\r\n if (img.file) {\r\n return img.file;\r\n }\r\n return img.preview;\r\n }),\r\n );\r\n\r\n return next;\r\n });\r\n\r\n setCropTargetId(null);\r\n if (replaceInputRef.current) {\r\n replaceInputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n addFiles(e.dataTransfer?.files || null);\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n const canSelectMore =\r\n typeof maxImages === \"number\" && maxImages > 0\r\n ? images.length < maxImages\r\n : true;\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.multiImage,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-md p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n multiple\r\n onChange={(e) => addFiles(e.target.files)}\r\n required={required && images.length === 0}\r\n className=\"absolute opacity-0 pointer-events-none h-1 w-1\"\r\n />\r\n <input\r\n ref={replaceInputRef}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleReplaceImage(e.target.files)}\r\n className=\"absolute opacity-0 pointer-events-none h-1 w-1\"\r\n />\r\n\r\n {images.length === 0 ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon\r\n icon=\"ri:multi-image-fill\"\r\n className=\"text-gray-400 w-10 h-10\"\r\n />\r\n </div>\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n <span className=\"text-sm font-medium\">Choose Images</span>\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your images here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n ) : (\r\n <>\r\n <div className=\"flex items-center justify-between gap-2 mb-3\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n disabled={!canSelectMore}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n >\r\n <span className=\"text-sm font-medium\">Upload Images</span>\r\n </ButtonComponent>\r\n\r\n <span className=\"text-xs text-gray-500 dark:text-gray-400\">\r\n {maxImages\r\n ? `${images.length}/${maxImages}`\r\n : `${images.length} selected`}\r\n </span>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 gap-3\">\r\n {images.map((img) => (\r\n <div\r\n key={img.id}\r\n className=\"relative group rounded-md overflow-hidden border border-gray-200 dark:border-gray-700\"\r\n >\r\n <img\r\n src={img.preview}\r\n alt=\"preview\"\r\n className=\"w-full h-28 object-cover\"\r\n />\r\n <div className=\"absolute top-2 right-2 flex items-center gap-1.5 opacity-100 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity\">\r\n <button\r\n type=\"button\"\r\n onClick={() => handleReplaceClick(img.id)}\r\n className=\"w-7 h-7 rounded-full bg-white/90 text-gray-800 hover:bg-white flex items-center justify-center shadow\"\r\n aria-label=\"Replace image\"\r\n >\r\n <Icon icon=\"solar:refresh-bold\" className=\"w-4 h-4\" />\r\n </button>\r\n {cropImage && (\r\n <button\r\n type=\"button\"\r\n onClick={() => openCropModal(img)}\r\n className=\"w-7 h-7 rounded-full bg-white/90 text-gray-800 hover:bg-white flex items-center justify-center shadow\"\r\n aria-label=\"Crop image\"\r\n >\r\n <Icon icon=\"solar:crop-bold\" className=\"w-4 h-4\" />\r\n </button>\r\n )}\r\n <button\r\n type=\"button\"\r\n onClick={() => removeImage(img.id)}\r\n className=\"w-7 h-7 rounded-full bg-red-500/95 text-white hover:bg-red-600 flex items-center justify-center shadow\"\r\n aria-label=\"Delete image\"\r\n >\r\n <Icon\r\n icon=\"solar:trash-bin-trash-bold\"\r\n className=\"w-4 h-4\"\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n\r\n {dragDrop && isDragging && images.length === 0 && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop images here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n\r\n <ImageCropperModal\r\n isOpen={cropModalOpen}\r\n imageSrc={cropSource}\r\n fileType={selectedFileType}\r\n fileName={selectedFileName}\r\n onClose={closeCropModal}\r\n onApply={handleCroppedImage}\r\n aspect={Number(aspect)}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default MultiImagePicker;\r\n","import { useEffect } from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface ImagePreviewProps {\r\n src: string;\r\n alt?: string;\r\n isOpen: boolean;\r\n setIsOpen: (value: boolean) => void;\r\n}\r\n\r\nconst ImagePreview = ({\r\n src,\r\n alt = \"preview\",\r\n isOpen,\r\n setIsOpen,\r\n}: ImagePreviewProps) => {\r\n const closePreview = () => setIsOpen(false);\r\n\r\n useEffect(() => {\r\n const handleEsc = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") closePreview();\r\n };\r\n\r\n if (isOpen) {\r\n document.body.style.overflow = \"hidden\";\r\n document.addEventListener(\"keydown\", handleEsc);\r\n }\r\n\r\n return () => {\r\n document.body.style.overflow = \"\";\r\n document.removeEventListener(\"keydown\", handleEsc);\r\n };\r\n }, [isOpen]);\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.imagePreview.root,\r\n \"fixed inset-0 z-50 flex items-center justify-center bg-black/70 dark:bg-black/80 backdrop-blur-sm animate-in fade-in duration-200\",\r\n )}\r\n onClick={closePreview}\r\n >\r\n <button\r\n onClick={closePreview}\r\n className=\"absolute top-4 right-4 bg-white dark:bg-gray-800 text-gray-800 dark:text-gray-200\r\n hover:bg-gray-100 dark:hover:bg-gray-700 rounded-full p-2 shadow-lg transition\"\r\n >\r\n <X size={20} />\r\n </button>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.imagePreview.container,\r\n \"max-w-5xl w-full px-4 transform transition-all duration-200 scale-95 animate-in zoom-in-95\",\r\n )}\r\n onClick={(e) => e.stopPropagation()}\r\n >\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={joinClasses(\r\n crudClasses.imagePreview.image,\r\n \"w-full max-h-[90vh] object-contain rounded-xl\",\r\n )}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ImagePreview;\r\n","import { User } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface GroupRowProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n groupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n };\r\n}\r\n\r\nconst GroupRow = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: GroupRowProps) => {\r\n const title = data[col.titleKey];\r\n const subtitle = data[col.subtitleKey];\r\n const image = data[col.imageKey];\r\n const fallback_icon = col.fallback_icon;\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const openPreview = (img: { src: any; alt: string }) => {\r\n let imageObj = img;\r\n if (img && img.src instanceof File) {\r\n imageObj = { ...img, src: URL.createObjectURL(img.src) };\r\n }\r\n setTargetImage(imageObj as { src: string; alt: string });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderAvatar = (size: \"sm\" | \"md\" | \"lg\") => {\r\n const sizeMap = {\r\n sm: { img: \"w-8 h-8\", wrap: \"w-8 h-8\", icon: \"w-4 h-4\" },\r\n md: { img: \"w-12 h-12\", wrap: \"w-12 h-12\", icon: \"w-6 h-6\" },\r\n lg: { img: \"w-16 h-16\", wrap: \"w-16 h-16\", icon: \"w-8 h-8\" },\r\n };\r\n const s = sizeMap[size];\r\n if (image) {\r\n return (\r\n <img\r\n src={image instanceof File ? URL.createObjectURL(image) : image}\r\n alt={title}\r\n onClick={() => openPreview({ src: image, alt: title })}\r\n className={`${s.img} cursor-pointer rounded-full object-cover border-2 border-white dark:border-gray-700 shadow flex-shrink-0`}\r\n />\r\n );\r\n }\r\n if (fallback_icon) {\r\n return fallback_icon instanceof Function\r\n ? fallback_icon(data)\r\n : fallback_icon;\r\n }\r\n return (\r\n <div\r\n className={`${s.wrap} flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-600 bg-gray-200 dark:bg-gray-600 flex-shrink-0`}\r\n >\r\n <User className={`${s.icon} text-gray-400`} />\r\n </div>\r\n );\r\n };\r\n\r\n // ── CARD variant ──────────────────────────────────────────────────────────────\r\n // Full-width profile banner card with gradient + decorative circle\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 relative overflow-hidden rounded-xl bg-gradient-to-r from-primary/10 via-primary/5 to-transparent dark:from-primary/20 dark:via-primary/10 border border-primary/20 dark:border-primary/30 p-5 flex items-center gap-4\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Decorative background circle */}\r\n <div className=\"pointer-events-none absolute -right-6 -top-6 w-32 h-32 rounded-full bg-primary/8 dark:bg-primary/12\" />\r\n <div className=\"pointer-events-none absolute -right-2 -bottom-4 w-20 h-20 rounded-full bg-primary/5\" />\r\n {renderAvatar(\"lg\")}\r\n <div className=\"min-w-0 z-10\">\r\n <h3\r\n className={`text-lg font-bold text-gray-900 dark:text-white truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-sm text-primary/70 dark:text-primary/60 font-medium truncate ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Header row: full-width soft gradient banner before the property rows\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-center gap-3 px-5 py-4 bg-gradient-to-r from-primary/8 via-primary/4 to-transparent dark:from-primary/15 dark:via-primary/8\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {renderAvatar(\"md\")}\r\n <div className=\"min-w-0\">\r\n <h3\r\n className={`text-base font-bold text-gray-900 dark:text-white truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-xs font-semibold text-primary/70 dark:text-primary/60 truncate ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.groupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {renderAvatar(\"lg\")}\r\n <div>\r\n <h3\r\n className={`text-xl font-semibold text-gray-900 dark:text-white ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </h3>\r\n <p\r\n className={`text-sm text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default GroupRow;\r\n","import { User } from \"lucide-react\";\r\nimport { useState } from \"react\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface CardGroupProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n cardGroupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n };\r\n}\r\n\r\nconst CardGroup = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: CardGroupProps) => {\r\n const title = data[col.titleKey];\r\n const subtitle = data[col.subtitleKey];\r\n const image = data[col.imageKey];\r\n const label = col.label;\r\n const Icon = col?.icon;\r\n const fallback_icon = col.fallback_icon;\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const openPreview = (img: { src: any; alt: string }) => {\r\n let imageObj = img;\r\n if (img && img.src instanceof File) {\r\n imageObj = { ...img, src: URL.createObjectURL(img.src) };\r\n }\r\n setTargetImage(imageObj as { src: string; alt: string });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderMiniAvatar = () => {\r\n if (image) {\r\n return (\r\n <img\r\n src={image instanceof File ? URL.createObjectURL(image) : image}\r\n alt={title}\r\n onClick={() => openPreview({ src: image, alt: title })}\r\n className=\"w-8 h-8 cursor-pointer rounded-full object-cover border-2 border-gray-200 dark:border-gray-700 flex-shrink-0\"\r\n />\r\n );\r\n }\r\n if (fallback_icon) {\r\n return fallback_icon instanceof Function\r\n ? fallback_icon(data)\r\n : fallback_icon;\r\n }\r\n return (\r\n <div className=\"w-8 h-8 flex items-center justify-center rounded-full border-2 border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 flex-shrink-0\">\r\n <User className=\"w-5 h-5 text-gray-400\" />\r\n </div>\r\n );\r\n };\r\n\r\n // ── CARD variant ──────────────────────────────────────────────────────────────\r\n // Standalone card: icon badge top-left, label, then inline mini avatar + name\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n col.blockClass || \"col-span-6\",\r\n \"group bg-white dark:bg-gray-800 rounded-xl border border-gray-100 dark:border-gray-700/60 shadow-sm hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 p-4 flex flex-col gap-2.5\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div\r\n className={`w-8 h-8 rounded-lg bg-primary/10 dark:bg-primary/20 flex items-center justify-center text-primary flex-shrink-0 [&>svg]:w-4 [&>svg]:h-4 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </div>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500 leading-none ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"flex items-center gap-2 mt-auto\">\r\n {renderMiniAvatar()}\r\n <div className=\"min-w-0\">\r\n <p\r\n className={`text-sm font-semibold text-gray-800 dark:text-gray-100 truncate ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n {subtitle && (\r\n <p className=\"text-xs text-gray-400 dark:text-gray-500 truncate\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Property-sheet row: left label band | right value band with mini avatar\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-stretch min-h-[52px]\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Label band */}\r\n <div className=\"w-[42%] flex-shrink-0 flex items-center gap-2 px-4 py-3 bg-gray-50 dark:bg-gray-800/80 border-r border-gray-200 dark:border-gray-700\">\r\n {Icon && (\r\n <span\r\n className={`text-primary/60 dark:text-primary/50 flex-shrink-0 [&>svg]:w-3.5 [&>svg]:h-3.5 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </span>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400 leading-tight ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n </div>\r\n {/* Value band with mini avatar */}\r\n <div className=\"flex-1 flex items-center gap-2.5 px-4 py-3 bg-white dark:bg-gray-900\">\r\n {renderMiniAvatar()}\r\n <div className=\"min-w-0\">\r\n <p\r\n className={`text-sm text-gray-800 dark:text-gray-100 break-words ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n {subtitle && (\r\n <p className=\"text-xs text-gray-400 dark:text-gray-500 truncate\">\r\n {subtitle}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n styleConfig.cardGroupClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div className={`flex-shrink-0 ${styleConfig.iconClass || \"\"}`}>\r\n {Icon}\r\n </div>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <p\r\n className={`text-sm font-medium text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"flex items-center mt-1\">\r\n {renderMiniAvatar()}\r\n <div className=\"ml-2\">\r\n <p\r\n className={`mb-0 text-sm text-gray-900 dark:text-white break-words ${styleConfig.valueClass || \"\"}`}\r\n >\r\n {title}\r\n </p>\r\n <p\r\n className={`text-xs text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {subtitle}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default CardGroup;\r\n","import { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\nconst BADGE_COLORS: Record<string, { bg: string; border: string }> = {\r\n blue: {\r\n bg: \"bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300\",\r\n border:\r\n \"border border-blue-300 text-blue-700 dark:border-blue-700 dark:text-blue-300\",\r\n },\r\n teal: {\r\n bg: \"bg-teal-100 text-teal-800 dark:bg-teal-900/30 dark:text-teal-300\",\r\n border:\r\n \"border border-teal-300 text-teal-700 dark:border-teal-700 dark:text-teal-300\",\r\n },\r\n purple: {\r\n bg: \"bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300\",\r\n border:\r\n \"border border-purple-300 text-purple-700 dark:border-purple-700 dark:text-purple-300\",\r\n },\r\n yellow: {\r\n bg: \"bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300\",\r\n border:\r\n \"border border-yellow-300 text-yellow-700 dark:border-yellow-700 dark:text-yellow-300\",\r\n },\r\n green: {\r\n bg: \"bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300\",\r\n border:\r\n \"border border-green-300 text-green-700 dark:border-green-700 dark:text-green-300\",\r\n },\r\n red: {\r\n bg: \"bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300\",\r\n border:\r\n \"border border-red-300 text-red-700 dark:border-red-700 dark:text-red-300\",\r\n },\r\n gray: {\r\n bg: \"bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300\",\r\n border:\r\n \"border border-gray-300 text-gray-700 dark:border-gray-700 dark:text-gray-300\",\r\n },\r\n};\r\n\r\nconst BADGE_VARIANTS: Record<string, string> = {\r\n contained: \"bg\",\r\n outline: \"border !bg-transparent\",\r\n soft: \"bg opacity-90\",\r\n};\r\n\r\ninterface ChipProps {\r\n label: string;\r\n variant?: string;\r\n color?: string;\r\n className?: string;\r\n}\r\n\r\nconst Chip = ({\r\n label,\r\n variant = \"contained\",\r\n color = \"green\",\r\n className = \"\",\r\n}: ChipProps) => {\r\n const colorConfig = BADGE_COLORS[color] || BADGE_COLORS.green;\r\n const variantKey = BADGE_VARIANTS[variant] || BADGE_VARIANTS.contained;\r\n\r\n const variantClasses =\r\n variant === \"outline\" ? colorConfig.border : colorConfig.bg;\r\n\r\n return (\r\n <span\r\n className={joinClasses(\r\n crudClasses.chip.root,\r\n \"inline-flex justify-center items-center rounded-sm text-xs font-semibold px-3 py-1 min-w-[78px]\",\r\n variantClasses,\r\n variantKey,\r\n className,\r\n )}\r\n >\r\n {label}\r\n </span>\r\n );\r\n};\r\n\r\nexport default Chip;\r\n","import { useState } from \"react\";\r\nimport Chip from \"../../Chip/Chip\";\r\nimport { formatDate } from \"../../../lib/utils\";\r\nimport ImagePreview from \"../../Table/components/ImagePreview\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface DetailRowProps {\r\n col: Record<string, any>;\r\n data: Record<string, any>;\r\n uiVariant?: \"default\" | \"card\" | \"split\";\r\n styleConfig?: {\r\n rowClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n mediaGridClass?: string;\r\n };\r\n}\r\n\r\nconst DetailRow = ({\r\n col,\r\n data,\r\n uiVariant = \"default\",\r\n styleConfig = {},\r\n}: DetailRowProps) => {\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const Icon = col?.icon;\r\n const label = col.label;\r\n let value = data[col.key];\r\n const type = col.type;\r\n const variant = col.variant || \"outline\";\r\n let color = col.defaultColor;\r\n\r\n if (type === \"chip\" && col.chipOptions?.length > 0) {\r\n const chipObj = col?.chipOptions.find((obj: any) => obj.value == value);\r\n if (chipObj) {\r\n value = chipObj.label;\r\n color = chipObj.color;\r\n }\r\n }\r\n\r\n const getImageSource = (image: any): string => {\r\n if (!image) return \"\";\r\n if (typeof image === \"string\") return image;\r\n if (image instanceof File) return URL.createObjectURL(image);\r\n if (typeof image === \"object\") {\r\n if (typeof image.preview === \"string\") return image.preview;\r\n if (typeof image.src === \"string\") return image.src;\r\n if (image.src instanceof File) return URL.createObjectURL(image.src);\r\n if (image.file instanceof File) return URL.createObjectURL(image.file);\r\n }\r\n return \"\";\r\n };\r\n\r\n const openPreview = (src: string, alt: string) => {\r\n setTargetImage({ src, alt });\r\n setIsOpen(true);\r\n };\r\n\r\n const renderValue = (\r\n wrapClass = \"text-sm text-gray-900 dark:text-white break-words\",\r\n ) => {\r\n if (typeof col.render === \"function\") {\r\n const customValue = col.render(data, value);\r\n return <div className={styleConfig.valueClass || \"\"}>{customValue}</div>;\r\n }\r\n\r\n if (type === \"chip\") {\r\n return (\r\n <Chip label={value} variant={variant} color={color} className=\"mt-1\" />\r\n );\r\n }\r\n if (type === \"tinyEditor\") {\r\n return (\r\n <p\r\n className={`${wrapClass} ${styleConfig.valueClass || \"\"}`}\r\n dangerouslySetInnerHTML={{ __html: value }}\r\n />\r\n );\r\n }\r\n if (type === \"video\") {\r\n return value ? (\r\n <video\r\n key={value instanceof File ? URL.createObjectURL(value) : value}\r\n controls\r\n src={value instanceof File ? URL.createObjectURL(value) : value}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"shadow-sm mt-1 w-full max-w-xs max-h-[250px] rounded-md \"\r\n />\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n if (type === \"audio\") {\r\n return value ? (\r\n <audio\r\n key={value instanceof File ? URL.createObjectURL(value) : value}\r\n controls\r\n src={value instanceof File ? URL.createObjectURL(value) : value}\r\n onClick={(e) => e.stopPropagation()}\r\n className=\"shadow-sm rounded-full mt-1 w-full max-w-xs\"\r\n />\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n if (type === \"image\") {\r\n const src = getImageSource(value);\r\n return src ? (\r\n <button\r\n type=\"button\"\r\n onClick={() => openPreview(src, label || \"Image\")}\r\n className=\"mt-1 w-16 h-16 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700\"\r\n >\r\n <img\r\n src={src}\r\n alt={label || \"image\"}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n if (type === \"multiImage\") {\r\n return Array.isArray(value) && value.length > 0 ? (\r\n <div\r\n className={`mt-1 grid grid-cols-3 sm:grid-cols-4 gap-2 ${styleConfig.mediaGridClass || \"\"}`}\r\n >\r\n {value.map((img: any, idx: number) => {\r\n const src = getImageSource(img);\r\n if (!src) return null;\r\n return (\r\n <button\r\n key={`${src}-${idx}`}\r\n type=\"button\"\r\n onClick={() => openPreview(src, `Gallery ${idx + 1}`)}\r\n className=\"w-full h-16 rounded-lg overflow-hidden border border-gray-200 dark:border-gray-700 hover:border-primary/50 transition-colors\"\r\n >\r\n <img\r\n src={src}\r\n alt={`gallery-${idx + 1}`}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n ) : (\r\n <p className=\"text-sm text-gray-400\">N/A</p>\r\n );\r\n }\r\n return (\r\n <p className={`${wrapClass} ${styleConfig.valueClass || \"\"}`}>\r\n {type === \"date\" ? (\r\n <span>{formatDate(value, col.format || \"DD MMM YYYY\")}</span>\r\n ) : (\r\n <span>{value || \"N/A\"}</span>\r\n )}\r\n </p>\r\n );\r\n };\r\n\r\n // ── CARD variant ─────────────────────────────────────────────────────────────\r\n // Standalone elevated card per field — icon badge top-left, label, bold value\r\n if (uiVariant === \"card\") {\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n col.blockClass || \"col-span-6\",\r\n \"group bg-white dark:bg-gray-800 rounded-xl border border-gray-100 dark:border-gray-700/60 shadow-sm hover:shadow-md hover:-translate-y-0.5 transition-all duration-200 p-4 flex flex-col gap-2.5\",\r\n styleConfig.rowClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div\r\n className={`w-8 h-8 rounded-lg bg-primary/10 dark:bg-primary/20 flex items-center justify-center text-primary flex-shrink-0 [&>svg]:w-4 [&>svg]:h-4 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </div>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wider text-gray-400 dark:text-gray-500 leading-none ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n <div className=\"mt-auto\">\r\n {renderValue(\r\n \"text-sm font-semibold text-gray-800 dark:text-gray-100 break-words leading-snug\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // ── SPLIT variant ─────────────────────────────────────────────────────────────\r\n // Property-sheet row: left=muted label band | right=white value band\r\n if (uiVariant === \"split\") {\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"flex items-stretch min-h-[52px]\",\r\n styleConfig.rowClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {/* Label band */}\r\n <div className=\"w-[42%] flex-shrink-0 flex items-center gap-2 px-4 py-3 bg-gray-50 dark:bg-gray-800/80 border-r border-gray-200 dark:border-gray-700\">\r\n {Icon && (\r\n <span\r\n className={`text-primary/60 dark:text-primary/50 flex-shrink-0 [&>svg]:w-3.5 [&>svg]:h-3.5 ${styleConfig.iconClass || \"\"}`}\r\n >\r\n {Icon}\r\n </span>\r\n )}\r\n <p\r\n className={`text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400 leading-tight ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n </div>\r\n {/* Value band */}\r\n <div className=\"flex-1 flex items-center px-4 py-3 bg-white dark:bg-gray-900\">\r\n {renderValue(\r\n \"text-sm text-gray-800 dark:text-gray-100 break-words\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n }\r\n\r\n // ── DEFAULT variant ───────────────────────────────────────────────────────────\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.row,\r\n \"col-span-12 flex items-center space-x-4 p-4 rounded-xl bg-gray-100 dark:bg-gray-900\",\r\n styleConfig.rowClass || \"\",\r\n col.blockClass || \"\",\r\n )}\r\n >\r\n {Icon && (\r\n <div className={`flex-shrink-0 ${styleConfig.iconClass || \"\"}`}>\r\n {Icon}\r\n </div>\r\n )}\r\n <div className=\"flex-1 min-w-0\">\r\n <p\r\n className={`text-sm font-medium text-gray-500 dark:text-gray-400 ${styleConfig.labelClass || \"\"}`}\r\n >\r\n {label}\r\n </p>\r\n {renderValue(\r\n \"mt-1 text-sm text-gray-900 dark:text-white break-words\",\r\n )}\r\n </div>\r\n </div>\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default DetailRow;\r\n","import { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\nimport InputLabel from \"./InputLabel\";\r\n\r\ninterface RadioOption {\r\n label: string;\r\n value: any;\r\n}\r\n\r\ninterface RadioProps {\r\n value: any;\r\n onChange: (value: any) => void;\r\n text?: string;\r\n options: RadioOption[];\r\n label?: string;\r\n required?: boolean;\r\n name: string;\r\n disabled?: boolean;\r\n parentClass?: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst Radio = ({\r\n value = true,\r\n onChange,\r\n text,\r\n options = [],\r\n label,\r\n required,\r\n name = \"\",\r\n disabled = false,\r\n parentClass = \"\",\r\n errorMessage = \"\",\r\n}: RadioProps) => {\r\n const radioOptions: RadioOption[] =\r\n options.length > 0\r\n ? options\r\n : [\r\n { label: \"Active\", value: true },\r\n { label: \"Inactive\", value: false },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={`flex items-center justify-between h-10 gap-4 bg-gray-100 dark:bg-gray-700 px-3 rounded-md border border-gray-100 dark:border-gray-600\r\n ${errorMessage ? \"border-red-500\" : \"\"}`}\r\n >\r\n {text && (\r\n <p className=\"text-xs text-gray-600 dark:text-gray-400 flex-shrink overflow-hidden text-ellipsis whitespace-nowrap max-w-[200px]\">\r\n {text}\r\n </p>\r\n )}\r\n\r\n <div className=\"flex items-center gap-6\">\r\n {radioOptions.map((opt, idx) => (\r\n <label\r\n key={idx}\r\n className=\"flex items-center gap-2 cursor-pointer select-none\"\r\n >\r\n <input\r\n type=\"radio\"\r\n name=\"switch-field\"\r\n required={required && idx === 0}\r\n value={String(opt.value)}\r\n disabled={disabled}\r\n id={`field-${name}`}\r\n checked={value === opt.value}\r\n onChange={() => onChange?.(opt.value)}\r\n className={joinClasses(\r\n crudClasses.field.input,\r\n \"w-4 h-4 border-gray-300 cursor-pointer\",\r\n )}\r\n />\r\n <span className=\"text-sm text-gray-700 dark:text-white\">\r\n {opt.label}\r\n </span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Radio;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useState, useEffect, useRef } from \"react\";\r\nimport InputLabel from \"./InputLabel\";\r\nimport Button from \"../../Button/Button\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype MediaValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface VideoPickerProps {\r\n label: string;\r\n value: MediaValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n id: string;\r\n dragDrop?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxSize?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst VideoPicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"video/*\",\r\n id,\r\n dragDrop = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n maxSize = 0,\r\n errorMessage = \"\",\r\n}: VideoPickerProps) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [video, setVideo] = useState<{ file?: File; preview?: string } | null>(\r\n null,\r\n );\r\n const [isDragging, setIsDragging] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const maxSizeBytes = maxSize * 1024 * 1024;\r\n\r\n useEffect(() => {\r\n if (!value) {\r\n cleanupVideo();\r\n setVideo(null);\r\n return;\r\n }\r\n\r\n if (value instanceof File) {\r\n const preview = URL.createObjectURL(value);\r\n setVideo({ file: value, preview });\r\n\r\n return () => {\r\n URL.revokeObjectURL(preview);\r\n };\r\n } else if (typeof value === \"string\") {\r\n setVideo({ preview: value });\r\n } else if (value?.preview) {\r\n setVideo(value);\r\n }\r\n }, [value]);\r\n\r\n const cleanupVideo = () => {\r\n if (video?.preview && video.preview.startsWith(\"blob:\")) {\r\n URL.revokeObjectURL(video.preview);\r\n }\r\n };\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) return;\r\n\r\n const file = files[0];\r\n\r\n if (maxSizeBytes && file.size > maxSizeBytes) {\r\n enqueueSnackbar(\r\n `File is too large. Maximum allowed size is ${maxSize} MB`,\r\n {\r\n variant: \"warning\",\r\n },\r\n );\r\n return;\r\n }\r\n\r\n const preview = URL.createObjectURL(file);\r\n cleanupVideo();\r\n setVideo({ file, preview });\r\n onChange?.(file);\r\n };\r\n const removeVideo = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) e.stopPropagation();\r\n cleanupVideo();\r\n setVideo(null);\r\n onChange?.(null);\r\n if (inputRef.current) inputRef.current.value = \"\";\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n if (e.dataTransfer?.files?.[0]?.type?.includes(\"video/\")) {\r\n handleFileChange(e.dataTransfer.files);\r\n }\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.video,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-lg p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !video}\r\n className=\"absolute opacity-0 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {video ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"relative\">\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeVideo}\r\n className=\"absolute -top-2 -right-2 bg-red-500 text-white rounded-full p-1 shadow hover:bg-red-600 z-10\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n <video\r\n key={video.preview}\r\n src={video.preview}\r\n controls\r\n controlsList=\"nodownload\"\r\n className=\"w-[260px] h-[150px] rounded-md object-cover\"\r\n />\r\n </div>\r\n <ButtonComponent type=\"button\" onClick={handleButtonClick}>\r\n Change Video File\r\n </ButtonComponent>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon icon=\"mdi:video\" className=\"text-gray-400 w-10 h-10\" />\r\n </div>\r\n\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n >\r\n Choose Video File\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your video here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {dragDrop && isDragging && !video && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop video here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default VideoPicker;\r\n","import { Icon } from \"@iconify/react\";\r\nimport React, { useEffect, useRef, useState } from \"react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport Button from \"../../Button/Button\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\nimport InputLabel from \"./InputLabel\";\r\n\r\nconst ButtonComponent = Button as React.ComponentType<any>;\r\n\r\ntype FileValue = File | { file?: File; preview?: string } | string | null;\r\n\r\ninterface FilePickerProps {\r\n label?: string;\r\n value: FileValue;\r\n onChange: (file: File | null) => void;\r\n required?: boolean;\r\n accept?: string;\r\n id: string;\r\n dragDrop?: boolean;\r\n name: string;\r\n parentClass?: string;\r\n maxSize?: number;\r\n errorMessage?: string;\r\n}\r\n\r\nconst getFileExtension = (name: string) => {\r\n const parts = name.split(\".\");\r\n return parts.length > 1 ? parts.pop()?.toLowerCase() || \"\" : \"\";\r\n};\r\n\r\nconst getFileIcon = (name: string) => {\r\n const extension = getFileExtension(name);\r\n\r\n if ([\"pdf\"].includes(extension)) return \"mdi:file-pdf-box\";\r\n if ([\"doc\", \"docx\"].includes(extension)) return \"mdi:file-word-box\";\r\n if ([\"xls\", \"xlsx\", \"csv\"].includes(extension)) return \"mdi:file-excel-box\";\r\n if ([\"ppt\", \"pptx\"].includes(extension)) return \"mdi:file-powerpoint-box\";\r\n if ([\"zip\", \"rar\", \"7z\", \"tar\", \"gz\"].includes(extension)) {\r\n return \"mdi:folder-zip\";\r\n }\r\n if ([\"txt\", \"md\", \"json\", \"xml\"].includes(extension)) {\r\n return \"mdi:file-document-outline\";\r\n }\r\n\r\n return \"mdi:file-outline\";\r\n};\r\n\r\nconst normalizeAcceptRules = (accept: string) =>\r\n accept\r\n .split(\",\")\r\n .map((item) => item.trim().toLowerCase())\r\n .filter(Boolean);\r\n\r\nconst matchesAccept = (file: File, accept: string) => {\r\n if (!accept.trim()) return true;\r\n\r\n const rules = normalizeAcceptRules(accept);\r\n const mimeType = (file.type || \"\").toLowerCase();\r\n const extension = `.${getFileExtension(file.name)}`;\r\n\r\n return rules.some((rule) => {\r\n if (rule === \"*/*\") return true;\r\n if (rule.startsWith(\".\")) return extension === rule;\r\n if (rule.endsWith(\"/*\")) {\r\n const typePrefix = rule.slice(0, -1);\r\n return mimeType.startsWith(typePrefix);\r\n }\r\n return mimeType === rule;\r\n });\r\n};\r\n\r\nconst getFileNameFromValue = (value: FileValue) => {\r\n if (!value) return \"\";\r\n\r\n if (value instanceof File) return value.name;\r\n if (typeof value === \"string\") {\r\n const parts = value.split(\"/\");\r\n return parts[parts.length - 1] || \"selected-file\";\r\n }\r\n\r\n if (typeof value === \"object\" && value.file?.name) {\r\n return value.file.name;\r\n }\r\n\r\n return \"selected-file\";\r\n};\r\n\r\nconst FilePicker = ({\r\n label = \"\",\r\n value = null,\r\n onChange,\r\n required = false,\r\n accept = \"*/*\",\r\n id,\r\n dragDrop = false,\r\n name = \"\",\r\n parentClass = \"\",\r\n maxSize = 0,\r\n errorMessage = \"\",\r\n}: FilePickerProps) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedFile, setSelectedFile] = useState<FileValue>(value);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const inputRef = useRef<HTMLInputElement | null>(null);\r\n\r\n const maxSizeBytes = maxSize * 1024 * 1024;\r\n\r\n useEffect(() => {\r\n setSelectedFile(value);\r\n }, [value]);\r\n\r\n const handleFileChange = (files: FileList | null) => {\r\n if (!files || files.length === 0) return;\r\n\r\n const file = files[0];\r\n\r\n if (!matchesAccept(file, accept)) {\r\n enqueueSnackbar(`Only ${accept} files are allowed`, {\r\n variant: \"warning\",\r\n });\r\n return;\r\n }\r\n\r\n if (maxSizeBytes && file.size > maxSizeBytes) {\r\n enqueueSnackbar(\r\n `File is too large. Maximum allowed size is ${maxSize} MB`,\r\n {\r\n variant: \"warning\",\r\n },\r\n );\r\n return;\r\n }\r\n\r\n setSelectedFile(file);\r\n onChange?.(file);\r\n };\r\n\r\n const removeFile = (e?: React.MouseEvent<HTMLButtonElement>) => {\r\n if (e) e.stopPropagation();\r\n\r\n setSelectedFile(null);\r\n onChange?.(null);\r\n\r\n if (inputRef.current) {\r\n inputRef.current.value = \"\";\r\n }\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\r\n if (!dragDrop) return;\r\n e.preventDefault();\r\n setIsDragging(false);\r\n handleFileChange(e.dataTransfer.files);\r\n };\r\n\r\n const handleButtonClick = () => {\r\n inputRef.current?.click();\r\n };\r\n\r\n const fileName = getFileNameFromValue(selectedFile);\r\n\r\n return (\r\n <div\r\n key={name}\r\n className={joinClasses(\r\n crudClasses.mediaPicker.audio,\r\n crudClasses.field.wrapper,\r\n parentClass || \"col-span-12\",\r\n )}\r\n >\r\n <InputLabel label={label} required={required} />\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.mediaPicker.dropzone,\r\n \"relative rounded-lg p-2 transition-all\",\r\n isDragging\r\n ? \"border-2 border-dashed border-blue-500 bg-blue-50 dark:bg-blue-900/20\"\r\n : \"border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800\",\r\n errorMessage ? \"border-red-500\" : \"\",\r\n )}\r\n onDragOver={handleDragOver}\r\n onDragLeave={handleDragLeave}\r\n onDrop={handleDrop}\r\n id={`field-${name}`}\r\n >\r\n <input\r\n ref={inputRef}\r\n id={id}\r\n type=\"file\"\r\n accept={accept}\r\n onChange={(e) => handleFileChange(e.target.files)}\r\n required={required && !selectedFile}\r\n className=\"absolute opacity-0 pointer-events-none h-[10px]\"\r\n />\r\n\r\n <div\r\n className={`flex items-center space-x-4 transition-all ${\r\n isDragging ? \"opacity-50\" : \"\"\r\n }`}\r\n >\r\n {selectedFile ? (\r\n <div className=\"flex items-center space-x-4\">\r\n <div className=\"relative rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n {!required && (\r\n <button\r\n type=\"button\"\r\n onClick={removeFile}\r\n className=\"absolute -top-2 -right-2 bg-red-500 text-white rounded-full p-1 shadow hover:bg-red-600 z-10\"\r\n aria-label=\"Remove file\"\r\n >\r\n <Icon icon=\"mdi:close\" className=\"w-3 h-3\" />\r\n </button>\r\n )}\r\n <Icon\r\n icon={getFileIcon(fileName)}\r\n className=\"text-gray-500 w-10 h-10\"\r\n />\r\n </div>\r\n\r\n <div className=\"space-y-1 max-w-[280px]\">\r\n <p\r\n className=\"text-sm text-gray-700 dark:text-gray-300 truncate\"\r\n title={fileName}\r\n >\r\n {fileName}\r\n </p>\r\n <ButtonComponent type=\"button\" onClick={handleButtonClick}>\r\n Change File\r\n </ButtonComponent>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center justify-center space-x-4\">\r\n <div className=\"rounded-full bg-gray-100 dark:bg-gray-700 h-20 w-20 flex items-center justify-center\">\r\n <Icon\r\n icon=\"mdi:file-upload-outline\"\r\n className=\"text-gray-400 w-10 h-10\"\r\n />\r\n </div>\r\n\r\n <div className=\"space-y-1\">\r\n <ButtonComponent\r\n type=\"button\"\r\n onClick={handleButtonClick}\r\n variant=\"outlined\"\r\n >\r\n Choose File\r\n </ButtonComponent>\r\n\r\n {dragDrop && (\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\r\n or drag and drop your file here\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {dragDrop && isDragging && !selectedFile && (\r\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none bg-blue-500/10 rounded-lg\">\r\n <span className=\"text-blue-600 dark:text-blue-400 font-semibold text-lg bg-white dark:bg-gray-800 px-4 py-2 rounded-lg shadow-lg\">\r\n Drop file here\r\n </span>\r\n </div>\r\n )}\r\n </div>\r\n {errorMessage && (\r\n <span\r\n className={joinClasses(\r\n crudClasses.field.error,\r\n \"text-red-500 text-xs mt-1\",\r\n )}\r\n >\r\n {errorMessage}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default FilePicker;\r\n","import Select from \"./Select\";\r\nimport { Switch } from \"./Switch\";\r\nimport PhoneInput from \"./PhoneInput\";\r\nimport { TextArea } from \"./TextArea\";\r\nimport ImagePicker from \"./ImagePicker\";\r\nimport { Input } from \"./Input\";\r\nimport TinyEditor from \"./TinyEditor\";\r\nimport FreeEditor from \"./FreeEditor\";\r\nimport Checkbox from \"./Checkbox\";\r\nimport AudioPicker from \"./AudioPicker\";\r\nimport MultiImagePicker from \"./MultiImagePicker\";\r\nimport GroupRow from \"../../Details/components/GroupRow\";\r\nimport CardGroup from \"../../Details/components/CardGroup\";\r\nimport DetailRow from \"../../Details/components/DetailRow\";\r\nimport Radio from \"./Radio\";\r\nimport VideoPicker from \"./VideoPicker\";\r\nimport FilePicker from \"./FilePicker\";\r\n\r\ninterface FieldConfig {\r\n key: string;\r\n label?: string;\r\n type?: string;\r\n options?: any[];\r\n placeholder?: string;\r\n rows?: number;\r\n inputClass?: string;\r\n search?: boolean;\r\n accept?: string;\r\n text?: string;\r\n required?: boolean;\r\n minLength?: number;\r\n dragDrop?: boolean;\r\n parentClass?: string;\r\n countriesList?: boolean;\r\n defaultCountry?: string;\r\n multiple?: boolean;\r\n dropdownMaxHeight?: number;\r\n editorKey?: string;\r\n fontFamily?: string;\r\n disabled?: boolean;\r\n negativeNumberAllow?: boolean;\r\n defaultValue?: any;\r\n renderCondition?: (formData: Record<string, any>) => boolean;\r\n pattern?: string;\r\n renderType?: string;\r\n cropImage?: boolean;\r\n aspectRatio?: number;\r\n dependencyKey?: string;\r\n mask?: string;\r\n maskApplyOnValue?: boolean;\r\n maxSize?: number;\r\n editorVariant?: \"tiny\" | \"free\";\r\n [key: string]: any;\r\n}\r\n\r\ninterface RenderFieldsProps {\r\n field: FieldConfig;\r\n errorMessage?: string;\r\n formData: Record<string, any>;\r\n handleChange: (key: string, value: any) => void;\r\n}\r\n\r\nconst RenderFields = ({\r\n field,\r\n formData,\r\n handleChange,\r\n errorMessage,\r\n}: RenderFieldsProps) => {\r\n const {\r\n key,\r\n label,\r\n type,\r\n options,\r\n placeholder,\r\n rows,\r\n inputClass,\r\n search,\r\n accept,\r\n text,\r\n required = false,\r\n minLength,\r\n dragDrop,\r\n parentClass,\r\n countriesList,\r\n defaultCountry,\r\n multiple,\r\n dropdownMaxHeight,\r\n editorKey,\r\n fontFamily,\r\n disabled,\r\n negativeNumberAllow,\r\n defaultValue,\r\n renderCondition,\r\n pattern,\r\n renderType,\r\n cropImage,\r\n aspectRatio,\r\n dependencyKey,\r\n mask,\r\n maskApplyOnValue,\r\n maxSize,\r\n editorVariant,\r\n } = field;\r\n\r\n let value = formData?.[key];\r\n if (value === undefined || value === null) {\r\n value = \"\";\r\n }\r\n\r\n const finalPlaceholder =\r\n placeholder || (type === \"select\" ? `Select ${label}` : `Enter ${label}`);\r\n\r\n const baseClass =\r\n \"w-full px-3 py-2 rounded-md border border-gray-300 dark:border-gray-600 text-sm focus:outline-none focus:ring-1 focus:ring-blue-200 bg-white text-black dark:bg-gray-700 dark:text-white\";\r\n\r\n if (renderCondition && typeof renderCondition === \"function\") {\r\n const shouldRender = renderCondition(formData);\r\n if (!shouldRender) {\r\n return null;\r\n }\r\n }\r\n\r\n if (renderType && renderType == \"details\") {\r\n switch (type) {\r\n case \"group\":\r\n return <GroupRow col={field} data={formData} />;\r\n case \"cardGroup\":\r\n return <CardGroup col={field} data={formData} />;\r\n default:\r\n return <DetailRow col={field} data={formData} />;\r\n }\r\n }\r\n\r\n switch (type) {\r\n case \"select\":\r\n return (\r\n <Select\r\n options={options || []}\r\n value={value}\r\n formData={formData}\r\n dependencyKey={dependencyKey}\r\n onChange={(val) => handleChange(key, val)}\r\n placeholder={finalPlaceholder}\r\n className={inputClass || \"\"}\r\n search={search}\r\n required={required}\r\n defaultValue={defaultValue}\r\n label={label || \"\"}\r\n name={key}\r\n countriesList={countriesList}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n multiple={multiple}\r\n dropdownMaxHeight={dropdownMaxHeight}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"checkbox\":\r\n return (\r\n <>\r\n <Checkbox\r\n name={key}\r\n label={label || \"\"}\r\n options={options || []}\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n required={required}\r\n parentClass={parentClass || \"\"}\r\n className={inputClass || \"\"}\r\n multiSelect={multiple}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n />\r\n </>\r\n );\r\n\r\n case \"radio\":\r\n return (\r\n <Radio\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n text={text}\r\n options={options || []}\r\n label={label || \"\"}\r\n required={required}\r\n name={key}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"switch\":\r\n return (\r\n <Switch\r\n value={Boolean(value)}\r\n onChange={(val) => handleChange(key, val)}\r\n label={label || \"\"}\r\n required={required}\r\n name={key}\r\n disabled={disabled}\r\n className=\"\"\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n case \"phone\":\r\n return (\r\n <PhoneInput\r\n value={value}\r\n onChange={(val) => handleChange(key, val)}\r\n countriesList={countriesList}\r\n defaultCountry={defaultCountry}\r\n required={required}\r\n placeholder={finalPlaceholder}\r\n search={search}\r\n label={label || \"\"}\r\n name={key}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n parentClass={parentClass || \"\"}\r\n />\r\n );\r\n\r\n case \"textarea\":\r\n return (\r\n <TextArea\r\n value={value}\r\n onChange={(e) => handleChange(key, e.target.value)}\r\n placeholder={finalPlaceholder}\r\n rows={rows || 3}\r\n className={`${baseClass} ${inputClass || \"\"}`}\r\n required={required}\r\n name={key}\r\n label={label || \"\"}\r\n disabled={disabled}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"image\":\r\n case \"multiImage\":\r\n if (multiple || type === \"multiImage\") {\r\n return (\r\n <MultiImagePicker\r\n value={Array.isArray(value) ? value : []}\r\n onChange={(imgList) => handleChange(key, imgList)}\r\n required={required}\r\n accept={accept || \"image/*\"}\r\n aspect={aspectRatio}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n cropImage={cropImage}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n maxImages={field.maxImages}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n }\r\n\r\n return (\r\n <ImagePicker\r\n value={value}\r\n onChange={(imgObj) => handleChange(key, imgObj)}\r\n required={required}\r\n accept={accept || \"image/*\"}\r\n aspect={aspectRatio}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n cropImage={cropImage}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"audio\":\r\n return (\r\n <AudioPicker\r\n value={value}\r\n onChange={(audio) => handleChange(key, audio)}\r\n required={required}\r\n accept={accept || \"audio/*\"}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n label={label || \"\"}\r\n name={key}\r\n parentClass={parentClass || \"\"}\r\n maxSize={maxSize}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n case \"video\":\r\n return (\r\n <VideoPicker\r\n value={value}\r\n onChange={(video) => handleChange(key, video)}\r\n required={required}\r\n accept={accept || \"video/*\"}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n label={label || \"\"}\r\n name={key}\r\n maxSize={maxSize}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"file\":\r\n return (\r\n <FilePicker\r\n value={value}\r\n onChange={(file) => handleChange(key, file)}\r\n required={required}\r\n accept={accept || \"*/*\"}\r\n id={`file-${key}`}\r\n dragDrop={dragDrop}\r\n label={label || \"\"}\r\n name={key}\r\n maxSize={maxSize}\r\n parentClass={parentClass || \"\"}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"tinyEditor\":\r\n return (\r\n <TinyEditor\r\n value={value}\r\n name={key}\r\n onChange={(newValue: string) => handleChange(key, newValue)}\r\n required={required}\r\n placeholder={finalPlaceholder}\r\n label={label || \"\"}\r\n parentClass={parentClass || \"\"}\r\n fontFamily={fontFamily}\r\n editorKey={editorKey || \"\"}\r\n disabled={disabled}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n case \"freeEditor\":\r\n return (\r\n <FreeEditor\r\n value={value}\r\n name={key}\r\n onChange={(newValue: string) => handleChange(key, newValue)}\r\n required={required}\r\n placeholder={finalPlaceholder}\r\n label={label || \"\"}\r\n parentClass={parentClass || \"\"}\r\n disabled={disabled}\r\n height={field.height || 300}\r\n errorMessage={errorMessage}\r\n />\r\n );\r\n\r\n default:\r\n return (\r\n <Input\r\n field={field}\r\n type={type || \"text\"}\r\n defaultValue={defaultValue}\r\n value={value}\r\n onChange={(updatedValue) => handleChange(key, updatedValue)}\r\n placeholder={finalPlaceholder}\r\n className={`${baseClass} ${inputClass || \"\"}`}\r\n required={required}\r\n name={key}\r\n minLength={minLength}\r\n label={label || \"\"}\r\n negativeNumberAllow={negativeNumberAllow}\r\n parentClass={parentClass || \"\"}\r\n disabled={disabled}\r\n pattern={pattern}\r\n mask={mask}\r\n errorMessage={errorMessage}\r\n maskApplyOnValue={maskApplyOnValue}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport default RenderFields;\r\n","import React, { useState } from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport Button from \"../Button/Button\";\r\nimport RenderFields from \"../Form/components/RenderFields\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\nimport { FormField } from \"../../types/crudtypes\";\r\n\r\ninterface FilterConfig {\r\n component: React.ComponentType<{\r\n filters: Record<string, any>;\r\n onFilterChange: (key: string, value: any) => void;\r\n }>;\r\n fields: Array<FormField>;\r\n}\r\n\r\ninterface FilterDrawerProps {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n config: FilterConfig;\r\n onApply: (filters: Record<string, any>) => void;\r\n}\r\n\r\nconst FilterDrawer = ({\r\n isOpen,\r\n onClose,\r\n config,\r\n onApply,\r\n}: FilterDrawerProps) => {\r\n const [filters, setFilters] = useState<Record<string, any>>({});\r\n\r\n const handleChange = (key: string, value: any) => {\r\n setFilters((prev) => ({ ...prev, [key]: value }));\r\n };\r\n\r\n const handleApply = () => {\r\n onApply(filters);\r\n onClose();\r\n };\r\n\r\n const handleReset = () => {\r\n setFilters({});\r\n onApply({});\r\n onClose();\r\n };\r\n\r\n const DynamicComponent = config?.component;\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.overlay,\r\n \"fixed inset-0 bg-black/50 z-40 transition-opacity duration-300\",\r\n isOpen\r\n ? \"opacity-100 pointer-events-auto\"\r\n : \"opacity-0 pointer-events-none\",\r\n )}\r\n style={{\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n onClick={onClose}\r\n />\r\n\r\n <div\r\n style={{\r\n opacity: isOpen ? 1 : 0,\r\n }}\r\n className={joinClasses(\r\n crudClasses.filterDrawer.panel,\r\n \"fixed top-0 right-0 h-full w-[28rem] bg-white dark:bg-gray-900 shadow-2xl z-50 flex flex-col border-l border-gray-200 dark:border-gray-700 transform transition-all duration-300 ease-in-out\",\r\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.header,\r\n \"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700\",\r\n )}\r\n >\r\n <h2 className=\"text-lg font-semibold text-gray-900 dark:text-white\">\r\n Filters\r\n </h2>\r\n <button\r\n onClick={onClose}\r\n className=\"p-2 hover:bg-gray-100 dark:hover:bg-gray-800 rounded-md transition\"\r\n >\r\n <X className=\"w-5 h-5 text-gray-500 dark:text-gray-400\" />\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.body,\r\n \"flex-1 overflow-y-auto px-4 py-3\",\r\n )}\r\n >\r\n {DynamicComponent ? (\r\n <DynamicComponent filters={filters} onFilterChange={handleChange} />\r\n ) : (\r\n <div className=\"space-y-4\">\r\n {config?.fields?.map((field) => (\r\n <RenderFields\r\n key={field.key}\r\n field={field}\r\n formData={filters}\r\n handleChange={handleChange}\r\n />\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.filterDrawer.footer,\r\n \"flex gap-2 px-4 py-3 border-t border-gray-200 dark:border-gray-700\",\r\n )}\r\n >\r\n <Button\r\n onClick={handleApply}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n fullWidth\r\n >\r\n Apply Filters\r\n </Button>\r\n <Button\r\n onClick={handleReset}\r\n variant=\"contained\"\r\n className=\"min-w-[150px]\"\r\n >\r\n Reset\r\n </Button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default FilterDrawer;\r\n","import { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface TableSkeletonProps {\r\n rows: number;\r\n columns: number;\r\n}\r\n\r\nconst TableSkeleton = ({ rows = 5, columns = 5 }: TableSkeletonProps) => {\r\n return (\r\n <>\r\n <div className=\"w-full mb-6 inline-flex justify-end items-center\">\r\n <div className=\"h-8 w-80 bg-gray-300 dark:bg-gray-700 rounded animate-pulse\" />\r\n </div>\r\n <div className=\"overflow-hidden rounded-md border border-gray-200 dark:border-gray-800\">\r\n <table\r\n className={joinClasses(\r\n crudClasses.tableSkeleton.root,\r\n crudClasses.tableSkeleton.table,\r\n \"w-full border-collapse\",\r\n )}\r\n >\r\n <thead>\r\n <tr className=\"bg-gray-50 dark:bg-gray-900\">\r\n {Array.from({ length: columns }).map((_, i) => (\r\n <th key={i} className=\"px-4 py-3\">\r\n <div className=\"h-6 w-24 bg-gray-300 dark:bg-gray-700 rounded animate-pulse inline-flex justify-center items-center\" />\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n {Array.from({ length: rows }).map((_, rowIndex) => (\r\n <tr\r\n key={rowIndex}\r\n className=\"border-t border-gray-200 dark:border-gray-800\"\r\n >\r\n {Array.from({ length: columns }).map((_, colIndex) => (\r\n <td key={colIndex} className=\"px-4 py-6\">\r\n <div className=\"h-6 w-full bg-gray-300 dark:bg-gray-700 rounded animate-pulse\" />\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n </table>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default TableSkeleton;\r\n","import { useEffect, useRef, useState } from \"react\";\r\nimport { ArrowUpDown } from \"lucide-react\";\r\nimport { crudClasses, joinClasses } from \"../../../lib/crudClasses\";\r\n\r\ninterface SortOption {\r\n value: string;\r\n label: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface SortDropdownProps {\r\n options: SortOption[];\r\n value: string;\r\n onChange: (value: string, option: SortOption | null) => void;\r\n clearLabel?: string;\r\n}\r\n\r\nconst SortDropdown = ({\r\n options = [],\r\n value = \"\",\r\n onChange,\r\n clearLabel = \"\",\r\n}: SortDropdownProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const sortRef = useRef<HTMLDivElement | null>(null);\r\n const isSortApplied = Boolean(value);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (sortRef.current && !sortRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"click\", handleClickOutside);\r\n return () => document.removeEventListener(\"click\", handleClickOutside);\r\n }, []);\r\n\r\n const handleSelect = (selectedValue: string) => {\r\n const selectedOption = options.find((opt) => opt.value === selectedValue);\r\n onChange(selectedValue, selectedOption || null);\r\n setIsOpen(false);\r\n };\r\n\r\n if (!options?.length) return null;\r\n\r\n return (\r\n <div\r\n className={joinClasses(crudClasses.sortDropdown.root, \"relative\")}\r\n ref={sortRef}\r\n >\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen((prev) => !prev)}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.trigger,\r\n \"relative inline-flex items-center justify-center h-[36px] w-[36px] rounded-md border border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-600 transition\",\r\n )}\r\n aria-label=\"Open sort options\"\r\n >\r\n <ArrowUpDown className=\"w-4 h-4\" />\r\n {isSortApplied && (\r\n <span className=\"absolute top-1 right-1 w-2 h-2 bg-red-500 rounded-full\"></span>\r\n )}\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.sortDropdown.menu,\r\n \"absolute right-0 mt-2 z-20 min-w-[220px] max-h-[260px] overflow-auto rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-lg\",\r\n )}\r\n >\r\n {Boolean(clearLabel?.trim()) && (\r\n <button\r\n type=\"button\"\r\n onClick={() => handleSelect(\"\")}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.item,\r\n \"w-full text-left px-3 py-2 text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\",\r\n !value\r\n ? \"bg-gray-100 dark:bg-gray-700 text-gray-900 dark:text-white\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {clearLabel}\r\n </button>\r\n )}\r\n\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onClick={() => handleSelect(option.value)}\r\n className={joinClasses(\r\n crudClasses.sortDropdown.item,\r\n \"w-full text-left px-3 py-2 text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700\",\r\n value === option.value\r\n ? \"bg-gray-100 dark:bg-gray-700 text-gray-900 dark:text-white\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default SortDropdown;\r\n","interface SortOption {\r\n value: string;\r\n label: string;\r\n key: string;\r\n order: \"asc\" | \"desc\";\r\n type?: string;\r\n}\r\n\r\ninterface FieldRule {\r\n key?: string;\r\n type?: string;\r\n label?: string;\r\n}\r\n\r\ninterface SortChangePayload {\r\n value: string;\r\n option: SortOption | null;\r\n key: string;\r\n order: string;\r\n type: string;\r\n}\r\n\r\ninterface SortConfig {\r\n enabled?: boolean;\r\n useServerSideSorting?: boolean;\r\n options?: SortOption[];\r\n fields?: (string | FieldRule)[];\r\n defaultValue?: string;\r\n autoGenerate?: boolean;\r\n clearLabel?: string;\r\n onChange?: ((payload: SortChangePayload) => void) | null;\r\n}\r\n\r\ninterface NormalizedSortConfig {\r\n enabled: boolean;\r\n useServerSideSorting: boolean;\r\n options: SortOption[];\r\n fields: (string | FieldRule)[];\r\n defaultValue: string;\r\n autoGenerate: boolean;\r\n clearLabel: string;\r\n onChange: ((payload: SortChangePayload) => void) | null;\r\n}\r\n\r\ninterface TableColumn {\r\n key: string;\r\n type?: string;\r\n title?: string;\r\n sortKey?: string;\r\n sortType?: string;\r\n sortLabel?: string;\r\n titleKey?: string;\r\n chipOptions?: Array<{ value: any; label: string }>;\r\n}\r\n\r\nconst BASE_SORT_CONFIG: NormalizedSortConfig = {\r\n enabled: false,\r\n useServerSideSorting: false,\r\n options: [],\r\n fields: [],\r\n defaultValue: \"\",\r\n autoGenerate: true,\r\n clearLabel: \"\",\r\n onChange: null,\r\n};\r\n\r\nexport const normalizeSortConfig = (\r\n sortConfig: boolean | SortConfig | null | undefined,\r\n): NormalizedSortConfig => {\r\n if (sortConfig === true) {\r\n return { ...BASE_SORT_CONFIG, enabled: true };\r\n }\r\n\r\n if (!sortConfig || typeof sortConfig !== \"object\") {\r\n return BASE_SORT_CONFIG;\r\n }\r\n\r\n return {\r\n ...BASE_SORT_CONFIG,\r\n ...sortConfig,\r\n enabled: sortConfig.enabled ?? true,\r\n autoGenerate: sortConfig.autoGenerate ?? true,\r\n };\r\n};\r\n\r\nexport const getSortableColumns = (\r\n tableHead: TableColumn[] = [],\r\n): TableColumn[] => {\r\n return tableHead.filter((col) => {\r\n const blockedTypes = [\"menu_actions\", \"index\", \"audio\", \"avatar\"];\r\n if (col.type && blockedTypes.includes(col.type)) return false;\r\n\r\n const effectiveKey =\r\n col.sortKey || (col.type === \"group\" ? col.titleKey : col.key);\r\n return Boolean(effectiveKey);\r\n });\r\n};\r\n\r\nconst detectSortType = (col: TableColumn): string => {\r\n if (col.sortType) return col.sortType;\r\n if (col.type === \"date\") return \"date\";\r\n if (col.type === \"number\") return \"number\";\r\n\r\n const sortKeyName = String(\r\n col.sortKey || (col.type === \"group\" ? col.titleKey : col.key) || \"\",\r\n ).toLowerCase();\r\n\r\n const isPhoneLike = [\"phone\", \"mobile\", \"contact\", \"tel\", \"whatsapp\"].some(\r\n (keyword) => sortKeyName.includes(keyword),\r\n );\r\n\r\n if (isPhoneLike) return \"phone\";\r\n\r\n if (Array.isArray(col.chipOptions) && col.chipOptions.length > 0) {\r\n const allBoolean = col.chipOptions.every(\r\n (opt) => typeof opt.value === \"boolean\",\r\n );\r\n\r\n if (allBoolean) return \"boolean\";\r\n }\r\n\r\n return \"string\";\r\n};\r\n\r\nexport const buildDefaultSortOptions = (\r\n columns: TableColumn[] = [],\r\n): SortOption[] => {\r\n return columns.flatMap((col) => {\r\n const key = col.sortKey || (col.type === \"group\" ? col.titleKey : col.key);\r\n const label = col.sortLabel || col.title || key;\r\n const type = detectSortType(col);\r\n\r\n if (!key) return [];\r\n\r\n if (type === \"number\") {\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (Low-High)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (High-Low)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"phone\") {\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (0-9)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (9-0)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"date\") {\r\n return [\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (Newest First)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (Oldest First)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n if (type === \"boolean\") {\r\n return [\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (True First)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (False First)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n ];\r\n }\r\n\r\n return [\r\n {\r\n value: `${key}_asc`,\r\n label: `${label} (A-Z)`,\r\n key,\r\n order: \"asc\" as const,\r\n type,\r\n },\r\n {\r\n value: `${key}_desc`,\r\n label: `${label} (Z-A)`,\r\n key,\r\n order: \"desc\" as const,\r\n type,\r\n },\r\n ];\r\n });\r\n};\r\n\r\nexport const getNormalizedSortOptions = (\r\n normalizedSortConfig: NormalizedSortConfig,\r\n sortableColumns: TableColumn[] = [],\r\n): SortOption[] => {\r\n const hasExplicitOptions =\r\n Array.isArray(normalizedSortConfig.options) &&\r\n normalizedSortConfig.options.length > 0;\r\n\r\n if (hasExplicitOptions) {\r\n return normalizedSortConfig.options.map((option) => ({\r\n ...option,\r\n type: option.type || \"string\",\r\n order: (option.order === \"desc\" ? \"desc\" : \"asc\") as \"asc\" | \"desc\",\r\n }));\r\n }\r\n\r\n const fieldRules = Array.isArray(normalizedSortConfig.fields)\r\n ? normalizedSortConfig.fields\r\n : [];\r\n\r\n if (fieldRules.length > 0) {\r\n const fieldColumns: TableColumn[] = fieldRules\r\n .map((field) => {\r\n const fieldKey = typeof field === \"string\" ? field : field.key;\r\n const targetCol = sortableColumns.find(\r\n (col) =>\r\n col.key === fieldKey ||\r\n col.sortKey === fieldKey ||\r\n (col.type === \"group\" && col.titleKey === fieldKey),\r\n );\r\n\r\n if (!targetCol) return null;\r\n\r\n return {\r\n ...targetCol,\r\n sortKey:\r\n typeof field === \"object\" && field.key\r\n ? field.key\r\n : targetCol.sortKey,\r\n sortType:\r\n typeof field === \"object\" && field.type\r\n ? field.type\r\n : targetCol.sortType,\r\n sortLabel:\r\n typeof field === \"object\" && field.label\r\n ? field.label\r\n : targetCol.sortLabel,\r\n } as TableColumn;\r\n })\r\n .filter((col) => col !== null) as TableColumn[];\r\n\r\n return buildDefaultSortOptions(fieldColumns);\r\n }\r\n\r\n if (!normalizedSortConfig.autoGenerate) return [];\r\n return buildDefaultSortOptions(sortableColumns);\r\n};\r\n\r\nexport const sortTableData = (\r\n filteredData: any[] = [],\r\n sortBy: string = \"\",\r\n normalizedSortConfig: NormalizedSortConfig | null,\r\n normalizedSortOptions: SortOption[] = [],\r\n): any[] => {\r\n if (\r\n !normalizedSortConfig?.enabled ||\r\n !sortBy ||\r\n normalizedSortConfig?.useServerSideSorting\r\n ) {\r\n return filteredData;\r\n }\r\n\r\n const selectedOption = normalizedSortOptions?.find(\r\n (opt) => opt.value === sortBy,\r\n );\r\n if (!selectedOption?.key) {\r\n return filteredData;\r\n }\r\n\r\n const direction = selectedOption.order === \"desc\" ? \"desc\" : \"asc\";\r\n const sortKey = selectedOption.key;\r\n const sortType = selectedOption.type || \"string\";\r\n\r\n const normalizePhone = (value: any): string =>\r\n String(value ?? \"\")\r\n .replace(/[^\\d]/g, \"\")\r\n .trim();\r\n\r\n return [...filteredData].sort((a, b) => {\r\n const aValue = a?.[sortKey];\r\n const bValue = b?.[sortKey];\r\n\r\n if (aValue == null && bValue == null) return 0;\r\n if (aValue == null) return direction === \"asc\" ? 1 : -1;\r\n if (bValue == null) return direction === \"asc\" ? -1 : 1;\r\n\r\n let comparison = 0;\r\n\r\n if (sortType === \"number\") {\r\n comparison = Number(aValue) - Number(bValue);\r\n } else if (sortType === \"phone\") {\r\n comparison = normalizePhone(aValue).localeCompare(\r\n normalizePhone(bValue),\r\n undefined,\r\n {\r\n numeric: true,\r\n },\r\n );\r\n } else if (sortType === \"date\") {\r\n comparison = new Date(aValue).getTime() - new Date(bValue).getTime();\r\n } else if (sortType === \"boolean\") {\r\n comparison = Number(Boolean(aValue)) - Number(Boolean(bValue));\r\n } else {\r\n comparison = String(aValue).localeCompare(String(bValue));\r\n }\r\n\r\n return direction === \"asc\" ? comparison : -comparison;\r\n });\r\n};\r\n","import React, { useState, useMemo, useRef, useEffect } from \"react\";\r\nimport {\r\n ChevronLeft,\r\n ChevronRight,\r\n Search,\r\n EllipsisVertical,\r\n Filter,\r\n User,\r\n Music,\r\n Plus,\r\n Download,\r\n} from \"lucide-react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { formatDate, searchLocalData } from \"../../lib/utils\";\r\nimport Button from \"../Button/Button\";\r\nimport FilterDrawer from \"../Filter/FilterDrawer\";\r\nimport Chip from \"../Chip/Chip\";\r\nimport TableSkeleton from \"./components/TableSkeleton\";\r\nimport ImagePreview from \"./components/ImagePreview\";\r\nimport SortDropdown from \"./components/SortDropdown\";\r\nimport {\r\n normalizeSortConfig,\r\n getSortableColumns,\r\n getNormalizedSortOptions,\r\n sortTableData,\r\n} from \"./utils/sortUtils\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface TableProps {\r\n config: Record<string, any>;\r\n setShowAdd: (value: boolean) => void;\r\n title: string;\r\n buttonText?: string;\r\n description?: string;\r\n showAddButton?: boolean;\r\n}\r\n\r\ninterface CSVField {\r\n label: string;\r\n key: string;\r\n}\r\n\r\ninterface CustomToolbarButton {\r\n key?: string;\r\n label: string;\r\n icon?: React.ReactNode;\r\n variant?: string;\r\n color?: string;\r\n className?: string;\r\n disabled?: boolean;\r\n show?: boolean;\r\n onClick?: (\r\n event: React.MouseEvent,\r\n context: Record<string, any>,\r\n ) => void | Promise<void>;\r\n}\r\n\r\ninterface CustomToolbarMenuItem {\r\n key?: string;\r\n label: string;\r\n icon?: React.ReactNode;\r\n className?: string;\r\n disabled?: boolean;\r\n show?: boolean;\r\n onClick?: (\r\n event: React.MouseEvent,\r\n context: Record<string, any>,\r\n ) => void | Promise<void>;\r\n}\r\n\r\nconst Table = ({\r\n config,\r\n setShowAdd,\r\n title,\r\n buttonText,\r\n description,\r\n showAddButton,\r\n}: TableProps) => {\r\n const {\r\n data = [],\r\n table_head = [],\r\n loading = false,\r\n search = {\r\n enabled: false,\r\n placeholder: \"Search...\",\r\n useServerSideSearch: false,\r\n },\r\n filter = {\r\n enabled: false,\r\n useServerSideFilters: false,\r\n },\r\n sort = { enabled: false },\r\n pagination = {\r\n enabled: false,\r\n rows_per_page: 10,\r\n useServerSidePagination: false,\r\n },\r\n exportCSV = {\r\n enabled: false,\r\n fileName: \"\",\r\n fields: [],\r\n },\r\n customButtons = [],\r\n customMenuItems = [],\r\n emptyMessage = \"No data available\",\r\n onMenuAction,\r\n setServerSidePaginationData = () => {},\r\n onFilterApply,\r\n filterConfig = null,\r\n rowClick = null,\r\n } = config;\r\n\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [activeMenu, setActiveMenu] = useState<any>(null);\r\n const [menuList, setMenuList] = useState<any[]>([]);\r\n const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 });\r\n const [showFilters, setShowFilters] = useState(false);\r\n const [appliedFilters, setAppliedFilters] = useState<Record<string, any>>({});\r\n const [toolbarMenuOpen, setToolbarMenuOpen] = useState(false);\r\n\r\n const normalizedSortConfig = useMemo(() => normalizeSortConfig(sort), [sort]);\r\n\r\n const sortableColumns = useMemo(\r\n () => getSortableColumns(table_head),\r\n [table_head],\r\n );\r\n\r\n const normalizedSortOptions = useMemo(() => {\r\n return getNormalizedSortOptions(normalizedSortConfig, sortableColumns);\r\n }, [normalizedSortConfig, sortableColumns]);\r\n\r\n const [sortBy, setSortBy] = useState(\r\n normalizedSortConfig?.defaultValue || \"\",\r\n );\r\n\r\n const [targetImage, setTargetImage] = useState<{\r\n src: string;\r\n alt: string;\r\n } | null>(null);\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const filteredData = useMemo(() => {\r\n if (!search.enabled || !searchTerm.trim()) return data;\r\n if (search.useServerSideSearch) return data;\r\n return searchLocalData(data, searchTerm, search.searchKeys || []);\r\n }, [data, searchTerm, search]);\r\n\r\n const sortedData = useMemo(() => {\r\n return sortTableData(\r\n filteredData,\r\n sortBy,\r\n normalizedSortConfig,\r\n normalizedSortOptions,\r\n );\r\n }, [filteredData, sortBy, normalizedSortConfig, normalizedSortOptions]);\r\n\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [pageSize, setPageSize] = useState(pagination?.rows_per_page || 50);\r\n const [totalRecords, setTotalRecords] = useState(filteredData.length || 0);\r\n\r\n const totalPages = pagination?.useServerSidePagination\r\n ? pagination.total_pages\r\n : Math.ceil(filteredData.length / pageSize);\r\n\r\n const paginatedData = useMemo(() => {\r\n if (pagination.useServerSidePagination) return sortedData;\r\n const start = (currentPage - 1) * pageSize;\r\n return sortedData.slice(start, start + pageSize);\r\n }, [sortedData, currentPage, pageSize, pagination.useServerSidePagination]);\r\n\r\n const menuRef = useRef<HTMLDivElement | null>(null);\r\n const toolbarMenuRef = useRef<HTMLDivElement | null>(null);\r\n const tableScopeRef = useRef<HTMLDivElement | null>(null);\r\n const buttonRefs = useRef<Record<string, HTMLButtonElement | null>>({});\r\n const searchTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const menuPortalTarget =\r\n typeof document !== \"undefined\"\r\n ? (tableScopeRef.current?.closest(\".racm-root\") as HTMLElement | null) ||\r\n document.body\r\n : null;\r\n\r\n const handleSearchChange = (value: string) => {\r\n setSearchTerm(value);\r\n setCurrentPage(1);\r\n\r\n if (search.useServerSideSearch) {\r\n if (searchTimeoutRef.current) clearTimeout(searchTimeoutRef.current);\r\n\r\n searchTimeoutRef.current = setTimeout(async () => {\r\n try {\r\n await setServerSidePaginationData((prev: Record<string, any>) => ({\r\n ...prev,\r\n search: value,\r\n current_page: 1,\r\n }));\r\n } catch (error) {\r\n console.error(\"Search error:\", error);\r\n }\r\n }, 800);\r\n }\r\n };\r\n\r\n const handleSortChange = (value: string, selectedOption: any = null) => {\r\n setSortBy(value);\r\n setCurrentPage(1);\r\n\r\n const payload = {\r\n value,\r\n option: selectedOption,\r\n key: selectedOption?.key || \"\",\r\n order: selectedOption?.order || \"\",\r\n type: selectedOption?.type || \"\",\r\n };\r\n\r\n if (typeof normalizedSortConfig?.onChange === \"function\") {\r\n normalizedSortConfig.onChange(payload);\r\n }\r\n };\r\n\r\n const handleActionClick = async (\r\n action: any,\r\n item: any,\r\n e: React.MouseEvent,\r\n ) => {\r\n e.stopPropagation();\r\n setActiveMenu(null);\r\n\r\n if (typeof action?.onClick === \"function\") {\r\n await action.onClick(e, item);\r\n return;\r\n }\r\n\r\n onMenuAction?.(action.type, item);\r\n };\r\n\r\n const handleMenuToggle = (\r\n itemId: any,\r\n e: React.MouseEvent<HTMLButtonElement>,\r\n menu_list: any[],\r\n ) => {\r\n e.stopPropagation();\r\n setMenuList(menu_list);\r\n const button = e.currentTarget;\r\n buttonRefs.current[itemId] = button;\r\n const rect = button.getBoundingClientRect();\r\n const menuWidth = 192;\r\n const menuHeight = menu_list.length * 40;\r\n const viewportWidth = window.innerWidth;\r\n const viewportHeight = window.innerHeight;\r\n\r\n const openLeft = viewportWidth - rect.right < menuWidth;\r\n const left = openLeft ? rect.left - menuWidth + rect.width : rect.left;\r\n\r\n const openUp =\r\n viewportHeight - rect.bottom < menuHeight && rect.top > menuHeight;\r\n const top = openUp ? rect.top - menuHeight - 2 : rect.bottom + 2;\r\n\r\n setMenuPosition({\r\n top: Math.max(8, Math.min(top, viewportHeight - menuHeight - 8)),\r\n left: Math.max(8, Math.min(left, viewportWidth - menuWidth - 8)),\r\n });\r\n\r\n setActiveMenu(activeMenu === itemId ? null : itemId);\r\n };\r\n\r\n const calculateRowNumber = (index: number) => {\r\n return (currentPage - 1) * pageSize + index + 1;\r\n };\r\n\r\n const openPreview = (image: any) => {\r\n let imageObj = image;\r\n if (imageObj && imageObj.src instanceof File) {\r\n imageObj = { ...imageObj, src: URL.createObjectURL(imageObj.src) };\r\n }\r\n setTargetImage(imageObj);\r\n setIsOpen(true);\r\n };\r\n\r\n const getImageSource = (image: any): string => {\r\n if (!image) return \"\";\r\n\r\n if (typeof image === \"string\") {\r\n return image;\r\n }\r\n\r\n if (image instanceof File) {\r\n return URL.createObjectURL(image);\r\n }\r\n\r\n if (typeof image === \"object\") {\r\n if (typeof image.preview === \"string\") {\r\n return image.preview;\r\n }\r\n if (typeof image.src === \"string\") {\r\n return image.src;\r\n }\r\n if (image.src instanceof File) {\r\n return URL.createObjectURL(image.src);\r\n }\r\n if (image.file instanceof File) {\r\n return URL.createObjectURL(image.file);\r\n }\r\n }\r\n\r\n return \"\";\r\n };\r\n\r\n const renderMultiImageCell = (value: any, col: any) => {\r\n const images = Array.isArray(value) ? value : [];\r\n\r\n if (images.length === 0) {\r\n return <span className={col.className || \"\"}>N/A</span>;\r\n }\r\n\r\n const maxPreview = col.maxPreview || 3;\r\n const visibleImages = images.slice(0, maxPreview);\r\n const remaining = images.length - visibleImages.length;\r\n\r\n return (\r\n <div className=\"flex items-center\">\r\n <div className=\"flex -space-x-2\">\r\n {visibleImages.map((image: any, idx: number) => {\r\n const src = getImageSource(image);\r\n if (!src) return null;\r\n\r\n return (\r\n <button\r\n key={`${src}-${idx}`}\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openPreview({ src, alt: `Gallery ${idx + 1}` });\r\n }}\r\n className=\"w-8 h-8 rounded-full border-2 border-white dark:border-gray-800 overflow-hidden\"\r\n >\r\n <img\r\n src={src}\r\n alt={`gallery-${idx + 1}`}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n {remaining > 0 && (\r\n <span className=\"ml-2 text-xs font-medium text-gray-600 dark:text-gray-300\">\r\n +{remaining}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n const renderSingleImageCell = (value: any, col: any) => {\r\n const src = getImageSource(value);\r\n\r\n if (!src) {\r\n return <span className={col.className || \"\"}>N/A</span>;\r\n }\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openPreview({ src, alt: col.title || \"Image\" });\r\n }}\r\n className=\"w-10 h-10 rounded-full border border-gray-200 dark:border-gray-700 overflow-hidden\"\r\n >\r\n <img\r\n src={src}\r\n alt={col.title || \"image\"}\r\n className=\"w-full h-full object-cover\"\r\n />\r\n </button>\r\n );\r\n };\r\n\r\n const renderAvatar = (\r\n imageSrc: any,\r\n imageAlt: string,\r\n className: string,\r\n fallback_icon: any = null,\r\n row: any = null,\r\n ) => {\r\n return (\r\n <>\r\n {imageSrc ? (\r\n <img\r\n src={\r\n imageSrc instanceof File\r\n ? URL.createObjectURL(imageSrc)\r\n : imageSrc\r\n }\r\n alt={imageAlt || \"Avatar\"}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n openPreview({ src: imageSrc, alt: imageAlt });\r\n }}\r\n className={`w-10 h-10 cursor-pointer shrink-0 rounded-full object-cover border border-gray-200 dark:border-gray-700 ${className || \"\"}`}\r\n />\r\n ) : (\r\n <>\r\n {fallback_icon ? (\r\n typeof fallback_icon === \"function\" ? (\r\n fallback_icon(row)\r\n ) : (\r\n fallback_icon\r\n )\r\n ) : (\r\n <div\r\n className={`w-10 h-10 flex items-center shrink-0 justify-center rounded-full border border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 ${className || \"\"}`}\r\n >\r\n <User className=\"w-6 h-6 text-gray-400 dark:text-gray-400\" />\r\n </div>\r\n )}\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const renderAudio = (audioSrc: any, className: string) => {\r\n return (\r\n <>\r\n {audioSrc ? (\r\n <audio\r\n key={\r\n audioSrc instanceof File\r\n ? URL.createObjectURL(audioSrc)\r\n : audioSrc\r\n }\r\n controls\r\n src={\r\n audioSrc instanceof File\r\n ? URL.createObjectURL(audioSrc)\r\n : audioSrc\r\n }\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n }}\r\n className={`w-64 cursor-pointer ${className || \"\"}`}\r\n />\r\n ) : (\r\n <>\r\n <div\r\n className={`w-12 h-12 flex items-center shrink-0 justify-center rounded-full border border-gray-300 dark:border-gray-700 bg-gray-200 dark:bg-gray-600 ${className || \"\"}`}\r\n >\r\n <Music className=\"w-6 h-6 text-gray-400 dark:text-gray-400\" />\r\n </div>\r\n </>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const renderGroupCell = (row: any, col: any) => {\r\n return (\r\n <div className={`flex items-center space-x-4 ${col.className || \"\"}`}>\r\n {col.imageKey\r\n ? renderAvatar(\r\n row[col.imageKey],\r\n row[col.titleKey],\r\n \"group-avatar\",\r\n col.fallback_icon,\r\n row,\r\n )\r\n : \"\"}\r\n <div>\r\n <p className=\"font-medium text-gray-900 dark:text-white group-title\">\r\n {row[col.titleKey] || \"\"}\r\n </p>\r\n <p className=\"text-sm text-gray-500 dark:text-gray-400 group-sub-title\">\r\n {row[col.subtitleKey] || \"\"}\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n };\r\n\r\n const handleRenderChip = (value: any, col: any) => {\r\n let label = String(value);\r\n const variant = col.variant || \"contained\";\r\n let color = col.defaultColor;\r\n\r\n if (col?.chipOptions?.length > 0) {\r\n const chipObj = col?.chipOptions.find((obj: any) => obj.value == value);\r\n if (chipObj) {\r\n label = chipObj.label;\r\n color = chipObj.color;\r\n }\r\n }\r\n\r\n return (\r\n <Chip\r\n label={label}\r\n variant={variant}\r\n color={color}\r\n className={col.className || \"\"}\r\n />\r\n );\r\n };\r\n\r\n const handleRenderCellValue = (col: any, row: any, index: number) => {\r\n const value = row[col.key];\r\n if (col.type === \"menu_actions\") {\r\n return (\r\n <div className={`text-center ${col.className || \"\"}`}>\r\n <button\r\n ref={(el) => {\r\n buttonRefs.current[row.id || row._id] = el;\r\n }}\r\n onClick={(e) =>\r\n handleMenuToggle(row.id || row._id, e, col.menuList)\r\n }\r\n className={joinClasses(\r\n crudClasses.table.actionButton,\r\n \"p-2 bg-gray-100 dark:bg-gray-700 hover:bg-gray-200 dark:hover:bg-gray-600 rounded-full transition text-gray-700 dark:text-gray-300\",\r\n )}\r\n >\r\n <EllipsisVertical className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n );\r\n } else if (col.type === \"index\") {\r\n return (\r\n <span className={col.className || \"\"}>{calculateRowNumber(index)}</span>\r\n );\r\n } else if (col.type === \"group\") {\r\n return renderGroupCell(row, col);\r\n } else if (col.type === \"chip\") {\r\n return <>{handleRenderChip(value, col)}</>;\r\n } else if (col.type === \"date\") {\r\n return (\r\n <span className={col.className || \"\"}>\r\n {formatDate(value, col.format || \"DD MMM YYYY\")}\r\n </span>\r\n );\r\n } else if (col.type === \"avatar\") {\r\n return (\r\n <>\r\n <div className=\"min-w-[40px]\">\r\n {renderAvatar(\r\n value,\r\n col.alt,\r\n col.className,\r\n col.fallback_icon,\r\n row,\r\n )}\r\n </div>\r\n </>\r\n );\r\n } else if (col.type === \"audio\") {\r\n return <>{renderAudio(value, col.className)}</>;\r\n } else if (col.type === \"image\") {\r\n return <>{renderSingleImageCell(value, col)}</>;\r\n } else if (col.type === \"multiImage\") {\r\n return <>{renderMultiImageCell(value, col)}</>;\r\n } else {\r\n return <span className={col.className || \"\"}>{value || \"N/A\"}</span>;\r\n }\r\n };\r\n\r\n const handleRowClick = (row: any) => {\r\n if (typeof rowClick === \"function\") {\r\n return rowClick(row);\r\n }\r\n if (rowClick) {\r\n return onMenuAction?.(\"view\", row);\r\n }\r\n };\r\n\r\n const handleColumnClick = (col: any, row: any) => {\r\n if (col.onClickDetails) {\r\n return onMenuAction?.(\"view\", row);\r\n }\r\n\r\n if (typeof col.handleClick === \"function\") {\r\n return col.handleClick(row);\r\n }\r\n };\r\n\r\n const isRowClickable = () => rowClick || typeof rowClick === \"function\";\r\n const isColumnClickable = (col: any) =>\r\n col.onClickDetails || typeof col.handleClick === \"function\";\r\n\r\n const handleExportCSV = () => {\r\n if (!data?.length || !exportCSV?.fields?.length) return;\r\n\r\n // Create headers\r\n const headers = exportCSV.fields.map((field: CSVField) => field.label);\r\n\r\n // Create rows\r\n const rows = paginatedData.map((row: Record<string, any>) =>\r\n exportCSV.fields.map((field: CSVField) => {\r\n const value = row?.[field.key];\r\n return `\"${value !== undefined && value !== null ? value : \"\"}\"`;\r\n }),\r\n );\r\n\r\n const csvContent = [\r\n headers.join(\",\"),\r\n ...rows.map((r) => r.join(\",\")),\r\n ].join(\"\\n\");\r\n\r\n // Filename\r\n const now = new Date();\r\n const defaultName = `export-${formatDate(now, \"YYYY-MM-DD_HH-mm-ss\")}.csv`;\r\n const finalName = exportCSV.fileName || defaultName;\r\n\r\n // Create blob\r\n const blob = new Blob([csvContent], { type: \"text/csv;charset=utf-8;\" });\r\n\r\n // Download file\r\n const link = document.createElement(\"a\");\r\n const url = URL.createObjectURL(blob);\r\n\r\n link.href = url;\r\n link.download = finalName;\r\n\r\n document.body.appendChild(link);\r\n link.click();\r\n\r\n document.body.removeChild(link);\r\n URL.revokeObjectURL(url);\r\n };\r\n\r\n const handleCustomButtonClick = async (\r\n button: CustomToolbarButton,\r\n event: React.MouseEvent,\r\n ) => {\r\n if (typeof button.onClick !== \"function\") return;\r\n\r\n await button.onClick(event, {\r\n data,\r\n filteredData,\r\n sortedData,\r\n paginatedData,\r\n searchTerm,\r\n appliedFilters,\r\n currentPage,\r\n pageSize,\r\n totalRecords,\r\n });\r\n };\r\n\r\n const handleToolbarMenuItemClick = async (\r\n item: CustomToolbarMenuItem,\r\n event: React.MouseEvent,\r\n ) => {\r\n event.stopPropagation();\r\n setToolbarMenuOpen(false);\r\n\r\n if (typeof item.onClick !== \"function\") return;\r\n\r\n await item.onClick(event, {\r\n data,\r\n filteredData,\r\n sortedData,\r\n paginatedData,\r\n searchTerm,\r\n appliedFilters,\r\n currentPage,\r\n pageSize,\r\n totalRecords,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const handleScroll = () => {\r\n if (activeMenu) setActiveMenu(null);\r\n };\r\n\r\n window.addEventListener(\"scroll\", handleScroll, true);\r\n return () => {\r\n window.removeEventListener(\"scroll\", handleScroll, true);\r\n };\r\n }, [activeMenu]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\r\n setActiveMenu(null);\r\n }\r\n\r\n if (\r\n toolbarMenuRef.current &&\r\n !toolbarMenuRef.current.contains(e.target as Node)\r\n ) {\r\n setToolbarMenuOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"click\", handleClickOutside);\r\n return () => document.removeEventListener(\"click\", handleClickOutside);\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (pagination?.rows_per_page && pagination?.useServerSidePagination) {\r\n setPageSize(pagination?.rows_per_page || 50);\r\n }\r\n\r\n if (pagination.current_page) {\r\n setCurrentPage(pagination.current_page);\r\n }\r\n }, [\r\n pagination.rows_per_page,\r\n pagination?.useServerSidePagination,\r\n pagination.current_page,\r\n ]);\r\n\r\n useEffect(() => {\r\n setTotalRecords(\r\n pagination?.useServerSidePagination\r\n ? pagination.total_records\r\n : sortedData.length,\r\n );\r\n\r\n if (\r\n sortedData.length <= pageSize * (currentPage - 1) &&\r\n !pagination?.useServerSidePagination\r\n ) {\r\n setCurrentPage((prev) => prev - 1 || 1);\r\n }\r\n }, [\r\n sortedData.length,\r\n pagination.total_records,\r\n pagination?.useServerSidePagination,\r\n ]);\r\n\r\n useEffect(() => {\r\n if (!normalizedSortConfig?.enabled) {\r\n setSortBy(\"\");\r\n return;\r\n }\r\n\r\n const hasMatchingDefault = normalizedSortOptions.some(\r\n (opt: any) => opt.value === normalizedSortConfig.defaultValue,\r\n );\r\n\r\n if (hasMatchingDefault) {\r\n setSortBy(normalizedSortConfig.defaultValue);\r\n return;\r\n }\r\n\r\n setSortBy(\"\");\r\n }, [normalizedSortConfig, normalizedSortOptions]);\r\n\r\n useEffect(() => {\r\n if (\r\n !normalizedSortConfig?.enabled ||\r\n !normalizedSortConfig?.useServerSideSorting\r\n ) {\r\n return;\r\n }\r\n\r\n const selectedOption = normalizedSortOptions?.find(\r\n (opt: any) => opt.value === sortBy,\r\n );\r\n\r\n setServerSidePaginationData((prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: 1,\r\n sort_by: selectedOption?.key || \"\",\r\n sort_order: selectedOption?.order || \"\",\r\n }));\r\n }, [\r\n sortBy,\r\n normalizedSortConfig?.enabled,\r\n normalizedSortConfig?.useServerSideSorting,\r\n normalizedSortOptions,\r\n setServerSidePaginationData,\r\n ]);\r\n\r\n return (\r\n <div ref={tableScopeRef}>\r\n {loading ? (\r\n <TableSkeleton rows={6} columns={6} />\r\n ) : (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.toolbar,\r\n \"flex flex-col lg:!flex-row lg:!justify-between gap-4 mb-3\",\r\n )}\r\n >\r\n <div className=\"table-heading\">\r\n <h1>{title}</h1>\r\n <p>{description}</p>\r\n </div>\r\n <div className=\"flex flex-col justify-end items-stretch lg:!items-end gap-2 w-full lg:!w-auto\">\r\n {(showAddButton ||\r\n customButtons?.length > 0 ||\r\n customMenuItems?.length > 0) && (\r\n <div className=\"flex flex-col sm:!flex-row sm:!flex-wrap justify-end items-stretch sm:!items-center gap-2 w-full\">\r\n {showAddButton && (\r\n <Button\r\n onClick={() => setShowAdd(true)}\r\n variant=\"contained\"\r\n color=\"primary\"\r\n >\r\n <Plus className=\"w-4 h-4 mr-2\" />\r\n {buttonText || \"Add New\"}\r\n </Button>\r\n )}\r\n\r\n {customButtons\r\n .filter(\r\n (button: CustomToolbarButton) => button?.show !== false,\r\n )\r\n .map((button: CustomToolbarButton, index: number) => (\r\n <Button\r\n key={button.key || `${button.label}-${index}`}\r\n onClick={(event) =>\r\n handleCustomButtonClick(button, event)\r\n }\r\n variant={button.variant || \"contained\"}\r\n color={button.color || \"default\"}\r\n className={button.className || \"\"}\r\n disabled={button.disabled}\r\n >\r\n {button.icon ? (\r\n <span className=\"mr-2\">{button.icon}</span>\r\n ) : null}\r\n {button.label}\r\n </Button>\r\n ))}\r\n\r\n {customMenuItems.filter(\r\n (item: CustomToolbarMenuItem) => item?.show !== false,\r\n ).length > 0 && (\r\n <div className=\"relative\" ref={toolbarMenuRef}>\r\n <Button\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n setToolbarMenuOpen((prev) => !prev);\r\n }}\r\n variant=\"outlined\"\r\n className=\"px-2\"\r\n aria-label=\"More actions\"\r\n >\r\n <EllipsisVertical className=\"w-4 h-4\" />\r\n </Button>\r\n\r\n {toolbarMenuOpen && (\r\n <div className=\"absolute right-0 mt-2 w-48 z-50 rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-lg py-1\">\r\n {customMenuItems\r\n .filter(\r\n (item: CustomToolbarMenuItem) =>\r\n item?.show !== false,\r\n )\r\n .map(\r\n (item: CustomToolbarMenuItem, index: number) => (\r\n <button\r\n key={item.key || `${item.label}-${index}`}\r\n type=\"button\"\r\n onClick={(event) =>\r\n handleToolbarMenuItemClick(item, event)\r\n }\r\n disabled={item.disabled}\r\n className={joinClasses(\r\n \"w-full text-left px-3 py-2 text-sm text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed flex items-center\",\r\n item.className || \"\",\r\n )}\r\n >\r\n {item.icon ? (\r\n <span className=\"mr-2 inline-flex\">\r\n {item.icon}\r\n </span>\r\n ) : null}\r\n {item.label}\r\n </button>\r\n ),\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n <div className=\"flex flex-col sm:!flex-row sm:!flex-wrap justify-end items-stretch sm:!items-center gap-2 w-full\">\r\n {search.enabled && (\r\n <div className=\"w-full sm:!w-auto\">\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.searchField,\r\n \"table-search-field\",\r\n )}\r\n >\r\n <Search className=\"search-icon\" />\r\n <input\r\n type=\"text\"\r\n placeholder={search.placeholder || \"Search...\"}\r\n value={searchTerm}\r\n onChange={(e) => handleSearchChange(e.target.value)}\r\n className={crudClasses.table.searchInput}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {(normalizedSortConfig?.enabled &&\r\n normalizedSortOptions?.length > 0) ||\r\n (filterConfig && filter.enabled) ||\r\n (exportCSV && exportCSV.enabled) ? (\r\n <div className=\"flex items-center justify-end gap-2 w-full sm:!w-auto\">\r\n {filterConfig && filter.enabled && (\r\n <div className=\"filter-button-wrapper\">\r\n <Button\r\n onClick={() => setShowFilters(true)}\r\n variant=\"contained\"\r\n className=\"w-full sm:!w-auto\"\r\n >\r\n <Filter className=\"w-4 h-4 mr-2\" />\r\n Filters\r\n </Button>\r\n {Object.keys(appliedFilters).length > 0 && (\r\n <span className=\"red-dot\"></span>\r\n )}\r\n </div>\r\n )}\r\n {exportCSV && exportCSV.enabled && (\r\n <div className=\"filter-button-wrapper\">\r\n <Button\r\n onClick={() => handleExportCSV()}\r\n variant=\"contained\"\r\n className=\"w-full sm:!w-auto\"\r\n >\r\n <Download className=\"w-4 h-4 mr-2\" />\r\n Export CSV\r\n </Button>\r\n </div>\r\n )}\r\n {normalizedSortConfig?.enabled &&\r\n normalizedSortOptions?.length > 0 && (\r\n <SortDropdown\r\n options={normalizedSortOptions}\r\n value={sortBy}\r\n onChange={handleSortChange}\r\n clearLabel={normalizedSortConfig?.clearLabel}\r\n />\r\n )}\r\n </div>\r\n ) : null}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.root,\r\n crudClasses.table.container,\r\n \"table-container\",\r\n )}\r\n >\r\n <div className=\"overflow-x-auto\">\r\n <table className={crudClasses.table.element}>\r\n <thead className={crudClasses.table.head}>\r\n <tr className={crudClasses.table.headRow}>\r\n {table_head.map((col: any) => (\r\n <th\r\n key={col.key}\r\n className={joinClasses(\r\n crudClasses.table.headCell,\r\n \"table-head-data\",\r\n col.headClass || \"\",\r\n )}\r\n >\r\n {col.title}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n\r\n <tbody className={crudClasses.table.body}>\r\n {paginatedData.length === 0 ? (\r\n <tr>\r\n <td\r\n colSpan={table_head.length}\r\n className={joinClasses(\r\n crudClasses.table.noData,\r\n \"no-data-message\",\r\n )}\r\n >\r\n {emptyMessage}\r\n </td>\r\n </tr>\r\n ) : (\r\n paginatedData.map((row: any, index: number) => (\r\n <tr\r\n key={row.id || row._id || index}\r\n className={joinClasses(\r\n crudClasses.table.row,\r\n \"table-row\",\r\n isRowClickable() ? \"cursor-pointer\" : \"\",\r\n )}\r\n onClick={() => {\r\n isRowClickable() && handleRowClick(row);\r\n }}\r\n >\r\n {table_head.map((col: any) => (\r\n <td\r\n key={col.key}\r\n className={joinClasses(\r\n crudClasses.table.cell,\r\n \"table-data\",\r\n col.type == \"audio\" ? \"\" : \"max-w-[300px]\",\r\n \"truncate\",\r\n isColumnClickable(col) ? \"cursor-pointer\" : \"\",\r\n )}\r\n title={String(row[col.key] ?? \"\")}\r\n onClick={(e) => {\r\n if (isColumnClickable(col)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n handleColumnClick(col, row);\r\n }\r\n }}\r\n >\r\n {col.render\r\n ? col.render(row, index)\r\n : handleRenderCellValue(col, row, index)}\r\n </td>\r\n ))}\r\n </tr>\r\n ))\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n {pagination?.enabled && sortedData.length > 0 && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.table.pagination,\r\n \"pagination-wrapper\",\r\n )}\r\n >\r\n <span>\r\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\r\n {Math.min(currentPage * pageSize, totalRecords)} of{\" \"}\r\n {totalRecords} results\r\n </span>\r\n\r\n <div className=\"flex items-center gap-4\">\r\n <div className=\"flex items-center gap-2\">\r\n <span>Rows per page:</span>\r\n <select\r\n value={pageSize}\r\n onChange={(e) => {\r\n const newLimit = Number(e.target.value);\r\n setPageSize(newLimit);\r\n setCurrentPage(1);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: 1,\r\n rows_per_page: newLimit,\r\n }),\r\n );\r\n }\r\n }}\r\n className=\"rows-number-select\"\r\n >\r\n {[10, 25, 50, 100].map((n) => (\r\n <option key={n} value={n}>\r\n {n}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n <button\r\n onClick={() => {\r\n if (currentPage > 1) {\r\n const newPage = currentPage - 1;\r\n setCurrentPage(newPage);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: newPage,\r\n }),\r\n );\r\n }\r\n }\r\n }}\r\n disabled={currentPage === 1}\r\n className=\"arrow-icons\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </button>\r\n\r\n <span>\r\n Page {currentPage} of {totalPages}\r\n </span>\r\n\r\n <button\r\n onClick={() => {\r\n if (currentPage < totalPages) {\r\n const newPage = currentPage + 1;\r\n setCurrentPage(newPage);\r\n if (pagination.useServerSidePagination) {\r\n setServerSidePaginationData(\r\n (prev: Record<string, any>) => ({\r\n ...prev,\r\n current_page: newPage,\r\n }),\r\n );\r\n }\r\n }\r\n }}\r\n disabled={currentPage === totalPages}\r\n className=\"arrow-icons\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </>\r\n )}\r\n\r\n {activeMenu &&\r\n menuPortalTarget &&\r\n createPortal(\r\n <div\r\n ref={menuRef}\r\n style={{\r\n position: \"fixed\",\r\n top: `${menuPosition.top}px`,\r\n left: `${menuPosition.left}px`,\r\n zIndex: 9999,\r\n }}\r\n className={joinClasses(\r\n crudClasses.table.menu,\r\n \"w-48 bg-white dark:bg-gray-700 rounded-md shadow-lg border border-gray-200 dark:border-gray-600\",\r\n )}\r\n >\r\n {menuList.map((action: any, i: number) => (\r\n <button\r\n key={i}\r\n onClick={(e) =>\r\n handleActionClick(\r\n action,\r\n data.find(\r\n (d: any) => d.id === activeMenu || d._id == activeMenu,\r\n ),\r\n e,\r\n )\r\n }\r\n className={joinClasses(\r\n crudClasses.table.menuItem,\r\n \"w-full flex items-center gap-2 px-4 py-2 text-sm text-left hover:bg-gray-100 dark:hover:bg-gray-600\",\r\n action.variant === \"danger\"\r\n ? \"text-red-600 dark:text-red-500\"\r\n : \"text-gray-700 dark:text-gray-200\",\r\n )}\r\n >\r\n {action.icon && <span className=\"shrink-0\">{action.icon}</span>}\r\n {action.title}\r\n </button>\r\n ))}\r\n </div>,\r\n menuPortalTarget,\r\n )}\r\n\r\n {filterConfig && (\r\n <FilterDrawer\r\n isOpen={showFilters}\r\n onClose={() => setShowFilters(false)}\r\n config={filterConfig}\r\n onApply={(filters) => {\r\n setAppliedFilters(filters);\r\n onFilterApply?.(filters);\r\n }}\r\n />\r\n )}\r\n\r\n {isOpen && targetImage && (\r\n <ImagePreview\r\n src={targetImage.src}\r\n alt={targetImage.alt}\r\n isOpen={isOpen}\r\n setIsOpen={setIsOpen}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Table;\r\n","import React from \"react\";\r\nimport { X } from \"lucide-react\";\r\nimport Button from \"../Button/Button\";\r\nimport { ActionButton } from \"../../types/crudtypes\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface ModalProps {\r\n isOpen: boolean;\r\n onClose: (resp?: any) => void;\r\n icon?: React.ReactNode;\r\n title: React.ReactNode;\r\n children: React.ReactNode;\r\n size?: string;\r\n actionButtons?: ActionButton[];\r\n footerConfig?: any;\r\n onFormSubmit?: (e?: any) => void;\r\n onCancel?: () => void;\r\n loadingBtn?: boolean;\r\n loading?: boolean;\r\n executeFunction?: (...args: any[]) => void;\r\n selectedItem?: any;\r\n classNames?: {\r\n overlay?: string;\r\n container?: string;\r\n header?: string;\r\n title?: string;\r\n body?: string;\r\n footer?: string;\r\n closeButton?: string;\r\n };\r\n}\r\n\r\nconst Modal = ({\r\n isOpen,\r\n onClose,\r\n icon,\r\n title,\r\n children,\r\n size = \"md\",\r\n actionButtons = [],\r\n onFormSubmit = () => {},\r\n loadingBtn = false,\r\n executeFunction = () => {},\r\n selectedItem = null,\r\n footerConfig,\r\n classNames,\r\n}: ModalProps) => {\r\n if (!isOpen) return null;\r\n\r\n const sizeClasses: Record<string, string> = {\r\n sm: \"max-w-md\",\r\n md: \"max-w-lg\",\r\n lg: \"max-w-2xl\",\r\n xl: \"max-w-4xl\",\r\n full: \"max-w-full\",\r\n };\r\n\r\n const shouldShowFooter =\r\n actionButtons.length > 0 || Boolean(footerConfig?.cancelButton);\r\n\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.root,\r\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.overlay,\r\n \"fixed inset-0 bg-gray-500 opacity-75\",\r\n classNames?.overlay,\r\n )}\r\n // onClick={() => onClose()}\r\n ></div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.container,\r\n \"relative bg-white rounded-lg shadow-xl w-full max-h-[90vh] flex flex-col dark:bg-gray-800\",\r\n sizeClasses[size] || sizeClasses.md,\r\n classNames?.container,\r\n )}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.header,\r\n \"flex items-center justify-between p-4 border-b border-gray-200 dark:border-gray-700 flex-shrink-0\",\r\n classNames?.header,\r\n )}\r\n >\r\n <div className=\"flex items-center gap-1\">\r\n {icon && <span>{icon}</span>}\r\n <h3\r\n className={joinClasses(\r\n crudClasses.modal.title,\r\n \"text-lg font-medium text-gray-900 dark:text-white\",\r\n classNames?.title,\r\n )}\r\n >\r\n {title}\r\n </h3>\r\n </div>\r\n\r\n <button\r\n onClick={() => onClose()}\r\n className={joinClasses(\r\n crudClasses.modal.closeButton,\r\n \"text-gray-400 hover:text-gray-600 dark:hover:text-gray-300\",\r\n classNames?.closeButton,\r\n )}\r\n >\r\n <X className=\"w-6 h-6\" />\r\n </button>\r\n </div>\r\n\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.body,\r\n \"flex-1 overflow-y-auto p-4\",\r\n classNames?.body,\r\n )}\r\n >\r\n {children}\r\n </div>\r\n\r\n {shouldShowFooter && (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.footer,\r\n \"px-4 py-3 flex justify-end gap-3 border-t border-gray-200 dark:border-gray-700 sm:!px-6\",\r\n classNames?.footer,\r\n )}\r\n >\r\n {footerConfig?.cancelButton && (\r\n <Button\r\n onClick={() => onClose()}\r\n variant=\"outlined\"\r\n color=\"default\"\r\n className={joinClasses(\r\n crudClasses.modal.actionButton,\r\n \"min-w-[100px]\",\r\n )}\r\n type=\"button\"\r\n >\r\n {footerConfig?.cancelText || \"Cancel\"}\r\n </Button>\r\n )}\r\n {actionButtons.map((btn, index) => (\r\n <Button\r\n key={`${btn.label || \"action\"}-${index}`}\r\n onClick={(e) => {\r\n if (btn.type == \"submit\") {\r\n onFormSubmit(e);\r\n } else {\r\n executeFunction(\r\n () => Promise.resolve(btn?.onClick?.(e, selectedItem)),\r\n (resp: any) => onClose?.(resp),\r\n );\r\n }\r\n }}\r\n disabled={loadingBtn || btn.disabled}\r\n variant={btn.variant || \"contained\"}\r\n color={btn.color || \"primary\"}\r\n className={joinClasses(\r\n crudClasses.modal.actionButton,\r\n \"min-w-[100px]\",\r\n btn.className || \"\",\r\n )}\r\n type={(btn.type as \"button\" | \"submit\" | \"reset\") || \"button\"}\r\n >\r\n {loadingBtn ? (\r\n <div\r\n className={joinClasses(\r\n crudClasses.modal.loadingIndicator,\r\n \"flex items-center\",\r\n )}\r\n >\r\n <div className=\"animate-spin rounded-full h-4 w-4 border-2 border-white/30 border-t-2 border-t-white mr-2\"></div>\r\n {btn.label || \"Submit\"}...\r\n </div>\r\n ) : (\r\n btn.label || \"Submit\"\r\n )}\r\n </Button>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport RenderFields from \"./components/RenderFields\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface FormField {\r\n key: string;\r\n [key: string]: any;\r\n}\r\n\r\ninterface FormConfig {\r\n formClass?: string;\r\n formFields?: FormField[];\r\n}\r\n\r\ninterface FormProps {\r\n config: FormConfig;\r\n onSubmit: (data: Record<string, any>) => void;\r\n initialData: Record<string, any> | null;\r\n fetchRowDetails?: (\r\n item: Record<string, any>,\r\n ) => Promise<{ data: Record<string, any> }>;\r\n type: \"add\" | \"edit\" | string;\r\n loading?: boolean;\r\n}\r\n\r\nconst Form: React.FC<FormProps> = ({\r\n config,\r\n onSubmit,\r\n initialData,\r\n fetchRowDetails,\r\n type,\r\n}) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const safeInitialData = initialData || {};\r\n\r\n const { formClass = \"grid grid-cols-12 gap-4\", formFields = [] } =\r\n config || {};\r\n\r\n const [formData, setFormData] =\r\n useState<Record<string, any>>(safeInitialData);\r\n const [dataLoading, setDataLoading] = useState<boolean>(false);\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n const handleGetDetails = async (): Promise<void> => {\r\n fetchRowDetails?.(safeInitialData)\r\n .then((resp) => {\r\n setFormData(resp.data);\r\n })\r\n .catch((error: Error) => {\r\n enqueueSnackbar(error.message, { variant: \"error\" });\r\n })\r\n .finally(() => {\r\n setDataLoading(false);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (fetchRowDetails instanceof Function) {\r\n setDataLoading(true);\r\n handleGetDetails();\r\n } else {\r\n setFormData(safeInitialData);\r\n setDataLoading(false);\r\n }\r\n }, []);\r\n\r\n const handleChange = (key: string, value: any): void => {\r\n setFormData((prev) => ({ ...prev, [key]: value }));\r\n setErrors((prev) => ({\r\n ...prev,\r\n [key]: \"\",\r\n }));\r\n };\r\n\r\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>): void => {\r\n e.preventDefault();\r\n const form = e.currentTarget;\r\n\r\n if (!form.checkValidity()) {\r\n form.reportValidity();\r\n return;\r\n }\r\n\r\n const newErrors: Record<string, string> = {};\r\n let firstInvalidFocused = false;\r\n\r\n for (const field of formFields) {\r\n const value = formData[field.key] || \"\";\r\n if (field.customValidation) {\r\n const isValid = field.customValidation(value);\r\n if (isValid !== false) {\r\n newErrors[field.key] = isValid;\r\n if (!firstInvalidFocused) {\r\n const input = form.querySelector(\r\n `[id=\"field-${field.key}\"]`,\r\n ) as HTMLElement | null;\r\n input?.focus();\r\n firstInvalidFocused = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n setErrors(newErrors);\r\n\r\n if (Object.keys(newErrors).length > 0) return;\r\n\r\n onSubmit(formData);\r\n };\r\n\r\n if (dataLoading) {\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.form.loading,\r\n \"flex items-center justify-center h-64\",\r\n )}\r\n >\r\n <div\r\n className=\"rounded-full border-4 border-blue-500 border-t-gray-200 animate-spin w-8 h-8\"\r\n style={{\r\n borderTopColor: \"border-primary-500\",\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <form\r\n id={\r\n type === \"add\"\r\n ? \"addForm\"\r\n : type === \"edit\"\r\n ? \"editForm\"\r\n : \"defaultForm\"\r\n }\r\n onSubmit={handleSubmit}\r\n className={joinClasses(crudClasses.form.root, formClass)}\r\n noValidate={false}\r\n >\r\n {formFields.map((field) => (\r\n <RenderFields\r\n key={field.key}\r\n field={field}\r\n formData={formData}\r\n errorMessage={errors[field.key] || \"\"}\r\n handleChange={handleChange}\r\n />\r\n ))}\r\n </form>\r\n );\r\n};\r\n\r\nexport default Form;\r\n","import { useEffect, useState } from \"react\";\r\nimport DetailRow from \"./components/DetailRow\";\r\nimport CardGroup from \"./components/CardGroup\";\r\nimport GroupRow from \"./components/GroupRow\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { crudClasses, joinClasses } from \"../../lib/crudClasses\";\r\n\r\ninterface DetailsProps {\r\n data: Record<string, any> | null;\r\n config: {\r\n fields?: Array<Record<string, any>>;\r\n containerClass?: string;\r\n variant?: \"default\" | \"card\" | \"split\";\r\n styles?: {\r\n containerClass?: string;\r\n rowClass?: string;\r\n groupClass?: string;\r\n cardGroupClass?: string;\r\n labelClass?: string;\r\n valueClass?: string;\r\n iconClass?: string;\r\n mediaGridClass?: string;\r\n };\r\n };\r\n fetchRowDetails?: (\r\n payload: Record<string, any>,\r\n ) => Promise<{ data: Record<string, any> }>;\r\n}\r\n\r\nexport default function Details({\r\n data,\r\n config,\r\n fetchRowDetails,\r\n}: DetailsProps) {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const {\r\n fields = [],\r\n containerClass,\r\n variant = \"default\",\r\n styles = {},\r\n } = config || {};\r\n\r\n const safeData = data || {};\r\n\r\n const [detailsData, setDetailsData] = useState<Record<string, any>>(safeData);\r\n\r\n const [dataLoading, setDataLoading] = useState(true);\r\n\r\n const handleGetDetails = async () => {\r\n fetchRowDetails?.(safeData)\r\n .then((resp) => {\r\n setDetailsData(resp.data);\r\n })\r\n .catch((error: Error) => {\r\n enqueueSnackbar(error.message, { variant: \"error\" });\r\n })\r\n .finally(() => {\r\n setDataLoading(false);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (fetchRowDetails instanceof Function) {\r\n handleGetDetails();\r\n } else {\r\n setDetailsData(safeData);\r\n setDataLoading(false);\r\n }\r\n }, []);\r\n\r\n if (dataLoading) {\r\n return (\r\n <div\r\n className={joinClasses(\r\n crudClasses.form.loading,\r\n \"flex items-center justify-center h-64\",\r\n )}\r\n >\r\n <div\r\n className=\"rounded-full border-4 border-blue-500 border-t-gray-200 animate-spin w-8 h-8\"\r\n style={{\r\n borderTopColor: \"border-primary-500\",\r\n }}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n const variantContainerClass: Record<string, string> = {\r\n default: \"grid grid-cols-12 gap-4\",\r\n // card: each field is a standalone elevated card in a 12-col grid\r\n card: \"grid grid-cols-12 gap-3\",\r\n // split: clean property-sheet — bordered box, rows divided by hairlines\r\n split:\r\n \"rounded-xl border border-gray-200 dark:border-gray-700 overflow-hidden divide-y divide-gray-100 dark:divide-gray-800\",\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={joinClasses(\r\n crudClasses.details.root,\r\n crudClasses.details.container,\r\n variantContainerClass[variant] || variantContainerClass.default,\r\n containerClass || \"\",\r\n styles.containerClass || \"\",\r\n )}\r\n >\r\n {fields.map((col) => {\r\n if (\r\n col.renderCondition &&\r\n typeof col.renderCondition === \"function\"\r\n ) {\r\n const shouldRender = col.renderCondition(detailsData);\r\n if (!shouldRender) {\r\n return null;\r\n }\r\n }\r\n return col.type == \"group\" ? (\r\n <GroupRow\r\n key={col.key || col.titleKey}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n ) : col.type == \"cardGroup\" ? (\r\n <CardGroup\r\n key={col.key || col.titleKey}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n ) : (\r\n <DetailRow\r\n key={col.key || col.label}\r\n col={col}\r\n data={detailsData}\r\n uiVariant={variant}\r\n styleConfig={styles}\r\n />\r\n );\r\n })}\r\n </div>\r\n </>\r\n );\r\n}\r\n","import React, { useEffect, useMemo, useState } from \"react\";\r\nimport Table from \"./Table/Table\";\r\nimport Modal from \"./Modal/Modal\";\r\nimport Form from \"./Form/Form\";\r\nimport { Icon } from \"@iconify/react\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport Details from \"./Details/Details\";\r\nimport type {\r\n CrudPageProps,\r\n ServerSidePaginationData,\r\n} from \"../types/crudtypes\";\r\nimport { crudClasses, joinClasses } from \"../lib/crudClasses\";\r\n\r\nconst CrudPage: React.FC<CrudPageProps> = ({ config }) => {\r\n const { enqueueSnackbar } = useSnackbar();\r\n const {\r\n title,\r\n fetchData,\r\n fetchRowDetails,\r\n isStaticData = false,\r\n tableConfig,\r\n modalConfig,\r\n filterConfig,\r\n } = config;\r\n\r\n const [loading, setLoading] = useState<boolean>(true);\r\n const [formLoading, setFormLoading] = useState<boolean>(false);\r\n const [listingData, setListingData] = useState<Record<string, any>[]>([]);\r\n const [paginationData, setPaginationData] = useState<any>(null);\r\n const [serverSidePaginationData, setServerSidePaginationData] =\r\n useState<ServerSidePaginationData>({\r\n search: \"\",\r\n rows_per_page: 50,\r\n current_page: 1,\r\n sort_by: \"\",\r\n sort_order: \"\",\r\n });\r\n const [filterData, setFilterData] = useState<Record<string, any>>({});\r\n const [changeFilterData, setChangeFilterData] = useState<boolean>(false);\r\n const [showAdd, setShowAdd] = useState<boolean>(false);\r\n const [showEdit, setShowEdit] = useState<boolean>(false);\r\n const [showDelete, setShowDelete] = useState<boolean>(false);\r\n const [showView, setShowView] = useState<boolean>(false);\r\n const [selectedItem, setSelectedItem] = useState<Record<string, any> | null>(\r\n null,\r\n );\r\n\r\n const handleMenuAction = (action: string, item: any): void => {\r\n if (action === \"edit\") {\r\n setSelectedItem(item);\r\n setShowEdit(true);\r\n } else if (action === \"view\") {\r\n setSelectedItem(item);\r\n setShowView(true);\r\n } else if (action === \"delete\") {\r\n setSelectedItem(item);\r\n setShowDelete(true);\r\n }\r\n };\r\n\r\n const executeAction = async (\r\n action: (() => Promise<any>) | null,\r\n onSuccess?: (resp: any) => void,\r\n success_message: string = \"\",\r\n error_message: string = \"\",\r\n ): Promise<void> => {\r\n setFormLoading(true);\r\n\r\n try {\r\n if (!action) return;\r\n const resp = await action();\r\n if (success_message || resp?.message) {\r\n enqueueSnackbar(success_message || resp.message || \"Success\", {\r\n variant: \"success\" as const,\r\n });\r\n }\r\n onSuccess?.(resp);\r\n } catch (error: any) {\r\n if (error_message || error?.message) {\r\n enqueueSnackbar(error_message || error.message || \"Error occurred\", {\r\n variant: \"error\" as const,\r\n });\r\n }\r\n } finally {\r\n setFormLoading(false);\r\n }\r\n };\r\n\r\n const handleAddResult = (resp: { newObject: any }): void => {\r\n const newObj = resp.newObject;\r\n if (isStaticData) {\r\n setListingData((prev) => [newObj, ...prev]);\r\n setPaginationData((prev: any) => ({\r\n ...prev,\r\n current_page: 1,\r\n }));\r\n } else {\r\n setServerSidePaginationData((prev) => ({\r\n ...prev,\r\n current_page: 1,\r\n }));\r\n if (serverSidePaginationData.current_page === 1) {\r\n handleGetListing();\r\n }\r\n }\r\n setShowAdd(false);\r\n };\r\n\r\n const handleEditResult = (resp: {\r\n newObject: any;\r\n targetObject: any;\r\n }): void => {\r\n const { newObject: updatedObj, targetObject } = resp;\r\n if (isStaticData) {\r\n setListingData((prev) =>\r\n prev.map((item) =>\r\n item.id === targetObject.id ? { ...item, ...updatedObj } : item,\r\n ),\r\n );\r\n } else {\r\n handleGetListing();\r\n }\r\n setShowEdit(false);\r\n };\r\n\r\n const handleDeleteResult = (resp: { targetObject: any } | null): void => {\r\n if (!resp) {\r\n setShowDelete(false);\r\n setSelectedItem(null);\r\n return;\r\n }\r\n\r\n if (isStaticData) {\r\n setListingData((prev) =>\r\n prev.filter((item) => item.id !== resp.targetObject.id),\r\n );\r\n } else {\r\n if (\r\n listingData.length === 1 &&\r\n serverSidePaginationData.current_page > 1\r\n ) {\r\n setServerSidePaginationData((prev) => ({\r\n ...prev,\r\n current_page: prev.current_page - 1,\r\n }));\r\n } else {\r\n handleGetListing();\r\n }\r\n }\r\n setShowDelete(false);\r\n setSelectedItem(null);\r\n };\r\n\r\n const handleAddFormSubmit = (formData: Record<string, any>): Promise<void> =>\r\n executeAction(\r\n () =>\r\n modalConfig?.addModal?.handleSubmit\r\n ? modalConfig.addModal.handleSubmit(formData)\r\n : Promise.resolve({ newObject: null }),\r\n handleAddResult,\r\n );\r\n\r\n const handleEditFormSubmit = (formData: Record<string, any>): Promise<void> =>\r\n executeAction(\r\n () =>\r\n modalConfig?.editModal?.handleSubmit\r\n ? modalConfig.editModal.handleSubmit(formData, selectedItem)\r\n : Promise.resolve({ newObject: null, targetObject: null }),\r\n handleEditResult,\r\n );\r\n\r\n const handleGetListing = async (): Promise<void> => {\r\n setLoading(true);\r\n\r\n try {\r\n const resp = await fetchData({\r\n ...serverSidePaginationData,\r\n ...filterData,\r\n });\r\n setListingData(resp.data || []);\r\n setPaginationData(resp.pagination || null);\r\n } catch (error: any) {\r\n enqueueSnackbar(error.message || \"Failed to fetch data\", {\r\n variant: \"error\",\r\n });\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n const handleFilterData = (data: Record<string, any>): void => {\r\n setFilterData((prev) => ({ ...data }));\r\n if (tableConfig?.filter?.useServerSideFilters) {\r\n setChangeFilterData((prev) => !prev);\r\n }\r\n };\r\n\r\n const filterByMatchingFields = (\r\n data: any[],\r\n filters: Record<string, any>,\r\n ): any[] => {\r\n return data.filter((item) =>\r\n Object.entries(filters).every(([key, value]) => item[key] === value),\r\n );\r\n };\r\n\r\n const filteredData = useMemo(() => {\r\n if (tableConfig?.filter?.useServerSideFilters) return listingData;\r\n return filterByMatchingFields(listingData, filterData);\r\n }, [listingData, filterData, tableConfig?.filter?.useServerSideFilters]);\r\n\r\n const ViewComponent = modalConfig?.viewModal?.component;\r\n\r\n useEffect(() => {\r\n handleGetListing();\r\n }, [\r\n serverSidePaginationData.search,\r\n serverSidePaginationData.rows_per_page,\r\n serverSidePaginationData.current_page,\r\n serverSidePaginationData.sort_by,\r\n serverSidePaginationData.sort_order,\r\n changeFilterData,\r\n ]);\r\n\r\n return (\r\n <div className={crudClasses.crudPage.root}>\r\n <Table\r\n title={title}\r\n setShowAdd={setShowAdd}\r\n description={config.description}\r\n buttonText={config.buttonText}\r\n showAddButton={!!modalConfig?.addModal}\r\n config={{\r\n ...tableConfig,\r\n pagination: {\r\n ...tableConfig.pagination,\r\n ...paginationData,\r\n },\r\n data: filteredData,\r\n setServerSidePaginationData: setServerSidePaginationData,\r\n onMenuAction: handleMenuAction,\r\n filterConfig,\r\n onFilterApply: handleFilterData,\r\n loading,\r\n }}\r\n />\r\n\r\n <Modal\r\n isOpen={showAdd}\r\n onClose={() => {\r\n if (!formLoading) {\r\n setShowAdd(false);\r\n }\r\n }}\r\n icon={modalConfig?.addModal?.icon}\r\n title={modalConfig?.addModal?.title || \"Add New\"}\r\n size={modalConfig?.addModal?.size || \"md\"}\r\n onFormSubmit={() =>\r\n document.querySelector<HTMLFormElement>(\"#addForm\")?.requestSubmit()\r\n }\r\n loadingBtn={formLoading}\r\n actionButtons={modalConfig?.addModal?.actionButtons || []}\r\n >\r\n <Form\r\n config={modalConfig?.addModal || {}}\r\n onSubmit={handleAddFormSubmit}\r\n initialData={{}}\r\n type=\"add\"\r\n loading={formLoading}\r\n />\r\n </Modal>\r\n\r\n {/* Edit Modal */}\r\n <Modal\r\n isOpen={showEdit}\r\n onClose={() => {\r\n if (!formLoading) {\r\n setShowEdit(false);\r\n }\r\n }}\r\n icon={modalConfig?.editModal?.icon}\r\n title={modalConfig?.editModal?.title || \"Edit\"}\r\n size={modalConfig?.editModal?.size || \"md\"}\r\n onFormSubmit={() =>\r\n document.querySelector<HTMLFormElement>(\"#editForm\")?.requestSubmit()\r\n }\r\n actionButtons={modalConfig?.editModal?.actionButtons || []}\r\n loadingBtn={formLoading}\r\n >\r\n <Form\r\n config={modalConfig?.editModal || {}}\r\n onSubmit={handleEditFormSubmit}\r\n initialData={selectedItem}\r\n type=\"edit\"\r\n loading={formLoading}\r\n fetchRowDetails={fetchRowDetails}\r\n />\r\n </Modal>\r\n\r\n {/* Delete Modal */}\r\n <Modal\r\n isOpen={showDelete}\r\n onClose={(resp) => {\r\n handleDeleteResult(resp);\r\n }}\r\n icon={\r\n modalConfig?.deleteModal?.icon || (\r\n <Icon icon=\"ph:warning-bold\" className=\"w-6 h-6 text-red-500\" />\r\n )\r\n }\r\n title={modalConfig?.deleteModal?.title || \"Confirm Delete\"}\r\n size={modalConfig?.deleteModal?.size || \"md\"}\r\n loading={formLoading}\r\n actionButtons={modalConfig?.deleteModal?.actionButtons || []}\r\n executeFunction={executeAction}\r\n selectedItem={selectedItem}\r\n >\r\n <div\r\n className={joinClasses(\r\n crudClasses.crudPage.deleteContent,\r\n \"flex items-center space-x-2 py-3\",\r\n )}\r\n >\r\n <div>\r\n <p className=\"text-md text-gray-700 dark:text-white\">\r\n {modalConfig?.deleteModal?.confirmText ||\r\n \"Are you sure you want to delete this item?\"}\r\n </p>\r\n {modalConfig?.deleteModal?.referenceKey && (\r\n <p className=\"text-md font-semibold text-gray-700 dark:text-white\">\r\n {selectedItem?.[modalConfig?.deleteModal?.referenceKey]}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </Modal>\r\n\r\n {/* View Detail Modal */}\r\n {modalConfig?.viewModal && (\r\n <Modal\r\n isOpen={showView}\r\n onClose={() => {\r\n setShowView(false);\r\n setSelectedItem(null);\r\n }}\r\n icon={modalConfig?.viewModal?.icon}\r\n title={modalConfig?.viewModal?.title || \"View Details\"}\r\n size={modalConfig?.viewModal?.size || \"lg\"}\r\n footerConfig={modalConfig?.viewModal?.footer}\r\n classNames={modalConfig?.viewModal?.modalClassNames}\r\n >\r\n {ViewComponent ? (\r\n <ViewComponent data={selectedItem} />\r\n ) : (\r\n <Details\r\n data={selectedItem}\r\n fetchRowDetails={fetchRowDetails}\r\n config={modalConfig?.viewModal || {}}\r\n />\r\n )}\r\n </Modal>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default CrudPage;\r\n","import React from \"react\";\r\nimport { SnackbarProvider, type SnackbarKey } from \"notistack\";\r\nimport { X } from \"lucide-react\";\r\n\r\ninterface OptionalSnackbarProviderProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport default function OptionalSnackbarProvider({\r\n children,\r\n}: OptionalSnackbarProviderProps) {\r\n return (\r\n <SnackbarProvider\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"right\",\r\n }}\r\n action={(snackbarKey: SnackbarKey) => (\r\n <button\r\n onClick={() => {\r\n window.dispatchEvent(\r\n new CustomEvent(\"closeSnackbar\", { detail: snackbarKey }),\r\n );\r\n }}\r\n className=\"p-1 hover:bg-white/20 rounded-full transition-colors duration-200 text-white flex items-center justify-center\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n maxSnack={3}\r\n autoHideDuration={3000}\r\n >\r\n {children}\r\n </SnackbarProvider>\r\n );\r\n}\r\n","import React, { useEffect } from \"react\";\r\nimport libraryStyles from \"./index.css?inline\";\r\nimport CrudPage from \"./components/CrudPage\";\r\nimport OptionalSnackbarProvider from \"./OptionalSnackbarProvider\";\r\nimport { type CrudPageProps } from \"./types/crudtypes\";\r\n\r\nconst injectStyles = () => {\r\n if (typeof document === \"undefined\") return;\r\n if (document.getElementById(\"react-admin-crud-manager-styles\")) return;\r\n\r\n const style = document.createElement(\"style\");\r\n style.id = \"react-admin-crud-manager-styles\";\r\n style.textContent = libraryStyles;\r\n document.head.appendChild(style);\r\n};\r\n\r\nexport default function Crud({ config }: CrudPageProps) {\r\n useEffect(() => {\r\n injectStyles();\r\n }, []);\r\n\r\n return (\r\n <div className=\"racm-root\">\r\n <OptionalSnackbarProvider>\r\n <CrudPage config={config} />\r\n </OptionalSnackbarProvider>\r\n </div>\r\n );\r\n}\r\n"],"names":["formatDate","dateString","format","date","pad","n","map","token","searchLocalData","data","searchTerm","searchKeys","lowerSearchTerm","extractValues","obj","item","valuesToSearch","key","val","joinClasses","classes","crudClasses","Button","React","className","variant","color","size","fullWidth","children","props","ref","baseStyles","sizes","colorVariants","colorStyles","_a","sizeStyles","combinedClassName","jsx","InputLabel","label","required","infoText","Fragment","jsxs","Info","countries","Select","options","value","defaultValue","onChange","placeholder","disabled","search","name","parentClass","multiple","dropdownMaxHeight","formData","countriesList","dependencyKey","errorMessage","open","setOpen","useState","setSearchTerm","showAboveState","setShowAboveState","dropdownRef","useRef","optionsPanelRef","searchInputRef","normalizedOptions","setNormalizedOptions","dropdownPosition","setDropdownPosition","dropdownPortalTarget","initialVal","normalize","getCountrieslist","useEffect","result","normalizedValue","filteredOptions","option","isSelected","optionValue","normalized","handleClickOutside","event","updateDropdownPosition","rect","shouldShowAbove","handleOptionClick","finalValue","exists","newValues","v","selectedLabels","opt","_b","ChevronDown","createPortal","Search","e","Check","Switch","PhoneInput","defaultCountry","find_country_with_code","countryCode","selectedCountry","setSelectedCountry","fullNumber","setFullNumber","localValue","setLocalValue","applyMask","digits","mask","digitIndex","i","handleNumberChange","maskedValue","unmaskedValue","match","c","a","b","rawValue","handleCountrySelect","country","filteredCountries","handleInputChange","input","formatted","TextArea","extendStatics","d","p","__extends","__","__assign","t","s","_populated","_ie","_firefox","_opera","_webkit","_chrome","_ie_real_version","_osx","_windows","_linux","_android","_win64","_iphone","_ipad","_native","_mobile","_populate","uas","agent","os","trident","ver","UserAgent_DEPRECATED","UserAgent_DEPRECATED_1","canUseDOM","ExecutionEnvironment","ExecutionEnvironment_1","require$$0","useHasFeature","isEventSupported","eventNameSuffix","capture","eventName","isSupported","element","isEventSupported_1","require$$1","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","sX","sY","pX","pY","normalizeWheel_1","getCropSize","mediaWidth","mediaHeight","containerWidth","containerHeight","aspect","rotation","rotateSize","width","height","fittingWidth","fittingHeight","getMediaZoom","mediaSize","restrictPosition","position","cropSize","zoom","restrictPositionCoord","maxPosition","clamp","getDistanceBetweenPoints","pointA","pointB","getRotationBetweenPoints","computeCroppedArea","crop","limitAreaFn","limitArea","noOp","mediaBBoxSize","mediaNaturalBBoxSize","croppedAreaPercentages","widthInPixels","heightInPixels","isImgWiderThanHigh","sizePixels","croppedAreaPixels","max","_max","getInitialCropFromCroppedAreaPercentages","minZoom","maxZoom","getZoomFromCroppedAreaPixels","mediaZoom","getInitialCropFromCroppedAreaPixels","cropZoom","getCenter","getRadianAngle","degreeValue","rotRad","min","classNames","args","_i","css_248z","MIN_ZOOM","MAX_ZOOM","KEYBOARD_STEP","Cropper","_super","_this","isFirstResize","entries","_c","_d","_e","_f","mediaRef","containerAspect","naturalWidth","naturalHeight","isMediaScaledDown","mediaAspect","renderedMediaSize","bounds","point","newZoom","newRotation","x","y","offsetX","offsetY","requestedPosition","newPosition","pixelY","containerTopLeft","shouldUpdatePosition","zoomPoint","zoomTarget","restrictedPosition","cropData","adjustedCrop","sizeChanged","scaleX","scaleY","onCropChange","keyboardStep","step","newCrop","prevProps","_g","_h","_j","objectFit","center","distance","image","video","mediaProps","cropperProps","transform","cropShape","showGrid","roundCropAreaPixels","containerStyle","cropAreaStyle","mediaStyle","containerClassName","cropAreaClassName","mediaClassName","el","touch","ButtonComponent","createImage","url","resolve","reject","error","getCroppedImageBlob","imageSrc","pixelCrop","fileType","canvas","ctx","bBoxWidth","bBoxHeight","croppedCanvas","croppedCtx","blob","ImageCropperModal","isOpen","fileName","title","onClose","onApply","setCrop","setZoom","setCroppedAreaPixels","onCropComplete","useCallback","_area","croppedPixels","handleApply","fileExtension","croppedFile","Icon","revokeBlobUrl","ImagePicker","accept","id","dragDrop","cropImage","setImage","isDragging","setIsDragging","cropModalOpen","setCropModalOpen","cropSource","setCropSource","selectedFileType","setSelectedFileType","selectedFileName","setSelectedFileName","inputRef","sourceUrlRef","previewUrlRef","preview","closeCropModal","handleCroppedImage","handleFileChange","files","file","source","removeImage","handleDragOver","handleDragLeave","handleDrop","handleButtonClick","imagePreview","Input","type","onKeyDown","negativeNumberAllow","field","maskApplyOnValue","showPassword","setShowPassword","handleKeyDown","maskValue","cleanValue","valueIndex","maskChar","valueChar","prev","TinyEditor","editorKey","inline","plugins","toolbar","menubar","fontFamily","initConfig","imageUploadHandler","defaultPlugins","defaultToolbar","handleImageUpload","blobInfo","Editor","content","module","modules","installedModules","__webpack_require__","moduleId","exports","getter","mode","ns","object","property","api","isOldIE","memo","getTarget","target","styleTarget","stylesInDom","getIndexByIdentifier","identifier","modulesToDom","list","idCountMap","identifiers","count","index","addStyle","insertStyleElement","style","attributes","nonce","removeStyleElement","replaceText","textStore","replacement","applyToSingletonTag","remove","css","cssNode","childNodes","applyToTag","media","sourceMap","singleton","singletonCounter","update","styleIndex","newObj","lastIdentifiers","newList","newLastIdentifiers","_identifier","_index","useSourceMap","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","cssMapping","sourceMapping","toComment","sourceURLs","base64","___CSS_LOADER_API_IMPORT___","__webpack_exports__","ReactEditorKit","external_react_","external_react_default","style_module","style_module_default","SelectAll","BackgroundColorIcon","TextColorUpperIcon","FontSizeIcon","FontFamilyIcon","HorizontalLineIcon","PrintIcon","PreviewIcon","EmptyFileIcon","FullscreenExit","FullscreenIcon","SpecialCharIcon","CrossImage","LTRIcon","RTLIcon","OrderdList","UnorderdList","UnderlineIcon","ClearFormatting","SuperscriptIcon","SubscriptIcon","RedoIcon","UndoIcon","LinkIcon","ItalicIcon","DecreaseIndentIcon","IncreaseIndentIcon","ImageIcon","VideoIcon","BoldIcon","CodeIcon","AlignRight","AlignJustify","AlignCenter","AlignLeft","RemoveLinkIcon","UnlockIcon","LockIcon","CropIcon","loader","SpecialChars","_ref","handleCharSelect","specialCharacters","_char","ArrowDown","_slicedToArray","r","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","l","u","f","o","SelectFormat","remove_from_toolbar","editorRef","_useState","_useState2","setIsOpen","_useState3","_useState4","selectedOption","setSelectedOption","selectRef","formats","_find_remove$options","find_remove","toggleSelect","getClosestBlockElement","selection","range","commonAncestorContainer","node","editor","handleSelectionChange","_editorRef$current","formatBlock","find","components_SelectFormat","ButtonFunction_slicedToArray","ButtonFunction_arrayWithHoles","ButtonFunction_iterableToArrayLimit","ButtonFunction_unsupportedIterableToArray","ButtonFunction_nonIterableRest","ButtonFunction_arrayLikeToArray","ButtonFunction_ButtonFunction","icon","setIsSelected","isDisabled","setIsDisabled","handleClick","is_selected","isRedoEnabled","handleClasses","components_ButtonFunction","_typeof","_regeneratorRuntime","define","wrap","Generator","Context","makeInvokeMethod","tryCatch","h","GeneratorFunction","GeneratorFunctionPrototype","values","g","defineIteratorMethods","AsyncIterator","invoke","callInvokeWithMethodAndArg","maybeInvokeDelegate","pushTryEntry","resetTryEntry","next","handle","asyncGeneratorStep","_asyncToGenerator","_next","_throw","TOOLBAR_ITEMS","NAVBAR_ITEMS","FORMAT_OPTIONS","INSER_OPTIONS","FILE_OPTIONS","VIEW_OPTIONS","generateRandomID","length","characters","randomIndex","transformHTML","htmlString","parser","doc","divElement","pElement","transformedHTML","lines","processedLines","line","hasLeading","remove_resizer","image_element","getCroppedImage","_callee","originalFile","_context","fileExt","urlParts","needsTransparency","outputType","_urlParts","originalName","_originalName","_x","_x2","_x3","SelectInsert_slicedToArray","SelectInsert_arrayWithHoles","SelectInsert_iterableToArrayLimit","SelectInsert_unsupportedIterableToArray","SelectInsert_nonIterableRest","SelectInsert_arrayLikeToArray","SelectFileOptions","_options","onSelectOption","handleInsertHR","remove_from_navbar","isShow","setIsShow","handleSelect","is_image","is_link","is_video","is_hr_line","is_special_char","SelectView_slicedToArray","SelectView_arrayWithHoles","SelectView_iterableToArrayLimit","SelectView_unsupportedIterableToArray","SelectView_nonIterableRest","SelectView_arrayLikeToArray","SelectView_SelectFileOptions","handleViewSource","isFullScreen","toggleFullScreen","is_source_code","is_full_screen","SelectFileOptions_slicedToArray","SelectFileOptions_arrayWithHoles","SelectFileOptions_iterableToArrayLimit","SelectFileOptions_unsupportedIterableToArray","SelectFileOptions_nonIterableRest","SelectFileOptions_arrayLikeToArray","SelectFileOptions_SelectFileOptions","handleNewDocument","handlePreview","handlePrint","is_new_document","is_preview","is_print","external_react_dom_","external_react_dom_default","Model_Modal","Model","ViewSourceModal","viewSource","setViewSource","sourceCode","setSourceCode","handleSaveSource","PreviewModel","openPreview","setOpenPreview","previewContent","SelectFamily","handleHideChildOptions","fontFamilies","components_SelectFamily","SelectFontSize","fontSizes","_range","_span","span","components_SelectFontSize","SelectAlignment","alignments","components_SelectAlignment","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","SelectLineHeight_unsupportedIterableToArray","_nonIterableSpread","SelectLineHeight_arrayLikeToArray","SelectLineHeight","lineHeightOptions","lineHeightStyle","applyLineHeight","wrapperSpan","newNode","childNode","modifiedContents","components_SelectLineHeight","SelectFormations_slicedToArray","SelectFormations_arrayWithHoles","SelectFormations_iterableToArrayLimit","SelectFormations_unsupportedIterableToArray","SelectFormations_nonIterableRest","SelectFormations_arrayLikeToArray","SelectFormations_SelectFileOptions","showFormatOptions","setShowFormatOptions","showChildOptions","setShowChildOptions","_useState5","_useState6","dropdownTop","setDropdownTop","random_id","handleShowFamily","parent","parent_top","top","is_bold","is_italic","is_underline","is_superscript","is_subscript","is_font","is_font_size","is_alignment","ManageColors_slicedToArray","ManageColors_arrayWithHoles","ManageColors_iterableToArrayLimit","ManageColors_unsupportedIterableToArray","ManageColors_nonIterableRest","ManageColors_arrayLikeToArray","rgbToHex","rgb","_rgb$match","_rgb$match2","hexR","hexG","hexB","hexColor","ManageColors","setValue","openColor","setOpenColor","colorPickerRef","handleChangeColor","handleOutsideClick","appliedColor","ancestor","parentElement","SimpleButton","ViewLoadingModel_ViewLoadingModel","components_ViewLoadingModel","PasteIcon","CutIcon","CopyIcon","LinkModal_typeof","LinkModal_regeneratorRuntime","LinkModal_asyncGeneratorStep","LinkModal_asyncToGenerator","ownKeys","_objectSpread","_defineProperty","_toPropertyKey","_toPrimitive","LinkModal_slicedToArray","LinkModal_arrayWithHoles","LinkModal_iterableToArrayLimit","LinkModal_unsupportedIterableToArray","LinkModal_nonIterableRest","LinkModal_arrayLikeToArray","LinkModal","onLinkInsert","setIsOpenModel","selectedData","imageUrl","setImageUrl","image_handler","setIsLoading","setErrorMessage","inputs","setInputs","handleLinkInsert","_error","_error2","handleChange","_event$target","old","handleCross","handleChangeFile","image_path","handleChangeType","selected_data","_","$","m","E","H","X","D","k","w","C","I","M","N","dist_x","R","Y","S","ImageCropper_slicedToArray","ImageCropper_arrayWithHoles","ImageCropper_iterableToArrayLimit","ImageCropper_unsupportedIterableToArray","ImageCropper_nonIterableRest","ImageCropper_arrayLikeToArray","ImageCropper_ImageCropper","_ref$aspectRatio","aspectRatio","imgRef","onImageLoaded","img","handleCropComplete","ImageModal_typeof","ImageModal_regeneratorRuntime","ImageModal_asyncGeneratorStep","ImageModal_asyncToGenerator","ImageModal_ownKeys","ImageModal_objectSpread","ImageModal_defineProperty","ImageModal_toPropertyKey","ImageModal_toPrimitive","ImageModal_slicedToArray","ImageModal_arrayWithHoles","ImageModal_iterableToArrayLimit","ImageModal_unsupportedIterableToArray","ImageModal_nonIterableRest","ImageModal_arrayLikeToArray","ImageModal","onImageInsert","heightRatio","setHeightRatio","isLocked","setIsLocked","_useState7","_useState8","allowSHW","setAllowSHW","_useState9","_useState10","showComponent","setShowComponent","_useState11","_useState12","completedCrop","setCompletedCrop","_useState13","_useState14","imageRef","setImageRef","_useState15","_useState16","oldInputs","MAX_RETRIES","get_image_dimentions","retries","img_width","img_height","ratio","error_message","_error_message","handleChangeHW","_event$target2","_event$target3","handleCancel","applyCrop","_callee2","croppedImageFile","_context2","reactCropElem","MediaModal_typeof","MediaModal_ownKeys","MediaModal_objectSpread","MediaModal_defineProperty","MediaModal_toPropertyKey","MediaModal_toPrimitive","MediaModal_slicedToArray","MediaModal_arrayWithHoles","MediaModal_iterableToArrayLimit","MediaModal_unsupportedIterableToArray","MediaModal_nonIterableRest","MediaModal_arrayLikeToArray","MediaModal","onMediaInsert","_ref$targetElement","targetElement","_ref$targetElementTyp","targetElementType","handleSubmit","_error_message2","newInputs","OpenLinkIcon","RightClickLinkPopup_slicedToArray","RightClickLinkPopup_arrayWithHoles","RightClickLinkPopup_iterableToArrayLimit","RightClickLinkPopup_unsupportedIterableToArray","RightClickLinkPopup_nonIterableRest","RightClickLinkPopup_arrayLikeToArray","RightClickLinkPopup_RightClickLinkPopup","_selectedEvent$parent3","setSelectedData","setSelectedEvent","selectedEvent","handleRemoveLink","selectedRange","popupRef","popupPosition","setPopupPosition","popupVisible","setPopupVisible","getSelectedText","selectedText","handleRightClick","parentRect","tagNames","handleOpenLinkPopup","open_new_tab","link_url","link_text","link_type","selected_object","handleOpenLink","_selectedEvent$parent","link","_selectedEvent$parent2","handleRemove","handleImageLink","_selectedEvent$style","_selectedEvent$style2","components_RightClickLinkPopup","SelectFontFamily_slicedToArray","SelectFontFamily_arrayWithHoles","SelectFontFamily_iterableToArrayLimit","SelectFontFamily_unsupportedIterableToArray","SelectFontFamily_nonIterableRest","SelectFontFamily_arrayLikeToArray","SelectFontFamily","getCurrentFontFamily","startNode","_fontFamilies","family","primaryFont","currentFont","components_SelectFontFamily","AlignmentOptions_slicedToArray","AlignmentOptions_arrayWithHoles","AlignmentOptions_iterableToArrayLimit","AlignmentOptions_unsupportedIterableToArray","AlignmentOptions_nonIterableRest","AlignmentOptions_arrayLikeToArray","AlignmentOptions","_alignments$","_alignments$find","alignment","getCurrentAlignment","_loop","foundAlignment","_ret","currentAlignment","components_AlignmentOptions","FontSize_slicedToArray","FontSize_arrayWithHoles","FontSize_iterableToArrayLimit","FontSize_unsupportedIterableToArray","FontSize_nonIterableRest","FontSize_arrayLikeToArray","FontSize","selectedNode","findParentSpan","existingSpan","getCurrentFontSize","fontSize","sizeValue","foundSize","currentSize","components_FontSize","src_typeof","_excluded","_extends","src_ownKeys","src_objectSpread","src_defineProperty","src_toPropertyKey","src_toPrimitive","_createForOfIteratorHelper","src_unsupportedIterableToArray","_n","F","src_toConsumableArray","src_arrayWithoutHoles","src_iterableToArray","src_nonIterableSpread","src_arrayLikeToArray","src_slicedToArray","src_arrayWithHoles","src_iterableToArrayLimit","src_nonIterableRest","_objectWithoutProperties","_objectWithoutPropertiesLoose","show_final_options","all_options","isValidURL","str","pattern","theme_config","navbar","getEditorRef","mainProps","others","isLoading","init","setInit","setIsFullScreen","isOpenModel","_useState17","_useState18","setTargetElement","_useState19","_useState20","setTargetElementType","_useState21","_useState22","setPreviewContent","_useState23","_useState24","_useState25","_useState26","_useState27","_useState28","isPlaceholder","setIsPlaceholder","_useState29","_useState30","selectedItem","setSelectedItem","_useState31","_useState32","setSelectedRange","_useState33","_useState34","showHR1","setShowHR1","_useState35","_useState36","showHR2","setShowHR2","_useState37","_useState38","showHR3","setShowHR3","checkIfImageExists","imgTag","handleInput","isImageExists","hasOnlyTextOrBR","preCaretRange","caretOffset","wrapper","offset","setCaret","traverse","clearEditorFormatting","tempDiv","childdiv","_iterator","_step","attr","err","checkEditorIsEmptyAndGetTagName","isEditorEmpty","isEffectivelyEmpty","html","temp","pTagDiv","handleEditorKeyDown","_currentNode","currentNode","listItemNode","newLI","_selection","currentP","_newRange","container","newP","text","beforeText","afterText","afterTextNode","newRange","handleOpenModel","handleCloseModel","trimmedSourceCode","handleSelectAll","handleInsertHRClick","handleFocusEditor","linkHTML","src","restoreSelection","handleImageInsert","imgElement","editorElement","handleMediaInsert","embed_code","editorNode","iframeHTML","youtubeRegex","vimeoRegex","videoId","_videoId","createIframeWrapperWithSettings","iframe_element","onSettingsClick","iframeElement","overlay","settingsBtn","iframe","iframeDoc","cleanHTML","cleanedHTML","onPaste","clipboardItems","imageBlob","htmlBlob","htmlContent","withoutComments","textBlob","linkElement","handleBlur","handleSelection","formattedContent","handlePlaceholder","handleFullScreenChange","model_component","handlePaste","handle_resize","hr_1","hr_2","setCursorAtStart","handleMouseDown","left","startX","startWidth","startHeight","handleMouseMove","newWidth","handleMouseUp","handleClickImage","_event$target$parentE","_event$target$parentE2","hasClass","imageWidth","resizer","resizerRight","resizerBottom","resizerBottomRight","clonedImgElement","_event$target$classLi","_event$target2$parent","_event$target2$parent2","_hasClass","dynamicStyle","is_line","is_file","is_view","is_format","is_insert","is_copy","is_cut","is_paste","is_select_all","is_undo","is_redo","is_alignLeft","is_alignCenter","is_alignRight","is_alignJustify","is_indent","is_outdent","is_orderedList","is_unorderedList","is_removeFormat","is_textColor","is_backgroundColor","is_ltr","is_rtl","is_fontfamily","is_fontSize","source_code","is_fullscreen","FreeEditor","ReactEditor","Checkbox","multiSelect","isChecked","handleSingleChange","handleMultipleChange","checked","newValue","idx","AudioPicker","maxSize","enqueueSnackbar","useSnackbar","audio","setAudio","maxSizeBytes","cleanupAudio","removeAudio","toGalleryItem","MultiImagePicker","maxImages","images","setImages","cropTargetId","setCropTargetId","replaceInputRef","cropSourceUrlRef","imagesRef","nextItems","remainingSlots","openCropModal","addFiles","selected","mapped","idToRemove","handleReplaceClick","idToReplace","handleReplaceImage","canSelectMore","ImagePreview","alt","closePreview","handleEsc","GroupRow","col","uiVariant","styleConfig","subtitle","fallback_icon","targetImage","setTargetImage","imageObj","renderAvatar","User","CardGroup","renderMiniAvatar","BADGE_COLORS","BADGE_VARIANTS","Chip","colorConfig","variantKey","variantClasses","DetailRow","chipObj","getImageSource","renderValue","wrapClass","customValue","Radio","radioOptions","VideoPicker","setVideo","cleanupVideo","removeVideo","getFileExtension","parts","getFileIcon","extension","normalizeAcceptRules","matchesAccept","rules","mimeType","rule","typePrefix","getFileNameFromValue","FilePicker","selectedFile","setSelectedFile","removeFile","RenderFields","rows","inputClass","minLength","renderCondition","renderType","editorVariant","finalPlaceholder","baseClass","imgList","imgObj","updatedValue","FilterDrawer","config","filters","setFilters","handleReset","DynamicComponent","TableSkeleton","columns","rowIndex","colIndex","SortDropdown","clearLabel","sortRef","isSortApplied","selectedValue","ArrowUpDown","BASE_SORT_CONFIG","normalizeSortConfig","sortConfig","getSortableColumns","tableHead","blockedTypes","detectSortType","sortKeyName","keyword","buildDefaultSortOptions","getNormalizedSortOptions","normalizedSortConfig","sortableColumns","fieldRules","fieldColumns","fieldKey","targetCol","sortTableData","filteredData","sortBy","normalizedSortOptions","direction","sortKey","sortType","normalizePhone","aValue","bValue","comparison","Table","setShowAdd","buttonText","description","showAddButton","table_head","loading","filter","sort","pagination","exportCSV","customButtons","customMenuItems","emptyMessage","onMenuAction","setServerSidePaginationData","onFilterApply","filterConfig","rowClick","activeMenu","setActiveMenu","menuList","setMenuList","menuPosition","setMenuPosition","showFilters","setShowFilters","appliedFilters","setAppliedFilters","toolbarMenuOpen","setToolbarMenuOpen","useMemo","setSortBy","sortedData","currentPage","setCurrentPage","pageSize","setPageSize","totalRecords","setTotalRecords","totalPages","paginatedData","start","menuRef","toolbarMenuRef","tableScopeRef","buttonRefs","searchTimeoutRef","menuPortalTarget","handleSearchChange","handleSortChange","payload","handleActionClick","action","handleMenuToggle","itemId","menu_list","button","menuWidth","menuHeight","viewportWidth","viewportHeight","calculateRowNumber","renderMultiImageCell","maxPreview","visibleImages","remaining","renderSingleImageCell","imageAlt","row","renderAudio","audioSrc","Music","renderGroupCell","handleRenderChip","handleRenderCellValue","EllipsisVertical","handleRowClick","handleColumnClick","isRowClickable","isColumnClickable","handleExportCSV","headers","csvContent","defaultName","finalName","handleCustomButtonClick","handleToolbarMenuItemClick","handleScroll","Plus","Filter","Download","newLimit","newPage","ChevronLeft","ChevronRight","Modal","actionButtons","onFormSubmit","loadingBtn","executeFunction","footerConfig","sizeClasses","shouldShowFooter","btn","resp","Form","onSubmit","initialData","fetchRowDetails","safeInitialData","formClass","formFields","setFormData","dataLoading","setDataLoading","errors","setErrors","handleGetDetails","form","newErrors","firstInvalidFocused","isValid","Details","fields","containerClass","styles","safeData","detailsData","setDetailsData","variantContainerClass","CrudPage","fetchData","isStaticData","tableConfig","modalConfig","setLoading","formLoading","setFormLoading","listingData","setListingData","paginationData","setPaginationData","serverSidePaginationData","filterData","setFilterData","changeFilterData","setChangeFilterData","showAdd","showEdit","setShowEdit","showDelete","setShowDelete","showView","setShowView","handleMenuAction","executeAction","onSuccess","success_message","handleAddResult","handleGetListing","handleEditResult","updatedObj","targetObject","handleDeleteResult","handleAddFormSubmit","handleEditFormSubmit","handleFilterData","filterByMatchingFields","ViewComponent","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","OptionalSnackbarProvider","SnackbarProvider","snackbarKey","injectStyles","libraryStyles","Crud"],"mappings":"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A;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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AAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;A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","x_google_ignoreList":[9,10,11,12,13,14,15,20]}
|