zignal-stencil-library 1.1.113 → 1.1.114
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/cjs/autocomplete-address_43.cjs.entry.js +165 -96
- package/dist/cjs/quick-message-app.cjs.entry.js +1 -1
- package/dist/cjs/quick-message-app.entry.cjs.js.map +1 -1
- package/dist/collection/components/autocomplete-address/autocomplete-address.css +1 -1
- package/dist/collection/components/autocomplete-multiple-select/autocomplete-multiple-select.css +1 -1
- package/dist/collection/components/autocomplete-select/autocomplete-select.css +1 -1
- package/dist/collection/components/channel-box/channel-box.css +1 -1
- package/dist/collection/components/chat-app/chat-app.css +1 -1
- package/dist/collection/components/chat-header/chat-header.css +1 -1
- package/dist/collection/components/chat-input/chat-input.css +1 -1
- package/dist/collection/components/chat-input/chat-input.js +1 -1
- package/dist/collection/components/chat-input/chat-input.js.map +1 -1
- package/dist/collection/components/checkbox-list/checkbox-list.css +1 -1
- package/dist/collection/components/dialog-bill-editor/dialog-bill-editor.css +1 -1
- package/dist/collection/components/dialog-editor/dialog-editor.css +1 -1
- package/dist/collection/components/dialog-preview-media/dialog-preview-media.css +1 -1
- package/dist/collection/components/dialog-search/dialog-search.css +1 -1
- package/dist/collection/components/menu-chat-channel/menu-chat-channel.css +1 -1
- package/dist/collection/components/menu-chat-type/menu-chat-type.css +1 -1
- package/dist/collection/components/menu-list/menu-list.css +1 -1
- package/dist/collection/components/message-box/message-box.css +1 -1
- package/dist/collection/components/message-content/message-content.css +1 -1
- package/dist/collection/components/message-item/message-item.css +1 -1
- package/dist/collection/components/message-media/message-media.css +1 -1
- package/dist/collection/components/profile-history/profile-history.css +1 -1
- package/dist/collection/components/profile-info/profile-info.css +1 -1
- package/dist/collection/components/profile-media/profile-media.css +1 -1
- package/dist/collection/components/profile-tabs/profile-tabs.css +1 -1
- package/dist/collection/components/quick-message-add-template/quick-message-add-template.css +1 -1
- package/dist/collection/components/quick-message-app/quick-message-app.css +1 -1
- package/dist/collection/components/quick-message-file/quick-message-file.css +1 -1
- package/dist/collection/components/quick-message-image/quick-message-image.css +1 -1
- package/dist/collection/components/quick-message-modal/quick-message-modal.css +1 -1
- package/dist/collection/components/quick-message-template/quick-message-template.css +1 -1
- package/dist/collection/components/search-box/search-box.css +1 -1
- package/dist/collection/components/status-badge/status-badge.css +1 -1
- package/dist/collection/components/tag-list/tag-list.css +1 -1
- package/dist/collection/components/tag-or-status-item/tag-or-status-item.css +1 -1
- package/dist/collection/components/tag-popper/tag-popper.css +1 -1
- package/dist/collection/components/typography-clamp/typography-clamp.css +1 -1
- package/dist/collection/components/z-avatar/z-avatar.css +1 -1
- package/dist/collection/components/z-dialog/z-dialog.css +1 -1
- package/dist/components/autocomplete-address.js +1 -1
- package/dist/components/autocomplete-multiple-select.js +1 -1
- package/dist/components/autocomplete-select.js +1 -1
- package/dist/components/channel-box.js +1 -1
- package/dist/components/chat-app.js +40 -40
- package/dist/components/chat-app.js.map +1 -1
- package/dist/components/chat-header.js +1 -1
- package/dist/components/chat-input.js +1 -1
- package/dist/components/checkbox-list.js +1 -1
- package/dist/components/dialog-bill-editor.js +1 -1
- package/dist/components/dialog-editor.js +1 -1
- package/dist/components/dialog-preview-media.js +1 -1
- package/dist/components/dialog-search.js +1 -1
- package/dist/components/menu-chat-channel.js +1 -1
- package/dist/components/menu-chat-type.js +1 -1
- package/dist/components/menu-list.js +1 -1
- package/dist/components/message-box.js +1 -1
- package/dist/components/message-content.js +1 -1
- package/dist/components/message-item.js +1 -1
- package/dist/components/message-media.js +1 -1
- package/dist/components/{p-CvyJbTb9.js → p--m50OaqR.js} +11 -11
- package/dist/components/{p-CvyJbTb9.js.map → p--m50OaqR.js.map} +1 -1
- package/dist/components/{p-nEOSV6qt.js → p-3t2ULKvn.js} +5 -5
- package/dist/components/{p-nEOSV6qt.js.map → p-3t2ULKvn.js.map} +1 -1
- package/dist/components/{p-DRC94y7I.js → p-5QPDcqLV.js} +4 -4
- package/dist/components/{p-DRC94y7I.js.map → p-5QPDcqLV.js.map} +1 -1
- package/dist/components/{p-LQISNowV.js → p-B-DQMSNH.js} +3 -3
- package/dist/components/{p-LQISNowV.js.map → p-B-DQMSNH.js.map} +1 -1
- package/dist/components/{p-Ci1wlgXw.js → p-B2u057C4.js} +3 -3
- package/dist/components/{p-Ci1wlgXw.js.map → p-B2u057C4.js.map} +1 -1
- package/dist/components/{p-BVLGLAQM.js → p-BBzb0UrZ.js} +13 -13
- package/dist/components/{p-BVLGLAQM.js.map → p-BBzb0UrZ.js.map} +1 -1
- package/dist/components/{p-DW8sC5rc.js → p-BLI0eD_8.js} +3 -3
- package/dist/components/{p-DW8sC5rc.js.map → p-BLI0eD_8.js.map} +1 -1
- package/dist/components/{p-3XaRlwMZ.js → p-BNiehTz-.js} +8 -8
- package/dist/components/{p-3XaRlwMZ.js.map → p-BNiehTz-.js.map} +1 -1
- package/dist/components/{p-Dz4G6Q1l.js → p-BQmnx9-0.js} +3 -3
- package/dist/components/{p-Dz4G6Q1l.js.map → p-BQmnx9-0.js.map} +1 -1
- package/dist/components/{p-CrvmYhih.js → p-Bbm_pPzb.js} +4 -4
- package/dist/components/{p-CrvmYhih.js.map → p-Bbm_pPzb.js.map} +1 -1
- package/dist/components/p-BnxxvUCy.js +132 -0
- package/dist/components/{p-DuPV1DzK.js.map → p-BnxxvUCy.js.map} +1 -1
- package/dist/components/{p-CB09ePCJ.js → p-BqirszEW.js} +4 -4
- package/dist/components/{p-CB09ePCJ.js.map → p-BqirszEW.js.map} +1 -1
- package/dist/components/{p-l6ffmvGW.js → p-BssEwLaN.js} +3 -3
- package/dist/components/{p-l6ffmvGW.js.map → p-BssEwLaN.js.map} +1 -1
- package/dist/components/{p-DrW4vKrV.js → p-BypBSjsX.js} +5 -5
- package/dist/components/{p-DrW4vKrV.js.map → p-BypBSjsX.js.map} +1 -1
- package/dist/components/{p-Be5X3t5w.js → p-CI0T9mG3.js} +3 -3
- package/dist/components/{p-Be5X3t5w.js.map → p-CI0T9mG3.js.map} +1 -1
- package/dist/components/{p-5S7W_s42.js → p-CYj5eGUx.js} +4 -4
- package/dist/components/{p-5S7W_s42.js.map → p-CYj5eGUx.js.map} +1 -1
- package/dist/components/{p-DuPV1DzK.js → p-CcNDN7nL.js} +37 -108
- package/dist/components/{p-ZXZKAhiz.js.map → p-CcNDN7nL.js.map} +1 -1
- package/dist/components/{p-yhRJRzUn.js → p-CeCnJD_t.js} +3 -3
- package/dist/components/{p-yhRJRzUn.js.map → p-CeCnJD_t.js.map} +1 -1
- package/dist/components/{p-DkVyQai5.js → p-Ch0k98MI.js} +8 -8
- package/dist/components/{p-DkVyQai5.js.map → p-Ch0k98MI.js.map} +1 -1
- package/dist/components/{p-sBGx8qre.js → p-Cr_TwfMc.js} +3 -3
- package/dist/components/{p-sBGx8qre.js.map → p-Cr_TwfMc.js.map} +1 -1
- package/dist/components/{p-CJAs00I8.js → p-CsRXWqtl.js} +7 -7
- package/dist/components/{p-CJAs00I8.js.map → p-CsRXWqtl.js.map} +1 -1
- package/dist/components/{p-BHr52dZJ.js → p-DEGiGqSE.js} +5 -5
- package/dist/components/{p-BHr52dZJ.js.map → p-DEGiGqSE.js.map} +1 -1
- package/dist/components/{p-CZRPZKJ-.js → p-DFGwDaxI.js} +4 -4
- package/dist/components/{p-CZRPZKJ-.js.map → p-DFGwDaxI.js.map} +1 -1
- package/dist/components/{p-BzogxNIa.js → p-DIaQ5vRT.js} +3 -3
- package/dist/components/{p-BzogxNIa.js.map → p-DIaQ5vRT.js.map} +1 -1
- package/dist/components/{p-ufmeP0E5.js → p-DQ8HPG_K.js} +11 -11
- package/dist/components/{p-ufmeP0E5.js.map → p-DQ8HPG_K.js.map} +1 -1
- package/dist/components/{p-D5h0nLE5.js → p-DTU4M_6s.js} +8 -8
- package/dist/components/{p-D5h0nLE5.js.map → p-DTU4M_6s.js.map} +1 -1
- package/dist/components/{p-CcPJkDzX.js → p-DTxusuTj.js} +3 -3
- package/dist/components/{p-CcPJkDzX.js.map → p-DTxusuTj.js.map} +1 -1
- package/dist/components/{p-Dx0yXDO_.js → p-DUEwD6QB.js} +6 -6
- package/dist/components/{p-Dx0yXDO_.js.map → p-DUEwD6QB.js.map} +1 -1
- package/dist/components/{p-Bt12179Z.js → p-DXJv_Q_2.js} +4 -4
- package/dist/components/{p-Bt12179Z.js.map → p-DXJv_Q_2.js.map} +1 -1
- package/dist/components/{p-Dvfar-8p.js → p-DYCfNJWj.js} +5 -5
- package/dist/components/{p-Dvfar-8p.js.map → p-DYCfNJWj.js.map} +1 -1
- package/dist/components/{p-B19Afqpk.js → p-DaCqDkRK.js} +17 -17
- package/dist/components/{p-B19Afqpk.js.map → p-DaCqDkRK.js.map} +1 -1
- package/dist/components/{p-F1r0ydKy.js → p-DaIrHgbG.js} +17 -17
- package/dist/components/{p-F1r0ydKy.js.map → p-DaIrHgbG.js.map} +1 -1
- package/dist/components/{p-EGKFhNRS.js → p-DaxSdUIk.js} +3 -3
- package/dist/components/{p-EGKFhNRS.js.map → p-DaxSdUIk.js.map} +1 -1
- package/dist/components/{p-DN1ugCly.js → p-DkisMbeq.js} +3 -3
- package/dist/components/{p-DN1ugCly.js.map → p-DkisMbeq.js.map} +1 -1
- package/dist/components/{p-Baq4FLMS.js → p-DmwNXkXf.js} +3 -3
- package/dist/components/{p-Baq4FLMS.js.map → p-DmwNXkXf.js.map} +1 -1
- package/dist/components/{p-CS4KatwS.js → p-DoZmi5ih.js} +3 -3
- package/dist/components/{p-CS4KatwS.js.map → p-DoZmi5ih.js.map} +1 -1
- package/dist/components/{p-ChfkflWC.js → p-Donkg0LL.js} +3 -3
- package/dist/components/{p-ChfkflWC.js.map → p-Donkg0LL.js.map} +1 -1
- package/dist/components/{p-BuZJtX19.js → p-Dp3EHSUO.js} +3 -3
- package/dist/components/{p-BuZJtX19.js.map → p-Dp3EHSUO.js.map} +1 -1
- package/dist/components/{p-BsV8XOdl.js → p-DpdkqWPQ.js} +20 -20
- package/dist/components/{p-BsV8XOdl.js.map → p-DpdkqWPQ.js.map} +1 -1
- package/dist/components/{p-B2ay8yxa.js → p-DyatyKQQ.js} +3 -3
- package/dist/components/{p-B2ay8yxa.js.map → p-DyatyKQQ.js.map} +1 -1
- package/dist/components/{p-jGwKbBta.js → p-Fr7xN81m.js} +9 -9
- package/dist/components/{p-jGwKbBta.js.map → p-Fr7xN81m.js.map} +1 -1
- package/dist/components/{p-C2YAe0Ke.js → p-Heeo8D4P.js} +128 -59
- package/dist/components/p-Heeo8D4P.js.map +1 -0
- package/dist/components/{p-C_rJguGq.js → p-aEvNkqAt.js} +5 -5
- package/dist/components/{p-C_rJguGq.js.map → p-aEvNkqAt.js.map} +1 -1
- package/dist/components/profile-history.js +1 -1
- package/dist/components/profile-info.js +1 -1
- package/dist/components/profile-media.js +1 -1
- package/dist/components/profile-tabs.js +1 -1
- package/dist/components/quick-message-add-template.js +1 -1
- package/dist/components/quick-message-app.js +6 -6
- package/dist/components/quick-message-app.js.map +1 -1
- package/dist/components/quick-message-file.js +1 -1
- package/dist/components/quick-message-image.js +1 -1
- package/dist/components/quick-message-modal.js +1 -1
- package/dist/components/quick-message-template.js +1 -1
- package/dist/components/search-box.js +1 -1
- package/dist/components/status-badge.js +1 -1
- package/dist/components/summarize-message-section.js +1 -1
- package/dist/components/tag-list.js +1 -1
- package/dist/components/tag-or-status-item.js +1 -1
- package/dist/components/tag-popper.js +1 -1
- package/dist/components/typography-clamp.js +1 -1
- package/dist/components/user-info-section.js +1 -1
- package/dist/components/z-avatar.js +1 -1
- package/dist/components/z-dialog.js +1 -1
- package/dist/esm/autocomplete-address_43.entry.js +165 -96
- package/dist/esm/quick-message-app.entry.js +1 -1
- package/dist/esm/quick-message-app.entry.js.map +1 -1
- package/dist/zignal-stencil-library/p-1a660578.entry.js +2 -0
- package/dist/zignal-stencil-library/{p-cdcb0c65.entry.js.map → p-1a660578.entry.js.map} +1 -1
- package/dist/zignal-stencil-library/{p-3cea211f.entry.js → p-548e9d88.entry.js} +168 -168
- package/dist/zignal-stencil-library/p-548e9d88.entry.js.map +1 -0
- package/dist/zignal-stencil-library/quick-message-app.entry.esm.js.map +1 -1
- package/dist/zignal-stencil-library/zignal-stencil-library.esm.js +1 -1
- package/package.json +3 -3
- package/dist/components/p-C2YAe0Ke.js.map +0 -1
- package/dist/components/p-ZXZKAhiz.js +0 -61
- package/dist/zignal-stencil-library/p-3cea211f.entry.js.map +0 -1
- package/dist/zignal-stencil-library/p-cdcb0c65.entry.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"p-DrW4vKrV.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","showErrorDialog"],"sources":["src/components/quick-message-image/quick-message-image.css?tag=quick-message-image","src/components/quick-message-image/quick-message-image.tsx"],"sourcesContent":[":host {\n position: relative;\n}\n\n.quick-message-image__action-button,\n.quick-message-image__display-switch {\n border: 1px solid rgba(148, 163, 184, 0.4);\n background: transparent;\n}\n\n.quick-message-image__send {\n background: var(--quick-modal-primary);\n color: #fff;\n border: none;\n}\n\n.quick-message-image__thumbnail {\n width: 100%;\n aspect-ratio: 1 / 1;\n border-radius: 0.75rem;\n overflow: hidden;\n background: rgba(148, 163, 184, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.quick-message-image__thumbnail-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.quick-message-image__selection-indicator {\n position: absolute;\n top: 0.4rem;\n left: 0.4rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 0.5rem;\n color: #fff;\n box-shadow: 0 10px 30px rgba(15, 23, 42, 0.18);\n pointer-events: none;\n}\n\n.quick-message-image__grid-item {\n position: relative;\n}\n\n.quick-message-image__more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n border-radius: 9999px;\n background: rgba(15, 23, 42, 0.7);\n color: #fff;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.quick-message-image__more-button:hover {\n opacity: 0.85;\n}\n\n.quick-message-image__list-more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n border-radius: 0.5rem;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n margin-left: auto;\n}\n\n.quick-message-image__list-more-button:hover {\n background: rgba(148, 163, 184, 0.12);\n}\n\n.quick-message-image__menu-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.quick-message-image__menu-wrapper:not(.quick-message-image__menu-wrapper--grid) {\n margin-left: auto;\n}\n\n.quick-message-image__menu-wrapper--grid {\n position: absolute;\n top: 0.4rem;\n right: 0.4rem;\n}\n\n.quick-message-image__menu {\n position: absolute;\n top: calc(100% + 0.35rem);\n right: 0;\n display: flex;\n flex-direction: column;\n min-width: 8rem;\n padding: 0.25rem 0;\n border-radius: 0.75rem;\n border: 1px solid rgba(148, 163, 184, 0.18);\n box-shadow: 0 18px 35px rgba(15, 23, 42, 0.22);\n z-index: 40;\n overflow: hidden;\n}\n\n.quick-message-image__menu--list {\n top: calc(100% + 0.5rem);\n}\n\n.quick-message-image__menu-item {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: flex-start;\n gap: 0.5rem;\n padding: 0.5rem 0.9rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: 0.8125rem;\n line-height: 1.2;\n cursor: pointer;\n text-align: left;\n transition: background-color 0.2s ease;\n}\n\n.quick-message-image__menu-item:hover {\n background: rgba(148, 163, 184, 0.14);\n}\n\n.quick-message-image__menu-item--danger {\n color: #ef4444;\n}\n\n.quick-message-image__menu-item--danger:hover {\n background: rgba(239, 68, 68, 0.12);\n}\n\n.quick-message-image__rename-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(15, 23, 42, 0.45);\n padding: 1.5rem;\n z-index: 20;\n}\n\n.quick-message-image__rename-modal {\n width: 100%;\n max-width: 22rem;\n border-radius: 0.75rem;\n box-shadow: 0 20px 45px rgba(15, 23, 42, 0.25);\n padding: 1.5rem;\n}\n\n.quick-message-image__rename-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n}\n\n.quick-message-image__rename-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: inherit;\n border-radius: 0.5rem;\n padding: 0.25rem;\n cursor: pointer;\n}\n\n.quick-message-image__rename-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.quick-message-image__rename-cancel,\n.quick-message-image__rename-save {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n padding: 0.35rem 0.9rem;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.quick-message-image__rename-cancel {\n background: transparent;\n color: inherit;\n border: 1px solid rgba(148, 163, 184, 0.4);\n}\n\n.quick-message-image__rename-save {\n background: var(--quick-modal-primary);\n color: #fff;\n}\n\n.quick-message-image__rename-save:disabled,\n.quick-message-image__rename-cancel:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.quick-message-image__rename-input-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.35rem 0.75rem;\n border-radius: 0.75rem;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.quick-message-image__rename-input-row:focus-within {\n border-color: var(--quick-modal-primary);\n box-shadow: 0 0 0 1px var(--quick-modal-primary);\n}\n\n.quick-message-image__rename-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.35rem 0;\n font-size: 0.875rem;\n color: inherit;\n}\n\n.quick-message-image__rename-input:focus {\n outline: none;\n}\n\n.quick-message-image__rename-extension {\n font-size: 0.875rem;\n font-weight: 500;\n color: inherit;\n opacity: 0.75;\n white-space: nowrap;\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport dayjs from 'dayjs';\nimport { createQuickMessageLibraryFiles, deleteQuickMessageLibraryFile, getQuickMessageLibraryFiles, updateQuickMessageLibraryFileName } from '../../api/quick-message';\nimport type { QuickMessageLibraryFilePayload } from '../../api/type';\nimport { QuickMessageLibraryFile } from '../../store/type';\nimport { configStore } from '../../store/store';\nimport { useTranslation } from '../../utils/utils';\nimport { Icon } from '../internal-component/icon';\nimport { uploadFile } from '../../utils/upload';\nimport { DIALOG_TYPE, handleError as showErrorDialog, openDialog } from '../../store/dialog';\n\n@Component({\n tag: 'quick-message-image',\n styleUrl: 'quick-message-image.css',\n})\nexport class QuickMessageImageComponent {\n @Prop() handleClose?: () => void;\n @Prop() value?: string | QuickMessageLibraryFile[];\n @Prop() isMaster: boolean = false;\n\n @State() private searchImage = '';\n @State() private images: QuickMessageLibraryFile[] = [];\n @State() private imageDisplayMode: 'grid' | 'list' = 'grid';\n @State() private isLoading = false;\n @State() private isLoadingMore = false;\n @State() private isUploading = false;\n @State() private isDeleting = false;\n @State() private totalImages = 0;\n @State() private totalPages = 0;\n @State() private renameTargetId: string | null = null;\n @State() private renameName = '';\n @State() private renameExtension = '';\n @State() private isRenaming = false;\n @State() private openMenuId: string | null = null;\n\n private readonly pageSize = 15;\n private readonly localUploadPrefix = 'uploaded-image-';\n private page = 1;\n private currentSearch = '';\n\n private fileInput?: HTMLInputElement;\n @Event({ bubbles: true, composed: true }) imagesChange!: EventEmitter<QuickMessageLibraryFile[]>;\n @Event({ bubbles: true, composed: true }) sendImages!: EventEmitter<QuickMessageLibraryFile[]>;\n\n private pendingDeleteImageIds: string[] = [];\n\n // Memoization cache for filtered images\n private cachedFilteredImages: QuickMessageLibraryFile[] | null = null;\n private cachedSearchTerm: string = '';\n private cachedImagesLength: number = 0;\n\n @Listen('click', { target: 'document' })\n protected handleDocumentClick(event: Event) {\n const target = event.target as HTMLElement | null;\n\n if (target?.closest('[data-quick-message-image-menu-root]')) {\n return;\n }\n\n this.openMenuId = null;\n }\n\n componentWillLoad() {\n this.syncImagesFromProp(this.value);\n }\n\n async componentDidLoad() {\n await this.fetchImages({ reset: true });\n }\n\n @Watch('value')\n protected handleValueChange(newValue?: string | QuickMessageLibraryFile[]) {\n this.syncImagesFromProp(newValue);\n }\n\n private syncImagesFromProp(value?: string | QuickMessageLibraryFile[]) {\n if (value === undefined || value === null) {\n this.setImages([], false);\n return;\n }\n\n const parsed = this.parseImagesValue(value);\n this.setImages(parsed, false);\n }\n\n private parseImagesValue(value: string | QuickMessageLibraryFile[]): QuickMessageLibraryFile[] {\n if (typeof value === 'string') {\n try {\n const deserialized = JSON.parse(value) as QuickMessageLibraryFile[];\n return this.cloneImages(deserialized);\n } catch (error: unknown) {\n console.warn('[quick-message-image] Failed to parse images value', error);\n return [];\n }\n }\n\n return this.cloneImages(value);\n }\n\n private cloneImages(images: QuickMessageLibraryFile[]): QuickMessageLibraryFile[] {\n return (images || []).map(image => ({\n ...image,\n isSelected: image.isSelected ?? false,\n }));\n }\n\n private setImages(next: QuickMessageLibraryFile[], shouldEmit = true) {\n this.images = next;\n if (shouldEmit) {\n const payload = this.cloneImages(next);\n this.imagesChange.emit(payload);\n }\n }\n\n private isLocalUpload(image: QuickMessageLibraryFile): boolean {\n return image.id.startsWith(this.localUploadPrefix);\n }\n\n private getRemoteImageCount(): number {\n return this.images.filter(image => !this.isLocalUpload(image)).length;\n }\n\n private mergeFetchedImages(fetched: QuickMessageLibraryFile[], reset: boolean): QuickMessageLibraryFile[] {\n const localUploads = this.images.filter(image => this.isLocalUpload(image));\n const selectionMap = new Map(this.images.map(image => [image.id, image.isSelected ?? false]));\n\n const normalizedFetched = fetched.map(image => ({\n ...image,\n isSelected: selectionMap.get(image.id) ?? image.isSelected ?? false,\n }));\n\n if (reset) {\n return [...localUploads, ...normalizedFetched];\n }\n\n const existingRemote = this.images.filter(image => !this.isLocalUpload(image));\n const remoteIndexMap = new Map<string, number>();\n existingRemote.forEach((image, index) => {\n remoteIndexMap.set(image.id, index);\n });\n\n const nextRemote = [...existingRemote];\n normalizedFetched.forEach(image => {\n const existingIndex = remoteIndexMap.get(image.id);\n if (existingIndex !== undefined) {\n nextRemote[existingIndex] = image;\n } else {\n remoteIndexMap.set(image.id, nextRemote.length);\n nextRemote.push(image);\n }\n });\n\n return [...localUploads, ...nextRemote];\n }\n\n /**\n * Memoized image filtering - only recalculates when search term or images change\n * Performance: Reduces operations from 60fps to only when user types\n */\n private filterImages(): QuickMessageLibraryFile[] {\n const search = this.searchImage.trim().toLowerCase();\n\n // Quick return for no search\n if (!search) return this.images;\n\n // Check if we can use cached results\n if (this.cachedFilteredImages && search === this.cachedSearchTerm && this.images.length === this.cachedImagesLength) {\n return this.cachedFilteredImages;\n }\n\n // Recalculate filtered results\n const filtered = this.images.filter(image => image.name.toLowerCase().includes(search));\n\n // Update cache\n this.cachedFilteredImages = filtered;\n this.cachedSearchTerm = search;\n this.cachedImagesLength = this.images.length;\n\n return filtered;\n }\n\n private splitFileName(name: string): { base: string; extension: string } {\n const lastDotIndex = name.lastIndexOf('.');\n if (lastDotIndex <= 0 || lastDotIndex === name.length - 1) {\n return { base: name, extension: '' };\n }\n\n return {\n base: name.slice(0, lastDotIndex),\n extension: name.slice(lastDotIndex),\n };\n }\n\n private getRenameTarget(): QuickMessageLibraryFile | undefined {\n if (!this.renameTargetId) {\n return undefined;\n }\n\n return this.images.find(image => image.id === this.renameTargetId);\n }\n\n private openRenameModal(image: QuickMessageLibraryFile, event?: Event) {\n event?.preventDefault();\n event?.stopPropagation();\n\n const { base, extension } = this.splitFileName(image.name);\n this.renameTargetId = image.id;\n this.renameName = base;\n this.renameExtension = extension;\n }\n\n private closeRenameModal(force = false) {\n if (this.isRenaming && !force) {\n return;\n }\n\n this.renameTargetId = null;\n this.renameName = '';\n this.renameExtension = '';\n }\n\n private toggleMenu(imageId: string, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.openMenuId = this.openMenuId === imageId ? null : imageId;\n }\n\n private closeMenu() {\n this.openMenuId = null;\n }\n\n private handleMenuRename(image: QuickMessageLibraryFile, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.closeMenu();\n this.openRenameModal(image, event);\n }\n\n private requestDeleteImage(image: QuickMessageLibraryFile, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDeleting) {\n return;\n }\n\n this.pendingDeleteImageIds = [image.id];\n this.closeMenu();\n\n const t = useTranslation();\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title: t('quick_message.delete_item_confirmation'),\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n void this.confirmDeleteSelectedImages();\n },\n onCloseDialog: () => {\n this.pendingDeleteImageIds = [];\n },\n });\n }\n\n private handleRenameInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n\n if (this.renameExtension && value.toLowerCase().endsWith(this.renameExtension.toLowerCase())) {\n this.renameName = value.slice(0, -this.renameExtension.length);\n return;\n }\n\n this.renameName = value;\n }\n\n private async handleRenameSubmit(event: Event) {\n event.preventDefault();\n\n const target = this.getRenameTarget();\n\n if (!target) {\n return;\n }\n\n const trimmedBase = this.renameName.trim();\n\n if (!trimmedBase) {\n return;\n }\n\n const nextName = this.renameExtension ? `${trimmedBase}${this.renameExtension}` : trimmedBase;\n\n if (nextName === target.name) {\n this.closeRenameModal(true);\n return;\n }\n\n if (this.isLocalUpload(target)) {\n this.setImages(\n this.images.map(image =>\n image.id === target.id\n ? {\n ...image,\n name: nextName,\n }\n : image,\n ),\n );\n\n this.closeRenameModal(true);\n return;\n }\n\n this.isRenaming = true;\n\n try {\n const updated = await updateQuickMessageLibraryFileName({ id: target.id, name: nextName });\n this.setImages(\n this.images.map(image =>\n image.id === target.id\n ? {\n ...image,\n name: updated.name,\n last_updated_at: updated.last_updated_at,\n last_updated_by: updated.last_updated_by,\n }\n : image,\n ),\n );\n this.closeRenameModal(true);\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to rename image');\n } finally {\n this.isRenaming = false;\n }\n }\n\n private toggleImageSelection(id: string) {\n this.setImages(this.images.map(image => (image.id === id ? { ...image, isSelected: !image.isSelected } : image)));\n }\n\n private toggleSelectAllImages() {\n const isAllSelected = this.images.length > 0 && this.images.every(image => image.isSelected);\n this.setImages(this.images.map(image => ({ ...image, isSelected: !isAllSelected })));\n }\n\n private triggerImageUpload() {\n this.fileInput?.click();\n }\n\n private handleImageSelection(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const files = Array.from(input.files);\n input.value = '';\n\n void this.uploadAndCreateImages(files);\n }\n\n private async uploadAndCreateImages(files: File[]) {\n if (files.length === 0) {\n return;\n }\n\n this.isUploading = true;\n\n try {\n const payload: QuickMessageLibraryFilePayload[] = [];\n\n for (const file of files) {\n const uploadUrl = await uploadFile({\n file,\n filename: file.name.replaceAll(' ', '-'),\n folder: 'zignal/quick-message-library/image',\n });\n\n if (!uploadUrl) {\n continue;\n }\n\n payload.push({\n file_type: 'image',\n name: file.name,\n url: uploadUrl,\n size: file.size,\n });\n }\n\n if (payload.length > 0) {\n await createQuickMessageLibraryFiles({ files: payload });\n await this.fetchImages({ reset: true });\n }\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to upload image');\n } finally {\n this.isUploading = false;\n }\n }\n\n private renderFileMeta(size: number, createdAt: string, t: (key: string, values?: Record<string, string>) => string) {\n const sizeKb = Math.round(size / 1024);\n return `${sizeKb} KB · ${t('quick_message.created_at').replace('{date}', dayjs(createdAt).tz().format('DD/MM/YYYY HH:mm'))}`;\n }\n\n private handleSendImages() {\n const selected = this.images.filter(image => image.isSelected);\n if (selected.length === 0) return;\n const payload = this.cloneImages(selected);\n this.sendImages.emit(payload);\n this.handleClose?.();\n }\n\n private requestDeleteSelectedImages() {\n if (this.isDeleting) {\n return;\n }\n\n const selectedIds = this.images.filter(image => image.isSelected).map(image => image.id);\n\n if (selectedIds.length === 0) {\n return;\n }\n\n this.pendingDeleteImageIds = selectedIds;\n\n const t = useTranslation();\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title: t('quick_message.delete_selected_items_confirmation'),\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n void this.confirmDeleteSelectedImages();\n },\n onCloseDialog: () => {\n this.pendingDeleteImageIds = [];\n },\n });\n }\n\n private async confirmDeleteSelectedImages() {\n if (this.isDeleting) {\n return;\n }\n\n const pendingIds = [...this.pendingDeleteImageIds];\n this.pendingDeleteImageIds = [];\n\n if (pendingIds.length === 0) {\n return;\n }\n\n const pendingSet = new Set(pendingIds);\n const remoteIds = this.images.filter(image => pendingSet.has(image.id) && !this.isLocalUpload(image)).map(image => image.id);\n\n this.isDeleting = true;\n\n try {\n if (remoteIds.length > 0) {\n await deleteQuickMessageLibraryFile({ ids: remoteIds });\n }\n\n const remaining = this.images.filter(image => !pendingSet.has(image.id));\n this.setImages(remaining);\n\n if (remoteIds.length > 0) {\n this.totalImages = Math.max(0, this.totalImages - remoteIds.length);\n await this.fetchImages({ reset: true });\n }\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to delete images');\n } finally {\n this.isDeleting = false;\n }\n }\n\n private async fetchImages({ search, reset = true }: { search?: string; reset?: boolean } = {}) {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n if (!businessId || !shopId) {\n return;\n }\n\n if (reset ? this.isLoading : this.isLoadingMore) {\n return;\n }\n\n const searchSource = search !== undefined ? search : reset ? this.searchImage : this.currentSearch;\n const trimmedSearch = searchSource?.trim() ?? '';\n const nextPage = reset ? 1 : this.page + 1;\n\n if (search !== undefined) {\n this.searchImage = searchSource ?? '';\n }\n\n if (reset) {\n this.isLoading = true;\n } else {\n this.isLoadingMore = true;\n }\n\n try {\n const response = await getQuickMessageLibraryFiles({\n fileType: 'image',\n search: trimmedSearch ? trimmedSearch : undefined,\n page: nextPage,\n limit: this.pageSize,\n });\n\n const fetched = this.cloneImages(response.files || []);\n const merged = this.mergeFetchedImages(fetched, reset);\n\n this.page = response.page > 0 ? response.page : nextPage;\n const resolvedTotalPages = response.total_pages > 0 ? response.total_pages : fetched.length > 0 ? 1 : 0;\n this.totalPages = resolvedTotalPages;\n this.totalImages = typeof response.total === 'number' ? response.total : fetched.length;\n this.currentSearch = trimmedSearch;\n\n this.setImages(merged);\n } catch (error: unknown) {\n console.error('[quick-message-image] Failed to fetch images', error);\n } finally {\n if (reset) {\n this.isLoading = false;\n } else {\n this.isLoadingMore = false;\n }\n }\n }\n\n private async loadMoreImages() {\n if (this.isLoading || this.isLoadingMore) {\n return;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return;\n }\n\n if (this.totalImages > 0) {\n const remoteCount = this.getRemoteImageCount();\n if (remoteCount >= this.totalImages) {\n return;\n }\n }\n\n await this.fetchImages({ reset: false });\n }\n\n private handleScroll(event: Event) {\n const target = event.target as HTMLElement | null;\n if (!target) {\n return;\n }\n\n const remaining = target.scrollHeight - target.scrollTop - target.clientHeight;\n if (remaining < 160) {\n void this.loadMoreImages();\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchImage = value;\n\n if (!value.trim() && this.currentSearch && !this.isLoading && !this.isLoadingMore) {\n void this.fetchImages({ search: '', reset: true });\n }\n }\n\n private async handleSearchSubmit(event?: Event) {\n event?.preventDefault();\n await this.fetchImages({ search: this.searchImage, reset: true });\n }\n\n private clearSearch() {\n if (!this.searchImage) {\n return;\n }\n\n this.searchImage = '';\n if (this.currentSearch) {\n void this.fetchImages({ search: '', reset: true });\n }\n }\n\n private renderRenameModal(theme: string, labels: { renameLabel: string; nameLabel: string; saveLabel: string; cancelLabel: string; closeLabel: string }) {\n const target = this.getRenameTarget();\n\n if (!this.renameTargetId || !target) {\n return null;\n }\n\n const trimmedBase = this.renameName.trim();\n const nextName = this.renameExtension ? `${trimmedBase}${this.renameExtension}` : trimmedBase;\n const isSaveDisabled = this.isRenaming || trimmedBase.length === 0 || nextName === target.name;\n const inputId = `quick-message-image-rename-${target.id}`;\n\n return (\n <div class=\"quick-message-image__rename-overlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"quick-message-image-rename-title\" onClick={() => this.closeRenameModal()}>\n <div class={`quick-message-image__rename-modal z-background-${theme} z-text-${theme}`} onClick={event => event.stopPropagation()}>\n <div class=\"quick-message-image__rename-header\">\n <h3 id=\"quick-message-image-rename-title\" class=\"text-base font-semibold\">\n {labels.renameLabel}\n </h3>\n <button type=\"button\" class=\"quick-message-image__rename-close\" onClick={() => this.closeRenameModal()} aria-label={labels.closeLabel} disabled={this.isRenaming}>\n <Icon name=\"X\" />\n </button>\n </div>\n <form class=\"flex flex-col gap-4\" onSubmit={event => this.handleRenameSubmit(event)}>\n <label class=\"flex flex-col gap-2 text-sm\" htmlFor={inputId}>\n <span class=\"font-medium\">{labels.nameLabel}</span>\n <div class={`quick-message-image__rename-input-row border z-border-divider-${theme} z-background-${theme}`}>\n <input\n id={inputId}\n type=\"text\"\n class={`quick-message-image__rename-input z-text-${theme}`}\n value={this.renameName}\n onInput={event => this.handleRenameInput(event)}\n />\n {this.renameExtension && <span class=\"quick-message-image__rename-extension\">{this.renameExtension}</span>}\n </div>\n </label>\n <div class=\"flex justify-end gap-2 text-sm\">\n <button type=\"button\" class=\"quick-message-image__rename-cancel\" onClick={() => this.closeRenameModal()} disabled={this.isRenaming}>\n {labels.cancelLabel}\n </button>\n <button type=\"submit\" class=\"quick-message-image__rename-save\" disabled={isSaveDisabled}>\n {this.isRenaming ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : labels.saveLabel}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n }\n\n render() {\n const theme = configStore.get('theme');\n const t = useTranslation();\n const filteredImages = this.filterImages();\n const hasSelection = this.images.some(image => image.isSelected);\n const isInitialLoading = this.isLoading && this.images.length === 0;\n const renameLabel = t('quick_message.rename_item');\n const deleteLabel = t('remove');\n const nameLabel = t('quick_message.name');\n const saveLabel = t('save');\n const cancelLabel = t('cancel');\n const closeLabel = t('close');\n\n return (\n <Host class=\"flex min-h-0 flex-1 flex-col gap-4\">\n <form class=\"w-full\" onSubmit={event => this.handleSearchSubmit(event)}>\n <div class=\"relative\">\n <input\n type=\"text\"\n class={`w-full border z-border-divider-${theme} text-sm px-4 py-2 pr-9 rounded-lg ring-primary focus:outline-none focus:border-primary z-background-${theme} z-text-${theme}`}\n placeholder={t('quick_message.search_image')}\n value={this.searchImage}\n onInput={event => this.handleSearchInput(event)}\n />\n {this.searchImage && (\n <button\n type=\"button\"\n class=\"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-gray-400 hover:text-gray-600\"\n onClick={() => this.clearSearch()}\n aria-label={t('clear') || 'Clear'}\n >\n <Icon name=\"X\" />\n </button>\n )}\n </div>\n </form>\n\n <div class=\"flex items-center justify-between\">\n {this.images.length > 0 ? (\n <label class=\"inline-flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" checked={this.images.length > 0 && this.images.every(image => image.isSelected)} onChange={() => this.toggleSelectAllImages()} />\n <span>{t('select_all')}</span>\n </label>\n ) : (\n <span />\n )}\n <div class=\"flex items-center gap-2\">\n <input\n class=\"hidden\"\n type=\"file\"\n accept=\"image/*\"\n multiple\n ref={el => (this.fileInput = el as HTMLInputElement)}\n onChange={event => this.handleImageSelection(event)}\n />\n <button\n type=\"button\"\n class=\"quick-message-image__action-button inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer\"\n onClick={() => !this.isUploading && this.triggerImageUpload()}\n aria-label={t('quick_message.add_image')}\n disabled={this.isUploading}\n >\n {this.isUploading ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : <Icon name=\"Plus\" />}\n </button>\n {this.images.length > 0 && (\n <button\n class=\"quick-message-image__action-button quick-message-image__display-switch inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer\"\n type=\"button\"\n onClick={() => (this.imageDisplayMode = this.imageDisplayMode === 'grid' ? 'list' : 'grid')}\n aria-label={this.imageDisplayMode === 'grid' ? t('quick_message.display_list') : t('quick_message.display_grid')}\n >\n <Icon name={this.imageDisplayMode === 'grid' ? 'List' : 'Grid'} />\n </button>\n )}\n </div>\n </div>\n\n {this.isUploading && (\n <div class={`flex items-center gap-2 text-xs z-text-primary-${theme}`}>\n <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" />\n <span>{t('quick_message.uploading') || 'Uploading...'}</span>\n </div>\n )}\n\n {isInitialLoading ? (\n <div class={`flex flex-1 items-center justify-center text-sm z-text-gray-${theme}`}>Loading...</div>\n ) : filteredImages.length === 0 ? (\n <div class={`flex flex-1 items-center justify-center text-sm z-text-gray-${theme}`}>{t('quick_message.image_empty')}</div>\n ) : this.imageDisplayMode === 'grid' ? (\n <div\n class=\"grid flex-1 grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 auto-rows-auto items-start content-start gap-3 overflow-y-auto\"\n onScroll={event => this.handleScroll(event)}\n >\n {filteredImages.map(image => (\n <div class=\"quick-message-image__grid-item\" key={image.id}>\n <button\n type=\"button\"\n class={`flex w-full flex-col items-center gap-2 rounded-xl border border-transparent z-background-${theme} p-1.5 cursor-pointer ${image.isSelected ? `z-border-primary-${theme}` : ''}`}\n onClick={() => this.toggleImageSelection(image.id)}\n >\n <div class=\"quick-message-image__thumbnail\">\n {image.isSelected && (\n <span class={`quick-message-image__selection-indicator z-background-primary-${theme}`} aria-hidden=\"true\">\n <Icon name=\"Check\" addClass=\"size-3 text-white\" />\n </span>\n )}\n <img src={image.url} alt={image.name} class=\"quick-message-image__thumbnail-image\" loading=\"lazy\" />\n </div>\n <div class={`text-center text-xs line-clamp-2 z-text-gray-${theme}`}>{image.name}</div>\n </button>\n <div class=\"quick-message-image__menu-wrapper quick-message-image__menu-wrapper--grid\" data-quick-message-image-menu-root=\"\">\n <button\n type=\"button\"\n class=\"quick-message-image__more-button\"\n onClick={event => this.toggleMenu(image.id, event)}\n aria-haspopup=\"menu\"\n aria-expanded={this.openMenuId === image.id ? 'true' : 'false'}\n aria-label={renameLabel}\n data-quick-message-image-menu-root=\"\"\n >\n <Icon name=\"MoreVertical\" addClass=\"size-4\" />\n </button>\n {this.openMenuId === image.id && (\n <div class={`quick-message-image__menu z-background-${theme} z-text-${theme}`} role=\"menu\" data-quick-message-image-menu-root=\"\">\n <button type=\"button\" class=\"quick-message-image__menu-item\" role=\"menuitem\" onClick={event => this.handleMenuRename(image, event)}>\n {renameLabel}\n </button>\n <button\n type=\"button\"\n class=\"quick-message-image__menu-item quick-message-image__menu-item--danger\"\n role=\"menuitem\"\n onClick={event => this.requestDeleteImage(image, event)}\n >\n {deleteLabel}\n </button>\n </div>\n )}\n </div>\n </div>\n ))}\n {this.isLoadingMore && <div class={`col-span-full py-3 text-center text-xs z-text-gray-${theme}`}>Loading...</div>}\n </div>\n ) : (\n <div class=\"flex flex-1 flex-col gap-2.5 overflow-y-auto\" onScroll={event => this.handleScroll(event)}>\n {filteredImages.map(image => (\n <label class={`flex items-center gap-3 rounded-xl z-background-${theme} px-3 py-2.5`} key={image.id}>\n <input type=\"checkbox\" checked={!!image.isSelected} onChange={() => this.toggleImageSelection(image.id)} />\n <img src={image.url} alt={image.name} class=\"h-16 w-16 rounded-xl object-cover\" loading=\"lazy\" />\n <div class=\"flex flex-1 items-center gap-3 min-w-0\">\n <div class={`flex min-w-0 flex-col gap-1 z-text-gray-${theme}`}>\n <div class=\"text-sm font-medium line-clamp-2 break-words\">{image.name}</div>\n <div class={`text-xs z-text-gray-${theme}`}>{this.renderFileMeta(image.size, image.created_at, t)}</div>\n </div>\n <div class=\"quick-message-image__menu-wrapper\" data-quick-message-image-menu-root=\"\">\n <button\n type=\"button\"\n class=\"quick-message-image__list-more-button\"\n onClick={event => this.toggleMenu(image.id, event)}\n aria-haspopup=\"menu\"\n aria-expanded={this.openMenuId === image.id ? 'true' : 'false'}\n aria-label={renameLabel}\n data-quick-message-image-menu-root=\"\"\n >\n <Icon name=\"MoreVertical\" addClass=\"size-4\" />\n </button>\n {this.openMenuId === image.id && (\n <div\n class={`quick-message-image__menu quick-message-image__menu--list z-background-${theme} z-text-${theme}`}\n role=\"menu\"\n data-quick-message-image-menu-root=\"\"\n >\n <button type=\"button\" class=\"quick-message-image__menu-item\" role=\"menuitem\" onClick={event => this.handleMenuRename(image, event)}>\n {renameLabel}\n </button>\n <button\n type=\"button\"\n class=\"quick-message-image__menu-item quick-message-image__menu-item--danger\"\n role=\"menuitem\"\n onClick={event => this.requestDeleteImage(image, event)}\n >\n {deleteLabel}\n </button>\n </div>\n )}\n </div>\n </div>\n </label>\n ))}\n {this.isLoadingMore && <div class={`py-3 text-center text-xs z-text-gray-${theme}`}>Loading...</div>}\n </div>\n )}\n\n <div class={`mt-auto flex items-center gap-2 pt-2 z-text-gray-${theme}`}>\n {hasSelection && (\n <button\n type=\"button\"\n class={`quick-message-image__action-button inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer disabled:cursor-not-allowed disabled:opacity-40`}\n onClick={() => this.requestDeleteSelectedImages()}\n aria-label={t('remove')}\n disabled={this.isDeleting}\n >\n {this.isDeleting ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : <Icon name=\"Trash2\" />}\n </button>\n )}\n {!this.isMaster && (\n <button\n type=\"button\"\n disabled={!hasSelection}\n class={`quick-message-image__send ml-auto inline-flex items-center justify-center rounded-full px-4 py-2 text-xs font-semibold z-background-primary-${theme} text-white disabled:cursor-not-allowed disabled:opacity-40 cursor-pointer`}\n onClick={() => this.handleSendImages()}\n >\n {t('quick_message.send_images')}\n </button>\n )}\n </div>\n {this.renderRenameModal(theme, { renameLabel, nameLabel, saveLabel, cancelLabel, closeLabel })}\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"p-BypBSjsX.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement","showErrorDialog"],"sources":["src/components/quick-message-image/quick-message-image.css?tag=quick-message-image","src/components/quick-message-image/quick-message-image.tsx"],"sourcesContent":[":host {\n position: relative;\n}\n\n.quick-message-image__action-button,\n.quick-message-image__display-switch {\n border: 1px solid rgba(148, 163, 184, 0.4);\n background: transparent;\n}\n\n.quick-message-image__send {\n background: var(--quick-modal-primary);\n color: #fff;\n border: none;\n}\n\n.quick-message-image__thumbnail {\n width: 100%;\n aspect-ratio: 1 / 1;\n border-radius: 0.75rem;\n overflow: hidden;\n background: rgba(148, 163, 184, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n}\n\n.quick-message-image__thumbnail-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.quick-message-image__selection-indicator {\n position: absolute;\n top: 0.4rem;\n left: 0.4rem;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 0.5rem;\n color: #fff;\n box-shadow: 0 10px 30px rgba(15, 23, 42, 0.18);\n pointer-events: none;\n}\n\n.quick-message-image__grid-item {\n position: relative;\n}\n\n.quick-message-image__more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n border-radius: 9999px;\n background: rgba(15, 23, 42, 0.7);\n color: #fff;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.quick-message-image__more-button:hover {\n opacity: 0.85;\n}\n\n.quick-message-image__list-more-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0.25rem;\n border-radius: 0.5rem;\n border: none;\n background: transparent;\n color: inherit;\n cursor: pointer;\n margin-left: auto;\n}\n\n.quick-message-image__list-more-button:hover {\n background: rgba(148, 163, 184, 0.12);\n}\n\n.quick-message-image__menu-wrapper {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.quick-message-image__menu-wrapper:not(.quick-message-image__menu-wrapper--grid) {\n margin-left: auto;\n}\n\n.quick-message-image__menu-wrapper--grid {\n position: absolute;\n top: 0.4rem;\n right: 0.4rem;\n}\n\n.quick-message-image__menu {\n position: absolute;\n top: calc(100% + 0.35rem);\n right: 0;\n display: flex;\n flex-direction: column;\n min-width: 8rem;\n padding: 0.25rem 0;\n border-radius: 0.75rem;\n border: 1px solid rgba(148, 163, 184, 0.18);\n box-shadow: 0 18px 35px rgba(15, 23, 42, 0.22);\n z-index: 40;\n overflow: hidden;\n}\n\n.quick-message-image__menu--list {\n top: calc(100% + 0.5rem);\n}\n\n.quick-message-image__menu-item {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: flex-start;\n gap: 0.5rem;\n padding: 0.5rem 0.9rem;\n border: none;\n background: transparent;\n color: inherit;\n font-size: 0.8125rem;\n line-height: 1.2;\n cursor: pointer;\n text-align: left;\n transition: background-color 0.2s ease;\n}\n\n.quick-message-image__menu-item:hover {\n background: rgba(148, 163, 184, 0.14);\n}\n\n.quick-message-image__menu-item--danger {\n color: #ef4444;\n}\n\n.quick-message-image__menu-item--danger:hover {\n background: rgba(239, 68, 68, 0.12);\n}\n\n.quick-message-image__rename-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background: rgba(15, 23, 42, 0.45);\n padding: 1.5rem;\n z-index: 20;\n}\n\n.quick-message-image__rename-modal {\n width: 100%;\n max-width: 22rem;\n border-radius: 0.75rem;\n box-shadow: 0 20px 45px rgba(15, 23, 42, 0.25);\n padding: 1.5rem;\n}\n\n.quick-message-image__rename-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 1rem;\n}\n\n.quick-message-image__rename-close {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: transparent;\n color: inherit;\n border-radius: 0.5rem;\n padding: 0.25rem;\n cursor: pointer;\n}\n\n.quick-message-image__rename-close:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.quick-message-image__rename-cancel,\n.quick-message-image__rename-save {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 9999px;\n padding: 0.35rem 0.9rem;\n border: none;\n cursor: pointer;\n transition: opacity 0.2s ease;\n}\n\n.quick-message-image__rename-cancel {\n background: transparent;\n color: inherit;\n border: 1px solid rgba(148, 163, 184, 0.4);\n}\n\n.quick-message-image__rename-save {\n background: var(--quick-modal-primary);\n color: #fff;\n}\n\n.quick-message-image__rename-save:disabled,\n.quick-message-image__rename-cancel:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n.quick-message-image__rename-input-row {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n padding: 0.35rem 0.75rem;\n border-radius: 0.75rem;\n transition:\n border-color 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.quick-message-image__rename-input-row:focus-within {\n border-color: var(--quick-modal-primary);\n box-shadow: 0 0 0 1px var(--quick-modal-primary);\n}\n\n.quick-message-image__rename-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 0.35rem 0;\n font-size: 0.875rem;\n color: inherit;\n}\n\n.quick-message-image__rename-input:focus {\n outline: none;\n}\n\n.quick-message-image__rename-extension {\n font-size: 0.875rem;\n font-weight: 500;\n color: inherit;\n opacity: 0.75;\n white-space: nowrap;\n}\n","import { Component, Event, EventEmitter, Host, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport dayjs from 'dayjs';\nimport { createQuickMessageLibraryFiles, deleteQuickMessageLibraryFile, getQuickMessageLibraryFiles, updateQuickMessageLibraryFileName } from '../../api/quick-message';\nimport type { QuickMessageLibraryFilePayload } from '../../api/type';\nimport { QuickMessageLibraryFile } from '../../store/type';\nimport { configStore } from '../../store/store';\nimport { useTranslation } from '../../utils/utils';\nimport { Icon } from '../internal-component/icon';\nimport { uploadFile } from '../../utils/upload';\nimport { DIALOG_TYPE, handleError as showErrorDialog, openDialog } from '../../store/dialog';\n\n@Component({\n tag: 'quick-message-image',\n styleUrl: 'quick-message-image.css',\n})\nexport class QuickMessageImageComponent {\n @Prop() handleClose?: () => void;\n @Prop() value?: string | QuickMessageLibraryFile[];\n @Prop() isMaster: boolean = false;\n\n @State() private searchImage = '';\n @State() private images: QuickMessageLibraryFile[] = [];\n @State() private imageDisplayMode: 'grid' | 'list' = 'grid';\n @State() private isLoading = false;\n @State() private isLoadingMore = false;\n @State() private isUploading = false;\n @State() private isDeleting = false;\n @State() private totalImages = 0;\n @State() private totalPages = 0;\n @State() private renameTargetId: string | null = null;\n @State() private renameName = '';\n @State() private renameExtension = '';\n @State() private isRenaming = false;\n @State() private openMenuId: string | null = null;\n\n private readonly pageSize = 15;\n private readonly localUploadPrefix = 'uploaded-image-';\n private page = 1;\n private currentSearch = '';\n\n private fileInput?: HTMLInputElement;\n @Event({ bubbles: true, composed: true }) imagesChange!: EventEmitter<QuickMessageLibraryFile[]>;\n @Event({ bubbles: true, composed: true }) sendImages!: EventEmitter<QuickMessageLibraryFile[]>;\n\n private pendingDeleteImageIds: string[] = [];\n\n // Memoization cache for filtered images\n private cachedFilteredImages: QuickMessageLibraryFile[] | null = null;\n private cachedSearchTerm: string = '';\n private cachedImagesLength: number = 0;\n\n @Listen('click', { target: 'document' })\n protected handleDocumentClick(event: Event) {\n const target = event.target as HTMLElement | null;\n\n if (target?.closest('[data-quick-message-image-menu-root]')) {\n return;\n }\n\n this.openMenuId = null;\n }\n\n componentWillLoad() {\n this.syncImagesFromProp(this.value);\n }\n\n async componentDidLoad() {\n await this.fetchImages({ reset: true });\n }\n\n @Watch('value')\n protected handleValueChange(newValue?: string | QuickMessageLibraryFile[]) {\n this.syncImagesFromProp(newValue);\n }\n\n private syncImagesFromProp(value?: string | QuickMessageLibraryFile[]) {\n if (value === undefined || value === null) {\n this.setImages([], false);\n return;\n }\n\n const parsed = this.parseImagesValue(value);\n this.setImages(parsed, false);\n }\n\n private parseImagesValue(value: string | QuickMessageLibraryFile[]): QuickMessageLibraryFile[] {\n if (typeof value === 'string') {\n try {\n const deserialized = JSON.parse(value) as QuickMessageLibraryFile[];\n return this.cloneImages(deserialized);\n } catch (error: unknown) {\n console.warn('[quick-message-image] Failed to parse images value', error);\n return [];\n }\n }\n\n return this.cloneImages(value);\n }\n\n private cloneImages(images: QuickMessageLibraryFile[]): QuickMessageLibraryFile[] {\n return (images || []).map(image => ({\n ...image,\n isSelected: image.isSelected ?? false,\n }));\n }\n\n private setImages(next: QuickMessageLibraryFile[], shouldEmit = true) {\n this.images = next;\n if (shouldEmit) {\n const payload = this.cloneImages(next);\n this.imagesChange.emit(payload);\n }\n }\n\n private isLocalUpload(image: QuickMessageLibraryFile): boolean {\n return image.id.startsWith(this.localUploadPrefix);\n }\n\n private getRemoteImageCount(): number {\n return this.images.filter(image => !this.isLocalUpload(image)).length;\n }\n\n private mergeFetchedImages(fetched: QuickMessageLibraryFile[], reset: boolean): QuickMessageLibraryFile[] {\n const localUploads = this.images.filter(image => this.isLocalUpload(image));\n const selectionMap = new Map(this.images.map(image => [image.id, image.isSelected ?? false]));\n\n const normalizedFetched = fetched.map(image => ({\n ...image,\n isSelected: selectionMap.get(image.id) ?? image.isSelected ?? false,\n }));\n\n if (reset) {\n return [...localUploads, ...normalizedFetched];\n }\n\n const existingRemote = this.images.filter(image => !this.isLocalUpload(image));\n const remoteIndexMap = new Map<string, number>();\n existingRemote.forEach((image, index) => {\n remoteIndexMap.set(image.id, index);\n });\n\n const nextRemote = [...existingRemote];\n normalizedFetched.forEach(image => {\n const existingIndex = remoteIndexMap.get(image.id);\n if (existingIndex !== undefined) {\n nextRemote[existingIndex] = image;\n } else {\n remoteIndexMap.set(image.id, nextRemote.length);\n nextRemote.push(image);\n }\n });\n\n return [...localUploads, ...nextRemote];\n }\n\n /**\n * Memoized image filtering - only recalculates when search term or images change\n * Performance: Reduces operations from 60fps to only when user types\n */\n private filterImages(): QuickMessageLibraryFile[] {\n const search = this.searchImage.trim().toLowerCase();\n\n // Quick return for no search\n if (!search) return this.images;\n\n // Check if we can use cached results\n if (this.cachedFilteredImages && search === this.cachedSearchTerm && this.images.length === this.cachedImagesLength) {\n return this.cachedFilteredImages;\n }\n\n // Recalculate filtered results\n const filtered = this.images.filter(image => image.name.toLowerCase().includes(search));\n\n // Update cache\n this.cachedFilteredImages = filtered;\n this.cachedSearchTerm = search;\n this.cachedImagesLength = this.images.length;\n\n return filtered;\n }\n\n private splitFileName(name: string): { base: string; extension: string } {\n const lastDotIndex = name.lastIndexOf('.');\n if (lastDotIndex <= 0 || lastDotIndex === name.length - 1) {\n return { base: name, extension: '' };\n }\n\n return {\n base: name.slice(0, lastDotIndex),\n extension: name.slice(lastDotIndex),\n };\n }\n\n private getRenameTarget(): QuickMessageLibraryFile | undefined {\n if (!this.renameTargetId) {\n return undefined;\n }\n\n return this.images.find(image => image.id === this.renameTargetId);\n }\n\n private openRenameModal(image: QuickMessageLibraryFile, event?: Event) {\n event?.preventDefault();\n event?.stopPropagation();\n\n const { base, extension } = this.splitFileName(image.name);\n this.renameTargetId = image.id;\n this.renameName = base;\n this.renameExtension = extension;\n }\n\n private closeRenameModal(force = false) {\n if (this.isRenaming && !force) {\n return;\n }\n\n this.renameTargetId = null;\n this.renameName = '';\n this.renameExtension = '';\n }\n\n private toggleMenu(imageId: string, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.openMenuId = this.openMenuId === imageId ? null : imageId;\n }\n\n private closeMenu() {\n this.openMenuId = null;\n }\n\n private handleMenuRename(image: QuickMessageLibraryFile, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n this.closeMenu();\n this.openRenameModal(image, event);\n }\n\n private requestDeleteImage(image: QuickMessageLibraryFile, event: Event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.isDeleting) {\n return;\n }\n\n this.pendingDeleteImageIds = [image.id];\n this.closeMenu();\n\n const t = useTranslation();\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title: t('quick_message.delete_item_confirmation'),\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n void this.confirmDeleteSelectedImages();\n },\n onCloseDialog: () => {\n this.pendingDeleteImageIds = [];\n },\n });\n }\n\n private handleRenameInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n\n if (this.renameExtension && value.toLowerCase().endsWith(this.renameExtension.toLowerCase())) {\n this.renameName = value.slice(0, -this.renameExtension.length);\n return;\n }\n\n this.renameName = value;\n }\n\n private async handleRenameSubmit(event: Event) {\n event.preventDefault();\n\n const target = this.getRenameTarget();\n\n if (!target) {\n return;\n }\n\n const trimmedBase = this.renameName.trim();\n\n if (!trimmedBase) {\n return;\n }\n\n const nextName = this.renameExtension ? `${trimmedBase}${this.renameExtension}` : trimmedBase;\n\n if (nextName === target.name) {\n this.closeRenameModal(true);\n return;\n }\n\n if (this.isLocalUpload(target)) {\n this.setImages(\n this.images.map(image =>\n image.id === target.id\n ? {\n ...image,\n name: nextName,\n }\n : image,\n ),\n );\n\n this.closeRenameModal(true);\n return;\n }\n\n this.isRenaming = true;\n\n try {\n const updated = await updateQuickMessageLibraryFileName({ id: target.id, name: nextName });\n this.setImages(\n this.images.map(image =>\n image.id === target.id\n ? {\n ...image,\n name: updated.name,\n last_updated_at: updated.last_updated_at,\n last_updated_by: updated.last_updated_by,\n }\n : image,\n ),\n );\n this.closeRenameModal(true);\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to rename image');\n } finally {\n this.isRenaming = false;\n }\n }\n\n private toggleImageSelection(id: string) {\n this.setImages(this.images.map(image => (image.id === id ? { ...image, isSelected: !image.isSelected } : image)));\n }\n\n private toggleSelectAllImages() {\n const isAllSelected = this.images.length > 0 && this.images.every(image => image.isSelected);\n this.setImages(this.images.map(image => ({ ...image, isSelected: !isAllSelected })));\n }\n\n private triggerImageUpload() {\n this.fileInput?.click();\n }\n\n private handleImageSelection(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const files = Array.from(input.files);\n input.value = '';\n\n void this.uploadAndCreateImages(files);\n }\n\n private async uploadAndCreateImages(files: File[]) {\n if (files.length === 0) {\n return;\n }\n\n this.isUploading = true;\n\n try {\n const payload: QuickMessageLibraryFilePayload[] = [];\n\n for (const file of files) {\n const uploadUrl = await uploadFile({\n file,\n filename: file.name.replaceAll(' ', '-'),\n folder: 'zignal/quick-message-library/image',\n });\n\n if (!uploadUrl) {\n continue;\n }\n\n payload.push({\n file_type: 'image',\n name: file.name,\n url: uploadUrl,\n size: file.size,\n });\n }\n\n if (payload.length > 0) {\n await createQuickMessageLibraryFiles({ files: payload });\n await this.fetchImages({ reset: true });\n }\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to upload image');\n } finally {\n this.isUploading = false;\n }\n }\n\n private renderFileMeta(size: number, createdAt: string, t: (key: string, values?: Record<string, string>) => string) {\n const sizeKb = Math.round(size / 1024);\n return `${sizeKb} KB · ${t('quick_message.created_at').replace('{date}', dayjs(createdAt).tz().format('DD/MM/YYYY HH:mm'))}`;\n }\n\n private handleSendImages() {\n const selected = this.images.filter(image => image.isSelected);\n if (selected.length === 0) return;\n const payload = this.cloneImages(selected);\n this.sendImages.emit(payload);\n this.handleClose?.();\n }\n\n private requestDeleteSelectedImages() {\n if (this.isDeleting) {\n return;\n }\n\n const selectedIds = this.images.filter(image => image.isSelected).map(image => image.id);\n\n if (selectedIds.length === 0) {\n return;\n }\n\n this.pendingDeleteImageIds = selectedIds;\n\n const t = useTranslation();\n\n openDialog({\n open: true,\n type: DIALOG_TYPE.WARNING,\n title: t('quick_message.delete_selected_items_confirmation'),\n buttonName: t('confirm'),\n cancelButtonName: t('cancel'),\n onSubmitDialog: () => {\n void this.confirmDeleteSelectedImages();\n },\n onCloseDialog: () => {\n this.pendingDeleteImageIds = [];\n },\n });\n }\n\n private async confirmDeleteSelectedImages() {\n if (this.isDeleting) {\n return;\n }\n\n const pendingIds = [...this.pendingDeleteImageIds];\n this.pendingDeleteImageIds = [];\n\n if (pendingIds.length === 0) {\n return;\n }\n\n const pendingSet = new Set(pendingIds);\n const remoteIds = this.images.filter(image => pendingSet.has(image.id) && !this.isLocalUpload(image)).map(image => image.id);\n\n this.isDeleting = true;\n\n try {\n if (remoteIds.length > 0) {\n await deleteQuickMessageLibraryFile({ ids: remoteIds });\n }\n\n const remaining = this.images.filter(image => !pendingSet.has(image.id));\n this.setImages(remaining);\n\n if (remoteIds.length > 0) {\n this.totalImages = Math.max(0, this.totalImages - remoteIds.length);\n await this.fetchImages({ reset: true });\n }\n } catch (error: unknown) {\n showErrorDialog(error, '[quick-message-image] Failed to delete images');\n } finally {\n this.isDeleting = false;\n }\n }\n\n private async fetchImages({ search, reset = true }: { search?: string; reset?: boolean } = {}) {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n if (!businessId || !shopId) {\n return;\n }\n\n if (reset ? this.isLoading : this.isLoadingMore) {\n return;\n }\n\n const searchSource = search !== undefined ? search : reset ? this.searchImage : this.currentSearch;\n const trimmedSearch = searchSource?.trim() ?? '';\n const nextPage = reset ? 1 : this.page + 1;\n\n if (search !== undefined) {\n this.searchImage = searchSource ?? '';\n }\n\n if (reset) {\n this.isLoading = true;\n } else {\n this.isLoadingMore = true;\n }\n\n try {\n const response = await getQuickMessageLibraryFiles({\n fileType: 'image',\n search: trimmedSearch ? trimmedSearch : undefined,\n page: nextPage,\n limit: this.pageSize,\n });\n\n const fetched = this.cloneImages(response.files || []);\n const merged = this.mergeFetchedImages(fetched, reset);\n\n this.page = response.page > 0 ? response.page : nextPage;\n const resolvedTotalPages = response.total_pages > 0 ? response.total_pages : fetched.length > 0 ? 1 : 0;\n this.totalPages = resolvedTotalPages;\n this.totalImages = typeof response.total === 'number' ? response.total : fetched.length;\n this.currentSearch = trimmedSearch;\n\n this.setImages(merged);\n } catch (error: unknown) {\n console.error('[quick-message-image] Failed to fetch images', error);\n } finally {\n if (reset) {\n this.isLoading = false;\n } else {\n this.isLoadingMore = false;\n }\n }\n }\n\n private async loadMoreImages() {\n if (this.isLoading || this.isLoadingMore) {\n return;\n }\n\n if (this.totalPages === 0 || this.page >= this.totalPages) {\n return;\n }\n\n if (this.totalImages > 0) {\n const remoteCount = this.getRemoteImageCount();\n if (remoteCount >= this.totalImages) {\n return;\n }\n }\n\n await this.fetchImages({ reset: false });\n }\n\n private handleScroll(event: Event) {\n const target = event.target as HTMLElement | null;\n if (!target) {\n return;\n }\n\n const remaining = target.scrollHeight - target.scrollTop - target.clientHeight;\n if (remaining < 160) {\n void this.loadMoreImages();\n }\n }\n\n private handleSearchInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchImage = value;\n\n if (!value.trim() && this.currentSearch && !this.isLoading && !this.isLoadingMore) {\n void this.fetchImages({ search: '', reset: true });\n }\n }\n\n private async handleSearchSubmit(event?: Event) {\n event?.preventDefault();\n await this.fetchImages({ search: this.searchImage, reset: true });\n }\n\n private clearSearch() {\n if (!this.searchImage) {\n return;\n }\n\n this.searchImage = '';\n if (this.currentSearch) {\n void this.fetchImages({ search: '', reset: true });\n }\n }\n\n private renderRenameModal(theme: string, labels: { renameLabel: string; nameLabel: string; saveLabel: string; cancelLabel: string; closeLabel: string }) {\n const target = this.getRenameTarget();\n\n if (!this.renameTargetId || !target) {\n return null;\n }\n\n const trimmedBase = this.renameName.trim();\n const nextName = this.renameExtension ? `${trimmedBase}${this.renameExtension}` : trimmedBase;\n const isSaveDisabled = this.isRenaming || trimmedBase.length === 0 || nextName === target.name;\n const inputId = `quick-message-image-rename-${target.id}`;\n\n return (\n <div class=\"quick-message-image__rename-overlay\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"quick-message-image-rename-title\" onClick={() => this.closeRenameModal()}>\n <div class={`quick-message-image__rename-modal z-background-${theme} z-text-${theme}`} onClick={event => event.stopPropagation()}>\n <div class=\"quick-message-image__rename-header\">\n <h3 id=\"quick-message-image-rename-title\" class=\"text-base font-semibold\">\n {labels.renameLabel}\n </h3>\n <button type=\"button\" class=\"quick-message-image__rename-close\" onClick={() => this.closeRenameModal()} aria-label={labels.closeLabel} disabled={this.isRenaming}>\n <Icon name=\"X\" />\n </button>\n </div>\n <form class=\"flex flex-col gap-4\" onSubmit={event => this.handleRenameSubmit(event)}>\n <label class=\"flex flex-col gap-2 text-sm\" htmlFor={inputId}>\n <span class=\"font-medium\">{labels.nameLabel}</span>\n <div class={`quick-message-image__rename-input-row border z-border-divider-${theme} z-background-${theme}`}>\n <input\n id={inputId}\n type=\"text\"\n class={`quick-message-image__rename-input z-text-${theme}`}\n value={this.renameName}\n onInput={event => this.handleRenameInput(event)}\n />\n {this.renameExtension && <span class=\"quick-message-image__rename-extension\">{this.renameExtension}</span>}\n </div>\n </label>\n <div class=\"flex justify-end gap-2 text-sm\">\n <button type=\"button\" class=\"quick-message-image__rename-cancel\" onClick={() => this.closeRenameModal()} disabled={this.isRenaming}>\n {labels.cancelLabel}\n </button>\n <button type=\"submit\" class=\"quick-message-image__rename-save\" disabled={isSaveDisabled}>\n {this.isRenaming ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : labels.saveLabel}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n }\n\n render() {\n const theme = configStore.get('theme');\n const t = useTranslation();\n const filteredImages = this.filterImages();\n const hasSelection = this.images.some(image => image.isSelected);\n const isInitialLoading = this.isLoading && this.images.length === 0;\n const renameLabel = t('quick_message.rename_item');\n const deleteLabel = t('remove');\n const nameLabel = t('quick_message.name');\n const saveLabel = t('save');\n const cancelLabel = t('cancel');\n const closeLabel = t('close');\n\n return (\n <Host class=\"flex min-h-0 flex-1 flex-col gap-4\">\n <form class=\"w-full\" onSubmit={event => this.handleSearchSubmit(event)}>\n <div class=\"relative\">\n <input\n type=\"text\"\n class={`w-full border z-border-divider-${theme} text-sm px-4 py-2 pr-9 rounded-lg ring-primary focus:outline-none focus:border-primary z-background-${theme} z-text-${theme}`}\n placeholder={t('quick_message.search_image')}\n value={this.searchImage}\n onInput={event => this.handleSearchInput(event)}\n />\n {this.searchImage && (\n <button\n type=\"button\"\n class=\"absolute right-2 top-1/2 -translate-y-1/2 text-xs text-gray-400 hover:text-gray-600\"\n onClick={() => this.clearSearch()}\n aria-label={t('clear') || 'Clear'}\n >\n <Icon name=\"X\" />\n </button>\n )}\n </div>\n </form>\n\n <div class=\"flex items-center justify-between\">\n {this.images.length > 0 ? (\n <label class=\"inline-flex items-center gap-2 text-sm\">\n <input type=\"checkbox\" checked={this.images.length > 0 && this.images.every(image => image.isSelected)} onChange={() => this.toggleSelectAllImages()} />\n <span>{t('select_all')}</span>\n </label>\n ) : (\n <span />\n )}\n <div class=\"flex items-center gap-2\">\n <input\n class=\"hidden\"\n type=\"file\"\n accept=\"image/*\"\n multiple\n ref={el => (this.fileInput = el as HTMLInputElement)}\n onChange={event => this.handleImageSelection(event)}\n />\n <button\n type=\"button\"\n class=\"quick-message-image__action-button inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer\"\n onClick={() => !this.isUploading && this.triggerImageUpload()}\n aria-label={t('quick_message.add_image')}\n disabled={this.isUploading}\n >\n {this.isUploading ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : <Icon name=\"Plus\" />}\n </button>\n {this.images.length > 0 && (\n <button\n class=\"quick-message-image__action-button quick-message-image__display-switch inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer\"\n type=\"button\"\n onClick={() => (this.imageDisplayMode = this.imageDisplayMode === 'grid' ? 'list' : 'grid')}\n aria-label={this.imageDisplayMode === 'grid' ? t('quick_message.display_list') : t('quick_message.display_grid')}\n >\n <Icon name={this.imageDisplayMode === 'grid' ? 'List' : 'Grid'} />\n </button>\n )}\n </div>\n </div>\n\n {this.isUploading && (\n <div class={`flex items-center gap-2 text-xs z-text-primary-${theme}`}>\n <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" />\n <span>{t('quick_message.uploading') || 'Uploading...'}</span>\n </div>\n )}\n\n {isInitialLoading ? (\n <div class={`flex flex-1 items-center justify-center text-sm z-text-gray-${theme}`}>Loading...</div>\n ) : filteredImages.length === 0 ? (\n <div class={`flex flex-1 items-center justify-center text-sm z-text-gray-${theme}`}>{t('quick_message.image_empty')}</div>\n ) : this.imageDisplayMode === 'grid' ? (\n <div\n class=\"grid flex-1 grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 auto-rows-auto items-start content-start gap-3 overflow-y-auto\"\n onScroll={event => this.handleScroll(event)}\n >\n {filteredImages.map(image => (\n <div class=\"quick-message-image__grid-item\" key={image.id}>\n <button\n type=\"button\"\n class={`flex w-full flex-col items-center gap-2 rounded-xl border border-transparent z-background-${theme} p-1.5 cursor-pointer ${image.isSelected ? `z-border-primary-${theme}` : ''}`}\n onClick={() => this.toggleImageSelection(image.id)}\n >\n <div class=\"quick-message-image__thumbnail\">\n {image.isSelected && (\n <span class={`quick-message-image__selection-indicator z-background-primary-${theme}`} aria-hidden=\"true\">\n <Icon name=\"Check\" addClass=\"size-3 text-white\" />\n </span>\n )}\n <img src={image.url} alt={image.name} class=\"quick-message-image__thumbnail-image\" loading=\"lazy\" />\n </div>\n <div class={`text-center text-xs line-clamp-2 z-text-gray-${theme}`}>{image.name}</div>\n </button>\n <div class=\"quick-message-image__menu-wrapper quick-message-image__menu-wrapper--grid\" data-quick-message-image-menu-root=\"\">\n <button\n type=\"button\"\n class=\"quick-message-image__more-button\"\n onClick={event => this.toggleMenu(image.id, event)}\n aria-haspopup=\"menu\"\n aria-expanded={this.openMenuId === image.id ? 'true' : 'false'}\n aria-label={renameLabel}\n data-quick-message-image-menu-root=\"\"\n >\n <Icon name=\"MoreVertical\" addClass=\"size-4\" />\n </button>\n {this.openMenuId === image.id && (\n <div class={`quick-message-image__menu z-background-${theme} z-text-${theme}`} role=\"menu\" data-quick-message-image-menu-root=\"\">\n <button type=\"button\" class=\"quick-message-image__menu-item\" role=\"menuitem\" onClick={event => this.handleMenuRename(image, event)}>\n {renameLabel}\n </button>\n <button\n type=\"button\"\n class=\"quick-message-image__menu-item quick-message-image__menu-item--danger\"\n role=\"menuitem\"\n onClick={event => this.requestDeleteImage(image, event)}\n >\n {deleteLabel}\n </button>\n </div>\n )}\n </div>\n </div>\n ))}\n {this.isLoadingMore && <div class={`col-span-full py-3 text-center text-xs z-text-gray-${theme}`}>Loading...</div>}\n </div>\n ) : (\n <div class=\"flex flex-1 flex-col gap-2.5 overflow-y-auto\" onScroll={event => this.handleScroll(event)}>\n {filteredImages.map(image => (\n <label class={`flex items-center gap-3 rounded-xl z-background-${theme} px-3 py-2.5`} key={image.id}>\n <input type=\"checkbox\" checked={!!image.isSelected} onChange={() => this.toggleImageSelection(image.id)} />\n <img src={image.url} alt={image.name} class=\"h-16 w-16 rounded-xl object-cover\" loading=\"lazy\" />\n <div class=\"flex flex-1 items-center gap-3 min-w-0\">\n <div class={`flex min-w-0 flex-col gap-1 z-text-gray-${theme}`}>\n <div class=\"text-sm font-medium line-clamp-2 break-words\">{image.name}</div>\n <div class={`text-xs z-text-gray-${theme}`}>{this.renderFileMeta(image.size, image.created_at, t)}</div>\n </div>\n <div class=\"quick-message-image__menu-wrapper\" data-quick-message-image-menu-root=\"\">\n <button\n type=\"button\"\n class=\"quick-message-image__list-more-button\"\n onClick={event => this.toggleMenu(image.id, event)}\n aria-haspopup=\"menu\"\n aria-expanded={this.openMenuId === image.id ? 'true' : 'false'}\n aria-label={renameLabel}\n data-quick-message-image-menu-root=\"\"\n >\n <Icon name=\"MoreVertical\" addClass=\"size-4\" />\n </button>\n {this.openMenuId === image.id && (\n <div\n class={`quick-message-image__menu quick-message-image__menu--list z-background-${theme} z-text-${theme}`}\n role=\"menu\"\n data-quick-message-image-menu-root=\"\"\n >\n <button type=\"button\" class=\"quick-message-image__menu-item\" role=\"menuitem\" onClick={event => this.handleMenuRename(image, event)}>\n {renameLabel}\n </button>\n <button\n type=\"button\"\n class=\"quick-message-image__menu-item quick-message-image__menu-item--danger\"\n role=\"menuitem\"\n onClick={event => this.requestDeleteImage(image, event)}\n >\n {deleteLabel}\n </button>\n </div>\n )}\n </div>\n </div>\n </label>\n ))}\n {this.isLoadingMore && <div class={`py-3 text-center text-xs z-text-gray-${theme}`}>Loading...</div>}\n </div>\n )}\n\n <div class={`mt-auto flex items-center gap-2 pt-2 z-text-gray-${theme}`}>\n {hasSelection && (\n <button\n type=\"button\"\n class={`quick-message-image__action-button inline-flex h-9 w-9 items-center justify-center rounded-lg cursor-pointer disabled:cursor-not-allowed disabled:opacity-40`}\n onClick={() => this.requestDeleteSelectedImages()}\n aria-label={t('remove')}\n disabled={this.isDeleting}\n >\n {this.isDeleting ? <Icon name=\"Loader2\" addClass=\"size-4 animate-spin\" /> : <Icon name=\"Trash2\" />}\n </button>\n )}\n {!this.isMaster && (\n <button\n type=\"button\"\n disabled={!hasSelection}\n class={`quick-message-image__send ml-auto inline-flex items-center justify-center rounded-full px-4 py-2 text-xs font-semibold z-background-primary-${theme} text-white disabled:cursor-not-allowed disabled:opacity-40 cursor-pointer`}\n onClick={() => this.handleSendImages()}\n >\n {t('quick_message.send_images')}\n </button>\n )}\n </div>\n {this.renderRenameModal(theme, { renameLabel, nameLabel, saveLabel, cancelLabel, closeLabel })}\n </Host>\n );\n }\n}\n"],"version":3}
|