From e1bc9ae6d5dd7bcc196a362c344a29fb0c1f2193 Mon Sep 17 00:00:00 2001 From: Sabda Yagra Date: Tue, 9 Sep 2025 22:33:29 +0700 Subject: [PATCH 1/2] fixing --- .../supervisor/ticketing/components/table.tsx | 36 +- .../supervisor/ticketing/detail/[id]/page.tsx | 2 +- components/form/content/audio-form.tsx | 9 +- components/form/content/image-form.tsx | 78 +- components/form/content/image-update-form.tsx | 1332 +- components/form/content/teks-form.tsx | 10 +- components/form/content/video-form.tsx | 10 +- .../form/ticketing/ticketing-detail-form.tsx | 149 +- components/main/image-detail.tsx | 7 +- lib/menus.ts | 176 +- package-lock.json | 19340 +++++++++++++++- package.json | 1 + .../ckeditor5-utils/src/dom/isnode.d.ts | 11 - .../ckeditor5-utils/src/dom/isnode.js | 21 - .../ckeditor5-utils/src/dom/isrange.d.ts | 11 - .../ckeditor5-utils/src/dom/isrange.js | 13 - .../ckeditor5-utils/src/dom/istext.d.ts | 11 - .../ckeditor5-utils/src/dom/istext.js | 13 - .../src/dom/isvalidattributename.d.ts | 10 - .../src/dom/isvalidattributename.js | 22 - .../ckeditor5-utils/src/dom/isvisible.d.ts | 18 - .../ckeditor5-utils/src/dom/isvisible.js | 20 - .../ckeditor5-utils/src/dom/iswindow.d.ts | 11 - .../ckeditor5-utils/src/dom/iswindow.js | 22 - .../ckeditor5-utils/src/dom/position.d.ts | 211 - .../ckeditor5-utils/src/dom/position.js | 313 - .../ckeditor5-utils/src/dom/rect.d.ts | 195 - .../@ckeditor/ckeditor5-utils/src/dom/rect.js | 474 - .../ckeditor5-utils/src/dom/remove.d.ts | 13 - .../ckeditor5-utils/src/dom/remove.js | 18 - .../src/dom/resizeobserver.d.ts | 74 - .../ckeditor5-utils/src/dom/resizeobserver.js | 127 - .../ckeditor5-utils/src/dom/scroll.d.ts | 73 - .../ckeditor5-utils/src/dom/scroll.js | 383 - .../src/dom/setdatainelement.d.ts | 14 - .../src/dom/setdatainelement.js | 20 - .../ckeditor5-utils/src/dom/tounit.d.ts | 22 - .../ckeditor5-utils/src/dom/tounit.js | 16 - .../ckeditor5-utils/src/elementreplacer.d.ts | 31 - .../ckeditor5-utils/src/elementreplacer.js | 43 - .../ckeditor5-utils/src/emittermixin.d.ts | 312 - .../ckeditor5-utils/src/emittermixin.js | 453 - .../@ckeditor/ckeditor5-utils/src/env.d.ts | 117 - .../@ckeditor/ckeditor5-utils/src/env.js | 122 - .../ckeditor5-utils/src/eventinfo.d.ts | 58 - .../ckeditor5-utils/src/eventinfo.js | 26 - .../ckeditor5-utils/src/fastdiff.d.ts | 112 - .../@ckeditor/ckeditor5-utils/src/fastdiff.js | 248 - .../@ckeditor/ckeditor5-utils/src/first.d.ts | 11 - .../@ckeditor/ckeditor5-utils/src/first.js | 17 - .../ckeditor5-utils/src/focustracker.d.ts | 75 - .../ckeditor5-utils/src/focustracker.js | 95 - .../@ckeditor/ckeditor5-utils/src/index.d.ts | 64 - .../@ckeditor/ckeditor5-utils/src/index.js | 63 - .../src/inserttopriorityarray.d.ts | 30 - .../src/inserttopriorityarray.js | 21 - .../ckeditor5-utils/src/isiterable.d.ts | 14 - .../ckeditor5-utils/src/isiterable.js | 16 - .../ckeditor5-utils/src/keyboard.d.ts | 126 - .../@ckeditor/ckeditor5-utils/src/keyboard.js | 251 - .../ckeditor5-utils/src/keystrokehandler.d.ts | 87 - .../ckeditor5-utils/src/keystrokehandler.js | 122 - .../ckeditor5-utils/src/language.d.ts | 17 - .../@ckeditor/ckeditor5-utils/src/language.js | 20 - .../@ckeditor/ckeditor5-utils/src/locale.d.ts | 141 - .../@ckeditor/ckeditor5-utils/src/locale.js | 78 - .../ckeditor5-utils/src/mapsequal.d.ts | 15 - .../ckeditor5-utils/src/mapsequal.js | 27 - .../@ckeditor/ckeditor5-utils/src/mix.d.ts | 85 - .../@ckeditor/ckeditor5-utils/src/mix.js | 50 - .../@ckeditor/ckeditor5-utils/src/nth.d.ts | 16 - .../@ckeditor/ckeditor5-utils/src/nth.js | 24 - .../ckeditor5-utils/src/objecttomap.d.ts | 23 - .../ckeditor5-utils/src/objecttomap.js | 27 - .../ckeditor5-utils/src/observablemixin.d.ts | 560 - .../ckeditor5-utils/src/observablemixin.js | 580 - .../ckeditor5-utils/src/priorities.d.ts | 33 - .../ckeditor5-utils/src/priorities.js | 23 - .../@ckeditor/ckeditor5-utils/src/retry.d.ts | 33 - .../@ckeditor/ckeditor5-utils/src/retry.js | 47 - .../ckeditor5-utils/src/splicearray.d.ts | 26 - .../ckeditor5-utils/src/splicearray.js | 40 - .../@ckeditor/ckeditor5-utils/src/spy.d.ts | 21 - .../@ckeditor/ckeditor5-utils/src/spy.js | 22 - .../ckeditor5-utils/src/toarray.d.ts | 25 - .../@ckeditor/ckeditor5-utils/src/toarray.js | 7 - .../@ckeditor/ckeditor5-utils/src/tomap.d.ts | 19 - .../@ckeditor/ckeditor5-utils/src/tomap.js | 29 - .../src/translation-service.d.ts | 174 - .../src/translation-service.js | 209 - .../@ckeditor/ckeditor5-utils/src/uid.d.ts | 15 - .../@ckeditor/ckeditor5-utils/src/uid.js | 57 - .../ckeditor5-utils/src/unicode.d.ts | 54 - .../@ckeditor/ckeditor5-utils/src/unicode.js | 85 - .../ckeditor5-utils/src/verifylicense.d.ts | 15 - .../ckeditor5-utils/src/verifylicense.js | 87 - .../ckeditor5-utils/src/version.d.ts | 10 - .../@ckeditor/ckeditor5-utils/src/version.js | 153 - .../@ckeditor/ckeditor5-utils/src/wait.d.ts | 16 - .../@ckeditor/ckeditor5-utils/src/wait.js | 29 - .../@ckeditor/ckeditor5-watchdog/CHANGELOG.md | 75 - .../@ckeditor/ckeditor5-watchdog/LICENSE.md | 21 - .../@ckeditor/ckeditor5-watchdog/README.md | 16 - .../ckeditor5-metadata.json | 11 - .../@ckeditor/ckeditor5-watchdog/package.json | 35 - .../ckeditor5-watchdog/src/augmentation.d.ts | 15 - .../ckeditor5-watchdog/src/augmentation.js | 5 - .../src/contextwatchdog.d.ts | 333 - .../ckeditor5-watchdog/src/contextwatchdog.js | 410 - .../src/editorwatchdog.d.ts | 191 - .../ckeditor5-watchdog/src/editorwatchdog.js | 436 - .../ckeditor5-watchdog/src/index.d.ts | 11 - .../@ckeditor/ckeditor5-watchdog/src/index.js | 11 - .../utils/areconnectedthroughproperties.d.ts | 8 - .../utils/areconnectedthroughproperties.js | 58 - .../src/utils/getsubnodes.d.ts | 8 - .../src/utils/getsubnodes.js | 78 - .../ckeditor5-watchdog/src/watchdog.d.ts | 229 - .../ckeditor5-watchdog/src/watchdog.js | 185 - .../@ckeditor/ckeditor5-widget/CHANGELOG.md | 260 - .../@ckeditor/ckeditor5-widget/LICENSE.md | 21 - .../@ckeditor/ckeditor5-widget/README.md | 16 - .../ckeditor5-widget/lang/contexts.json | 11 - .../ckeditor5-widget/lang/translations/ar.po | 54 - .../ckeditor5-widget/lang/translations/az.po | 54 - .../ckeditor5-widget/lang/translations/bg.po | 54 - .../ckeditor5-widget/lang/translations/bn.po | 54 - .../ckeditor5-widget/lang/translations/ca.po | 54 - .../ckeditor5-widget/lang/translations/cs.po | 54 - .../ckeditor5-widget/lang/translations/da.po | 54 - .../lang/translations/de-ch.po | 54 - .../ckeditor5-widget/lang/translations/de.po | 54 - .../ckeditor5-widget/lang/translations/el.po | 54 - .../lang/translations/en-au.po | 54 - .../ckeditor5-widget/lang/translations/en.po | 54 - .../ckeditor5-widget/lang/translations/es.po | 54 - .../ckeditor5-widget/lang/translations/et.po | 54 - .../ckeditor5-widget/lang/translations/fa.po | 54 - .../ckeditor5-widget/lang/translations/fi.po | 54 - .../ckeditor5-widget/lang/translations/fr.po | 54 - .../ckeditor5-widget/lang/translations/gl.po | 54 - .../ckeditor5-widget/lang/translations/he.po | 54 - .../ckeditor5-widget/lang/translations/hi.po | 54 - .../ckeditor5-widget/lang/translations/hr.po | 54 - .../ckeditor5-widget/lang/translations/hu.po | 54 - .../ckeditor5-widget/lang/translations/id.po | 54 - .../ckeditor5-widget/lang/translations/it.po | 54 - .../ckeditor5-widget/lang/translations/ja.po | 54 - .../ckeditor5-widget/lang/translations/ko.po | 54 - .../ckeditor5-widget/lang/translations/ku.po | 54 - .../ckeditor5-widget/lang/translations/lt.po | 54 - .../ckeditor5-widget/lang/translations/lv.po | 54 - .../ckeditor5-widget/lang/translations/ms.po | 54 - .../ckeditor5-widget/lang/translations/nl.po | 54 - .../ckeditor5-widget/lang/translations/no.po | 54 - .../ckeditor5-widget/lang/translations/pl.po | 54 - .../lang/translations/pt-br.po | 54 - .../ckeditor5-widget/lang/translations/pt.po | 54 - .../ckeditor5-widget/lang/translations/ro.po | 54 - .../ckeditor5-widget/lang/translations/ru.po | 54 - .../ckeditor5-widget/lang/translations/sk.po | 54 - .../ckeditor5-widget/lang/translations/sq.po | 54 - .../lang/translations/sr-latn.po | 54 - .../ckeditor5-widget/lang/translations/sr.po | 54 - .../ckeditor5-widget/lang/translations/sv.po | 54 - .../ckeditor5-widget/lang/translations/th.po | 54 - .../ckeditor5-widget/lang/translations/tk.po | 54 - .../ckeditor5-widget/lang/translations/tr.po | 54 - .../ckeditor5-widget/lang/translations/uk.po | 54 - .../ckeditor5-widget/lang/translations/ur.po | 54 - .../ckeditor5-widget/lang/translations/uz.po | 54 - .../ckeditor5-widget/lang/translations/vi.po | 54 - .../lang/translations/zh-cn.po | 54 - .../ckeditor5-widget/lang/translations/zh.po | 54 - .../@ckeditor/ckeditor5-widget/package.json | 41 - .../ckeditor5-widget/src/augmentation.d.ts | 13 - .../ckeditor5-widget/src/augmentation.js | 5 - .../ckeditor5-widget/src/highlightstack.d.ts | 74 - .../ckeditor5-widget/src/highlightstack.js | 129 - .../@ckeditor/ckeditor5-widget/src/index.d.ts | 13 - .../@ckeditor/ckeditor5-widget/src/index.js | 13 - .../@ckeditor/ckeditor5-widget/src/utils.d.ts | 198 - .../@ckeditor/ckeditor5-widget/src/utils.js | 348 - .../src/verticalnavigation.d.ts | 15 - .../src/verticalnavigation.js | 196 - .../ckeditor5-widget/src/widget.d.ts | 103 - .../@ckeditor/ckeditor5-widget/src/widget.js | 537 - .../ckeditor5-widget/src/widgetresize.d.ts | 125 - .../ckeditor5-widget/src/widgetresize.js | 188 - .../src/widgetresize/resizer.d.ts | 177 - .../src/widgetresize/resizer.js | 372 - .../src/widgetresize/resizerstate.d.ts | 125 - .../src/widgetresize/resizerstate.js | 150 - .../src/widgetresize/sizeview.d.ts | 55 - .../src/widgetresize/sizeview.js | 63 - .../src/widgettoolbarrepository.d.ts | 94 - .../src/widgettoolbarrepository.js | 268 - .../src/widgettypearound/utils.d.ts | 38 - .../src/widgettypearound/utils.js | 52 - .../widgettypearound/widgettypearound.d.ts | 229 - .../src/widgettypearound/widgettypearound.js | 773 - .../theme/icons/drag-handle.svg | 1 - .../theme/icons/return-arrow.svg | 1 - .../ckeditor5-widget/theme/widget.css | 91 - .../ckeditor5-widget/theme/widgetresize.css | 43 - .../theme/widgettypearound.css | 113 - .../node_modules/ckeditor5/CHANGELOG.md | 610 - .../node_modules/ckeditor5/LICENSE.md | 28 - .../node_modules/ckeditor5/README.md | 158 - .../ckeditor5/build/ckeditor5-dll.js | 5 - .../build/ckeditor5-dll.manifest.json | 420 - .../ckeditor5/build/translations/af.js | 1 - .../ckeditor5/build/translations/ar.js | 1 - .../ckeditor5/build/translations/ast.js | 1 - .../ckeditor5/build/translations/az.js | 1 - .../ckeditor5/build/translations/bg.js | 1 - .../ckeditor5/build/translations/bn.js | 1 - .../ckeditor5/build/translations/bs.js | 1 - .../ckeditor5/build/translations/ca.js | 1 - .../ckeditor5/build/translations/cs.js | 1 - .../ckeditor5/build/translations/da.js | 1 - .../ckeditor5/build/translations/de-ch.js | 1 - .../ckeditor5/build/translations/de.js | 1 - .../ckeditor5/build/translations/el.js | 1 - .../ckeditor5/build/translations/en-au.js | 1 - .../ckeditor5/build/translations/en-gb.js | 1 - .../ckeditor5/build/translations/eo.js | 1 - .../ckeditor5/build/translations/es-co.js | 1 - .../ckeditor5/build/translations/es.js | 1 - .../ckeditor5/build/translations/et.js | 1 - .../ckeditor5/build/translations/eu.js | 1 - .../ckeditor5/build/translations/fa.js | 1 - .../ckeditor5/build/translations/fi.js | 1 - .../ckeditor5/build/translations/fr.js | 1 - .../ckeditor5/build/translations/gl.js | 1 - .../ckeditor5/build/translations/gu.js | 1 - .../ckeditor5/build/translations/he.js | 1 - .../ckeditor5/build/translations/hi.js | 1 - .../ckeditor5/build/translations/hr.js | 1 - .../ckeditor5/build/translations/hu.js | 1 - .../ckeditor5/build/translations/hy.js | 1 - .../ckeditor5/build/translations/id.js | 1 - .../ckeditor5/build/translations/it.js | 1 - .../ckeditor5/build/translations/ja.js | 1 - .../ckeditor5/build/translations/jv.js | 1 - .../ckeditor5/build/translations/km.js | 1 - .../ckeditor5/build/translations/kn.js | 1 - .../ckeditor5/build/translations/ko.js | 1 - .../ckeditor5/build/translations/ku.js | 1 - .../ckeditor5/build/translations/lt.js | 1 - .../ckeditor5/build/translations/lv.js | 1 - .../ckeditor5/build/translations/ms.js | 1 - .../ckeditor5/build/translations/nb.js | 1 - .../ckeditor5/build/translations/ne.js | 1 - .../ckeditor5/build/translations/nl.js | 1 - .../ckeditor5/build/translations/no.js | 1 - .../ckeditor5/build/translations/oc.js | 1 - .../ckeditor5/build/translations/pl.js | 1 - .../ckeditor5/build/translations/pt-br.js | 1 - .../ckeditor5/build/translations/pt.js | 1 - .../ckeditor5/build/translations/ro.js | 1 - .../ckeditor5/build/translations/ru.js | 1 - .../ckeditor5/build/translations/si.js | 1 - .../ckeditor5/build/translations/sk.js | 1 - .../ckeditor5/build/translations/sl.js | 1 - .../ckeditor5/build/translations/sq.js | 1 - .../ckeditor5/build/translations/sr-latn.js | 1 - .../ckeditor5/build/translations/sr.js | 1 - .../ckeditor5/build/translations/sv.js | 1 - .../ckeditor5/build/translations/th.js | 1 - .../ckeditor5/build/translations/tk.js | 1 - .../ckeditor5/build/translations/tr.js | 1 - .../ckeditor5/build/translations/tt.js | 1 - .../ckeditor5/build/translations/ug.js | 1 - .../ckeditor5/build/translations/uk.js | 1 - .../ckeditor5/build/translations/ur.js | 1 - .../ckeditor5/build/translations/uz.js | 1 - .../ckeditor5/build/translations/vi.js | 1 - .../ckeditor5/build/translations/zh-cn.js | 1 - .../ckeditor5/build/translations/zh.js | 1 - .../node_modules/ckeditor5/package.json | 56 - .../node_modules/ckeditor5/src/clipboard.d.ts | 8 - .../node_modules/ckeditor5/src/clipboard.js | 8 - .../node_modules/ckeditor5/src/core.d.ts | 8 - .../node_modules/ckeditor5/src/core.js | 8 - .../node_modules/ckeditor5/src/engine.d.ts | 8 - .../node_modules/ckeditor5/src/engine.js | 8 - .../node_modules/ckeditor5/src/enter.d.ts | 8 - .../node_modules/ckeditor5/src/enter.js | 8 - .../node_modules/ckeditor5/src/paragraph.d.ts | 8 - .../node_modules/ckeditor5/src/paragraph.js | 8 - .../ckeditor5/src/select-all.d.ts | 8 - .../node_modules/ckeditor5/src/select-all.js | 8 - .../node_modules/ckeditor5/src/typing.d.ts | 8 - .../node_modules/ckeditor5/src/typing.js | 8 - .../node_modules/ckeditor5/src/ui.d.ts | 8 - .../node_modules/ckeditor5/src/ui.js | 8 - .../node_modules/ckeditor5/src/undo.d.ts | 8 - .../node_modules/ckeditor5/src/undo.js | 8 - .../node_modules/ckeditor5/src/upload.d.ts | 8 - .../node_modules/ckeditor5/src/upload.js | 8 - .../node_modules/ckeditor5/src/utils.d.ts | 8 - .../node_modules/ckeditor5/src/utils.js | 8 - .../node_modules/ckeditor5/src/watchdog.d.ts | 8 - .../node_modules/ckeditor5/src/watchdog.js | 8 - .../node_modules/ckeditor5/src/widget.d.ts | 8 - .../node_modules/ckeditor5/src/widget.js | 8 - 307 files changed, 20692 insertions(+), 19395 deletions(-) delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isnode.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isnode.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isrange.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isrange.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/istext.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/istext.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isvalidattributename.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isvalidattributename.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isvisible.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/isvisible.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/iswindow.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/iswindow.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/position.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/position.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/rect.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/rect.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/remove.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/remove.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/resizeobserver.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/resizeobserver.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/scroll.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/scroll.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/setdatainelement.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/setdatainelement.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/tounit.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/dom/tounit.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/elementreplacer.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/elementreplacer.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/emittermixin.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/emittermixin.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/env.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/env.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/eventinfo.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/eventinfo.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/fastdiff.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/fastdiff.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/first.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/first.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/focustracker.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/focustracker.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/index.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/index.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/inserttopriorityarray.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/inserttopriorityarray.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/isiterable.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/isiterable.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keyboard.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keyboard.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keystrokehandler.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/keystrokehandler.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/language.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/language.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/locale.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/locale.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/mapsequal.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/mapsequal.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/mix.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/mix.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/nth.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/nth.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/objecttomap.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/objecttomap.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/observablemixin.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/observablemixin.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/priorities.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/priorities.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/retry.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/retry.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/splicearray.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/splicearray.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/spy.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/spy.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/toarray.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/toarray.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/tomap.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/tomap.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/translation-service.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/translation-service.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/uid.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/uid.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/unicode.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/unicode.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/verifylicense.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/verifylicense.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/version.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/version.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/wait.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-utils/src/wait.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/CHANGELOG.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/LICENSE.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/README.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/ckeditor5-metadata.json delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/package.json delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/augmentation.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/augmentation.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/contextwatchdog.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/contextwatchdog.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/editorwatchdog.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/editorwatchdog.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/index.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/index.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/areconnectedthroughproperties.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/areconnectedthroughproperties.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/getsubnodes.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/utils/getsubnodes.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/watchdog.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog/src/watchdog.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/CHANGELOG.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/LICENSE.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/README.md delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/contexts.json delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ar.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/az.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/bg.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/bn.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ca.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/cs.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/da.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/de-ch.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/de.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/el.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/en-au.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/en.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/es.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/et.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/fa.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/fi.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/fr.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/gl.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/he.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/hi.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/hr.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/hu.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/id.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/it.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ja.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ko.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ku.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/lt.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/lv.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ms.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/nl.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/no.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/pl.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/pt-br.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/pt.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ro.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ru.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/sk.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/sq.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/sr-latn.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/sr.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/sv.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/th.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/tk.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/tr.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/uk.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/ur.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/uz.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/vi.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/zh-cn.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/lang/translations/zh.po delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/package.json delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/augmentation.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/augmentation.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/highlightstack.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/highlightstack.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/index.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/index.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/utils.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/utils.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/verticalnavigation.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/verticalnavigation.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widget.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widget.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizer.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizer.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizerstate.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/resizerstate.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/sizeview.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgetresize/sizeview.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettoolbarrepository.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettoolbarrepository.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/utils.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/utils.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/widgettypearound.d.ts delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/src/widgettypearound/widgettypearound.js delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/theme/icons/drag-handle.svg delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/theme/icons/return-arrow.svg delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/theme/widget.css delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/theme/widgetresize.css delete mode 100644 vendor/ckeditor5/node_modules/@ckeditor/ckeditor5-widget/theme/widgettypearound.css delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/CHANGELOG.md delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/LICENSE.md delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/README.md delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/ckeditor5-dll.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/ckeditor5-dll.manifest.json delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/af.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ar.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ast.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/az.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/bg.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/bn.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/bs.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ca.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/cs.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/da.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/de-ch.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/de.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/el.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/en-au.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/en-gb.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/eo.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/es-co.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/es.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/et.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/eu.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/fa.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/fi.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/fr.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/gl.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/gu.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/he.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/hi.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/hr.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/hu.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/hy.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/id.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/it.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ja.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/jv.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/km.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/kn.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ko.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ku.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/lt.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/lv.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ms.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/nb.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ne.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/nl.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/no.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/oc.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/pl.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/pt-br.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/pt.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ro.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ru.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/si.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sk.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sl.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sq.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sr-latn.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sr.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/sv.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/th.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/tk.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/tr.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/tt.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ug.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/uk.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/ur.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/uz.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/vi.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/zh-cn.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/build/translations/zh.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/package.json delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/clipboard.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/clipboard.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/core.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/core.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/engine.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/engine.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/enter.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/enter.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/paragraph.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/paragraph.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/select-all.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/select-all.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/typing.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/typing.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/ui.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/ui.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/undo.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/undo.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/upload.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/upload.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/utils.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/utils.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/watchdog.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/watchdog.js delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/widget.d.ts delete mode 100644 vendor/ckeditor5/node_modules/ckeditor5/src/widget.js diff --git a/app/[locale]/(protected)/supervisor/ticketing/components/table.tsx b/app/[locale]/(protected)/supervisor/ticketing/components/table.tsx index 14969f62..a8ceead5 100644 --- a/app/[locale]/(protected)/supervisor/ticketing/components/table.tsx +++ b/app/[locale]/(protected)/supervisor/ticketing/components/table.tsx @@ -43,12 +43,9 @@ type Issue = { }; export default function TicketingLayout() { - // data & pagination const [issues, setIssues] = React.useState([]); const [totalElements, setTotalElements] = React.useState(0); const [totalPages, setTotalPages] = React.useState(1); - - // controls const [isSidebarOpen, setIsSidebarOpen] = React.useState(true); const [selectedIssue, setSelectedIssue] = React.useState(null); const [search, setSearch] = React.useState(""); @@ -60,8 +57,6 @@ export default function TicketingLayout() { const [selectedTicketId, setSelectedTicketId] = React.useState( null ); - - // selection const [selectedMap, setSelectedMap] = React.useState>( {} ); @@ -70,28 +65,22 @@ export default function TicketingLayout() { return issues.every((i) => selectedMap[String(i.id)]); }, [issues, selectedMap]); - // search debounce React.useEffect(() => { const t = setTimeout(() => { fetchData(); }, 450); return () => clearTimeout(t); - // eslint-disable-next-line react-hooks/exhaustive-deps }, [search, page, pageSize, sortOrder]); React.useEffect(() => { - // initial fetch fetchData(); - // eslint-disable-next-line react-hooks/exhaustive-deps }, []); async function fetchData() { try { - // note: existing API used earlier: ticketingPagination(search, Number(showData), page - 1) const res = await ticketingPagination(search, pageSize, page - 1); const data = res?.data?.data; const content = data?.content || []; - // map fields to Issue type (adjust if necessary) const mapped: Issue[] = content.map((it: any, idx: number) => ({ id: it.id ?? idx, title: it.title ?? it.subject ?? "No Title", @@ -103,8 +92,6 @@ export default function TicketingLayout() { setIssues(mapped); setTotalElements(data?.totalElements ?? 0); setTotalPages(data?.totalPages ?? 1); - - // keep selection map bounded to current items const newMap: Record = {}; mapped.forEach((m) => { newMap[String(m.id)] = Boolean(selectedMap[String(m.id)]); @@ -115,7 +102,6 @@ export default function TicketingLayout() { } } - // select all toggle function toggleSelectAll() { const next: Record = {}; if (!allSelected) { @@ -148,19 +134,16 @@ export default function TicketingLayout() { return { label: source, short: source.slice(0, 2).toUpperCase() }; } - // Chat actions const [chatMessages, setChatMessages] = React.useState< { id: string; from: "user" | "agent"; text: string; time?: string }[] >([]); const [replyText, setReplyText] = React.useState(""); React.useEffect(() => { - // clear chatMessages when selecting new issue and optionally load messages for issue if (!selectedIssue) { setChatMessages([]); return; } - // For demo: populate sample messages (replace by real API call) setChatMessages([ { id: "m1", @@ -194,7 +177,6 @@ export default function TicketingLayout() { ]); setReplyText(""); if (closeAfter) { - // emulate resolve + close bubble setTimeout(() => { setSelectedIssue(null); }, 300); @@ -202,9 +184,7 @@ export default function TicketingLayout() { } function handleTranslate() { - // placeholder: you can call your translate API here if (!replyText.trim()) return; - // naive "translation" demo: append "(translated)" setReplyText((t) => t + " (translated)"); } @@ -235,7 +215,19 @@ export default function TicketingLayout() { !isSidebarOpen && "hidden" )} > - Filters +
+ + All New Issues + + + {totalElements} + +
+ {levelNumber !== "2" && levelNumber !== "3" && ( + + )}
+ }} + className="px-3 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600" + > + {isLoadingTranslate + ? "Translating..." + : "Translate to English"} + + )}
{/* Editor */} @@ -1273,9 +1276,9 @@ export default function FormImage() { render={({ field: { onChange, value } }) => ( { - onChange(val); - setLocalContent(val); - setEditorContent(val); + onChange(val); + setLocalContent(val); + setEditorContent(val); }} initialData={localContent || value} /> @@ -1616,9 +1619,14 @@ export default function FormImage() { {/* button submit */}
- + */} + {levelNumber !== "2" && levelNumber !== "3" && ( + + )}
diff --git a/components/form/content/image-update-form.tsx b/components/form/content/image-update-form.tsx index f4eba049..dd87e2b3 100644 --- a/components/form/content/image-update-form.tsx +++ b/components/form/content/image-update-form.tsx @@ -49,6 +49,16 @@ import { getCsrfToken } from "@/service/auth"; import { Upload } from "tus-js-client"; import { useTranslations } from "next-intl"; import { htmlToString } from "@/utils/globals"; +import { getUserLevelForAssignments } from "@/service/task"; +import { + Dialog, + DialogClose, + DialogContent, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog"; +import { v4 as uuidv4 } from "uuid"; const imageSchema = z.object({ title: z.string().min(1, { message: "Judul diperlukan" }), @@ -111,9 +121,21 @@ const CustomEditor = dynamic( ); interface FileWithPreview extends File { + id: string; preview: string; } +interface Destination { + id: string; + name: string; + subDestination?: SubDestination[]; +} + +interface SubDestination { + id: string; + name: string; +} + export default function FormImageUpdate() { const MySwal = withReactContent(Swal); const router = useRouter(); @@ -154,6 +176,525 @@ export default function FormImageUpdate() { setThumbnailFile(file); } }; + const [fileUnitSelections, setFileUnitSelections] = useState< + Array<{ + semua: boolean; + nasional: boolean; + wilayah: boolean; + international: boolean; + polda: boolean; + polres: boolean; + satker: boolean; + }> + >([]); + // State global untuk kompatibilitas (akan dihapus nanti) + const [unitSelection, setUnitSelection] = useState({ + semua: false, + nasional: false, + wilayah: false, + international: false, + polda: false, + polres: false, + satker: false, + }); + const [checkedLevels, setCheckedLevels] = useState>(new Set()); + const [listDest, setListDest] = useState([]); + const [isLoading, setIsLoading] = useState(false); + const [expandedPolda, setExpandedPolda] = useState>( + {} + ); + const [fileCheckedLevels, setFileCheckedLevels] = useState< + Array> + >([]); + const [isUpdatingFromMainCheckbox, setIsUpdatingFromMainCheckbox] = + useState(false); + const [mainCheckboxChangeType, setMainCheckboxChangeType] = + useState(""); + + useEffect(() => { + async function fetchPoldaPolres() { + setIsLoading(true); + try { + const response = await getUserLevelForAssignments(); + setListDest(response?.data?.data.list); + const initialExpandedState = response?.data?.data.list.reduce( + (acc: any, polda: any) => { + acc[polda.id] = false; + return acc; + }, + {} + ); + setExpandedPolda(initialExpandedState); + console.log("polres", initialExpandedState); + } catch (error) { + console.error("Error fetching Polda/Polres data:", error); + } finally { + setIsLoading(false); + } + } + fetchPoldaPolres(); + }, []); + + // useEffect untuk sinkronisasi checkbox modal dengan checkbox utama + useEffect(() => { + if ( + listDest.length > 0 && + isUpdatingFromMainCheckbox && + mainCheckboxChangeType + ) { + syncModalWithMainCheckbox(); + } + }, [isUpdatingFromMainCheckbox, mainCheckboxChangeType]); + + // useEffect untuk update checkbox utama ketika pilihan modal berubah + useEffect(() => { + if (!isUpdatingFromMainCheckbox && listDest.length > 0) { + updateMainCheckboxFromModalLegacy(); + } + }, [checkedLevels, isUpdatingFromMainCheckbox]); + + // Fungsi untuk update checkbox utama berdasarkan checkbox modal (global/legacy) + const updateMainCheckboxFromModalLegacy = () => { + if (!isUpdatingFromMainCheckbox && listDest.length > 0) { + // Hitung item yang dipilih berdasarkan checkedLevels + const checkedPoldaCount = listDest.filter( + (item: any) => + item.levelNumber === 2 && + item.name !== "SATKER POLRI" && + checkedLevels.has(Number(item.id)) + ).length; + + const checkedPolresCount = listDest.reduce((total: number, item: any) => { + if (item.subDestination && item.name !== "SATKER POLRI") { + // Hanya hitung sub-item dari POLDA (bukan dari SATKER POLRI) + return ( + total + + item.subDestination.filter((sub: any) => + checkedLevels.has(Number(sub.id)) + ).length + ); + } + return total; + }, 0); + + const satkerItem: any = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + const checkedSatkerCount = satkerItem + ? (checkedLevels.has(Number(satkerItem.id)) ? 1 : 0) + + (satkerItem.subDestination?.filter((sub: any) => + checkedLevels.has(Number(sub.id)) + ).length || 0) + : 0; + + // Checkbox aktif jika ADA item yang dipilih dalam kategori tersebut + const hasSelectedPolda = checkedPoldaCount > 0; + const hasSelectedPolres = checkedPolresCount > 0; + const hasSelectedSatker = checkedSatkerCount > 0; + + // Update unitSelection berdasarkan yang dipilih di modal + setUnitSelection((prev) => { + const newState = { ...prev }; + + // Update individual checkboxes + newState.polda = hasSelectedPolda; + newState.polres = hasSelectedPolres; + newState.satker = hasSelectedSatker; + + // Update checkbox "semua" berdasarkan semua checkbox yang aktif + newState.semua = + newState.nasional && + newState.wilayah && + newState.international && + hasSelectedPolda && + hasSelectedPolres && + hasSelectedSatker; + + return newState; + }); + } + }; + + // Fungsi untuk sinkronisasi checkbox modal dengan checkbox utama + const syncModalWithMainCheckbox = () => { + if (isUpdatingFromMainCheckbox) { + const newCheckedLevels = new Set(checkedLevels); + + // Handle checklist actions - menambahkan semua item ke modal + if (mainCheckboxChangeType === "polda_checked") { + // Checklist semua polda + listDest.forEach((item: any) => { + if (item.levelNumber === 2 && item.name !== "SATKER POLRI") { + newCheckedLevels.add(Number(item.id)); + } + }); + } else if (mainCheckboxChangeType === "polres_checked") { + // Checklist semua polres, tapi hanya yang poldanya sudah di-checklist + // Jangan checklist sub-item SATKER POLRI + listDest.forEach((item: any) => { + if ( + item.levelNumber === 2 && + item.name !== "SATKER POLRI" && + newCheckedLevels.has(Number(item.id)) + ) { + if (item.subDestination) { + item.subDestination.forEach((polres: any) => { + newCheckedLevels.add(Number(polres.id)); + }); + } + } + }); + + // Tidak perlu menghapus SATKER ketika POLRES di-checklist + // Biarkan keduanya bisa aktif bersamaan + // SATKER dan POLRES adalah konsep yang berbeda: + // - SATKER: unit-unit seperti ITWASUM, BAINTELKAM, dll. + // - POLRES: unit-unit seperti POLRES METRO JAKARTA PUSAT, dll. + } else if (mainCheckboxChangeType === "satker_checked") { + // Checklist satker + const satkerItem: any = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + if (satkerItem) { + newCheckedLevels.add(Number(satkerItem.id)); + // Checklist semua sub-item yang ada di bawah SATKER (bukan POLRES) + if (satkerItem.subDestination) { + satkerItem.subDestination.forEach((sub: any) => { + newCheckedLevels.add(Number(sub.id)); + }); + } + } + } else if (mainCheckboxChangeType === "semua_checked") { + // Checklist semua item + listDest.forEach((item: any) => { + newCheckedLevels.add(Number(item.id)); + // Checklist semua sub-item di bawah setiap item + if (item.subDestination) { + item.subDestination.forEach((sub: any) => { + newCheckedLevels.add(Number(sub.id)); + }); + } + }); + } + // Handle unchecklist actions - menghapus item dari modal + else if (mainCheckboxChangeType === "polres_unchecked") { + // Clear polres dari checkedLevels, tapi jangan hapus sub-item SATKER POLRI + listDest.forEach((item: any) => { + if (item.subDestination && item.name !== "SATKER POLRI") { + item.subDestination.forEach((polres: any) => { + newCheckedLevels.delete(Number(polres.id)); + }); + } + }); + } else if (mainCheckboxChangeType === "polda_unchecked") { + // Clear polda dan polres dari checkedLevels, tapi jangan hapus SATKER POLRI + listDest.forEach((item: any) => { + if (item.levelNumber === 2 && item.name !== "SATKER POLRI") { + newCheckedLevels.delete(Number(item.id)); + if (item.subDestination) { + item.subDestination.forEach((polres: any) => { + newCheckedLevels.delete(Number(polres.id)); + }); + } + } + }); + } else if (mainCheckboxChangeType === "satker_unchecked") { + // Clear satker dan semua sub-item di bawahnya dari checkedLevels + const satkerItem: any = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + if (satkerItem) { + newCheckedLevels.delete(Number(satkerItem.id)); + if (satkerItem.subDestination) { + satkerItem.subDestination.forEach((sub: any) => { + newCheckedLevels.delete(Number(sub.id)); + }); + } + } + } else if (mainCheckboxChangeType === "semua_unchecked") { + // Clear semua + newCheckedLevels.clear(); + } + + setCheckedLevels(newCheckedLevels); + + // Reset flag setelah sinkronisasi selesai + setIsUpdatingFromMainCheckbox(false); + setMainCheckboxChangeType(""); + } + }; + + // Fungsi untuk mengupdate state individual file + const handleFileUnitChange = ( + fileIndex: number, + key: keyof typeof unitSelection, + value: boolean + ) => { + setFileUnitSelections((prev) => { + const newSelections = [...prev]; + const currentSelection = { ...newSelections[fileIndex] }; + + if (key === "semua") { + // Jika klik Semua, set semua value ke true/false + currentSelection.semua = value; + currentSelection.nasional = value; + currentSelection.wilayah = value; + currentSelection.international = value; + currentSelection.polda = value; + currentSelection.polres = value; + currentSelection.satker = value; + + // Update fileCheckedLevels untuk sinkronisasi dengan modal + setFileCheckedLevels((prevLevels) => { + const newArray = [...prevLevels]; + const currentFileLevels = new Set( + newArray[fileIndex] || new Set() + ); + + if (value) { + // Checklist semua item di modal + listDest.forEach((item: any) => { + currentFileLevels.add(Number(item.id)); + if (item.subDestination) { + item.subDestination.forEach((sub: any) => { + currentFileLevels.add(Number(sub.id)); + }); + } + }); + } else { + // Unchecklist semua item di modal + currentFileLevels.clear(); + } + + newArray[fileIndex] = currentFileLevels; + return newArray; + }); + } else { + // Validasi khusus untuk POLRES - harus ada POLDA yang ter-checklist + if (key === "polres" && value) { + const currentFileCheckedLevels = fileCheckedLevels[fileIndex]; + const hasSelectedPolda = + currentFileCheckedLevels && + listDest.some( + (item: any) => + item.levelNumber === 2 && + item.name !== "SATKER POLRI" && + currentFileCheckedLevels.has(Number(item.id)) + ); + + if (!hasSelectedPolda) { + alert( + "Harap pilih POLDA di Modal terlebih dahulu sebelum mengaktifkan checkbox POLRES." + ); + return prev; // Batalkan perubahan + } + } + + // Update salah satu saja + currentSelection[key] = value; + + // Cek apakah semua selain "semua" sudah dicentang + const allChecked = [ + "nasional", + "wilayah", + "international", + "polda", + "polres", + "satker", + ].every((k) => currentSelection[k as keyof typeof unitSelection]); + + currentSelection.semua = allChecked; + } + + newSelections[fileIndex] = currentSelection; + return newSelections; + }); + }; + + // Fungsi untuk mengupdate checklist levels untuk file tertentu + const handleFileCheckboxChangePlacement = ( + fileIndex: number, + levelId: number + ) => { + setFileCheckedLevels((prev) => { + const newArray = [...prev]; + const currentFileLevels = new Set(newArray[fileIndex]); + const isCurrentlyChecked = currentFileLevels.has(levelId); + + if (isCurrentlyChecked) { + currentFileLevels.delete(levelId); + + // Jika ini adalah POLDA yang di-unchecklist, unchecklist juga semua polres di bawahnya + const poldaItem = listDest.find( + (item: any) => Number(item.id) === levelId + ) as any; + if ( + poldaItem && + poldaItem.subDestination && + poldaItem.name !== "SATKER POLRI" + ) { + poldaItem.subDestination.forEach((polres: any) => { + currentFileLevels.delete(Number(polres.id)); + }); + } + + // Jika ini adalah SATKER POLRI yang di-unchecklist, unchecklist juga semua sub-item di bawahnya + if (poldaItem && poldaItem.name === "SATKER POLRI") { + poldaItem.subDestination?.forEach((subItem: any) => { + currentFileLevels.delete(Number(subItem.id)); + }); + } + } else { + currentFileLevels.add(levelId); + + // Jika ini adalah SATKER POLRI yang di-checklist, checklist juga semua sub-item di bawahnya + const satkerItem = listDest.find( + (item: any) => Number(item.id) === levelId + ) as any; + if (satkerItem && satkerItem.name === "SATKER POLRI") { + // Checklist semua sub-item di bawah SATKER POLRI (bukan POLRES) + satkerItem.subDestination?.forEach((subItem: any) => { + currentFileLevels.add(Number(subItem.id)); + }); + } + } + + newArray[fileIndex] = currentFileLevels; + + // Update checkbox utama berdasarkan perubahan di modal + // Pindahkan ke sini agar state sudah ter-update + setTimeout(() => updateMainCheckboxFromModal(fileIndex), 0); + + return newArray; + }); + }; + + // Fungsi untuk mengupdate checkbox utama berdasarkan checklist di modal + const updateMainCheckboxFromModal = (fileIndex: number) => { + setFileUnitSelections((prev) => { + const newSelections = [...prev]; + const currentSelection = { ...newSelections[fileIndex] }; + const currentFileLevels = fileCheckedLevels[fileIndex]; + + if (!currentFileLevels) return prev; + + // Hitung total POLDA yang ada (bukan SATKER POLRI) + const totalPoldaCount = listDest.filter( + (item: any) => item.levelNumber === 2 && item.name !== "SATKER POLRI" + ).length; + + // Hitung berapa banyak POLDA yang ter-checklist (bukan SATKER POLRI) + const checkedPoldaCount = listDest.reduce((total: number, item: any) => { + if ( + item.levelNumber === 2 && + item.name !== "SATKER POLRI" && + currentFileLevels.has(Number(item.id)) + ) { + return total + 1; + } + return total; + }, 0); + + // Hitung total POLRES yang ada dari POLDA yang ter-checklist + const totalPolresFromCheckedPolda = listDest.reduce( + (total: number, item: any) => { + if ( + item.subDestination && + item.name !== "SATKER POLRI" && + currentFileLevels.has(Number(item.id)) + ) { + return total + item.subDestination.length; + } + return total; + }, + 0 + ); + + // Hitung berapa banyak POLRES yang ter-checklist + const checkedPolresCount = listDest.reduce((total: number, item: any) => { + if (item.subDestination && item.name !== "SATKER POLRI") { + // Hanya hitung sub-item dari POLDA (bukan dari SATKER POLRI) + return ( + total + + item.subDestination.filter((sub: any) => + currentFileLevels.has(Number(sub.id)) + ).length + ); + } + return total; + }, 0); + + // Cek apakah SATKER POLRI ter-checklist + const satkerItem = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + const isSatkerChecked = + satkerItem && currentFileLevels.has(Number(satkerItem.id)); + + // Update checkbox berdasarkan kondisi + // POLDA aktif jika ada minimal 1 POLDA ter-checklist + currentSelection.polda = checkedPoldaCount > 0; + // POLRES aktif jika ada minimal 1 POLRES ter-checklist + currentSelection.polres = checkedPolresCount > 0; + currentSelection.satker = Boolean(isSatkerChecked); + + // Update checkbox "semua" berdasarkan semua checkbox yang aktif + currentSelection.semua = + currentSelection.nasional && + currentSelection.wilayah && + currentSelection.international && + currentSelection.polda && + currentSelection.polres && + currentSelection.satker; + + newSelections[fileIndex] = currentSelection; + return newSelections; + }); + }; + + const toggleExpand = (id: number) => { + setExpandedPolda((prev) => ({ + ...prev, + [id]: !prev[id], + })); + }; + + // Fungsi untuk menangani "Pilih Semua" sub-items di bawah POLDA + const handleSelectAllSubItems = (fileIndex: number, polda: any) => { + setFileCheckedLevels((prev) => { + const newArray = [...prev]; + const currentFileLevels = new Set(newArray[fileIndex]); + + // Cek apakah semua sub-items sudah ter-checklist + const allSubItemsChecked = polda.subDestination?.every((sub: any) => + currentFileLevels.has(Number(sub.id)) + ); + + if (allSubItemsChecked) { + // Jika semua sudah ter-checklist, unchecklist semuanya + polda.subDestination?.forEach((sub: any) => { + currentFileLevels.delete(Number(sub.id)); + }); + } else { + // Jika belum semua ter-checklist, checklist semuanya + // Checklist POLDA juga jika belum ter-checklist + if (!currentFileLevels.has(Number(polda.id))) { + currentFileLevels.add(Number(polda.id)); + } + // Checklist semua sub-items + polda.subDestination?.forEach((sub: any) => { + currentFileLevels.add(Number(sub.id)); + }); + } + + newArray[fileIndex] = currentFileLevels; + + // Update checkbox utama berdasarkan perubahan di modal + setTimeout(() => updateMainCheckboxFromModal(fileIndex), 0); + + return newArray; + }); + }; const options: Option[] = [ { id: "all", name: "SEMUA" }, @@ -166,22 +707,22 @@ export default function FormImageUpdate() { const [selectedTarget, setSelectedTarget] = useState( detail?.category.id ); - const [unitSelection, setUnitSelection] = useState({ - allUnit: false, - mabes: false, - polda: false, - polres: false, - }); + // const [unitSelection, setUnitSelection] = useState({ + // allUnit: false, + // mabes: false, + // polda: false, + // polres: false, + // }); let fileTypeId = "1"; const { getRootProps, getInputProps } = useDropzone({ onDrop: (acceptedFiles) => { - // setFiles(acceptedFiles.map((file) => Object.assign(file))); setFiles((prevFiles) => [ ...prevFiles, ...acceptedFiles.map((file) => Object.assign(file, { + id: uuidv4(), // generate unique id preview: URL.createObjectURL(file), }) ), @@ -192,6 +733,23 @@ export default function FormImageUpdate() { }, }); + // const { getRootProps, getInputProps } = useDropzone({ + // onDrop: (acceptedFiles) => { + // // setFiles(acceptedFiles.map((file) => Object.assign(file))); + // setFiles((prevFiles) => [ + // ...prevFiles, + // ...acceptedFiles.map((file) => + // Object.assign(file, { + // preview: URL.createObjectURL(file), + // }) + // ), + // ]); + // }, + // accept: { + // "image/*": [], + // }, + // }); + const { control, handleSubmit, @@ -355,6 +913,33 @@ export default function FormImageUpdate() { } }; + const [filePlacements, setFilePlacements] = useState([]); + + const getPlacement = () => { + const temp = []; + for (let i = 0; i < filePlacements?.length; i++) { + if (filePlacements[i]?.length !== 0) { + const now = filePlacements[i]; + let nowArr = now?.join(",")?.replaceAll("wilayah", "polda"); + nowArr = nowArr?.replaceAll("nasional", "mabes"); + nowArr = nowArr?.replaceAll("semua", "all"); + + // Dapatkan checked levels untuk file ini + const currentFileCheckedLevels = fileCheckedLevels[i] + ? Array.from(fileCheckedLevels[i]) + : []; + + const data = { + mediaFileId: files[i]?.id, + placements: nowArr, + customLocationPlacements: currentFileCheckedLevels.join(","), + }; + temp.push(data); + } + } + return temp; + }; + const save = async (data: ImageSchema) => { loading(); const finalTags = tags.join(", "); @@ -374,37 +959,37 @@ export default function FormImageUpdate() { tags: finalTags, isYoutube: false, isInternationalMedia: false, + files: getPlacement(), }; - const response = await createMedia(requestData); console.log("Form Data Submitted:", requestData); + const response = await createMedia(requestData); if (response?.error) { error(response?.message); return false; } + // Upload thumbnail const formMedia = new FormData(); const thumbnail = thumbnailFile || files[0]; formMedia.append("file", thumbnail); - const responseThumbnail = await uploadThumbnail(id, formMedia); - if (responseThumbnail?.error == true) { + if (responseThumbnail?.error) { error(responseThumbnail?.message); return false; } - const progressInfoArr = []; - for (const item of files) { - progressInfoArr.push({ percentage: 0, fileName: item.name }); - } - progressInfo = progressInfoArr; + // Upload files (progress) + const progressInfoArr = files.map((item) => ({ + percentage: 0, + fileName: item.name, + })); setIsStartUpload(true); setProgressList(progressInfoArr); close(); - // showProgress(); - console.log("files:", files); + files.map(async (item: any, index: number) => { await uploadResumableFile( index, @@ -666,65 +1251,282 @@ export default function FormImageUpdate() { } const [tempFile, setTempFile] = useState([]); - const [filePlacements, setFilePlacements] = useState([]); + const setupPlacement = ( + index: number, + placement: string, + checked: boolean + ) => { + let temp = [...filePlacements]; + if (checked) { + if (placement === "all") { + temp[index] = ["all", "mabes", "polda", "international"]; - const setupPlacement = (id: number | string, placement: PlacementType) => { - console.log(`FileDestination.leng:: ${id}_${placement}`); - const arrayFile: FilePlacement[] = []; + // Update fileCheckedLevels untuk sinkronisasi dengan modal ketika "all" diklik + setFileCheckedLevels((prevLevels) => { + const newArray = [...prevLevels]; + const currentFileLevels = new Set( + newArray[index] || new Set() + ); - for (let i = 0; i < tempFile?.length; i++) { - const element = tempFile[i]; - - if (element.id == id) { - const findPlacementIdx = filePlacements.findIndex( - (o) => Number(o.mediaFileId) === Number(id) - ); - - if (findPlacementIdx > -1) { - const findPlacement = filePlacements[findPlacementIdx]; - - if (findPlacement?.placements?.includes(placement)) { - if (placement === "all") { - findPlacement.placements = undefined; - } else { - findPlacement.placements = findPlacement.placements.filter( - (val) => val !== placement - ); - if (findPlacement.placements?.includes("all")) { - findPlacement.placements = findPlacement.placements.filter( - (val) => val !== "all" - ); - } + // Checklist semua item di modal + listDest.forEach((item: any) => { + currentFileLevels.add(Number(item.id)); + if (item.subDestination) { + item.subDestination.forEach((sub: any) => { + currentFileLevels.add(Number(sub.id)); + }); } - } else if (placement === "all") { - findPlacement.placements = [ - "all", - "mabes", - "polda", - "international", - ]; - } else if (findPlacement.placements) { - findPlacement.placements = [...findPlacement.placements, placement]; - } else { - findPlacement.placements = [placement]; - } - } else { - const file: FilePlacement = { - mediaFileId: Number(element.id), - placements: [placement], - }; + }); - arrayFile.push(file); + newArray[index] = currentFileLevels; + return newArray; + }); + + // Update fileUnitSelections untuk checkbox tingkat utama + setFileUnitSelections((prevSelections) => { + const newSelections = [...prevSelections]; + const currentSelection = { ...newSelections[index] }; + + // Set semua checkbox tingkat utama ke true + currentSelection.nasional = true; + currentSelection.wilayah = true; + currentSelection.international = true; + currentSelection.polda = true; + currentSelection.polres = true; + currentSelection.satker = true; + currentSelection.semua = true; + + newSelections[index] = currentSelection; + return newSelections; + }); + } else if (placement === "satker") { + // Ketika satker di-checklist, HANYA tambahkan satker saja + // JANGAN otomatis checklist polres + const now = temp[index] || []; + if (!now.includes("satker")) { + now.push("satker"); + } + temp[index] = now; + } else { + const now = temp[index] || []; + if (!now.includes(placement)) { + now.push(placement); + } + // Hanya auto-checklist "all" jika polda, polres, dan mabes ter-checklist + // JANGAN include satker dalam perhitungan auto "all" + const nonSatkerItems = now.filter( + (item) => item !== "satker" && item !== "all" + ); + if (nonSatkerItems.length === 3 && !now.includes("all")) { + now.push("all"); + } + temp[index] = now; + } + } else { + if (placement === "all") { + temp[index] = []; + + // Update fileCheckedLevels untuk sinkronisasi dengan modal ketika "all" di-unchecklist + setFileCheckedLevels((prevLevels) => { + const newArray = [...prevLevels]; + const currentFileLevels = new Set( + newArray[index] || new Set() + ); + + // Unchecklist semua item di modal + currentFileLevels.clear(); + + newArray[index] = currentFileLevels; + return newArray; + }); + + // Update fileUnitSelections untuk checkbox tingkat utama + setFileUnitSelections((prevSelections) => { + const newSelections = [...prevSelections]; + const currentSelection = { ...newSelections[index] }; + + // Set semua checkbox tingkat utama ke false + currentSelection.nasional = false; + currentSelection.wilayah = false; + currentSelection.international = false; + currentSelection.polda = false; + currentSelection.polres = false; + currentSelection.satker = false; + currentSelection.semua = false; + + newSelections[index] = currentSelection; + return newSelections; + }); + } else { + const now = temp[index]?.filter((a) => a !== placement); + console.log("now", now); + temp[index] = now; + // Hapus "all" jika tidak semua item ter-checklist + if (now.includes("all")) { + const nonSatkerItems = now.filter( + (item) => item !== "satker" && item !== "all" + ); + if (nonSatkerItems.length < 3) { + const newData = now.filter((b) => b !== "all"); + temp[index] = newData; + } } } } + setFilePlacements(temp); - const finalPlacements = [...filePlacements, ...arrayFile]; - setFilePlacements(finalPlacements); - console.log("FileDestination.leng::", finalPlacements); + // Update checklist levels di modal berdasarkan placement yang diubah + updateModalChecklistLevels(index, placement, checked); }; + // Fungsi untuk mengupdate checklist levels di modal berdasarkan placement + const updateModalChecklistLevels = ( + fileIndex: number, + placement: string, + checked: boolean + ) => { + if (!listDest || listDest.length === 0) return; + + setFileCheckedLevels((prev) => { + const newArray = [...prev]; + const currentFileLevels = new Set(newArray[fileIndex]); + + if (checked) { + if (placement === "polda") { + // Checklist semua POLDA (bukan SATKER POLRI) + listDest.forEach((item: any) => { + if (item.levelNumber === 2 && item.name !== "SATKER POLRI") { + currentFileLevels.add(Number(item.id)); + } + }); + } else if (placement === "polres") { + // Checklist POLRES hanya dari POLDA yang sudah ter-checklist + listDest.forEach((item: any) => { + if (item.levelNumber === 2 && item.name !== "SATKER POLRI") { + // Hanya checklist POLRES jika POLDA-nya sudah ter-checklist + if (currentFileLevels.has(Number(item.id))) { + if (item.subDestination) { + item.subDestination.forEach((polres: any) => { + currentFileLevels.add(Number(polres.id)); + }); + } + } + } + }); + } else if (placement === "satker") { + // Checklist SATKER POLRI dan semua sub-item di bawahnya + const satkerItem: any = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + if (satkerItem) { + currentFileLevels.add(Number(satkerItem.id)); + if (satkerItem.subDestination) { + satkerItem.subDestination.forEach((sub: any) => { + currentFileLevels.add(Number(sub.id)); + }); + } + } + } + } else { + if (placement === "polda") { + // Unchecklist semua POLDA dan POLRES di bawahnya + listDest.forEach((item: any) => { + if (item.levelNumber === 2 && item.name !== "SATKER POLRI") { + currentFileLevels.delete(Number(item.id)); + if (item.subDestination) { + item.subDestination.forEach((polres: any) => { + currentFileLevels.delete(Number(polres.id)); + }); + } + } + }); + } else if (placement === "polres") { + // Unchecklist semua POLRES + listDest.forEach((item: any) => { + if (item.subDestination && item.name !== "SATKER POLRI") { + item.subDestination.forEach((polres: any) => { + currentFileLevels.delete(Number(polres.id)); + }); + } + }); + } else if (placement === "satker") { + // Unchecklist SATKER POLRI dan semua sub-item di bawahnya + const satkerItem: any = listDest.find( + (item: any) => item.name === "SATKER POLRI" + ); + if (satkerItem) { + currentFileLevels.delete(Number(satkerItem.id)); + if (satkerItem.subDestination) { + satkerItem.subDestination.forEach((sub: any) => { + currentFileLevels.delete(Number(sub.id)); + }); + } + } + } + } + + newArray[fileIndex] = currentFileLevels; + return newArray; + }); + }; + + // const setupPlacement = (id: number | string, placement: PlacementType) => { + // console.log(`FileDestination.leng:: ${id}_${placement}`); + // const arrayFile: FilePlacement[] = []; + + // for (let i = 0; i < tempFile?.length; i++) { + // const element = tempFile[i]; + + // if (element.id == id) { + // const findPlacementIdx = filePlacements.findIndex( + // (o) => Number(o.mediaFileId) === Number(id) + // ); + + // if (findPlacementIdx > -1) { + // const findPlacement = filePlacements[findPlacementIdx]; + + // if (findPlacement?.placements?.includes(placement)) { + // if (placement === "all") { + // findPlacement.placements = undefined; + // } else { + // findPlacement.placements = findPlacement.placements.filter( + // (val) => val !== placement + // ); + // if (findPlacement.placements?.includes("all")) { + // findPlacement.placements = findPlacement.placements.filter( + // (val) => val !== "all" + // ); + // } + // } + // } else if (placement === "all") { + // findPlacement.placements = [ + // "all", + // "mabes", + // "polda", + // "international", + // ]; + // } else if (findPlacement.placements) { + // findPlacement.placements = [...findPlacement.placements, placement]; + // } else { + // findPlacement.placements = [placement]; + // } + // } else { + // const file: FilePlacement = { + // mediaFileId: Number(element.id), + // placements: [placement], + // }; + + // arrayFile.push(file); + // } + // } + // } + + // const finalPlacements = [...filePlacements, ...arrayFile]; + // setFilePlacements(finalPlacements); + // console.log("FileDestination.leng::", finalPlacements); + // }; + const handleCheckboxChangeImage = (fileId: number, value: string) => { setSelectedOptions((prev: any) => { const currentSelections = prev[fileId] || []; @@ -946,7 +1748,7 @@ export default function FormImageUpdate() { {t("file-media", { defaultValue: "File Media" })}
- {files.map((file: any) => ( + {files.map((file: any, index: any) => (
-
-
diff --git a/components/form/content/teks-form.tsx b/components/form/content/teks-form.tsx index 57b55602..ad9cb606 100644 --- a/components/form/content/teks-form.tsx +++ b/components/form/content/teks-form.tsx @@ -83,6 +83,7 @@ export default function FormTeks() { const MySwal = withReactContent(Swal); const router = useRouter(); const editor = useRef(null); + const levelNumber = getCookiesDecrypt("ulne"); type TeksSchema = z.infer; const params = useParams(); const locale = params?.locale; @@ -1488,9 +1489,14 @@ export default function FormTeks() {
- + */} + {levelNumber !== "2" && levelNumber !== "3" && ( + + )}
+ */} + {levelNumber !== "2" && levelNumber !== "3" && ( + + )}