@erpsquad/common 1.8.27 → 1.8.29
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/_virtual/ArrowBack/index.esm.js +5 -0
- package/dist/_virtual/ArrowBack/index.esm.js.map +1 -0
- package/dist/_virtual/ArrowBack/index.js +2 -0
- package/dist/_virtual/ArrowBack/index.js.map +1 -0
- package/dist/_virtual/ArrowForward/index.esm.js +5 -0
- package/dist/_virtual/ArrowForward/index.esm.js.map +1 -0
- package/dist/_virtual/ArrowForward/index.js +2 -0
- package/dist/_virtual/ArrowForward/index.js.map +1 -0
- package/dist/_virtual/IndeterminateCheckBox/index.esm.js +5 -0
- package/dist/_virtual/IndeterminateCheckBox/index.esm.js.map +1 -0
- package/dist/_virtual/IndeterminateCheckBox/index.js +2 -0
- package/dist/_virtual/IndeterminateCheckBox/index.js.map +1 -0
- package/dist/_virtual/NorthEast/index.esm.js +5 -0
- package/dist/_virtual/NorthEast/index.esm.js.map +1 -0
- package/dist/_virtual/NorthEast/index.js +2 -0
- package/dist/_virtual/NorthEast/index.js.map +1 -0
- package/dist/_virtual/Visibility/index.esm.js +5 -0
- package/dist/_virtual/Visibility/index.esm.js.map +1 -0
- package/dist/_virtual/Visibility/index.js +2 -0
- package/dist/_virtual/Visibility/index.js.map +1 -0
- package/dist/_virtual/index/index.esm.js +2 -4
- package/dist/_virtual/index/index.esm.js.map +1 -1
- package/dist/_virtual/index/index.esm2.js +4 -2
- package/dist/_virtual/index/index.esm2.js.map +1 -1
- package/dist/_virtual/index/index.js +1 -1
- package/dist/_virtual/index/index2.js +1 -1
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js +1 -1
- package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
- package/dist/components/action-bar/action-bar/index.js +1 -1
- package/dist/components/action-bar/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/action-bar.d.ts +1 -1
- package/dist/components/charts/line-chart/area-line-chart/index.esm.js +40 -0
- package/dist/components/charts/line-chart/area-line-chart/index.esm.js.map +1 -0
- package/dist/components/charts/line-chart/area-line-chart/index.js +2 -0
- package/dist/components/charts/line-chart/area-line-chart/index.js.map +1 -0
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/date-picker/date-picker.d.ts +1 -1
- package/dist/components/editor/custom-editor/index.esm.js +1 -1
- package/dist/components/editor/custom-editor/index.esm.js.map +1 -1
- package/dist/components/editor/custom-editor/index.js +1 -1
- package/dist/components/editor/custom-editor/index.js.map +1 -1
- package/dist/components/filter/fields/index.esm.js +180 -0
- package/dist/components/filter/fields/index.esm.js.map +1 -0
- package/dist/components/filter/fields/index.js +2 -0
- package/dist/components/filter/fields/index.js.map +1 -0
- package/dist/components/filter/filter/index.esm.js +1 -1
- package/dist/components/filter/filter/index.esm.js.map +1 -1
- package/dist/components/filter/filter/index.js +1 -1
- package/dist/components/filter/filter/index.js.map +1 -1
- package/dist/components/footer/footer.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/media.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/phone.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/select.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/text.d.ts +1 -1
- package/dist/components/form-control/form-builder/form-builder-element/time.d.ts +1 -1
- package/dist/components/form-control/form-parser/form-switcher.d.ts +1 -1
- package/dist/components/header/header/index.esm.js +1 -1
- package/dist/components/header/header/index.esm.js.map +1 -1
- package/dist/components/header/header/index.js +1 -1
- package/dist/components/header/header/index.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/header/redux/actionCreator/index.js +1 -1
- package/dist/components/header/redux/actionCreator/index.js.map +1 -1
- package/dist/components/icons/action-arrow.d.ts +3 -3
- package/dist/components/icons/add-circle.d.ts +3 -3
- package/dist/components/icons/arrow-bidirectional.d.ts +3 -3
- package/dist/components/icons/arrow-circle-down.d.ts +3 -3
- package/dist/components/icons/arrow-down-three.d.ts +3 -3
- package/dist/components/icons/arrow-down-two.d.ts +3 -3
- package/dist/components/icons/arrow-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-down.d.ts +3 -3
- package/dist/components/icons/arrow-up-two.d.ts +3 -3
- package/dist/components/icons/assignments.d.ts +3 -3
- package/dist/components/icons/blank-circle.d.ts +3 -3
- package/dist/components/icons/block-filled.d.ts +3 -3
- package/dist/components/icons/calendar-add.d.ts +3 -3
- package/dist/components/icons/calendar.d.ts +3 -3
- package/dist/components/icons/checkbox-square.d.ts +3 -3
- package/dist/components/icons/circular-arrow-setting.d.ts +3 -3
- package/dist/components/icons/clock.d.ts +3 -3
- package/dist/components/icons/close.d.ts +3 -3
- package/dist/components/icons/coin-outline.d.ts +3 -3
- package/dist/components/icons/copy.d.ts +3 -3
- package/dist/components/icons/coupon.d.ts +3 -3
- package/dist/components/icons/cross-hire.d.ts +3 -3
- package/dist/components/icons/custom-styled-icon.d.ts +3 -3
- package/dist/components/icons/dashboard.d.ts +3 -3
- package/dist/components/icons/document-download.d.ts +3 -3
- package/dist/components/icons/document.d.ts +3 -3
- package/dist/components/icons/dollar-circle-filled.d.ts +3 -3
- package/dist/components/icons/dollar-circle.d.ts +3 -3
- package/dist/components/icons/edit.d.ts +3 -3
- package/dist/components/icons/email.d.ts +3 -3
- package/dist/components/icons/export.d.ts +3 -3
- package/dist/components/icons/eye-off.d.ts +3 -3
- package/dist/components/icons/eye-plus-circle.d.ts +3 -3
- package/dist/components/icons/eye.d.ts +3 -3
- package/dist/components/icons/filled-circle.d.ts +3 -3
- package/dist/components/icons/filter-remove.d.ts +3 -3
- package/dist/components/icons/filter.d.ts +3 -3
- package/dist/components/icons/folder-save.d.ts +3 -3
- package/dist/components/icons/grid.d.ts +3 -3
- package/dist/components/icons/hashtag.d.ts +3 -3
- package/dist/components/icons/image.d.ts +3 -3
- package/dist/components/icons/import.d.ts +3 -3
- package/dist/components/icons/info-circle.d.ts +3 -3
- package/dist/components/icons/info.d.ts +3 -3
- package/dist/components/icons/link-horizontal.d.ts +3 -3
- package/dist/components/icons/link.d.ts +3 -3
- package/dist/components/icons/location.d.ts +3 -3
- package/dist/components/icons/lowest-lead-time.d.ts +3 -3
- package/dist/components/icons/lowest-min-qty.d.ts +3 -3
- package/dist/components/icons/lowest-price.d.ts +3 -3
- package/dist/components/icons/more.d.ts +3 -3
- package/dist/components/icons/notification.d.ts +3 -3
- package/dist/components/icons/paper-clip.d.ts +3 -3
- package/dist/components/icons/paragraph.d.ts +3 -3
- package/dist/components/icons/payment-request.d.ts +3 -3
- package/dist/components/icons/phone.d.ts +3 -3
- package/dist/components/icons/printer.d.ts +3 -3
- package/dist/components/icons/process-calendar.d.ts +3 -3
- package/dist/components/icons/promotion.d.ts +3 -3
- package/dist/components/icons/radio-button.d.ts +3 -3
- package/dist/components/icons/receipt-filled.d.ts +3 -3
- package/dist/components/icons/receipt-outline.d.ts +3 -3
- package/dist/components/icons/receipt.d.ts +3 -3
- package/dist/components/icons/refresh-icon.d.ts +3 -3
- package/dist/components/icons/replace.d.ts +3 -3
- package/dist/components/icons/save.d.ts +3 -3
- package/dist/components/icons/search-status.d.ts +3 -3
- package/dist/components/icons/search.d.ts +3 -3
- package/dist/components/icons/settings-fallback.d.ts +3 -3
- package/dist/components/icons/sort-arrow-icon.d.ts +3 -3
- package/dist/components/icons/stacked-layer.d.ts +3 -3
- package/dist/components/icons/start-filled.d.ts +3 -3
- package/dist/components/icons/three-dot-icon.d.ts +3 -3
- package/dist/components/icons/tick-circle-filled.d.ts +3 -3
- package/dist/components/icons/tick-circle.d.ts +3 -3
- package/dist/components/icons/tick-octagon.d.ts +3 -3
- package/dist/components/icons/tick.d.ts +3 -3
- package/dist/components/icons/toggle-switch.d.ts +3 -3
- package/dist/components/icons/trash.d.ts +3 -3
- package/dist/components/icons/wave.d.ts +3 -3
- package/dist/components/icons/with-out-tick-octagon.d.ts +3 -3
- package/dist/components/icons/work-centre.d.ts +3 -3
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.esm.js +435 -429
- package/dist/components/index.esm.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/location-select.d.ts +1 -1
- package/dist/components/material-editable-table/aggregation-fns/index.d.ts +13 -0
- package/dist/components/material-editable-table/components/default-aggregation.d.ts +9 -0
- package/dist/components/material-editable-table/components/header-cell.d.ts +5 -0
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js +312 -0
- package/dist/components/material-editable-table/components/inline-edit-fields/index.esm.js.map +1 -0
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js +4 -0
- package/dist/components/material-editable-table/components/inline-edit-fields/index.js.map +1 -0
- package/dist/components/material-editable-table/components/inline-edit-fields.d.ts +17 -0
- package/dist/components/material-editable-table/components/number-aggregation.d.ts +9 -0
- package/dist/components/material-editable-table/material-editable-table/index.esm.js +1164 -0
- package/dist/components/material-editable-table/material-editable-table/index.esm.js.map +1 -0
- package/dist/components/material-editable-table/material-editable-table/index.js +28 -0
- package/dist/components/material-editable-table/material-editable-table/index.js.map +1 -0
- package/dist/components/material-editable-table/material-editable-table.d.ts +40 -0
- package/dist/components/material-table/aggregation-fns/index/index.esm.js +10 -0
- package/dist/components/material-table/aggregation-fns/index/index.esm.js.map +1 -1
- package/dist/components/material-table/aggregation-fns/index/index.js +1 -1
- package/dist/components/material-table/aggregation-fns/index/index.js.map +1 -1
- package/dist/components/material-table/components/number-aggregation/index.esm.js +133 -0
- package/dist/components/material-table/components/number-aggregation/index.esm.js.map +1 -0
- package/dist/components/material-table/components/number-aggregation/index.js +5 -0
- package/dist/components/material-table/components/number-aggregation/index.js.map +1 -0
- package/dist/components/material-table/material-table.d.ts +1 -1
- package/dist/components/phone-input/phone-input.d.ts +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
- package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
- package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
- package/dist/components/switches/android-12-switch.d.ts +1 -3
- package/dist/components/text-field/text-field.d.ts +1 -1
- package/dist/components/time-picker/time-picker.d.ts +1 -1
- package/dist/components/upload/upload/index.esm.js +2 -2
- package/dist/components/upload/upload/index.esm.js.map +1 -1
- package/dist/components/upload/upload/index.js +2 -2
- package/dist/components/upload/upload/index.js.map +1 -1
- package/dist/components/upload-media/upload-media.d.ts +1 -1
- package/dist/contexts/AuthContext/index.esm.js +2 -2
- package/dist/contexts/AuthContext/index.esm.js.map +1 -1
- package/dist/contexts/AuthContext/index.js +1 -1
- package/dist/contexts/AuthContext/index.js.map +1 -1
- package/dist/contexts/languageContext/index.esm.js +1 -1
- package/dist/contexts/languageContext/index.esm.js.map +1 -1
- package/dist/contexts/languageContext/index.js +1 -1
- package/dist/contexts/languageContext/index.js.map +1 -1
- package/dist/index.esm.js +533 -521
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.esm.js +32 -0
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.esm.js.map +1 -1
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.js +36 -36
- package/dist/node_modules/@glideapps/glide-data-grid/dist/js/index/index.js.map +1 -1
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.esm.js +18 -0
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.esm.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.js +2 -0
- package/dist/node_modules/@mui/icons-material/ArrowBack/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.esm.js +18 -0
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.esm.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.js +2 -0
- package/dist/node_modules/@mui/icons-material/ArrowForward/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.esm.js +18 -0
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.esm.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.js +2 -0
- package/dist/node_modules/@mui/icons-material/IndeterminateCheckBox/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/NorthEast/index.esm.js +18 -0
- package/dist/node_modules/@mui/icons-material/NorthEast/index.esm.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/NorthEast/index.js +2 -0
- package/dist/node_modules/@mui/icons-material/NorthEast/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/Visibility/index.esm.js +18 -0
- package/dist/node_modules/@mui/icons-material/Visibility/index.esm.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/Visibility/index.js +2 -0
- package/dist/node_modules/@mui/icons-material/Visibility/index.js.map +1 -0
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.esm.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js +1 -1
- package/dist/node_modules/@mui/icons-material/utils/createSvgIcon/index.js.map +1 -1
- package/dist/node_modules/prop-types/index/index.esm.js +1 -1
- package/dist/node_modules/prop-types/index/index.js +1 -1
- package/dist/node_modules/prop-types/index/index.js.map +1 -1
- package/dist/style.css +2 -0
- package/dist/utils/api/index.esm.js +4 -4
- package/dist/utils/api/index.esm.js.map +1 -1
- package/dist/utils/api/index.js +1 -1
- package/dist/utils/api/index.js.map +1 -1
- package/dist/utils/common/index.esm.js +8 -8
- package/dist/utils/common/index.esm.js.map +1 -1
- package/dist/utils/common/index.js +1 -1
- package/dist/utils/common/index.js.map +1 -1
- package/dist/utils/common-utility.d.ts +1 -1
- package/dist/utils/fileSize/index.esm.js +22 -0
- package/dist/utils/fileSize/index.esm.js.map +1 -0
- package/dist/utils/fileSize/index.js +2 -0
- package/dist/utils/fileSize/index.js.map +1 -0
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.esm.js +54 -50
- package/dist/utils/index.esm.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js +48 -0
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js +2 -0
- package/dist/views/beforeAuth/components/activity-tag-data/activity-tag-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js +50 -0
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js +2 -0
- package/dist/views/beforeAuth/components/calendar-data/calendar-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js +57 -0
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js +2 -0
- package/dist/views/beforeAuth/components/gantt-data/gantt-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js +41 -0
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js +2 -0
- package/dist/views/beforeAuth/components/grid-data/grid-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/index/index.esm.js +1144 -0
- package/dist/views/beforeAuth/components/index/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/index/index.js +206 -0
- package/dist/views/beforeAuth/components/index/index.js.map +1 -0
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js +72 -0
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js +2 -0
- package/dist/views/beforeAuth/components/kanbann-content/kanbann-raw/index.js.map +1 -0
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js +54 -0
- package/dist/views/beforeAuth/components/list-content/column-raw/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js +2 -0
- package/dist/views/beforeAuth/components/list-content/column-raw/index.js.map +1 -0
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js +61 -0
- package/dist/views/beforeAuth/components/list-content/list-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/list-content/list-data/index.js +2 -0
- package/dist/views/beforeAuth/components/list-content/list-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js +21 -0
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js +2 -0
- package/dist/views/beforeAuth/components/multiline-data/multiline-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js +21 -0
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js +2 -0
- package/dist/views/beforeAuth/components/tabs-data/tabs-data/index.js.map +1 -0
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js +306 -0
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.esm.js.map +1 -0
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js +2 -0
- package/dist/views/beforeAuth/components/user-dropdown-data/user-dropdown-data/index.js.map +1 -0
- package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
- package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.esm.js +8 -0
- package/dist/views/form-builder/redux/reducer/index.esm.js.map +1 -1
- package/dist/views/form-builder/redux/reducer/index.js +1 -1
- package/dist/views/form-builder/redux/reducer/index.js.map +1 -1
- package/dist/views/index.esm.js +2 -0
- package/dist/views/index.esm.js.map +1 -1
- package/dist/views/index.js +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js +3 -3
- package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
- package/dist/views/template-editor/components/EditorSidebar/index.js +14 -14
- package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
- package/dist/views/template-editor/templates/index.esm.js +1 -1
- package/dist/views/template-editor/templates/index.esm.js.map +1 -1
- package/dist/views/template-editor/templates/index.js +1 -1
- package/dist/views/template-editor/templates/index.js.map +1 -1
- package/package.json +2 -3
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useEffect } from "react";
|
|
3
|
+
import linear from "../../../../node_modules/d3-scale/src/linear/index.esm.js";
|
|
4
|
+
import max from "../../../../node_modules/d3-array/src/max/index.esm.js";
|
|
5
|
+
import select from "../../../../node_modules/d3-selection/src/select/index.esm.js";
|
|
6
|
+
import line from "../../../../node_modules/d3-shape/src/line/index.esm.js";
|
|
7
|
+
import area from "../../../../node_modules/d3-shape/src/area/index.esm.js";
|
|
8
|
+
const AreaLineChart = ({
|
|
9
|
+
data,
|
|
10
|
+
width = "auto",
|
|
11
|
+
// Set default width to "100%"
|
|
12
|
+
height = "auto",
|
|
13
|
+
lineColor = "#ADE7CB",
|
|
14
|
+
lineFillColor = "#EBF9F2",
|
|
15
|
+
...rest
|
|
16
|
+
}) => {
|
|
17
|
+
const svgRef = useRef(null);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const svg = select(svgRef.current);
|
|
21
|
+
svg.selectAll("*").remove();
|
|
22
|
+
const margin = { top: 5, left: 0 };
|
|
23
|
+
const chartWidth = typeof width === "number" ? width : ((_b = (_a = svgRef.current) == null ? void 0 : _a.parentElement) == null ? void 0 : _b.clientWidth) || 360;
|
|
24
|
+
const chartHeight = height;
|
|
25
|
+
const x = linear().domain([0, data.length - 1]).range([0, chartWidth]);
|
|
26
|
+
const y = linear().domain([0, max(data, (d) => d.value)]).range([chartHeight, 0]);
|
|
27
|
+
const line$1 = line().x((_, i) => x(i)).y((d) => y(d.value));
|
|
28
|
+
const area$1 = area().x((_, i) => x(i)).y0(chartHeight).y1((d) => y(d.value));
|
|
29
|
+
const chart = svg.append("g").attr("transform", `translate(${margin.left},${margin.top})`);
|
|
30
|
+
chart.append("path").datum(data).attr("class", "line").attr("d", line$1).style("fill", "none").style("stroke", lineColor).style("stroke-width", 5);
|
|
31
|
+
chart.append("path").datum(data).attr("class", "area").attr("d", area$1).style("fill", lineFillColor);
|
|
32
|
+
chart.selectAll(".domain").remove();
|
|
33
|
+
chart.selectAll(".tick line").remove();
|
|
34
|
+
}, [data, height, lineColor, lineFillColor, width]);
|
|
35
|
+
return /* @__PURE__ */ jsx("svg", { ref: svgRef, width, height, ...rest });
|
|
36
|
+
};
|
|
37
|
+
export {
|
|
38
|
+
AreaLineChart as default
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../../src/components/charts/line-chart/area-line-chart.tsx"],"sourcesContent":["// import React, { useRef, useEffect } from \"react\";\n// import * as d3 from \"d3\";\n\n// interface DataPoint {\n// label: string;\n// value: number;\n// }\n\n// interface LineChartProps {\n// data: DataPoint[];\n// width?: number;\n// height?: number;\n// lineColor?: string;\n// lineFillColor?: string;\n// }\n\n// const AreaLineChart: React.FC<LineChartProps> = ({\n// data,\n// width = 360,\n// height = 100,\n// lineColor = \"#ADE7CB\",\n// lineFillColor = \"#EBF9F2\",\n// ...rest\n// }) => {\n// const svgRef = useRef<SVGSVGElement>(null);\n\n// useEffect(() => {\n// const svg = d3.select(svgRef.current);\n\n// svg.selectAll(\"*\").remove();\n\n// const margin = { top: 5, left: 0 };\n// const chartWidth = width;\n// const chartHeight = height;\n\n// const x = d3\n// .scaleLinear()\n// .domain([0, data.length - 1])\n// .range([0, chartWidth]);\n\n// const y = d3\n// .scaleLinear()\n// //@ts-expect-error not applicable\n// .domain([0, d3.max(data, (d: DataPoint) => d.value)])\n// .range([chartHeight, 0]);\n\n// const line = d3\n// .line<DataPoint>()\n// .x((_: DataPoint, i: number) => x(i))\n// .y((d: DataPoint) => y(d.value));\n\n// const area = d3\n// .area<DataPoint>()\n// .x((_: DataPoint, i: number) => x(i))\n// .y0(chartHeight)\n// .y1((d: DataPoint) => y(d.value));\n\n// const chart = svg\n// .append(\"g\")\n// .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n// chart\n// .append(\"path\")\n// .datum(data)\n// .attr(\"class\", \"line\")\n// .attr(\"d\", line)\n// .style(\"fill\", \"none\")\n// .style(\"stroke\", lineColor)\n// .style(\"stroke-width\", 5);\n\n// chart\n// .append(\"path\")\n// .datum(data)\n// .attr(\"class\", \"area\")\n// .attr(\"d\", area)\n// .style(\"fill\", lineFillColor);\n\n// chart.selectAll(\".domain\").remove();\n// chart.selectAll(\".tick line\").remove();\n// }, [data, height, lineColor, lineFillColor, width]);\n\n// return <svg ref={svgRef} width={width} height={height} {...rest}></svg>;\n// };\n\n// export default AreaLineChart;\n\n\nimport React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface LineChartProps {\n data: DataPoint[];\n width?: number | string; // Adjusted to accept string for percentage width\n height?: number | string;\n lineColor?: string;\n lineFillColor?: string;\n}\n\nconst AreaLineChart: React.FC<LineChartProps> = ({\n data,\n width = \"auto\", // Set default width to \"100%\"\n height = \"auto\",\n lineColor = \"#ADE7CB\",\n lineFillColor = \"#EBF9F2\",\n ...rest\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n useEffect(() => {\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = { top: 5, left: 0 };\n const chartWidth = typeof width === \"number\" ? width : svgRef.current?.parentElement?.clientWidth || 360; // Calculate width dynamically\n\n const chartHeight = height;\n\n const x = d3\n .scaleLinear()\n .domain([0, data.length - 1])\n .range([0, chartWidth]);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, (d: DataPoint) => d.value)])\n .range([chartHeight, 0]);\n\n const line = d3\n .line<DataPoint>()\n .x((_: DataPoint, i: number) => x(i))\n .y((d: DataPoint) => y(d.value));\n\n const area = d3\n .area<DataPoint>()\n .x((_: DataPoint, i: number) => x(i))\n .y0(chartHeight)\n .y1((d: DataPoint) => y(d.value));\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line)\n .style(\"fill\", \"none\")\n .style(\"stroke\", lineColor)\n .style(\"stroke-width\", 5);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"area\")\n .attr(\"d\", area)\n .style(\"fill\", lineFillColor);\n\n chart.selectAll(\".domain\").remove();\n chart.selectAll(\".tick line\").remove();\n }, [data, height, lineColor, lineFillColor, width]);\n\n return <svg ref={svgRef} width={width} height={height} {...rest}></svg>;\n};\n\nexport default AreaLineChart;\n"],"names":["d3.select","d3.scaleLinear","d3.max","line","d3.line","area","d3.area"],"mappings":";;;;;;;AAuGA,MAAM,gBAA0C,CAAC;AAAA,EAC/C;AAAA,EACA,QAAQ;AAAA;AAAA,EACR,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAAsB,IAAI;AAEzC,YAAU,MAAM;;AACd,UAAM,MAAMA,OAAU,OAAO,OAAO;AAEpC,QAAI,UAAU,GAAG,EAAE,OAAA;AAEnB,UAAM,SAAS,EAAE,KAAK,GAAG,MAAM,EAAA;AAC/B,UAAM,aAAa,OAAO,UAAU,WAAW,UAAQ,kBAAO,YAAP,mBAAgB,kBAAhB,mBAA+B,gBAAe;AAErG,UAAM,cAAc;AAEpB,UAAM,IAAIC,OACP,EACA,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,EAC3B,MAAM,CAAC,GAAG,UAAU,CAAC;AAExB,UAAM,IAAIA,SAEP,OAAO,CAAC,GAAGC,IAAO,MAAM,CAAC,MAAiB,EAAE,KAAK,CAAC,CAAC,EACnD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,UAAMC,SAAOC,KACV,EACA,EAAE,CAAC,GAAc,MAAc,EAAE,CAAC,CAAC,EACnC,EAAE,CAAC,MAAiB,EAAE,EAAE,KAAK,CAAC;AAEjC,UAAMC,SAAOC,OAEV,EAAE,CAAC,GAAc,MAAc,EAAE,CAAC,CAAC,EACnC,GAAG,WAAW,EACd,GAAG,CAAC,MAAiB,EAAE,EAAE,KAAK,CAAC;AAElC,UAAM,QAAQ,IACX,OAAO,GAAG,EACV,KAAK,aAAa,aAAa,OAAO,IAAI,IAAI,OAAO,GAAG,GAAG;AAE9D,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAKH,MAAI,EACd,MAAM,QAAQ,MAAM,EACpB,MAAM,UAAU,SAAS,EACzB,MAAM,gBAAgB,CAAC;AAE1B,UACG,OAAO,MAAM,EACb,MAAM,IAAI,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,KAAKE,MAAI,EACd,MAAM,QAAQ,aAAa;AAE9B,UAAM,UAAU,SAAS,EAAE,OAAA;AAC3B,UAAM,UAAU,YAAY,EAAE,OAAA;AAAA,EAChC,GAAG,CAAC,MAAM,QAAQ,WAAW,eAAe,KAAK,CAAC;AAElD,6BAAQ,OAAA,EAAI,KAAK,QAAQ,OAAc,QAAiB,GAAG,MAAM;AACnE;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("../../../../node_modules/d3-scale/src/linear/index.js"),l=require("../../../../node_modules/d3-array/src/max/index.js"),a=require("../../../../node_modules/d3-selection/src/select/index.js"),s=require("../../../../node_modules/d3-shape/src/line/index.js"),d=require("../../../../node_modules/d3-shape/src/area/index.js");exports.default=({data:n,width:u="auto",height:i="auto",lineColor:o="#ADE7CB",lineFillColor:c="#EBF9F2",...m})=>{const f=t.useRef(null);return t.useEffect(()=>{var e,t;const m=a.default(f.current);m.selectAll("*").remove();const p="number"==typeof u?u:(null==(t=null==(e=f.current)?void 0:e.parentElement)?void 0:t.clientWidth)||360,h=i,v=r.default().domain([0,n.length-1]).range([0,p]),x=r.default().domain([0,l.default(n,e=>e.value)]).range([h,0]),y=s.default().x((e,t)=>v(t)).y(e=>x(e.value)),j=d.default().x((e,t)=>v(t)).y0(h).y1(e=>x(e.value)),g=m.append("g").attr("transform","translate(0,5)");g.append("path").datum(n).attr("class","line").attr("d",y).style("fill","none").style("stroke",o).style("stroke-width",5),g.append("path").datum(n).attr("class","area").attr("d",j).style("fill",c),g.selectAll(".domain").remove(),g.selectAll(".tick line").remove()},[n,i,o,c,u]),/* @__PURE__ */e.jsx("svg",{ref:f,width:u,height:i,...m})};
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../src/components/charts/line-chart/area-line-chart.tsx"],"sourcesContent":["// import React, { useRef, useEffect } from \"react\";\n// import * as d3 from \"d3\";\n\n// interface DataPoint {\n// label: string;\n// value: number;\n// }\n\n// interface LineChartProps {\n// data: DataPoint[];\n// width?: number;\n// height?: number;\n// lineColor?: string;\n// lineFillColor?: string;\n// }\n\n// const AreaLineChart: React.FC<LineChartProps> = ({\n// data,\n// width = 360,\n// height = 100,\n// lineColor = \"#ADE7CB\",\n// lineFillColor = \"#EBF9F2\",\n// ...rest\n// }) => {\n// const svgRef = useRef<SVGSVGElement>(null);\n\n// useEffect(() => {\n// const svg = d3.select(svgRef.current);\n\n// svg.selectAll(\"*\").remove();\n\n// const margin = { top: 5, left: 0 };\n// const chartWidth = width;\n// const chartHeight = height;\n\n// const x = d3\n// .scaleLinear()\n// .domain([0, data.length - 1])\n// .range([0, chartWidth]);\n\n// const y = d3\n// .scaleLinear()\n// //@ts-expect-error not applicable\n// .domain([0, d3.max(data, (d: DataPoint) => d.value)])\n// .range([chartHeight, 0]);\n\n// const line = d3\n// .line<DataPoint>()\n// .x((_: DataPoint, i: number) => x(i))\n// .y((d: DataPoint) => y(d.value));\n\n// const area = d3\n// .area<DataPoint>()\n// .x((_: DataPoint, i: number) => x(i))\n// .y0(chartHeight)\n// .y1((d: DataPoint) => y(d.value));\n\n// const chart = svg\n// .append(\"g\")\n// .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n// chart\n// .append(\"path\")\n// .datum(data)\n// .attr(\"class\", \"line\")\n// .attr(\"d\", line)\n// .style(\"fill\", \"none\")\n// .style(\"stroke\", lineColor)\n// .style(\"stroke-width\", 5);\n\n// chart\n// .append(\"path\")\n// .datum(data)\n// .attr(\"class\", \"area\")\n// .attr(\"d\", area)\n// .style(\"fill\", lineFillColor);\n\n// chart.selectAll(\".domain\").remove();\n// chart.selectAll(\".tick line\").remove();\n// }, [data, height, lineColor, lineFillColor, width]);\n\n// return <svg ref={svgRef} width={width} height={height} {...rest}></svg>;\n// };\n\n// export default AreaLineChart;\n\n\nimport React, { useRef, useEffect } from \"react\";\nimport * as d3 from \"d3\";\n\ninterface DataPoint {\n label: string;\n value: number;\n}\n\ninterface LineChartProps {\n data: DataPoint[];\n width?: number | string; // Adjusted to accept string for percentage width\n height?: number | string;\n lineColor?: string;\n lineFillColor?: string;\n}\n\nconst AreaLineChart: React.FC<LineChartProps> = ({\n data,\n width = \"auto\", // Set default width to \"100%\"\n height = \"auto\",\n lineColor = \"#ADE7CB\",\n lineFillColor = \"#EBF9F2\",\n ...rest\n}) => {\n const svgRef = useRef<SVGSVGElement>(null);\n\n useEffect(() => {\n const svg = d3.select(svgRef.current);\n\n svg.selectAll(\"*\").remove();\n\n const margin = { top: 5, left: 0 };\n const chartWidth = typeof width === \"number\" ? width : svgRef.current?.parentElement?.clientWidth || 360; // Calculate width dynamically\n\n const chartHeight = height;\n\n const x = d3\n .scaleLinear()\n .domain([0, data.length - 1])\n .range([0, chartWidth]);\n\n const y = d3\n .scaleLinear()\n .domain([0, d3.max(data, (d: DataPoint) => d.value)])\n .range([chartHeight, 0]);\n\n const line = d3\n .line<DataPoint>()\n .x((_: DataPoint, i: number) => x(i))\n .y((d: DataPoint) => y(d.value));\n\n const area = d3\n .area<DataPoint>()\n .x((_: DataPoint, i: number) => x(i))\n .y0(chartHeight)\n .y1((d: DataPoint) => y(d.value));\n\n const chart = svg\n .append(\"g\")\n .attr(\"transform\", `translate(${margin.left},${margin.top})`);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"line\")\n .attr(\"d\", line)\n .style(\"fill\", \"none\")\n .style(\"stroke\", lineColor)\n .style(\"stroke-width\", 5);\n\n chart\n .append(\"path\")\n .datum(data)\n .attr(\"class\", \"area\")\n .attr(\"d\", area)\n .style(\"fill\", lineFillColor);\n\n chart.selectAll(\".domain\").remove();\n chart.selectAll(\".tick line\").remove();\n }, [data, height, lineColor, lineFillColor, width]);\n\n return <svg ref={svgRef} width={width} height={height} {...rest}></svg>;\n};\n\nexport default AreaLineChart;\n"],"names":["data","width","height","lineColor","lineFillColor","rest","svgRef","useRef","useEffect","svg","d3.select","current","selectAll","remove","chartWidth","_b","_a","parentElement","clientWidth","chartHeight","x","d3.scaleLinear","domain","length","range","y","d3.max","d","value","line","d3.line","_","i","area","d3.area","y0","y1","chart","append","attr","datum","style","ref"],"mappings":"sdAuGgD,EAC9CA,OACAC,QAAQ,OACRC,SAAS,OACTC,YAAY,UACZC,gBAAgB,aACbC,MAEH,MAAMC,EAASC,EAAAA,OAAsB,MAyDrC,OAvDAC,EAAAA,UAAU,aACR,MAAMC,EAAMC,EAAAA,QAAUJ,EAAOK,SAE7BF,EAAIG,UAAU,KAAKC,SAEnB,MACMC,EAA8B,iBAAVb,EAAqBA,GAAQ,OAAAc,EAAA,WAAOJ,cAAP,EAAAK,EAAgBC,oBAAhB,EAAAF,EAA+BG,cAAe,IAE/FC,EAAcjB,EAEdkB,EAAIC,EAAAA,UAEPC,OAAO,CAAC,EAAGtB,EAAKuB,OAAS,IACzBC,MAAM,CAAC,EAAGV,IAEPW,EAAIJ,EAAAA,UAEPC,OAAO,CAAC,EAAGI,EAAAA,QAAO1B,EAAO2B,GAAiBA,EAAEC,SAC5CJ,MAAM,CAACL,EAAa,IAEjBU,EAAOC,EAAAA,UAEVV,EAAE,CAACW,EAAcC,IAAcZ,EAAEY,IACjCP,EAAGE,GAAiBF,EAAEE,EAAEC,QAErBK,EAAOC,EAAAA,UAEVd,EAAE,CAACW,EAAcC,IAAcZ,EAAEY,IACjCG,GAAGhB,GACHiB,GAAIT,GAAiBF,EAAEE,EAAEC,QAEtBS,EAAQ5B,EACX6B,OAAO,KACPC,KAAK,YAAa,kBAErBF,EACGC,OAAO,QACPE,MAAMxC,GACNuC,KAAK,QAAS,QACdA,KAAK,IAAKV,GACVY,MAAM,OAAQ,QACdA,MAAM,SAAUtC,GAChBsC,MAAM,eAAgB,GAEzBJ,EACGC,OAAO,QACPE,MAAMxC,GACNuC,KAAK,QAAS,QACdA,KAAK,IAAKN,GACVQ,MAAM,OAAQrC,GAEjBiC,EAAMzB,UAAU,WAAWC,SAC3BwB,EAAMzB,UAAU,cAAcC,UAC7B,CAACb,EAAME,EAAQC,EAAWC,EAAeH,yBAEpC,MAAA,CAAIyC,IAAKpC,EAAQL,QAAcC,YAAoBG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { CheckboxProps } from '@mui/material';
|
|
2
2
|
|
|
3
|
-
declare const Checkbox: import('react').
|
|
3
|
+
declare const Checkbox: import('react').MemoExoticComponent<(props: CheckboxProps) => import("react/jsx-runtime").JSX.Element>;
|
|
4
4
|
export default Checkbox;
|
|
@@ -16,5 +16,5 @@ export interface DatePickerProps {
|
|
|
16
16
|
textFieldProps?: any;
|
|
17
17
|
format?: string;
|
|
18
18
|
}
|
|
19
|
-
declare const DatePicker: import('react').
|
|
19
|
+
declare const DatePicker: import('react').MemoExoticComponent<(props: DatePickerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
20
20
|
export default DatePicker;
|
|
@@ -358,7 +358,7 @@ function CustomEditor({
|
|
|
358
358
|
"file_extension": file == null ? void 0 : file.name.split(".")[1],
|
|
359
359
|
"type": "image",
|
|
360
360
|
"mime_type": file.type,
|
|
361
|
-
"url": `${
|
|
361
|
+
"url": `${"https://erpforce-dev.s3.eu-west-1.amazonaws.com/"}${uFiles[0]}`
|
|
362
362
|
};
|
|
363
363
|
await postV1Drive(payload);
|
|
364
364
|
return { url: payload.url };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../../../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// IsolatedEditor.js - This file should ONLY be imported via React.lazy()\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport \"./custom-editor.css\"\n\n// Import ALL CKEditor dependencies in this file ONLY\n// Do NOT import these anywhere else in your application\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport {\n ClassicEditor,\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n // Image support\n Image,\n ImageBlock,\n ImageInline,\n ImageToolbar,\n ImageCaption,\n ImageStyle,\n ImageResize,\n ImageInsert,\n ImageInsertViaUrl,\n ImageUpload,\n ImageTextAlternative,\n SimpleUploadAdapter,\n LinkImage,\n ClipboardPipeline,\n AutoImage,\n} from 'ckeditor5';\n\nimport 'ckeditor5/ckeditor5.css';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getToken, uploadFiles } from '../../utils/common';\n\nconst LICENSE_KEY = 'GPL';\n\n\nclass MyUploadAdapter {\n constructor(loader, uploadFn) {\n // The file loader instance to use during the upload\n this.loader = loader;\n this.uploadFn = uploadFn;\n }\n\n // Starts the upload process\n async upload() {\n const file = await this.loader.file;\n try {\n // 👇 Call your existing function\n const response = await this.uploadFn(file);\n\n // CKEditor expects this format:\n return {\n default: response.url // must return final image URL\n };\n } catch (error) {\n console.error(\"Upload failed\", error);\n throw error;\n }\n }\n\n // Optional abort support\n abort() {\n console.log(\"Upload aborted\");\n }\n}\n\nfunction PasteImageUrlPlugin(editor) {\n const clipboard = editor.plugins.get(ClipboardPipeline);\n\n clipboard.on('inputTransformation', (evt, data) => {\n const content = data.content.getChild(0);\n\n // Check if pasted content is plain text\n if (content && content.is('$textProxy')) {\n const url = content.data.trim();\n\n // Check if it looks like an image URL\n if (url.match(/\\.(jpeg|jpg|gif|png|webp|svg)$/i)) {\n const imageElement = editor.model.change(writer => {\n return writer.createElement('imageBlock', {\n src: url\n });\n });\n\n editor.model.insertContent(imageElement, editor.model.document.selection);\n evt.stop(); // prevent default plain text paste\n }\n }\n });\n}\n\n\n// Create the editor configuration\nconst createEditorConfig = (customConfig = {}) => {\n const defaultConfig = {\n extraPlugins: [ PasteImageUrlPlugin, AutoImage ],\n toolbar: {\n items: [\n 'sourceEditing',\n 'undo',\n 'redo',\n '|',\n 'heading',\n '|',\n 'fontSize',\n 'fontFamily',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'subscript',\n 'superscript',\n 'code',\n 'removeFormat',\n '|',\n 'horizontalLine',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n 'highlight',\n 'blockQuote',\n 'codeBlock',\n '|',\n 'alignment',\n '|',\n 'outdent',\n 'indent',\n ],\n shouldNotGroupWhenFull: false\n },\n plugins: [\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n Image,\n ImageBlock,\n ImageCaption,\n ImageEditing,\n ImageInline,\n ImageInsert,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageTextAlternative,\n ImageToolbar,\n ImageUpload,\n ImageUtils,\n SimpleUploadAdapter,\n LinkImage\n ],\n balloonToolbar: ['bold', 'italic', '|', 'link', 'insertImage', 'uploadImage',],\n blockToolbar: [\n 'fontSize',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n '|',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n '|',\n 'outdent',\n 'indent'\n ],\n fontFamily: {\n supportAllValues: true\n },\n fontSize: {\n options: [10, 12, 14, 'default', 18, 20, 22],\n supportAllValues: true\n },\n heading: {\n options: [\n {\n model: 'paragraph',\n title: 'Paragraph',\n class: 'ck-heading_paragraph'\n },\n {\n model: 'heading1',\n view: 'h1',\n title: 'Heading 1',\n class: 'ck-heading_heading1'\n },\n {\n model: 'heading2',\n view: 'h2',\n title: 'Heading 2',\n class: 'ck-heading_heading2'\n },\n {\n model: 'heading3',\n view: 'h3',\n title: 'Heading 3',\n class: 'ck-heading_heading3'\n },\n {\n model: 'heading4',\n view: 'h4',\n title: 'Heading 4',\n class: 'ck-heading_heading4'\n }\n ]\n },\n licenseKey: LICENSE_KEY,\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: 'Downloadable',\n attributes: {\n download: 'file',\n }\n }\n }\n },\n menuBar: {\n isVisible: true\n },\n placeholder: 'Type or paste your content here!',\n table: {\n contentToolbar: [\n 'tableColumn', \n 'tableRow', \n 'mergeTableCells', \n 'tableProperties', \n 'tableCellProperties'\n ]\n },\n htmlSupport: {\n allow: [\n {\n name: /.*/,\n attributes: true,\n classes: true,\n styles: true\n }\n ]\n },\n image: {\n toolbar: [\n 'imageTextAlternative',\n 'toggleImageCaption',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n '|',\n 'linkImage'\n ],\n styles: {\n options: [\n 'inline',\n 'alignLeft',\n 'alignRight',\n 'alignCenter',\n 'alignBlockLeft',\n 'alignBlockRight',\n 'block',\n 'side'\n ]\n },\n resizeOptions: [\n {\n name: 'resizeImage:original',\n label: 'Original size',\n value: null\n },\n {\n name: 'resizeImage:25',\n label: '25%',\n value: '25'\n },\n {\n name: 'resizeImage:50',\n label: '50%',\n value: '50'\n },\n {\n name: 'resizeImage:75',\n label: '75%',\n value: '75'\n }\n ],\n insert: {\n integrations: ['insertImageViaUrl']\n }\n },\n simpleUpload: {\n uploadUrl: '/api/upload', // your upload API\n headers: {\n Authorization: 'Bearer <token>'\n }\n },\n autosave: {\n save() {\n return new Promise(resolve => {\n setTimeout(resolve, 1000);\n });\n }\n }\n };\n\n return { ...defaultConfig, ...customConfig };\n};\n\nexport default function CustomEditor({\n editorRef,\n data = '',\n handleEditorReady,\n onError,\n config = {},\n ...rest\n}) {\n const [isReady, setIsReady] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n // Small delay to ensure DOM is ready\n const timer = setTimeout(() => setIsReady(true), 100);\n return () => clearTimeout(timer);\n }, []);\n\n const editorConfig = useMemo(() => {\n return createEditorConfig(config);\n }, [config]);\n\n const myUploadFn = async (file) => {\n // 👇 Your existing function here\n const uFiles = await uploadFiles([file], \"document\");\n const payload = {\n ...getToken(),\n \"title\": file?.name.split(\".\")[0],\n \"path\": \"/\",\n \"is_private\": true,\n \"is_directory\": false,\n \"file_size\": file.size,\n \"is_child\": false,\n \"file_extension\": file?.name.split(\".\")[1],\n \"type\": \"image\",\n \"mime_type\": file.type,\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\n }\n // Replace with your actual API endpoint\n \n // 👇 Call your existing function\n await postV1Drive(payload);\n return { url: payload.url };\n };\n\n const handleReady = useCallback((editor) => {\n try {\n handleEditorReady?.(editor);\n editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {\n return new MyUploadAdapter(loader, myUploadFn);\n };\n } catch (err) {\n console.error('Error in editor ready handler:', err);\n setError(err);\n onError?.(err);\n }\n }, [handleEditorReady, onError]);\n\n const handleError = useCallback((error, { willEditorRestart }) => {\n console.error('CKEditor error:', error);\n if (!willEditorRestart) {\n setError(error);\n onError?.(error);\n }\n }, [onError]);\n\n if (error) {\n return (\n <div style={{\n padding: '20px',\n border: '1px solid #red',\n borderRadius: '4px',\n backgroundColor: '#fff5f5'\n }}>\n <div style={{ color: '#e53e3e', marginBottom: '10px' }}>\n Editor Error: {error.message}\n </div>\n <button \n onClick={() => setError(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: '#3182ce',\n color: 'white',\n border: 'none',\n borderRadius: '4px'\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isReady) {\n return (\n <div style={{\n padding: '20px',\n textAlign: 'center',\n border: '1px solid #dee2e6',\n borderRadius: '4px'\n }}>\n Loading editor...\n </div>\n );\n }\n\n return (\n <div ref={editorRef} className=\"custom-editor-container\">\n <CKEditor \n editor={ClassicEditor} \n config={editorConfig} \n data={data} \n onReady={handleReady}\n onError={handleError}\n {...rest}\n />\n </div>\n );\n}"],"names":["error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,MAAM,cAAc;AAGpB,MAAM,gBAAgB;AAAA,EACpB,YAAY,QAAQ,UAAU;AAE5B,SAAK,SAAS;AACd,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA,EAGA,MAAM,SAAS;AACb,UAAM,OAAO,MAAM,KAAK,OAAO;AAC/B,QAAI;AAEF,YAAM,WAAW,MAAM,KAAK,SAAS,IAAI;AAGzC,aAAO;AAAA,QACL,SAAS,SAAS;AAAA;AAAA,MAAA;AAAA,IAEtB,SAAS,OAAO;AACd,cAAQ,MAAM,iBAAiB,KAAK;AACpC,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAGA,QAAQ;AACN,YAAQ,IAAI,gBAAgB;AAAA,EAC9B;AACF;AAEA,SAAS,oBAAoB,QAAQ;AACnC,QAAM,YAAY,OAAO,QAAQ,IAAI,iBAAiB;AAEtD,YAAU,GAAG,uBAAuB,CAAC,KAAK,SAAS;AACjD,UAAM,UAAU,KAAK,QAAQ,SAAS,CAAC;AAGvC,QAAI,WAAW,QAAQ,GAAG,YAAY,GAAG;AACvC,YAAM,MAAM,QAAQ,KAAK,KAAA;AAGzB,UAAI,IAAI,MAAM,iCAAiC,GAAG;AAChD,cAAM,eAAe,OAAO,MAAM,OAAO,CAAA,WAAU;AACjD,iBAAO,OAAO,cAAc,cAAc;AAAA,YACxC,KAAK;AAAA,UAAA,CACN;AAAA,QACH,CAAC;AAED,eAAO,MAAM,cAAc,cAAc,OAAO,MAAM,SAAS,SAAS;AACxE,YAAI,KAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAIA,MAAM,qBAAqB,CAAC,eAAe,OAAO;AAChD,QAAM,gBAAgB;AAAA,IACpB,cAAc,CAAE,qBAAqB,SAAU;AAAA,IAC/C,SAAS;AAAA,MACP,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,wBAAwB;AAAA,IAAA;AAAA,IAE1B,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,gBAAgB,CAAC,QAAQ,UAAU,KAAK,QAAQ,eAAe,aAAc;AAAA,IAC7E,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA,MACV,kBAAkB;AAAA,IAAA;AAAA,IAEpB,UAAU;AAAA,MACR,SAAS,CAAC,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAAA,MAC3C,kBAAkB;AAAA,IAAA;AAAA,IAEpB,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,IAEF,YAAY;AAAA,IACZ,MAAM;AAAA,MACJ,0BAA0B;AAAA,MAC1B,iBAAiB;AAAA,MACjB,YAAY;AAAA,QACV,oBAAoB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,YACV,UAAU;AAAA,UAAA;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IAEF,SAAS;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,IAEb,aAAa;AAAA,IACb,OAAO;AAAA,MACL,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,aAAa;AAAA,MACX,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IACF;AAAA,IAEF,OAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,QAAQ;AAAA,QACN,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,eAAe;AAAA,QACb;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,MAEF,QAAQ;AAAA,QACN,cAAc,CAAC,mBAAmB;AAAA,MAAA;AAAA,IACpC;AAAA,IAEF,cAAc;AAAA,MACZ,WAAW;AAAA;AAAA,MACX,SAAS;AAAA,QACP,eAAe;AAAA,MAAA;AAAA,IACjB;AAAA,IAEF,UAAU;AAAA,MACR,OAAO;AACL,eAAO,IAAI,QAAQ,CAAA,YAAW;AAC5B,qBAAW,SAAS,GAAI;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IAAA;AAAA,EACF;AAGF,SAAO,EAAE,GAAG,eAAe,GAAG,aAAA;AAChC;AAEA,SAAwB,aAAa;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT,GAAG;AACL,GAAG;AACD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI;AAEvC,YAAU,MAAM;AAEd,UAAM,QAAQ,WAAW,MAAM,WAAW,IAAI,GAAG,GAAG;AACpD,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAA,CAAE;AAEL,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,mBAAmB,MAAM;AAAA,EAClC,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,aAAa,OAAO,SAAS;AAEjC,UAAM,SAAS,MAAM,YAAY,CAAC,IAAI,GAAG,UAAU;AACnD,UAAM,UAAU;AAAA,MACd,GAAG,SAAA;AAAA,MACH,SAAS,6BAAM,KAAK,MAAM,KAAK;AAAA,MAC/B,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,MACZ,kBAAkB,6BAAM,KAAK,MAAM,KAAK;AAAA,MACxC,QAAQ;AAAA,MACR,aAAa,KAAK;AAAA,MAClB,OAAO,GAAG,MAAA,GAAqC,OAAO,CAAC,CAAC;AAAA,IAAA;AAK1D,UAAM,YAAY,OAAO;AACzB,WAAO,EAAE,KAAK,QAAQ,IAAA;AAAA,EACxB;AAEA,QAAM,cAAc,YAAY,CAAC,WAAW;AAC1C,QAAI;AACF,6DAAoB;AACpB,aAAO,QAAQ,IAAI,gBAAgB,EAAE,sBAAsB,CAAC,WAAW;AACrE,eAAO,IAAI,gBAAgB,QAAQ,UAAU;AAAA,MAC/C;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,kCAAkC,GAAG;AACnD,eAAS,GAAG;AACZ,yCAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,mBAAmB,OAAO,CAAC;AAE/B,QAAM,cAAc,YAAY,CAACA,QAAO,EAAE,wBAAwB;AAChE,YAAQ,MAAM,mBAAmBA,MAAK;AACtC,QAAI,CAAC,mBAAmB;AACtB,eAASA,MAAK;AACd,yCAAUA;AAAAA,IACZ;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,OAAO;AACT,WACE,qBAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB;AAAA,IAAA,GAEjB,UAAA;AAAA,MAAA,qBAAC,SAAI,OAAO,EAAE,OAAO,WAAW,cAAc,OAAA,GAAU,UAAA;AAAA,QAAA;AAAA,QACvC,MAAM;AAAA,MAAA,GACvB;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,SAAS,IAAI;AAAA,UAC5B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAAA;AAAA,UAEjB,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,GACF;AAAA,EAEJ;AAEA,MAAI,CAAC,SAAS;AACZ,WACE,oBAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,cAAc;AAAA,IAAA,GACb,UAAA,qBAEH;AAAA,EAEJ;AAEA,6BACG,OAAA,EAAI,KAAK,WAAW,WAAU,2BAC7B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// IsolatedEditor.js - This file should ONLY be imported via React.lazy()\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport \"./custom-editor.css\"\n\n// Import ALL CKEditor dependencies in this file ONLY\n// Do NOT import these anywhere else in your application\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport {\n ClassicEditor,\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n // Image support\n Image,\n ImageBlock,\n ImageInline,\n ImageToolbar,\n ImageCaption,\n ImageStyle,\n ImageResize,\n ImageInsert,\n ImageInsertViaUrl,\n ImageUpload,\n ImageTextAlternative,\n SimpleUploadAdapter,\n LinkImage,\n ClipboardPipeline,\n AutoImage,\n} from 'ckeditor5';\n\nimport 'ckeditor5/ckeditor5.css';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getToken, uploadFiles } from '../../utils/common';\n\nconst LICENSE_KEY = 'GPL';\n\n\nclass MyUploadAdapter {\n constructor(loader, uploadFn) {\n // The file loader instance to use during the upload\n this.loader = loader;\n this.uploadFn = uploadFn;\n }\n\n // Starts the upload process\n async upload() {\n const file = await this.loader.file;\n try {\n // 👇 Call your existing function\n const response = await this.uploadFn(file);\n\n // CKEditor expects this format:\n return {\n default: response.url // must return final image URL\n };\n } catch (error) {\n console.error(\"Upload failed\", error);\n throw error;\n }\n }\n\n // Optional abort support\n abort() {\n console.log(\"Upload aborted\");\n }\n}\n\nfunction PasteImageUrlPlugin(editor) {\n const clipboard = editor.plugins.get(ClipboardPipeline);\n\n clipboard.on('inputTransformation', (evt, data) => {\n const content = data.content.getChild(0);\n\n // Check if pasted content is plain text\n if (content && content.is('$textProxy')) {\n const url = content.data.trim();\n\n // Check if it looks like an image URL\n if (url.match(/\\.(jpeg|jpg|gif|png|webp|svg)$/i)) {\n const imageElement = editor.model.change(writer => {\n return writer.createElement('imageBlock', {\n src: url\n });\n });\n\n editor.model.insertContent(imageElement, editor.model.document.selection);\n evt.stop(); // prevent default plain text paste\n }\n }\n });\n}\n\n\n// Create the editor configuration\nconst createEditorConfig = (customConfig = {}) => {\n const defaultConfig = {\n extraPlugins: [ PasteImageUrlPlugin, AutoImage ],\n toolbar: {\n items: [\n 'sourceEditing',\n 'undo',\n 'redo',\n '|',\n 'heading',\n '|',\n 'fontSize',\n 'fontFamily',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'subscript',\n 'superscript',\n 'code',\n 'removeFormat',\n '|',\n 'horizontalLine',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n 'highlight',\n 'blockQuote',\n 'codeBlock',\n '|',\n 'alignment',\n '|',\n 'outdent',\n 'indent',\n ],\n shouldNotGroupWhenFull: false\n },\n plugins: [\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n Image,\n ImageBlock,\n ImageCaption,\n ImageEditing,\n ImageInline,\n ImageInsert,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageTextAlternative,\n ImageToolbar,\n ImageUpload,\n ImageUtils,\n SimpleUploadAdapter,\n LinkImage\n ],\n balloonToolbar: ['bold', 'italic', '|', 'link', 'insertImage', 'uploadImage',],\n blockToolbar: [\n 'fontSize',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n '|',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n '|',\n 'outdent',\n 'indent'\n ],\n fontFamily: {\n supportAllValues: true\n },\n fontSize: {\n options: [10, 12, 14, 'default', 18, 20, 22],\n supportAllValues: true\n },\n heading: {\n options: [\n {\n model: 'paragraph',\n title: 'Paragraph',\n class: 'ck-heading_paragraph'\n },\n {\n model: 'heading1',\n view: 'h1',\n title: 'Heading 1',\n class: 'ck-heading_heading1'\n },\n {\n model: 'heading2',\n view: 'h2',\n title: 'Heading 2',\n class: 'ck-heading_heading2'\n },\n {\n model: 'heading3',\n view: 'h3',\n title: 'Heading 3',\n class: 'ck-heading_heading3'\n },\n {\n model: 'heading4',\n view: 'h4',\n title: 'Heading 4',\n class: 'ck-heading_heading4'\n }\n ]\n },\n licenseKey: LICENSE_KEY,\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: 'Downloadable',\n attributes: {\n download: 'file',\n }\n }\n }\n },\n menuBar: {\n isVisible: true\n },\n placeholder: 'Type or paste your content here!',\n table: {\n contentToolbar: [\n 'tableColumn', \n 'tableRow', \n 'mergeTableCells', \n 'tableProperties', \n 'tableCellProperties'\n ]\n },\n htmlSupport: {\n allow: [\n {\n name: /.*/,\n attributes: true,\n classes: true,\n styles: true\n }\n ]\n },\n image: {\n toolbar: [\n 'imageTextAlternative',\n 'toggleImageCaption',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n '|',\n 'linkImage'\n ],\n styles: {\n options: [\n 'inline',\n 'alignLeft',\n 'alignRight',\n 'alignCenter',\n 'alignBlockLeft',\n 'alignBlockRight',\n 'block',\n 'side'\n ]\n },\n resizeOptions: [\n {\n name: 'resizeImage:original',\n label: 'Original size',\n value: null\n },\n {\n name: 'resizeImage:25',\n label: '25%',\n value: '25'\n },\n {\n name: 'resizeImage:50',\n label: '50%',\n value: '50'\n },\n {\n name: 'resizeImage:75',\n label: '75%',\n value: '75'\n }\n ],\n insert: {\n integrations: ['insertImageViaUrl']\n }\n },\n simpleUpload: {\n uploadUrl: '/api/upload', // your upload API\n headers: {\n Authorization: 'Bearer <token>'\n }\n },\n autosave: {\n save() {\n return new Promise(resolve => {\n setTimeout(resolve, 1000);\n });\n }\n }\n };\n\n return { ...defaultConfig, ...customConfig };\n};\n\nexport default function CustomEditor({\n editorRef,\n data = '',\n handleEditorReady,\n onError,\n config = {},\n ...rest\n}) {\n const [isReady, setIsReady] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n // Small delay to ensure DOM is ready\n const timer = setTimeout(() => setIsReady(true), 100);\n return () => clearTimeout(timer);\n }, []);\n\n const editorConfig = useMemo(() => {\n return createEditorConfig(config);\n }, [config]);\n\n const myUploadFn = async (file) => {\n // 👇 Your existing function here\n const uFiles = await uploadFiles([file], \"document\");\n const payload = {\n ...getToken(),\n \"title\": file?.name.split(\".\")[0],\n \"path\": \"/\",\n \"is_private\": true,\n \"is_directory\": false,\n \"file_size\": file.size,\n \"is_child\": false,\n \"file_extension\": file?.name.split(\".\")[1],\n \"type\": \"image\",\n \"mime_type\": file.type,\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\n }\n // Replace with your actual API endpoint\n \n // 👇 Call your existing function\n await postV1Drive(payload);\n return { url: payload.url };\n };\n\n const handleReady = useCallback((editor) => {\n try {\n handleEditorReady?.(editor);\n editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {\n return new MyUploadAdapter(loader, myUploadFn);\n };\n } catch (err) {\n console.error('Error in editor ready handler:', err);\n setError(err);\n onError?.(err);\n }\n }, [handleEditorReady, onError]);\n\n const handleError = useCallback((error, { willEditorRestart }) => {\n console.error('CKEditor error:', error);\n if (!willEditorRestart) {\n setError(error);\n onError?.(error);\n }\n }, [onError]);\n\n if (error) {\n return (\n <div style={{\n padding: '20px',\n border: '1px solid #red',\n borderRadius: '4px',\n backgroundColor: '#fff5f5'\n }}>\n <div style={{ color: '#e53e3e', marginBottom: '10px' }}>\n Editor Error: {error.message}\n </div>\n <button \n onClick={() => setError(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: '#3182ce',\n color: 'white',\n border: 'none',\n borderRadius: '4px'\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isReady) {\n return (\n <div style={{\n padding: '20px',\n textAlign: 'center',\n border: '1px solid #dee2e6',\n borderRadius: '4px'\n }}>\n Loading editor...\n </div>\n );\n }\n\n return (\n <div ref={editorRef} className=\"custom-editor-container\">\n <CKEditor \n editor={ClassicEditor} \n config={editorConfig} \n data={data} \n onReady={handleReady}\n onError={handleError}\n {...rest}\n />\n </div>\n );\n}"],"names":["error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,MAAM,cAAc;AAGpB,MAAM,gBAAgB;AAAA,EACpB,YAAY,QAAQ,UAAU;AAE5B,SAAK,SAAS;AACd,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA,EAGA,MAAM,SAAS;AACb,UAAM,OAAO,MAAM,KAAK,OAAO;AAC/B,QAAI;AAEF,YAAM,WAAW,MAAM,KAAK,SAAS,IAAI;AAGzC,aAAO;AAAA,QACL,SAAS,SAAS;AAAA;AAAA,MAAA;AAAA,IAEtB,SAAS,OAAO;AACd,cAAQ,MAAM,iBAAiB,KAAK;AACpC,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA,EAGA,QAAQ;AACN,YAAQ,IAAI,gBAAgB;AAAA,EAC9B;AACF;AAEA,SAAS,oBAAoB,QAAQ;AACnC,QAAM,YAAY,OAAO,QAAQ,IAAI,iBAAiB;AAEtD,YAAU,GAAG,uBAAuB,CAAC,KAAK,SAAS;AACjD,UAAM,UAAU,KAAK,QAAQ,SAAS,CAAC;AAGvC,QAAI,WAAW,QAAQ,GAAG,YAAY,GAAG;AACvC,YAAM,MAAM,QAAQ,KAAK,KAAA;AAGzB,UAAI,IAAI,MAAM,iCAAiC,GAAG;AAChD,cAAM,eAAe,OAAO,MAAM,OAAO,CAAA,WAAU;AACjD,iBAAO,OAAO,cAAc,cAAc;AAAA,YACxC,KAAK;AAAA,UAAA,CACN;AAAA,QACH,CAAC;AAED,eAAO,MAAM,cAAc,cAAc,OAAO,MAAM,SAAS,SAAS;AACxE,YAAI,KAAA;AAAA,MACN;AAAA,IACF;AAAA,EACF,CAAC;AACH;AAIA,MAAM,qBAAqB,CAAC,eAAe,OAAO;AAChD,QAAM,gBAAgB;AAAA,IACpB,cAAc,CAAE,qBAAqB,SAAU;AAAA,IAC/C,SAAS;AAAA,MACP,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,wBAAwB;AAAA,IAAA;AAAA,IAE1B,SAAS;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,gBAAgB,CAAC,QAAQ,UAAU,KAAK,QAAQ,eAAe,aAAc;AAAA,IAC7E,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA,MACV,kBAAkB;AAAA,IAAA;AAAA,IAEpB,UAAU;AAAA,MACR,SAAS,CAAC,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAAA,MAC3C,kBAAkB;AAAA,IAAA;AAAA,IAEpB,SAAS;AAAA,MACP,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,OAAO;AAAA,UACP,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,IACF;AAAA,IAEF,YAAY;AAAA,IACZ,MAAM;AAAA,MACJ,0BAA0B;AAAA,MAC1B,iBAAiB;AAAA,MACjB,YAAY;AAAA,QACV,oBAAoB;AAAA,UAClB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,YAAY;AAAA,YACV,UAAU;AAAA,UAAA;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IAEF,SAAS;AAAA,MACP,WAAW;AAAA,IAAA;AAAA,IAEb,aAAa;AAAA,IACb,OAAO;AAAA,MACL,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IACF;AAAA,IAEF,aAAa;AAAA,MACX,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,SAAS;AAAA,UACT,QAAQ;AAAA,QAAA;AAAA,MACV;AAAA,IACF;AAAA,IAEF,OAAO;AAAA,MACL,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,MAEF,QAAQ;AAAA,QACN,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,eAAe;AAAA,QACb;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,QAET;AAAA,UACE,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,QAAA;AAAA,MACT;AAAA,MAEF,QAAQ;AAAA,QACN,cAAc,CAAC,mBAAmB;AAAA,MAAA;AAAA,IACpC;AAAA,IAEF,cAAc;AAAA,MACZ,WAAW;AAAA;AAAA,MACX,SAAS;AAAA,QACP,eAAe;AAAA,MAAA;AAAA,IACjB;AAAA,IAEF,UAAU;AAAA,MACR,OAAO;AACL,eAAO,IAAI,QAAQ,CAAA,YAAW;AAC5B,qBAAW,SAAS,GAAI;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IAAA;AAAA,EACF;AAGF,SAAO,EAAE,GAAG,eAAe,GAAG,aAAA;AAChC;AAEA,SAAwB,aAAa;AAAA,EACnC;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT,GAAG;AACL,GAAG;AACD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,IAAI;AAEvC,YAAU,MAAM;AAEd,UAAM,QAAQ,WAAW,MAAM,WAAW,IAAI,GAAG,GAAG;AACpD,WAAO,MAAM,aAAa,KAAK;AAAA,EACjC,GAAG,CAAA,CAAE;AAEL,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,mBAAmB,MAAM;AAAA,EAClC,GAAG,CAAC,MAAM,CAAC;AAEX,QAAM,aAAa,OAAO,SAAS;AAEjC,UAAM,SAAS,MAAM,YAAY,CAAC,IAAI,GAAG,UAAU;AACnD,UAAM,UAAU;AAAA,MACd,GAAG,SAAA;AAAA,MACH,SAAS,6BAAM,KAAK,MAAM,KAAK;AAAA,MAC/B,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,gBAAgB;AAAA,MAChB,aAAa,KAAK;AAAA,MAClB,YAAY;AAAA,MACZ,kBAAkB,6BAAM,KAAK,MAAM,KAAK;AAAA,MACxC,QAAQ;AAAA,MACR,aAAa,KAAK;AAAA,MAClB,OAAO,GAAG,kDAAkC,GAAG,OAAO,CAAC,CAAC;AAAA,IAAA;AAK1D,UAAM,YAAY,OAAO;AACzB,WAAO,EAAE,KAAK,QAAQ,IAAA;AAAA,EACxB;AAEA,QAAM,cAAc,YAAY,CAAC,WAAW;AAC1C,QAAI;AACF,6DAAoB;AACpB,aAAO,QAAQ,IAAI,gBAAgB,EAAE,sBAAsB,CAAC,WAAW;AACrE,eAAO,IAAI,gBAAgB,QAAQ,UAAU;AAAA,MAC/C;AAAA,IACF,SAAS,KAAK;AACZ,cAAQ,MAAM,kCAAkC,GAAG;AACnD,eAAS,GAAG;AACZ,yCAAU;AAAA,IACZ;AAAA,EACF,GAAG,CAAC,mBAAmB,OAAO,CAAC;AAE/B,QAAM,cAAc,YAAY,CAACA,QAAO,EAAE,wBAAwB;AAChE,YAAQ,MAAM,mBAAmBA,MAAK;AACtC,QAAI,CAAC,mBAAmB;AACtB,eAASA,MAAK;AACd,yCAAUA;AAAAA,IACZ;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,OAAO;AACT,WACE,qBAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB;AAAA,IAAA,GAEjB,UAAA;AAAA,MAAA,qBAAC,SAAI,OAAO,EAAE,OAAO,WAAW,cAAc,OAAA,GAAU,UAAA;AAAA,QAAA;AAAA,QACvC,MAAM;AAAA,MAAA,GACvB;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,SAAS,MAAM,SAAS,IAAI;AAAA,UAC5B,OAAO;AAAA,YACL,SAAS;AAAA,YACT,iBAAiB;AAAA,YACjB,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,cAAc;AAAA,UAAA;AAAA,UAEjB,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,GACF;AAAA,EAEJ;AAEA,MAAI,CAAC,SAAS;AACZ,WACE,oBAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,cAAc;AAAA,IAAA,GACb,UAAA,qBAEH;AAAA,EAEJ;AAEA,6BACG,OAAA,EAAI,KAAK,WAAW,WAAU,2BAC7B,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR;AAAA,MACA,SAAS;AAAA,MACT,SAAS;AAAA,MACR,GAAG;AAAA,IAAA;AAAA,EAAA,GAER;AAEJ;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react");;/* empty css */var o=;/* empty css */;/* empty css */var t=,/* empty css */d=,/* empty css */r=,/* empty css */n=,/* empty css */l=,/* empty css */a=,/* empty css */s=,/* empty css */u=,/* empty css */c=,/* empty css */
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),i=require("react");;/* empty css */var o=;/* empty css */;/* empty css */var t=,/* empty css */d=,/* empty css */r=,/* empty css */n=,/* empty css */l=,/* empty css */a=,/* empty css */s=,/* empty css */u=,/* empty css */c=,/* empty css */m=,/* empty css */g=,/* empty css */p=,/* empty css */k=,/* empty css */x=,/* empty css */h=,/* empty css */b=,/* empty css */f=,/* empty css */j=,/* empty css */I=,/* empty css */_=,/* empty css */v=,/* empty css */y=,/* empty css */q=,/* empty css */T=;/* empty css */class C{constructor(e,i){this.loader=e,this.uploadFn=i}async upload(){const e=await this.loader.file;try{return{default:(await this.uploadFn(e)).url}}catch(i){throw i}}abort(){}}function w(e){e.plugins.get(T.ClipboardPipeline).on("inputTransformation",(i,o)=>{const t=o.content.getChild(0);if(t&&t.is("$textProxy")){const o=t.data.trim();if(o.match(/\.(jpeg|jpg|gif|png|webp|svg)$/i)){const t=e.model.change(e=>e.createElement("imageBlock",{src:o}));e.model.insertContent(t,e.model.document.selection),i.stop()}}})}exports.default=function({editorRef:T,data:z="",handleEditorReady:B,onError:S,config:E={},...R}){const[F,P]=i.useState(!1),[A,L]=i.useState(null);i.useEffect(()=>{const e=setTimeout(()=>P(!0),100);return()=>clearTimeout(e)},[]);const U=i.useMemo(()=>((e={})=>({extraPlugins:[w,b.AutoImage],toolbar:{items:["sourceEditing","undo","redo","|","heading","|","fontSize","fontFamily","fontColor","fontBackgroundColor","|","bold","italic","underline","strikethrough","subscript","superscript","code","removeFormat","|","horizontalLine","link","insertImage","uploadImage","insertTable","highlight","blockQuote","codeBlock","|","alignment","|","outdent","indent"],shouldNotGroupWhenFull:!1},plugins:[n.Alignment,l.AutoLink,a.Autosave,s.BalloonToolbar,u.BlockQuote,s.BlockToolbar,c.Bold,c.Code,m.CodeBlock,g.Essentials,p.FontBackgroundColor,p.FontColor,p.FontFamily,p.FontSize,k.Heading,x.Highlight,h.HorizontalLine,b.ImageEditing,b.ImageUtils,f.Indent,f.IndentBlock,c.Italic,l.Link,j.Paragraph,I.PlainTableOutput,_.RemoveFormat,c.Strikethrough,c.Subscript,c.Superscript,I.Table,I.TableCaption,I.TableCellProperties,I.TableColumnResize,I.TableProperties,I.TableToolbar,c.Underline,v.GeneralHtmlSupport,y.SourceEditing,b.Image,b.ImageBlock,b.ImageCaption,b.ImageEditing,b.ImageInline,b.ImageInsert,b.ImageInsertViaUrl,b.ImageResize,b.ImageStyle,b.ImageTextAlternative,b.ImageToolbar,b.ImageUpload,b.ImageUtils,q.SimpleUploadAdapter,l.LinkImage],balloonToolbar:["bold","italic","|","link","insertImage","uploadImage"],blockToolbar:["fontSize","fontColor","fontBackgroundColor","|","bold","italic","|","link","insertImage","uploadImage","insertTable","|","outdent","indent"],fontFamily:{supportAllValues:!0},fontSize:{options:[10,12,14,"default",18,20,22],supportAllValues:!0},heading:{options:[{model:"paragraph",title:"Paragraph",class:"ck-heading_paragraph"},{model:"heading1",view:"h1",title:"Heading 1",class:"ck-heading_heading1"},{model:"heading2",view:"h2",title:"Heading 2",class:"ck-heading_heading2"},{model:"heading3",view:"h3",title:"Heading 3",class:"ck-heading_heading3"},{model:"heading4",view:"h4",title:"Heading 4",class:"ck-heading_heading4"}]},licenseKey:"GPL",link:{addTargetToExternalLinks:!0,defaultProtocol:"https://",decorators:{toggleDownloadable:{mode:"manual",label:"Downloadable",attributes:{download:"file"}}}},menuBar:{isVisible:!0},placeholder:"Type or paste your content here!",table:{contentToolbar:["tableColumn","tableRow","mergeTableCells","tableProperties","tableCellProperties"]},htmlSupport:{allow:[{name:/.*/,attributes:!0,classes:!0,styles:!0}]},image:{toolbar:["imageTextAlternative","toggleImageCaption","|","imageStyle:inline","imageStyle:wrapText","imageStyle:breakText","|","resizeImage","|","linkImage"],styles:{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]},resizeOptions:[{name:"resizeImage:original",label:"Original size",value:null},{name:"resizeImage:25",label:"25%",value:"25"},{name:"resizeImage:50",label:"50%",value:"50"},{name:"resizeImage:75",label:"75%",value:"75"}],insert:{integrations:["insertImageViaUrl"]}},simpleUpload:{uploadUrl:"/api/upload",headers:{Authorization:"Bearer <token>"}},autosave:{save:()=>new Promise(e=>{setTimeout(e,1e3)})},...e}))(E),[E]),H=async e=>{const i=await d.uploadFiles([e],"document"),o={...d.getToken(),title:null==e?void 0:e.name.split(".")[0],path:"/",is_private:!0,is_directory:!1,file_size:e.size,is_child:!1,file_extension:null==e?void 0:e.name.split(".")[1],type:"image",mime_type:e.type,url:`https://erpforce-dev.s3.eu-west-1.amazonaws.com/${i[0]}`};return await t.postV1Drive(o),{url:o.url}},V=i.useCallback(e=>{try{null==B||B(e),e.plugins.get("FileRepository").createUploadAdapter=e=>new C(e,H)}catch(i){L(i),null==S||S(i)}},[B,S]),O=i.useCallback((e,{willEditorRestart:i})=>{i||(L(e),null==S||S(e))},[S]);return A?/* @__PURE__ */e.jsxs("div",{style:{padding:"20px",border:"1px solid #red",borderRadius:"4px",backgroundColor:"#fff5f5"},children:[
|
|
2
2
|
/* @__PURE__ */e.jsxs("div",{style:{color:"#e53e3e",marginBottom:"10px"},children:["Editor Error: ",A.message]}),
|
|
3
3
|
/* @__PURE__ */e.jsx("button",{onClick:()=>L(null),style:{padding:"8px 16px",backgroundColor:"#3182ce",color:"white",border:"none",borderRadius:"4px"},children:"Retry"})]}):F?/* @__PURE__ */e.jsx("div",{ref:T,className:"custom-editor-container",children:/* @__PURE__ */e.jsx(o.CKEditor,{editor:r.ClassicEditor,config:U,data:z,onReady:V,onError:O,...R})}):/* @__PURE__ */e.jsx("div",{style:{padding:"20px",textAlign:"center",border:"1px solid #dee2e6",borderRadius:"4px"},children:"Loading editor..."})};
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// IsolatedEditor.js - This file should ONLY be imported via React.lazy()\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport \"./custom-editor.css\"\n\n// Import ALL CKEditor dependencies in this file ONLY\n// Do NOT import these anywhere else in your application\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport {\n ClassicEditor,\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n // Image support\n Image,\n ImageBlock,\n ImageInline,\n ImageToolbar,\n ImageCaption,\n ImageStyle,\n ImageResize,\n ImageInsert,\n ImageInsertViaUrl,\n ImageUpload,\n ImageTextAlternative,\n SimpleUploadAdapter,\n LinkImage,\n ClipboardPipeline,\n AutoImage,\n} from 'ckeditor5';\n\nimport 'ckeditor5/ckeditor5.css';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getToken, uploadFiles } from '../../utils/common';\n\nconst LICENSE_KEY = 'GPL';\n\n\nclass MyUploadAdapter {\n constructor(loader, uploadFn) {\n // The file loader instance to use during the upload\n this.loader = loader;\n this.uploadFn = uploadFn;\n }\n\n // Starts the upload process\n async upload() {\n const file = await this.loader.file;\n try {\n // 👇 Call your existing function\n const response = await this.uploadFn(file);\n\n // CKEditor expects this format:\n return {\n default: response.url // must return final image URL\n };\n } catch (error) {\n console.error(\"Upload failed\", error);\n throw error;\n }\n }\n\n // Optional abort support\n abort() {\n console.log(\"Upload aborted\");\n }\n}\n\nfunction PasteImageUrlPlugin(editor) {\n const clipboard = editor.plugins.get(ClipboardPipeline);\n\n clipboard.on('inputTransformation', (evt, data) => {\n const content = data.content.getChild(0);\n\n // Check if pasted content is plain text\n if (content && content.is('$textProxy')) {\n const url = content.data.trim();\n\n // Check if it looks like an image URL\n if (url.match(/\\.(jpeg|jpg|gif|png|webp|svg)$/i)) {\n const imageElement = editor.model.change(writer => {\n return writer.createElement('imageBlock', {\n src: url\n });\n });\n\n editor.model.insertContent(imageElement, editor.model.document.selection);\n evt.stop(); // prevent default plain text paste\n }\n }\n });\n}\n\n\n// Create the editor configuration\nconst createEditorConfig = (customConfig = {}) => {\n const defaultConfig = {\n extraPlugins: [ PasteImageUrlPlugin, AutoImage ],\n toolbar: {\n items: [\n 'sourceEditing',\n 'undo',\n 'redo',\n '|',\n 'heading',\n '|',\n 'fontSize',\n 'fontFamily',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'subscript',\n 'superscript',\n 'code',\n 'removeFormat',\n '|',\n 'horizontalLine',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n 'highlight',\n 'blockQuote',\n 'codeBlock',\n '|',\n 'alignment',\n '|',\n 'outdent',\n 'indent',\n ],\n shouldNotGroupWhenFull: false\n },\n plugins: [\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n Image,\n ImageBlock,\n ImageCaption,\n ImageEditing,\n ImageInline,\n ImageInsert,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageTextAlternative,\n ImageToolbar,\n ImageUpload,\n ImageUtils,\n SimpleUploadAdapter,\n LinkImage\n ],\n balloonToolbar: ['bold', 'italic', '|', 'link', 'insertImage', 'uploadImage',],\n blockToolbar: [\n 'fontSize',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n '|',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n '|',\n 'outdent',\n 'indent'\n ],\n fontFamily: {\n supportAllValues: true\n },\n fontSize: {\n options: [10, 12, 14, 'default', 18, 20, 22],\n supportAllValues: true\n },\n heading: {\n options: [\n {\n model: 'paragraph',\n title: 'Paragraph',\n class: 'ck-heading_paragraph'\n },\n {\n model: 'heading1',\n view: 'h1',\n title: 'Heading 1',\n class: 'ck-heading_heading1'\n },\n {\n model: 'heading2',\n view: 'h2',\n title: 'Heading 2',\n class: 'ck-heading_heading2'\n },\n {\n model: 'heading3',\n view: 'h3',\n title: 'Heading 3',\n class: 'ck-heading_heading3'\n },\n {\n model: 'heading4',\n view: 'h4',\n title: 'Heading 4',\n class: 'ck-heading_heading4'\n }\n ]\n },\n licenseKey: LICENSE_KEY,\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: 'Downloadable',\n attributes: {\n download: 'file',\n }\n }\n }\n },\n menuBar: {\n isVisible: true\n },\n placeholder: 'Type or paste your content here!',\n table: {\n contentToolbar: [\n 'tableColumn', \n 'tableRow', \n 'mergeTableCells', \n 'tableProperties', \n 'tableCellProperties'\n ]\n },\n htmlSupport: {\n allow: [\n {\n name: /.*/,\n attributes: true,\n classes: true,\n styles: true\n }\n ]\n },\n image: {\n toolbar: [\n 'imageTextAlternative',\n 'toggleImageCaption',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n '|',\n 'linkImage'\n ],\n styles: {\n options: [\n 'inline',\n 'alignLeft',\n 'alignRight',\n 'alignCenter',\n 'alignBlockLeft',\n 'alignBlockRight',\n 'block',\n 'side'\n ]\n },\n resizeOptions: [\n {\n name: 'resizeImage:original',\n label: 'Original size',\n value: null\n },\n {\n name: 'resizeImage:25',\n label: '25%',\n value: '25'\n },\n {\n name: 'resizeImage:50',\n label: '50%',\n value: '50'\n },\n {\n name: 'resizeImage:75',\n label: '75%',\n value: '75'\n }\n ],\n insert: {\n integrations: ['insertImageViaUrl']\n }\n },\n simpleUpload: {\n uploadUrl: '/api/upload', // your upload API\n headers: {\n Authorization: 'Bearer <token>'\n }\n },\n autosave: {\n save() {\n return new Promise(resolve => {\n setTimeout(resolve, 1000);\n });\n }\n }\n };\n\n return { ...defaultConfig, ...customConfig };\n};\n\nexport default function CustomEditor({\n editorRef,\n data = '',\n handleEditorReady,\n onError,\n config = {},\n ...rest\n}) {\n const [isReady, setIsReady] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n // Small delay to ensure DOM is ready\n const timer = setTimeout(() => setIsReady(true), 100);\n return () => clearTimeout(timer);\n }, []);\n\n const editorConfig = useMemo(() => {\n return createEditorConfig(config);\n }, [config]);\n\n const myUploadFn = async (file) => {\n // 👇 Your existing function here\n const uFiles = await uploadFiles([file], \"document\");\n const payload = {\n ...getToken(),\n \"title\": file?.name.split(\".\")[0],\n \"path\": \"/\",\n \"is_private\": true,\n \"is_directory\": false,\n \"file_size\": file.size,\n \"is_child\": false,\n \"file_extension\": file?.name.split(\".\")[1],\n \"type\": \"image\",\n \"mime_type\": file.type,\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\n }\n // Replace with your actual API endpoint\n \n // 👇 Call your existing function\n await postV1Drive(payload);\n return { url: payload.url };\n };\n\n const handleReady = useCallback((editor) => {\n try {\n handleEditorReady?.(editor);\n editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {\n return new MyUploadAdapter(loader, myUploadFn);\n };\n } catch (err) {\n console.error('Error in editor ready handler:', err);\n setError(err);\n onError?.(err);\n }\n }, [handleEditorReady, onError]);\n\n const handleError = useCallback((error, { willEditorRestart }) => {\n console.error('CKEditor error:', error);\n if (!willEditorRestart) {\n setError(error);\n onError?.(error);\n }\n }, [onError]);\n\n if (error) {\n return (\n <div style={{\n padding: '20px',\n border: '1px solid #red',\n borderRadius: '4px',\n backgroundColor: '#fff5f5'\n }}>\n <div style={{ color: '#e53e3e', marginBottom: '10px' }}>\n Editor Error: {error.message}\n </div>\n <button \n onClick={() => setError(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: '#3182ce',\n color: 'white',\n border: 'none',\n borderRadius: '4px'\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isReady) {\n return (\n <div style={{\n padding: '20px',\n textAlign: 'center',\n border: '1px solid #dee2e6',\n borderRadius: '4px'\n }}>\n Loading editor...\n </div>\n );\n }\n\n return (\n <div ref={editorRef} className=\"custom-editor-container\">\n <CKEditor \n editor={ClassicEditor} \n config={editorConfig} \n data={data} \n onReady={handleReady}\n onError={handleError}\n {...rest}\n />\n </div>\n );\n}"],"names":["MyUploadAdapter","constructor","loader","uploadFn","this","upload","file","default","url","error","abort","PasteImageUrlPlugin","editor","plugins","get","ClipboardPipeline","on","evt","data","content","getChild","is","trim","match","imageElement","model","change","writer","createElement","src","insertContent","document","selection","stop","editorRef","handleEditorReady","onError","config","rest","isReady","setIsReady","useState","setError","useEffect","timer","setTimeout","clearTimeout","editorConfig","useMemo","customConfig","extraPlugins","AutoImage","toolbar","items","shouldNotGroupWhenFull","Alignment","AutoLink","Autosave","BalloonToolbar","BlockQuote","BlockToolbar","Bold","Code","CodeBlock","Essentials","FontBackgroundColor","FontColor","FontFamily","FontSize","Heading","Highlight","HorizontalLine","ImageEditing","ImageUtils","Indent","IndentBlock","Italic","Link","Paragraph","PlainTableOutput","RemoveFormat","Strikethrough","Subscript","Superscript","Table","TableCaption","TableCellProperties","TableColumnResize","TableProperties","TableToolbar","Underline","GeneralHtmlSupport","SourceEditing","Image","ImageBlock","ImageCaption","ImageInline","ImageInsert","ImageInsertViaUrl","ImageResize","ImageStyle","ImageTextAlternative","ImageToolbar","ImageUpload","SimpleUploadAdapter","LinkImage","balloonToolbar","blockToolbar","fontFamily","supportAllValues","fontSize","options","heading","title","class","view","licenseKey","link","addTargetToExternalLinks","defaultProtocol","decorators","toggleDownloadable","mode","label","attributes","download","menuBar","isVisible","placeholder","table","contentToolbar","htmlSupport","allow","name","classes","styles","image","resizeOptions","value","insert","integrations","simpleUpload","uploadUrl","headers","Authorization","autosave","save","Promise","resolve","createEditorConfig","myUploadFn","async","uFiles","uploadFiles","payload","getToken","split","path","is_private","is_directory","file_size","size","is_child","file_extension","type","mime_type","postV1Drive","handleReady","useCallback","createUploadAdapter","err","handleError","willEditorRestart","jsxs","style","padding","border","borderRadius","backgroundColor","children","color","marginBottom","message","jsx","onClick","ref","className","CKEditor","ClassicEditor","onReady","textAlign"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/editor/custom-editor.tsx"],"sourcesContent":["/* eslint-disable unused-imports/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n// IsolatedEditor.js - This file should ONLY be imported via React.lazy()\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport \"./custom-editor.css\"\n\n// Import ALL CKEditor dependencies in this file ONLY\n// Do NOT import these anywhere else in your application\nimport { CKEditor } from '@ckeditor/ckeditor5-react';\nimport {\n ClassicEditor,\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n // Image support\n Image,\n ImageBlock,\n ImageInline,\n ImageToolbar,\n ImageCaption,\n ImageStyle,\n ImageResize,\n ImageInsert,\n ImageInsertViaUrl,\n ImageUpload,\n ImageTextAlternative,\n SimpleUploadAdapter,\n LinkImage,\n ClipboardPipeline,\n AutoImage,\n} from 'ckeditor5';\n\nimport 'ckeditor5/ckeditor5.css';\nimport { postV1Drive } from '../../api-client/api.drive/api';\nimport { getToken, uploadFiles } from '../../utils/common';\n\nconst LICENSE_KEY = 'GPL';\n\n\nclass MyUploadAdapter {\n constructor(loader, uploadFn) {\n // The file loader instance to use during the upload\n this.loader = loader;\n this.uploadFn = uploadFn;\n }\n\n // Starts the upload process\n async upload() {\n const file = await this.loader.file;\n try {\n // 👇 Call your existing function\n const response = await this.uploadFn(file);\n\n // CKEditor expects this format:\n return {\n default: response.url // must return final image URL\n };\n } catch (error) {\n console.error(\"Upload failed\", error);\n throw error;\n }\n }\n\n // Optional abort support\n abort() {\n console.log(\"Upload aborted\");\n }\n}\n\nfunction PasteImageUrlPlugin(editor) {\n const clipboard = editor.plugins.get(ClipboardPipeline);\n\n clipboard.on('inputTransformation', (evt, data) => {\n const content = data.content.getChild(0);\n\n // Check if pasted content is plain text\n if (content && content.is('$textProxy')) {\n const url = content.data.trim();\n\n // Check if it looks like an image URL\n if (url.match(/\\.(jpeg|jpg|gif|png|webp|svg)$/i)) {\n const imageElement = editor.model.change(writer => {\n return writer.createElement('imageBlock', {\n src: url\n });\n });\n\n editor.model.insertContent(imageElement, editor.model.document.selection);\n evt.stop(); // prevent default plain text paste\n }\n }\n });\n}\n\n\n// Create the editor configuration\nconst createEditorConfig = (customConfig = {}) => {\n const defaultConfig = {\n extraPlugins: [ PasteImageUrlPlugin, AutoImage ],\n toolbar: {\n items: [\n 'sourceEditing',\n 'undo',\n 'redo',\n '|',\n 'heading',\n '|',\n 'fontSize',\n 'fontFamily',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'subscript',\n 'superscript',\n 'code',\n 'removeFormat',\n '|',\n 'horizontalLine',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n 'highlight',\n 'blockQuote',\n 'codeBlock',\n '|',\n 'alignment',\n '|',\n 'outdent',\n 'indent',\n ],\n shouldNotGroupWhenFull: false\n },\n plugins: [\n Alignment,\n AutoLink,\n Autosave,\n BalloonToolbar,\n BlockQuote,\n BlockToolbar,\n Bold,\n Code,\n CodeBlock,\n Essentials,\n FontBackgroundColor,\n FontColor,\n FontFamily,\n FontSize,\n Heading,\n Highlight,\n HorizontalLine,\n ImageEditing,\n ImageUtils,\n Indent,\n IndentBlock,\n Italic,\n Link,\n Paragraph,\n PlainTableOutput,\n RemoveFormat,\n Strikethrough,\n Subscript,\n Superscript,\n Table,\n TableCaption,\n TableCellProperties,\n TableColumnResize,\n TableProperties,\n TableToolbar,\n Underline,\n GeneralHtmlSupport,\n SourceEditing,\n Image,\n ImageBlock,\n ImageCaption,\n ImageEditing,\n ImageInline,\n ImageInsert,\n ImageInsertViaUrl,\n ImageResize,\n ImageStyle,\n ImageTextAlternative,\n ImageToolbar,\n ImageUpload,\n ImageUtils,\n SimpleUploadAdapter,\n LinkImage\n ],\n balloonToolbar: ['bold', 'italic', '|', 'link', 'insertImage', 'uploadImage',],\n blockToolbar: [\n 'fontSize',\n 'fontColor',\n 'fontBackgroundColor',\n '|',\n 'bold',\n 'italic',\n '|',\n 'link',\n 'insertImage', 'uploadImage',\n 'insertTable',\n '|',\n 'outdent',\n 'indent'\n ],\n fontFamily: {\n supportAllValues: true\n },\n fontSize: {\n options: [10, 12, 14, 'default', 18, 20, 22],\n supportAllValues: true\n },\n heading: {\n options: [\n {\n model: 'paragraph',\n title: 'Paragraph',\n class: 'ck-heading_paragraph'\n },\n {\n model: 'heading1',\n view: 'h1',\n title: 'Heading 1',\n class: 'ck-heading_heading1'\n },\n {\n model: 'heading2',\n view: 'h2',\n title: 'Heading 2',\n class: 'ck-heading_heading2'\n },\n {\n model: 'heading3',\n view: 'h3',\n title: 'Heading 3',\n class: 'ck-heading_heading3'\n },\n {\n model: 'heading4',\n view: 'h4',\n title: 'Heading 4',\n class: 'ck-heading_heading4'\n }\n ]\n },\n licenseKey: LICENSE_KEY,\n link: {\n addTargetToExternalLinks: true,\n defaultProtocol: 'https://',\n decorators: {\n toggleDownloadable: {\n mode: 'manual',\n label: 'Downloadable',\n attributes: {\n download: 'file',\n }\n }\n }\n },\n menuBar: {\n isVisible: true\n },\n placeholder: 'Type or paste your content here!',\n table: {\n contentToolbar: [\n 'tableColumn', \n 'tableRow', \n 'mergeTableCells', \n 'tableProperties', \n 'tableCellProperties'\n ]\n },\n htmlSupport: {\n allow: [\n {\n name: /.*/,\n attributes: true,\n classes: true,\n styles: true\n }\n ]\n },\n image: {\n toolbar: [\n 'imageTextAlternative',\n 'toggleImageCaption',\n '|',\n 'imageStyle:inline',\n 'imageStyle:wrapText',\n 'imageStyle:breakText',\n '|',\n 'resizeImage',\n '|',\n 'linkImage'\n ],\n styles: {\n options: [\n 'inline',\n 'alignLeft',\n 'alignRight',\n 'alignCenter',\n 'alignBlockLeft',\n 'alignBlockRight',\n 'block',\n 'side'\n ]\n },\n resizeOptions: [\n {\n name: 'resizeImage:original',\n label: 'Original size',\n value: null\n },\n {\n name: 'resizeImage:25',\n label: '25%',\n value: '25'\n },\n {\n name: 'resizeImage:50',\n label: '50%',\n value: '50'\n },\n {\n name: 'resizeImage:75',\n label: '75%',\n value: '75'\n }\n ],\n insert: {\n integrations: ['insertImageViaUrl']\n }\n },\n simpleUpload: {\n uploadUrl: '/api/upload', // your upload API\n headers: {\n Authorization: 'Bearer <token>'\n }\n },\n autosave: {\n save() {\n return new Promise(resolve => {\n setTimeout(resolve, 1000);\n });\n }\n }\n };\n\n return { ...defaultConfig, ...customConfig };\n};\n\nexport default function CustomEditor({\n editorRef,\n data = '',\n handleEditorReady,\n onError,\n config = {},\n ...rest\n}) {\n const [isReady, setIsReady] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n // Small delay to ensure DOM is ready\n const timer = setTimeout(() => setIsReady(true), 100);\n return () => clearTimeout(timer);\n }, []);\n\n const editorConfig = useMemo(() => {\n return createEditorConfig(config);\n }, [config]);\n\n const myUploadFn = async (file) => {\n // 👇 Your existing function here\n const uFiles = await uploadFiles([file], \"document\");\n const payload = {\n ...getToken(),\n \"title\": file?.name.split(\".\")[0],\n \"path\": \"/\",\n \"is_private\": true,\n \"is_directory\": false,\n \"file_size\": file.size,\n \"is_child\": false,\n \"file_extension\": file?.name.split(\".\")[1],\n \"type\": \"image\",\n \"mime_type\": file.type,\n \"url\": `${import.meta.env.VITE_S3_BUCKET_URL}${uFiles[0]}`\n }\n // Replace with your actual API endpoint\n \n // 👇 Call your existing function\n await postV1Drive(payload);\n return { url: payload.url };\n };\n\n const handleReady = useCallback((editor) => {\n try {\n handleEditorReady?.(editor);\n editor.plugins.get('FileRepository').createUploadAdapter = (loader) => {\n return new MyUploadAdapter(loader, myUploadFn);\n };\n } catch (err) {\n console.error('Error in editor ready handler:', err);\n setError(err);\n onError?.(err);\n }\n }, [handleEditorReady, onError]);\n\n const handleError = useCallback((error, { willEditorRestart }) => {\n console.error('CKEditor error:', error);\n if (!willEditorRestart) {\n setError(error);\n onError?.(error);\n }\n }, [onError]);\n\n if (error) {\n return (\n <div style={{\n padding: '20px',\n border: '1px solid #red',\n borderRadius: '4px',\n backgroundColor: '#fff5f5'\n }}>\n <div style={{ color: '#e53e3e', marginBottom: '10px' }}>\n Editor Error: {error.message}\n </div>\n <button \n onClick={() => setError(null)}\n style={{\n padding: '8px 16px',\n backgroundColor: '#3182ce',\n color: 'white',\n border: 'none',\n borderRadius: '4px'\n }}\n >\n Retry\n </button>\n </div>\n );\n }\n\n if (!isReady) {\n return (\n <div style={{\n padding: '20px',\n textAlign: 'center',\n border: '1px solid #dee2e6',\n borderRadius: '4px'\n }}>\n Loading editor...\n </div>\n );\n }\n\n return (\n <div ref={editorRef} className=\"custom-editor-container\">\n <CKEditor \n editor={ClassicEditor} \n config={editorConfig} \n data={data} \n onReady={handleReady}\n onError={handleError}\n {...rest}\n />\n </div>\n );\n}"],"names":["MyUploadAdapter","constructor","loader","uploadFn","this","upload","file","default","url","error","abort","PasteImageUrlPlugin","editor","plugins","get","ClipboardPipeline","on","evt","data","content","getChild","is","trim","match","imageElement","model","change","writer","createElement","src","insertContent","document","selection","stop","editorRef","handleEditorReady","onError","config","rest","isReady","setIsReady","useState","setError","useEffect","timer","setTimeout","clearTimeout","editorConfig","useMemo","customConfig","extraPlugins","AutoImage","toolbar","items","shouldNotGroupWhenFull","Alignment","AutoLink","Autosave","BalloonToolbar","BlockQuote","BlockToolbar","Bold","Code","CodeBlock","Essentials","FontBackgroundColor","FontColor","FontFamily","FontSize","Heading","Highlight","HorizontalLine","ImageEditing","ImageUtils","Indent","IndentBlock","Italic","Link","Paragraph","PlainTableOutput","RemoveFormat","Strikethrough","Subscript","Superscript","Table","TableCaption","TableCellProperties","TableColumnResize","TableProperties","TableToolbar","Underline","GeneralHtmlSupport","SourceEditing","Image","ImageBlock","ImageCaption","ImageInline","ImageInsert","ImageInsertViaUrl","ImageResize","ImageStyle","ImageTextAlternative","ImageToolbar","ImageUpload","SimpleUploadAdapter","LinkImage","balloonToolbar","blockToolbar","fontFamily","supportAllValues","fontSize","options","heading","title","class","view","licenseKey","link","addTargetToExternalLinks","defaultProtocol","decorators","toggleDownloadable","mode","label","attributes","download","menuBar","isVisible","placeholder","table","contentToolbar","htmlSupport","allow","name","classes","styles","image","resizeOptions","value","insert","integrations","simpleUpload","uploadUrl","headers","Authorization","autosave","save","Promise","resolve","createEditorConfig","myUploadFn","async","uFiles","uploadFiles","payload","getToken","split","path","is_private","is_directory","file_size","size","is_child","file_extension","type","mime_type","postV1Drive","handleReady","useCallback","createUploadAdapter","err","handleError","willEditorRestart","jsxs","style","padding","border","borderRadius","backgroundColor","children","color","marginBottom","message","jsx","onClick","ref","className","CKEditor","ClassicEditor","onReady","textAlign"],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
const validator = (r) => !!r.value;
|
|
2
|
+
const defaultOperators = [
|
|
3
|
+
{ name: "null", label: "is null" },
|
|
4
|
+
{ name: "notNull", label: "is not null" }
|
|
5
|
+
];
|
|
6
|
+
const textOperators = [
|
|
7
|
+
{ name: "contains", label: "contains" },
|
|
8
|
+
{ name: "beginsWith", label: "begins with" },
|
|
9
|
+
{ name: "endsWith", label: "ends with" },
|
|
10
|
+
{ name: "doesNotContain", label: "does not contain" },
|
|
11
|
+
{ name: "doesNotBeginWith", label: "does not begin with" },
|
|
12
|
+
{ name: "doesNotEndWith", label: "does not end with" },
|
|
13
|
+
...defaultOperators
|
|
14
|
+
];
|
|
15
|
+
const numberOperators = [
|
|
16
|
+
{ name: "=", label: "equal to" },
|
|
17
|
+
{ name: "<", label: "less than" },
|
|
18
|
+
{ name: "<=", label: "less than or equal to" },
|
|
19
|
+
{ name: ">", label: "greater than" },
|
|
20
|
+
{ name: ">=", label: "greater than or equal to" },
|
|
21
|
+
...defaultOperators
|
|
22
|
+
];
|
|
23
|
+
const selectOperators = [
|
|
24
|
+
{ name: "in", label: "in" },
|
|
25
|
+
{ name: "notIn", label: "not in" },
|
|
26
|
+
...defaultOperators
|
|
27
|
+
];
|
|
28
|
+
const dateOperators = [
|
|
29
|
+
{ name: "=", label: "on" },
|
|
30
|
+
{ name: "!=", label: "not on" },
|
|
31
|
+
{ name: "<", label: "before" },
|
|
32
|
+
{ name: "<=", label: "on or before" },
|
|
33
|
+
{ name: ">", label: "after" },
|
|
34
|
+
{ name: ">=", label: "on or after" },
|
|
35
|
+
...defaultOperators
|
|
36
|
+
];
|
|
37
|
+
const fields = [
|
|
38
|
+
{
|
|
39
|
+
name: "Select",
|
|
40
|
+
label: "Select",
|
|
41
|
+
valueEditorType: "select",
|
|
42
|
+
operators: selectOperators,
|
|
43
|
+
values: [
|
|
44
|
+
{
|
|
45
|
+
name: "Select",
|
|
46
|
+
label: "Select"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "role",
|
|
52
|
+
label: "Role",
|
|
53
|
+
inputType: "text",
|
|
54
|
+
valueEditorType: "text",
|
|
55
|
+
operators: textOperators,
|
|
56
|
+
comparator: "datatype"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "status",
|
|
60
|
+
label: "Status",
|
|
61
|
+
valueEditorType: "select",
|
|
62
|
+
operators: selectOperators,
|
|
63
|
+
comparator: "datatype",
|
|
64
|
+
values: [
|
|
65
|
+
{
|
|
66
|
+
name: "Select",
|
|
67
|
+
label: "Select"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: "enable",
|
|
71
|
+
label: "Enable"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "disabled",
|
|
75
|
+
label: "Disabled"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "roleType",
|
|
81
|
+
label: "Role Type",
|
|
82
|
+
valueEditorType: "select",
|
|
83
|
+
operators: selectOperators,
|
|
84
|
+
comparator: "datatype",
|
|
85
|
+
values: [
|
|
86
|
+
{
|
|
87
|
+
name: "Select",
|
|
88
|
+
label: "Select"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "admin",
|
|
92
|
+
label: "Admin"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: "manager",
|
|
96
|
+
label: "Manager"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "executive",
|
|
100
|
+
label: "Executive"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "support",
|
|
104
|
+
label: "Support"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: "roleLevel",
|
|
110
|
+
label: "Role level",
|
|
111
|
+
valueEditorType: "text",
|
|
112
|
+
operators: numberOperators,
|
|
113
|
+
comparator: "datatype"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "dateCreated",
|
|
117
|
+
label: "Date Created",
|
|
118
|
+
operators: dateOperators,
|
|
119
|
+
datatype: "date",
|
|
120
|
+
inputType: "date"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
name: "companyName",
|
|
124
|
+
label: "Company Name",
|
|
125
|
+
valueEditorType: "text",
|
|
126
|
+
operators: textOperators,
|
|
127
|
+
comparator: "datatype"
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "location",
|
|
131
|
+
label: "Location",
|
|
132
|
+
valueEditorType: "text",
|
|
133
|
+
operators: textOperators,
|
|
134
|
+
comparator: "datatype"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "email",
|
|
138
|
+
label: "Email",
|
|
139
|
+
valueEditorType: "text",
|
|
140
|
+
operators: textOperators,
|
|
141
|
+
comparator: "datatype"
|
|
142
|
+
}
|
|
143
|
+
];
|
|
144
|
+
const dynamicFields = [
|
|
145
|
+
{
|
|
146
|
+
name: "document",
|
|
147
|
+
label: "Document",
|
|
148
|
+
inputType: "text",
|
|
149
|
+
valueEditorType: "text",
|
|
150
|
+
operators: textOperators,
|
|
151
|
+
comparator: "datatype"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
name: "filesize",
|
|
155
|
+
label: "File size",
|
|
156
|
+
valueEditorType: "text",
|
|
157
|
+
operators: numberOperators,
|
|
158
|
+
comparator: "datatype"
|
|
159
|
+
},
|
|
160
|
+
// {
|
|
161
|
+
// name: "dateCreated",
|
|
162
|
+
// label: "Date Created",
|
|
163
|
+
// operators: dateOperators,
|
|
164
|
+
// datatype: "date",
|
|
165
|
+
// inputType: "date",
|
|
166
|
+
// },
|
|
167
|
+
{
|
|
168
|
+
name: "owner",
|
|
169
|
+
label: "Owner",
|
|
170
|
+
valueEditorType: "text",
|
|
171
|
+
operators: textOperators,
|
|
172
|
+
comparator: "datatype"
|
|
173
|
+
}
|
|
174
|
+
];
|
|
175
|
+
export {
|
|
176
|
+
dynamicFields,
|
|
177
|
+
fields,
|
|
178
|
+
validator
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/components/filter/fields.ts"],"sourcesContent":["import { Operator, type Field, type RuleType } from \"react-querybuilder\";\n\nexport const validator = (r: RuleType) => !!r.value;\n\nconst defaultOperators: Operator[] = [\n { name: \"null\", label: \"is null\" },\n { name: \"notNull\", label: \"is not null\" },\n];\n\nconst textOperators: Operator[] = [\n { name: \"contains\", label: \"contains\" },\n { name: \"beginsWith\", label: \"begins with\" },\n { name: \"endsWith\", label: \"ends with\" },\n { name: \"doesNotContain\", label: \"does not contain\" },\n { name: \"doesNotBeginWith\", label: \"does not begin with\" },\n { name: \"doesNotEndWith\", label: \"does not end with\" },\n ...defaultOperators,\n];\n\nconst numberOperators: Operator[] = [\n { name: \"=\", label: \"equal to\" },\n { name: \"<\", label: \"less than\" },\n { name: \"<=\", label: \"less than or equal to\" },\n { name: \">\", label: \"greater than\" },\n { name: \">=\", label: \"greater than or equal to\" },\n ...defaultOperators,\n];\n\nconst selectOperators: Operator[] = [\n { name: \"in\", label: \"in\" },\n { name: \"notIn\", label: \"not in\" },\n ...defaultOperators,\n];\n\nconst dateOperators: Operator[] = [\n { name: \"=\", label: \"on\" },\n { name: \"!=\", label: \"not on\" },\n { name: \"<\", label: \"before\" },\n { name: \"<=\", label: \"on or before\" },\n { name: \">\", label: \"after\" },\n { name: \">=\", label: \"on or after\" },\n ...defaultOperators,\n];\n\nexport const fields: Field[] = [\n {\n name: \"Select\",\n label: \"Select\",\n valueEditorType: \"select\",\n operators: selectOperators,\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n ],\n },\n {\n name: \"role\",\n label: \"Role\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"status\",\n label: \"Status\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"enable\",\n label: \"Enable\",\n },\n {\n name: \"disabled\",\n label: \"Disabled\",\n },\n ],\n },\n {\n name: \"roleType\",\n label: \"Role Type\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"admin\",\n label: \"Admin\",\n },\n {\n name: \"manager\",\n label: \"Manager\",\n },\n {\n name: \"executive\",\n label: \"Executive\",\n },\n {\n name: \"support\",\n label: \"Support\",\n },\n ],\n },\n {\n name: \"roleLevel\",\n label: \"Role level\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n {\n name: \"dateCreated\",\n label: \"Date Created\",\n operators: dateOperators,\n datatype: \"date\",\n inputType: \"date\",\n },\n {\n name: \"companyName\",\n label: \"Company Name\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"location\",\n label: \"Location\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"email\",\n label: \"Email\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n];\n\nexport const dynamicFields: Field[] = [\n {\n name: \"document\",\n label: \"Document\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"filesize\",\n label: \"File size\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n // {\n // name: \"dateCreated\",\n // label: \"Date Created\",\n // operators: dateOperators,\n // datatype: \"date\",\n // inputType: \"date\",\n // },\n {\n name: \"owner\",\n label: \"Owner\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n }\n];\n\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=[{name:"null",label:"is null"},{name:"notNull",label:"is not null"}],a=[{name:"contains",label:"contains"},{name:"beginsWith",label:"begins with"},{name:"endsWith",label:"ends with"},{name:"doesNotContain",label:"does not contain"},{name:"doesNotBeginWith",label:"does not begin with"},{name:"doesNotEndWith",label:"does not end with"},...e],t=[{name:"=",label:"equal to"},{name:"<",label:"less than"},{name:"<=",label:"less than or equal to"},{name:">",label:"greater than"},{name:">=",label:"greater than or equal to"},...e],l=[{name:"in",label:"in"},{name:"notIn",label:"not in"},...e],o=[{name:"Select",label:"Select",valueEditorType:"select",operators:l,values:[{name:"Select",label:"Select"}]},{name:"role",label:"Role",inputType:"text",valueEditorType:"text",operators:a,comparator:"datatype"},{name:"status",label:"Status",valueEditorType:"select",operators:l,comparator:"datatype",values:[{name:"Select",label:"Select"},{name:"enable",label:"Enable"},{name:"disabled",label:"Disabled"}]},{name:"roleType",label:"Role Type",valueEditorType:"select",operators:l,comparator:"datatype",values:[{name:"Select",label:"Select"},{name:"admin",label:"Admin"},{name:"manager",label:"Manager"},{name:"executive",label:"Executive"},{name:"support",label:"Support"}]},{name:"roleLevel",label:"Role level",valueEditorType:"text",operators:t,comparator:"datatype"},{name:"dateCreated",label:"Date Created",operators:[{name:"=",label:"on"},{name:"!=",label:"not on"},{name:"<",label:"before"},{name:"<=",label:"on or before"},{name:">",label:"after"},{name:">=",label:"on or after"},...e],datatype:"date",inputType:"date"},{name:"companyName",label:"Company Name",valueEditorType:"text",operators:a,comparator:"datatype"},{name:"location",label:"Location",valueEditorType:"text",operators:a,comparator:"datatype"},{name:"email",label:"Email",valueEditorType:"text",operators:a,comparator:"datatype"}],n=[{name:"document",label:"Document",inputType:"text",valueEditorType:"text",operators:a,comparator:"datatype"},{name:"filesize",label:"File size",valueEditorType:"text",operators:t,comparator:"datatype"},{name:"owner",label:"Owner",valueEditorType:"text",operators:a,comparator:"datatype"}];exports.dynamicFields=n,exports.fields=o,exports.validator=e=>!!e.value;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/components/filter/fields.ts"],"sourcesContent":["import { Operator, type Field, type RuleType } from \"react-querybuilder\";\n\nexport const validator = (r: RuleType) => !!r.value;\n\nconst defaultOperators: Operator[] = [\n { name: \"null\", label: \"is null\" },\n { name: \"notNull\", label: \"is not null\" },\n];\n\nconst textOperators: Operator[] = [\n { name: \"contains\", label: \"contains\" },\n { name: \"beginsWith\", label: \"begins with\" },\n { name: \"endsWith\", label: \"ends with\" },\n { name: \"doesNotContain\", label: \"does not contain\" },\n { name: \"doesNotBeginWith\", label: \"does not begin with\" },\n { name: \"doesNotEndWith\", label: \"does not end with\" },\n ...defaultOperators,\n];\n\nconst numberOperators: Operator[] = [\n { name: \"=\", label: \"equal to\" },\n { name: \"<\", label: \"less than\" },\n { name: \"<=\", label: \"less than or equal to\" },\n { name: \">\", label: \"greater than\" },\n { name: \">=\", label: \"greater than or equal to\" },\n ...defaultOperators,\n];\n\nconst selectOperators: Operator[] = [\n { name: \"in\", label: \"in\" },\n { name: \"notIn\", label: \"not in\" },\n ...defaultOperators,\n];\n\nconst dateOperators: Operator[] = [\n { name: \"=\", label: \"on\" },\n { name: \"!=\", label: \"not on\" },\n { name: \"<\", label: \"before\" },\n { name: \"<=\", label: \"on or before\" },\n { name: \">\", label: \"after\" },\n { name: \">=\", label: \"on or after\" },\n ...defaultOperators,\n];\n\nexport const fields: Field[] = [\n {\n name: \"Select\",\n label: \"Select\",\n valueEditorType: \"select\",\n operators: selectOperators,\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n ],\n },\n {\n name: \"role\",\n label: \"Role\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"status\",\n label: \"Status\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"enable\",\n label: \"Enable\",\n },\n {\n name: \"disabled\",\n label: \"Disabled\",\n },\n ],\n },\n {\n name: \"roleType\",\n label: \"Role Type\",\n valueEditorType: \"select\",\n operators: selectOperators,\n comparator: \"datatype\",\n values: [\n {\n name: \"Select\",\n label: \"Select\",\n },\n {\n name: \"admin\",\n label: \"Admin\",\n },\n {\n name: \"manager\",\n label: \"Manager\",\n },\n {\n name: \"executive\",\n label: \"Executive\",\n },\n {\n name: \"support\",\n label: \"Support\",\n },\n ],\n },\n {\n name: \"roleLevel\",\n label: \"Role level\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n {\n name: \"dateCreated\",\n label: \"Date Created\",\n operators: dateOperators,\n datatype: \"date\",\n inputType: \"date\",\n },\n {\n name: \"companyName\",\n label: \"Company Name\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"location\",\n label: \"Location\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"email\",\n label: \"Email\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n];\n\nexport const dynamicFields: Field[] = [\n {\n name: \"document\",\n label: \"Document\",\n inputType: \"text\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n },\n {\n name: \"filesize\",\n label: \"File size\",\n valueEditorType: \"text\",\n operators: numberOperators,\n comparator: \"datatype\",\n },\n // {\n // name: \"dateCreated\",\n // label: \"Date Created\",\n // operators: dateOperators,\n // datatype: \"date\",\n // inputType: \"date\",\n // },\n {\n name: \"owner\",\n label: \"Owner\",\n valueEditorType: \"text\",\n operators: textOperators,\n comparator: \"datatype\",\n }\n];\n\n"],"names":["defaultOperators","name","label","textOperators","numberOperators","selectOperators","fields","valueEditorType","operators","values","inputType","comparator","datatype","dynamicFields","r","value"],"mappings":"oEAEO,MAEDA,EAA+B,CACnC,CAAEC,KAAM,OAAQC,MAAO,WACvB,CAAED,KAAM,UAAWC,MAAO,gBAGtBC,EAA4B,CAChC,CAAEF,KAAM,WAAYC,MAAO,YAC3B,CAAED,KAAM,aAAcC,MAAO,eAC7B,CAAED,KAAM,WAAYC,MAAO,aAC3B,CAAED,KAAM,iBAAkBC,MAAO,oBACjC,CAAED,KAAM,mBAAoBC,MAAO,uBACnC,CAAED,KAAM,iBAAkBC,MAAO,wBAC9BF,GAGCI,EAA8B,CAClC,CAAEH,KAAM,IAAKC,MAAO,YACpB,CAAED,KAAM,IAAKC,MAAO,aACpB,CAAED,KAAM,KAAMC,MAAO,yBACrB,CAAED,KAAM,IAAKC,MAAO,gBACpB,CAAED,KAAM,KAAMC,MAAO,+BAClBF,GAGCK,EAA8B,CAClC,CAAEJ,KAAM,KAAMC,MAAO,MACrB,CAAED,KAAM,QAASC,MAAO,aACrBF,GAaQM,EAAkB,CAC7B,CACEL,KAAM,SACNC,MAAO,SACPK,gBAAiB,SACjBC,UAAWH,EACXI,OAAQ,CACN,CACER,KAAM,SACNC,MAAO,YAIb,CACED,KAAM,OACNC,MAAO,OACPQ,UAAW,OACXH,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,YAEd,CACEV,KAAM,SACNC,MAAO,SACPK,gBAAiB,SACjBC,UAAWH,EACXM,WAAY,WACZF,OAAQ,CACN,CACER,KAAM,SACNC,MAAO,UAET,CACED,KAAM,SACNC,MAAO,UAET,CACED,KAAM,WACNC,MAAO,cAIb,CACED,KAAM,WACNC,MAAO,YACPK,gBAAiB,SACjBC,UAAWH,EACXM,WAAY,WACZF,OAAQ,CACN,CACER,KAAM,SACNC,MAAO,UAET,CACED,KAAM,QACNC,MAAO,SAET,CACED,KAAM,UACNC,MAAO,WAET,CACED,KAAM,YACNC,MAAO,aAET,CACED,KAAM,UACNC,MAAO,aAIb,CACED,KAAM,YACNC,MAAO,aACPK,gBAAiB,OACjBC,UAAWJ,EACXO,WAAY,YAEd,CACEV,KAAM,cACNC,MAAO,eACPM,UA3F8B,CAChC,CAAEP,KAAM,IAAKC,MAAO,MACpB,CAAED,KAAM,KAAMC,MAAO,UACrB,CAAED,KAAM,IAAKC,MAAO,UACpB,CAAED,KAAM,KAAMC,MAAO,gBACrB,CAAED,KAAM,IAAKC,MAAO,SACpB,CAAED,KAAM,KAAMC,MAAO,kBAClBF,GAqFDY,SAAU,OACVF,UAAW,QAEb,CACET,KAAM,cACNC,MAAO,eACPK,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,YAEd,CACEV,KAAM,WACNC,MAAO,WACPK,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,YAEd,CACEV,KAAM,QACNC,MAAO,QACPK,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,aAIHE,EAAyB,CACpC,CACEZ,KAAM,WACNC,MAAO,WACPQ,UAAW,OACXH,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,YAEd,CACEV,KAAM,WACNC,MAAO,YACPK,gBAAiB,OACjBC,UAAWJ,EACXO,WAAY,YASd,CACEV,KAAM,QACNC,MAAO,QACPK,gBAAiB,OACjBC,UAAWL,EACXQ,WAAY,wEAlLUG,KAAkBA,EAAEC"}
|
|
@@ -38,7 +38,7 @@ import Alert from "../../../node_modules/@mui/material/Alert/Alert/index.esm.js"
|
|
|
38
38
|
import DialogActions from "../../../node_modules/@mui/material/DialogActions/DialogActions/index.esm.js";
|
|
39
39
|
import { Edit } from "../../icons/edit/index.esm.js";
|
|
40
40
|
import { Trash } from "../../icons/trash/index.esm.js";
|
|
41
|
-
setBaseUrl(`${
|
|
41
|
+
setBaseUrl(`${"https://apidev.erpforce.co"}/system-feature`);
|
|
42
42
|
const initialQuery = { combinator: "and", rules: [] };
|
|
43
43
|
const Filter = ({
|
|
44
44
|
open,
|