react-admin-crud-manager 1.2.8 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +1000 -22
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +10385 -3218
- package/dist/index.es.js.map +1 -1
- 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 +2 -3
- package/package.json +2 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.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 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 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=\"flex flex-col items-center 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=\"flex flex-col items-center 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=\"flex flex-col items-center 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=\"flex flex-col items-center 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 onClick={onClose}\r\n />\r\n\r\n <div\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 ? \"opacity-100 translate-x-0\" : \"opacity-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 {isOpen && (\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\r\n filters={filters}\r\n onFilterChange={handleChange}\r\n />\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\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>(true);\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 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 {showAdd && (\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\r\n {/* Edit Modal */}\r\n {showEdit && (\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\r\n .querySelector<HTMLFormElement>(\"#editForm\")\r\n ?.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\r\n {/* Delete Modal */}\r\n {showDelete && (\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\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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ACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,SAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,cAAA,EAER,CACE,MAAO,sBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,yBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,OACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,iBAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,0BACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,qBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,oBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,gBAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,8BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,oCACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,eAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,QAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,UAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,gBAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,cAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,wBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,4BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,QAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,6BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,wBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,4BACP,KAAM,KACN,MAAO,OACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,sBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,uBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,uCACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,gCACP,KAAM,KACN,MAAO,MACP,QAAS,cAC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","x_google_ignoreList":[9,10,11,12,13,14,15]}
|
|
1
|
+
{"version":3,"file":"index.cjs.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/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 { 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 (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 { 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 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\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 \"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\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 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 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","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","audio","setAudio","maxSizeBytes","cleanupAudio","enqueueSnackbar","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","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","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","calculateRowNumber","renderMultiImageCell","maxPreview","visibleImages","remaining","renderSingleImageCell","imageAlt","row","renderAudio","audioSrc","Music","renderGroupCell","handleRenderChip","handleRenderCellValue","EllipsisVertical","handleRowClick","handleColumnClick","isRowClickable","isColumnClickable","handleExportCSV","headers","csvContent","defaultName","finalName","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","InnerCheck","useSnackbar","OptionalSnackbarProvider","SnackbarProvider","snackbarKey","injectStyles","libraryStyles","Crud"],"mappings":"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ACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,SAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,cAAA,EAER,CACE,MAAO,sBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,yBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,OACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,iBAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,0BACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,qBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,oBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,gBAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,8BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,oCACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,eAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,QAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,UAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,gBAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,YAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,iBACT,KAAM,cAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,eAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,wBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,4BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,QAAA,EAER,CACE,MAAO,mCACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,mBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,6BACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,SAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,iBACT,KAAM,aAAA,EAER,CACE,MAAO,wBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,eACT,KAAM,aAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,4BACP,KAAM,KACN,MAAO,OACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,kBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,cAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,YACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,iCACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,gBACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,WACP,KAAM,KACN,MAAO,KACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,cACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,WAAA,EAER,CACE,MAAO,OACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,MAAA,EAER,CACE,MAAO,QACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,sBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,cAAA,EAER,CACE,MAAO,eACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,2BACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,OAAA,EAER,CACE,MAAO,SACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,uBACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,aAAA,EAER,CACE,MAAO,iBACP,KAAM,KACN,MAAO,KACP,QAAS,cACT,KAAM,aAAA,EAER,CACE,MAAO,gBACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,uCACP,KAAM,KACN,MAAO,IACP,QAAS,cACT,KAAM,gBAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,YAAA,EAER,CACE,MAAO,aACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,cAAA,EAER,CACE,MAAO,UACP,KAAM,KACN,MAAO,MACP,QAAS,aACT,KAAM,UAAA,EAER,CACE,MAAO,gCACP,KAAM,KACN,MAAO,MACP,QAAS,cAC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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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","x_google_ignoreList":[9,10,11,12,13,14,15,20]}
|