zignal-stencil-library 1.1.159 → 1.1.160

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.
Files changed (232) hide show
  1. package/dist/cjs/{autocomplete-address_45.cjs.entry.js → autocomplete-address_49.cjs.entry.js} +3777 -386
  2. package/dist/cjs/{dayjs-vAGCjbc8.js → dayjs-CQF3zwgL.js} +3 -3
  3. package/dist/cjs/{dayjs-vAGCjbc8.js.map → dayjs-CQF3zwgL.js.map} +1 -1
  4. package/dist/cjs/{index-Df7QxnG3.js → index-DHj7HVpr.js} +58 -4
  5. package/dist/cjs/{index-Df7QxnG3.js.map → index-DHj7HVpr.js.map} +1 -1
  6. package/dist/cjs/index.cjs.js +1 -1
  7. package/dist/cjs/loader.cjs.js +1 -1
  8. package/dist/cjs/quick-message-app.cjs.entry.js +4 -4
  9. package/dist/cjs/zignal-stencil-library.cjs.js +1 -1
  10. package/dist/collection/api/index.js +68 -0
  11. package/dist/collection/api/index.js.map +1 -1
  12. package/dist/collection/api/type.js.map +1 -1
  13. package/dist/collection/collection-manifest.json +4 -0
  14. package/dist/collection/components/autocomplete-address/autocomplete-address.css +1 -1
  15. package/dist/collection/components/autocomplete-multiple-select/autocomplete-multiple-select.css +1 -1
  16. package/dist/collection/components/autocomplete-select/autocomplete-select.css +1 -1
  17. package/dist/collection/components/channel-box/channel-box.css +1 -1
  18. package/dist/collection/components/chat-app/chat-app.css +1 -1
  19. package/dist/collection/components/chat-header/chat-header.css +1 -1
  20. package/dist/collection/components/chat-input/chat-input.css +1 -1
  21. package/dist/collection/components/checkbox-list/checkbox-list.css +1 -1
  22. package/dist/collection/components/create-master-data-dialog/create-master-data-dialog.css +1 -0
  23. package/dist/collection/components/create-master-data-dialog/create-master-data-dialog.js +288 -0
  24. package/dist/collection/components/create-master-data-dialog/create-master-data-dialog.js.map +1 -0
  25. package/dist/collection/components/dialog-bill-editor/dialog-bill-editor.css +1 -1
  26. package/dist/collection/components/dialog-custom-filter/dialog-custom-filter.css +1 -1
  27. package/dist/collection/components/dialog-editor/dialog-editor.css +1 -1
  28. package/dist/collection/components/dialog-preview-media/dialog-preview-media.css +1 -1
  29. package/dist/collection/components/dialog-search/dialog-search.css +1 -1
  30. package/dist/collection/components/internal-component/icon.js +3 -1
  31. package/dist/collection/components/internal-component/icon.js.map +1 -1
  32. package/dist/collection/components/internal-component/z-input.js +2 -2
  33. package/dist/collection/components/internal-component/z-input.js.map +1 -1
  34. package/dist/collection/components/master-data-item/master-data-item.css +1 -0
  35. package/dist/collection/components/master-data-item/master-data-item.js +284 -0
  36. package/dist/collection/components/master-data-item/master-data-item.js.map +1 -0
  37. package/dist/collection/components/master-status-app/master-status-app.css +1 -0
  38. package/dist/collection/components/master-status-app/master-status-app.js +396 -0
  39. package/dist/collection/components/master-status-app/master-status-app.js.map +1 -0
  40. package/dist/collection/components/master-tag-app/master-tag-app.css +1 -0
  41. package/dist/collection/components/master-tag-app/master-tag-app.js +398 -0
  42. package/dist/collection/components/master-tag-app/master-tag-app.js.map +1 -0
  43. package/dist/collection/components/menu-chat-channel/menu-chat-channel.css +1 -1
  44. package/dist/collection/components/menu-chat-channel/menu-chat-channel.js +2 -2
  45. package/dist/collection/components/menu-chat-type/menu-chat-type.css +1 -1
  46. package/dist/collection/components/menu-chat-type/menu-chat-type.js +2 -2
  47. package/dist/collection/components/menu-list/menu-list.css +1 -1
  48. package/dist/collection/components/menu-list/menu-list.js +2 -2
  49. package/dist/collection/components/message-box/message-box.css +1 -1
  50. package/dist/collection/components/message-box/message-box.js +1 -1
  51. package/dist/collection/components/message-content/message-content.css +1 -1
  52. package/dist/collection/components/message-content/message-content.js +1 -1
  53. package/dist/collection/components/message-item/message-item.css +1 -1
  54. package/dist/collection/components/message-item/message-item.js +1 -1
  55. package/dist/collection/components/message-media/message-media.css +1 -1
  56. package/dist/collection/components/message-media/message-media.js +2 -2
  57. package/dist/collection/components/profile-history/profile-history.css +1 -1
  58. package/dist/collection/components/profile-history/profile-history.js +1 -1
  59. package/dist/collection/components/profile-info/profile-info.css +1 -1
  60. package/dist/collection/components/profile-info/user-info-section.js +4 -4
  61. package/dist/collection/components/profile-media/profile-media.css +1 -1
  62. package/dist/collection/components/profile-media/profile-media.js +1 -1
  63. package/dist/collection/components/profile-tabs/profile-tabs.css +1 -1
  64. package/dist/collection/components/profile-tabs/profile-tabs.js +2 -2
  65. package/dist/collection/components/quick-message-add-template/quick-message-add-template.css +1 -1
  66. package/dist/collection/components/quick-message-add-template/quick-message-add-template.js +3 -3
  67. package/dist/collection/components/quick-message-add-template/quick-message-text-content.js +1 -1
  68. package/dist/collection/components/quick-message-app/quick-message-app.css +1 -1
  69. package/dist/collection/components/quick-message-app/quick-message-app.js +1 -1
  70. package/dist/collection/components/quick-message-file/quick-message-file.css +1 -1
  71. package/dist/collection/components/quick-message-file/quick-message-file.js +1 -1
  72. package/dist/collection/components/quick-message-image/quick-message-image.css +1 -1
  73. package/dist/collection/components/quick-message-image/quick-message-image.js +1 -1
  74. package/dist/collection/components/quick-message-modal/quick-message-modal.css +1 -1
  75. package/dist/collection/components/quick-message-modal/quick-message-modal.js +1 -1
  76. package/dist/collection/components/quick-message-template/quick-message-template.css +1 -1
  77. package/dist/collection/components/quick-message-template/quick-message-template.js +2 -2
  78. package/dist/collection/components/search-box/search-box.css +1 -1
  79. package/dist/collection/components/search-box/search-box.js +5 -5
  80. package/dist/collection/components/status-badge/status-badge.css +1 -1
  81. package/dist/collection/components/status-badge/status-badge.js +2 -2
  82. package/dist/collection/components/tag-list/tag-list.css +1 -1
  83. package/dist/collection/components/tag-list/tag-list.js +1 -1
  84. package/dist/collection/components/tag-or-status-item/tag-or-status-item.css +1 -1
  85. package/dist/collection/components/tag-or-status-item/tag-or-status-item.js +2 -2
  86. package/dist/collection/components/tag-popper/tag-popper.css +1 -1
  87. package/dist/collection/components/tag-popper/tag-popper.js +2 -2
  88. package/dist/collection/components/typography-clamp/typography-clamp.css +1 -1
  89. package/dist/collection/components/typography-clamp/typography-clamp.js +2 -2
  90. package/dist/collection/components/z-avatar/z-avatar.css +1 -1
  91. package/dist/collection/components/z-dialog/z-dialog.css +1 -1
  92. package/dist/collection/components/z-tooltip/z-tooltip.css +1 -1
  93. package/dist/collection/utils/icon-svg.js +1 -0
  94. package/dist/collection/utils/icon-svg.js.map +1 -1
  95. package/dist/components/autocomplete-address2.js +1 -1
  96. package/dist/components/autocomplete-address2.js.map +1 -1
  97. package/dist/components/autocomplete-multiple-select2.js +1 -1
  98. package/dist/components/autocomplete-multiple-select2.js.map +1 -1
  99. package/dist/components/autocomplete-select2.js +1 -1
  100. package/dist/components/autocomplete-select2.js.map +1 -1
  101. package/dist/components/channel-box2.js +1 -1
  102. package/dist/components/channel-box2.js.map +1 -1
  103. package/dist/components/chat-app.js +1 -1
  104. package/dist/components/chat-app.js.map +1 -1
  105. package/dist/components/chat-header2.js +2 -2
  106. package/dist/components/chat-header2.js.map +1 -1
  107. package/dist/components/chat-input2.js +1 -1
  108. package/dist/components/chat-input2.js.map +1 -1
  109. package/dist/components/checkbox-list2.js +1 -1
  110. package/dist/components/checkbox-list2.js.map +1 -1
  111. package/dist/components/create-master-data-dialog.d.ts +11 -0
  112. package/dist/components/create-master-data-dialog.js +9 -0
  113. package/dist/components/create-master-data-dialog.js.map +1 -0
  114. package/dist/components/create-master-data-dialog2.js +162 -0
  115. package/dist/components/create-master-data-dialog2.js.map +1 -0
  116. package/dist/components/dialog-bill-editor2.js +1 -1
  117. package/dist/components/dialog-bill-editor2.js.map +1 -1
  118. package/dist/components/dialog-custom-filter2.js +1 -1
  119. package/dist/components/dialog-custom-filter2.js.map +1 -1
  120. package/dist/components/dialog-editor2.js +1 -1
  121. package/dist/components/dialog-editor2.js.map +1 -1
  122. package/dist/components/dialog-preview-media2.js +1 -1
  123. package/dist/components/dialog-preview-media2.js.map +1 -1
  124. package/dist/components/dialog-search2.js +1 -1
  125. package/dist/components/dialog-search2.js.map +1 -1
  126. package/dist/components/dialog.js +1 -1
  127. package/dist/components/icon-svg.js +2 -1
  128. package/dist/components/icon-svg.js.map +1 -1
  129. package/dist/components/icon.js +35 -0
  130. package/dist/components/icon.js.map +1 -1
  131. package/dist/components/index.js +56 -2
  132. package/dist/components/index.js.map +1 -1
  133. package/dist/components/index3.js +69 -1
  134. package/dist/components/index3.js.map +1 -1
  135. package/dist/components/master-data-item.d.ts +11 -0
  136. package/dist/components/master-data-item.js +9 -0
  137. package/dist/components/master-data-item.js.map +1 -0
  138. package/dist/components/master-data-item2.js +99 -0
  139. package/dist/components/master-data-item2.js.map +1 -0
  140. package/dist/components/master-status-app.d.ts +11 -0
  141. package/dist/components/master-status-app.js +284 -0
  142. package/dist/components/master-status-app.js.map +1 -0
  143. package/dist/components/master-tag-app.d.ts +11 -0
  144. package/dist/components/master-tag-app.js +286 -0
  145. package/dist/components/master-tag-app.js.map +1 -0
  146. package/dist/components/menu-chat-channel2.js +3 -3
  147. package/dist/components/menu-chat-channel2.js.map +1 -1
  148. package/dist/components/menu-chat-type2.js +3 -3
  149. package/dist/components/menu-chat-type2.js.map +1 -1
  150. package/dist/components/menu-list2.js +3 -3
  151. package/dist/components/menu-list2.js.map +1 -1
  152. package/dist/components/message-box2.js +2 -2
  153. package/dist/components/message-box2.js.map +1 -1
  154. package/dist/components/message-content2.js +2 -2
  155. package/dist/components/message-content2.js.map +1 -1
  156. package/dist/components/message-item2.js +2 -2
  157. package/dist/components/message-item2.js.map +1 -1
  158. package/dist/components/message-media2.js +3 -3
  159. package/dist/components/message-media2.js.map +1 -1
  160. package/dist/components/profile-history2.js +2 -2
  161. package/dist/components/profile-history2.js.map +1 -1
  162. package/dist/components/profile-info2.js +2 -2
  163. package/dist/components/profile-info2.js.map +1 -1
  164. package/dist/components/profile-media2.js +2 -2
  165. package/dist/components/profile-media2.js.map +1 -1
  166. package/dist/components/profile-tabs2.js +3 -3
  167. package/dist/components/profile-tabs2.js.map +1 -1
  168. package/dist/components/quick-message-add-template2.js +4 -4
  169. package/dist/components/quick-message-add-template2.js.map +1 -1
  170. package/dist/components/quick-message-app.js +2 -2
  171. package/dist/components/quick-message-file2.js +2 -2
  172. package/dist/components/quick-message-file2.js.map +1 -1
  173. package/dist/components/quick-message-image2.js +2 -2
  174. package/dist/components/quick-message-image2.js.map +1 -1
  175. package/dist/components/quick-message-modal2.js +2 -2
  176. package/dist/components/quick-message-modal2.js.map +1 -1
  177. package/dist/components/quick-message-template2.js +3 -3
  178. package/dist/components/quick-message-template2.js.map +1 -1
  179. package/dist/components/quick-message-text-content2.js +1 -1
  180. package/dist/components/search-box2.js +6 -6
  181. package/dist/components/search-box2.js.map +1 -1
  182. package/dist/components/sortable.esm.js +2667 -0
  183. package/dist/components/sortable.esm.js.map +1 -0
  184. package/dist/components/status-badge2.js +3 -3
  185. package/dist/components/status-badge2.js.map +1 -1
  186. package/dist/components/summarize-message-section2.js +1 -1
  187. package/dist/components/summarize-message-section2.js.map +1 -1
  188. package/dist/components/tag-list2.js +2 -2
  189. package/dist/components/tag-list2.js.map +1 -1
  190. package/dist/components/tag-or-status-item2.js +3 -3
  191. package/dist/components/tag-or-status-item2.js.map +1 -1
  192. package/dist/components/tag-popper2.js +3 -3
  193. package/dist/components/tag-popper2.js.map +1 -1
  194. package/dist/components/typography-clamp2.js +3 -3
  195. package/dist/components/typography-clamp2.js.map +1 -1
  196. package/dist/components/user-info-section2.js +5 -5
  197. package/dist/components/user-info-section2.js.map +1 -1
  198. package/dist/components/z-avatar2.js +1 -1
  199. package/dist/components/z-avatar2.js.map +1 -1
  200. package/dist/components/z-dialog2.js +1 -1
  201. package/dist/components/z-dialog2.js.map +1 -1
  202. package/dist/components/z-input.js +2 -2
  203. package/dist/components/z-input.js.map +1 -1
  204. package/dist/components/z-tooltip2.js +1 -1
  205. package/dist/components/z-tooltip2.js.map +1 -1
  206. package/dist/esm/{autocomplete-address_45.entry.js → autocomplete-address_49.entry.js} +3491 -104
  207. package/dist/esm/{dayjs-0Hz8pJ3k.js → dayjs-73cELD4I.js} +3 -3
  208. package/dist/esm/{dayjs-0Hz8pJ3k.js.map → dayjs-73cELD4I.js.map} +1 -1
  209. package/dist/{zignal-stencil-library/index-DmHiLgob.js → esm/index-Wye5kFrR.js} +58 -4
  210. package/dist/{zignal-stencil-library/index-DmHiLgob.js.map → esm/index-Wye5kFrR.js.map} +1 -1
  211. package/dist/esm/index.js +1 -1
  212. package/dist/esm/loader.js +1 -1
  213. package/dist/esm/quick-message-app.entry.js +4 -4
  214. package/dist/esm/zignal-stencil-library.js +1 -1
  215. package/dist/types/api/index.d.ts +6 -0
  216. package/dist/types/api/type.d.ts +38 -0
  217. package/dist/types/components/create-master-data-dialog/create-master-data-dialog.d.ts +28 -0
  218. package/dist/types/components/internal-component/z-input.d.ts +1 -0
  219. package/dist/types/components/master-data-item/master-data-item.d.ts +29 -0
  220. package/dist/types/components/master-status-app/master-status-app.d.ts +29 -0
  221. package/dist/types/components/master-tag-app/master-tag-app.d.ts +29 -0
  222. package/dist/types/components.d.ts +208 -0
  223. package/dist/types/utils/icon-svg.d.ts +1 -0
  224. package/dist/zignal-stencil-library/{autocomplete-address_45.entry.js → autocomplete-address_49.entry.js} +3491 -104
  225. package/dist/zignal-stencil-library/{dayjs-0Hz8pJ3k.js → dayjs-73cELD4I.js} +3 -3
  226. package/dist/zignal-stencil-library/{dayjs-0Hz8pJ3k.js.map → dayjs-73cELD4I.js.map} +1 -1
  227. package/dist/{esm/index-DmHiLgob.js → zignal-stencil-library/index-Wye5kFrR.js} +58 -4
  228. package/dist/{esm/index-DmHiLgob.js.map → zignal-stencil-library/index-Wye5kFrR.js.map} +1 -1
  229. package/dist/zignal-stencil-library/index.esm.js +1 -1
  230. package/dist/zignal-stencil-library/quick-message-app.entry.js +4 -4
  231. package/dist/zignal-stencil-library/zignal-stencil-library.esm.js +1 -1
  232. package/package.json +3 -1
@@ -481,6 +481,74 @@ const createUserTag = async (params) => {
481
481
  }
482
482
  throw new Error('Failed to createUserTag');
483
483
  };
484
+ const updateUserStatus = async (params) => {
485
+ const businessId = configStore.get('businessId');
486
+ const shopId = configStore.get('shopId');
487
+ const { id, ...rest } = params;
488
+ const { data, status } = await apiService().patch(`api/${businessId}/${shopId}/user/status/${id}`, rest);
489
+ if (status === 200) {
490
+ return data;
491
+ }
492
+ throw new Error('Failed to updateUserStatus');
493
+ };
494
+ const deleteUserStatus = async (params) => {
495
+ const businessId = configStore.get('businessId');
496
+ const shopId = configStore.get('shopId');
497
+ const { id, force, checkOnly } = params;
498
+ const { data, status } = await apiService().delete(`api/${businessId}/${shopId}/user/status/${id}`, {
499
+ data: { force, check_only: checkOnly }
500
+ });
501
+ if (status === 200) {
502
+ return data;
503
+ }
504
+ throw new Error('Failed to deleteUserStatus');
505
+ };
506
+ const reorderUserStatus = async (params) => {
507
+ const businessId = configStore.get('businessId');
508
+ const shopId = configStore.get('shopId');
509
+ const { id, sequence } = params;
510
+ const { data, status } = await apiService().patch(`api/${businessId}/${shopId}/user/status/${id}`, {
511
+ sequence
512
+ });
513
+ if (status === 200) {
514
+ return data;
515
+ }
516
+ throw new Error('Failed to reorderUserStatus');
517
+ };
518
+ const updateUserTag = async (params) => {
519
+ const businessId = configStore.get('businessId');
520
+ const shopId = configStore.get('shopId');
521
+ const { id, ...rest } = params;
522
+ const { data, status } = await apiService().patch(`api/${businessId}/${shopId}/user/tag/${id}`, rest);
523
+ if (status === 200) {
524
+ return data;
525
+ }
526
+ throw new Error('Failed to updateUserTag');
527
+ };
528
+ const deleteUserTag = async (params) => {
529
+ const businessId = configStore.get('businessId');
530
+ const shopId = configStore.get('shopId');
531
+ const { id, force, checkOnly } = params;
532
+ const { data, status } = await apiService().delete(`api/${businessId}/${shopId}/user/tag/${id}`, {
533
+ data: { force, check_only: checkOnly }
534
+ });
535
+ if (status === 200) {
536
+ return data;
537
+ }
538
+ throw new Error('Failed to deleteUserTag');
539
+ };
540
+ const reorderUserTag = async (params) => {
541
+ const businessId = configStore.get('businessId');
542
+ const shopId = configStore.get('shopId');
543
+ const { id, sequence } = params;
544
+ const { data, status } = await apiService().patch(`api/${businessId}/${shopId}/user/tag/${id}`, {
545
+ sequence
546
+ });
547
+ if (status === 200) {
548
+ return data;
549
+ }
550
+ throw new Error('Failed to reorderUserTag');
551
+ };
484
552
  const saveUserEvent = async (params) => {
485
553
  const businessId = configStore.get('businessId');
486
554
  const shopId = configStore.get('shopId');
@@ -592,7 +660,7 @@ const getChatFilterConfig = async () => {
592
660
  throw new Error('Failed to getChatFilterConfig');
593
661
  };
594
662
 
595
- export { updateUser as A, getAddressAsText as B, getUser as C, createUserStatus as D, createUserTag as E, mergeUser as F, unlinkUser as G, getChats as a, getChatFilters as b, createChatFilter as c, deleteChatFilter as d, getUserStatuses as e, getUserTags as f, getChat as g, getChatFilterConfig as h, getReplyTokenInfo as i, updateChat as j, saveUserEvent as k, getFileNameFromUrl as l, getMessageMedia as m, blobCache as n, getFileTypeAndMimeFromUrl as o, getActivityLogs as p, unReadMessage as q, readMessage as r, sendMessage as s, translateChatMessage as t, updateChatFilter as u, isValidTelNumber as v, getChatMessages as w, syncUser as x, syncMessage as y, syncTags as z };
663
+ export { updateUserStatus as A, deleteUserStatus as B, reorderUserTag as C, createUserTag as D, updateUserTag as E, deleteUserTag as F, syncMessage as G, syncTags as H, updateUser as I, getAddressAsText as J, getUser as K, mergeUser as L, unlinkUser as M, getChats as a, getChatFilters as b, createChatFilter as c, deleteChatFilter as d, getUserStatuses as e, getUserTags as f, getChat as g, getChatFilterConfig as h, getReplyTokenInfo as i, updateChat as j, saveUserEvent as k, getFileNameFromUrl as l, getMessageMedia as m, blobCache as n, getFileTypeAndMimeFromUrl as o, getActivityLogs as p, unReadMessage as q, readMessage as r, sendMessage as s, translateChatMessage as t, updateChatFilter as u, isValidTelNumber as v, getChatMessages as w, syncUser as x, reorderUserStatus as y, createUserStatus as z };
596
664
  //# sourceMappingURL=index3.js.map
597
665
 
598
666
  //# sourceMappingURL=index3.js.map
@@ -1 +1 @@
1
- {"file":"index3.js","mappings":"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","names":[],"sources":["src/utils/func.ts","src/utils/blobCache.ts","src/api/index.ts"],"sourcesContent":["import { UserAddress } from '../components';\nimport { TFileItem } from '../store/type';\n\nexport const getAddressAsText = (address?: UserAddress | null) => {\n if (!address) return '';\n\n const addressStr = [];\n if (address?.address) addressStr.push(address.address);\n if (address?.province) addressStr.push(address.province);\n if (address?.district) addressStr.push(address.district);\n if (address?.sub_district) addressStr.push(address.sub_district);\n if (address?.zip_code) addressStr.push(address.zip_code);\n return addressStr.join(', ');\n};\n\n\nexport const isUrl = (value: string) => {\n try {\n new URL(value)\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getFileNameFromUrl = (url: string): string => {\n try {\n const pathname = new URL(url).pathname;\n return decodeURIComponent(pathname.split('/').pop() || 'Unknown File');\n } catch {\n return 'Unknown File';\n }\n}\n\nexport const getFileTypeAndMimeFromUrl = (url: string): TFileItem => {\n try {\n const pathname = new URL(url).pathname;\n const extension = pathname.split('.').pop()?.toLowerCase();\n\n const mimeMap: Record<string, TFileItem> = {\n // Excel\n 'xlsx': { type: 'excel', icon: 'excel', mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' },\n 'xls': { type: 'excel', icon: 'excel', mime: 'application/vnd.ms-excel' },\n 'xlsm': { type: 'excel', icon: 'excel', mime: 'application/vnd.ms-excel.sheet.macroEnabled.12' },\n // PDF\n 'pdf': { type: 'pdf', icon: 'pdf', mime: 'application/pdf' },\n // Word\n 'docx': { type: 'word', icon: 'word', mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' },\n 'doc': { type: 'word', icon: 'word', mime: 'application/msword' },\n // PowerPoint\n 'pptx': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' },\n 'ppt': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint' },\n 'pptm': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' },\n 'ppsx': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' },\n 'pps': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint' },\n // Others\n // 'zip': { type: 'archive', mime: 'application/zip' },\n 'csv': { type: 'csv', icon: 'excel', mime: 'text/csv' },\n };\n\n return { ...(mimeMap[extension || ''] || { type: 'unknown', mime: 'application/octet-stream' }), extension };\n } catch {\n return { type: 'unknown', mime: 'application/octet-stream' };\n }\n}\n\nconst mimeToTypeMap: Record<string, TFileItem> = {\n // Excel\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': { type: 'excel', icon: 'excel', extension: 'xlsx' },\n 'application/vnd.ms-excel': { type: 'excel', icon: 'excel', extension: 'xls' },\n 'application/vnd.ms-excel.sheet.macroenabled.12': { type: 'excel', icon: 'excel', extension: 'xlsm' },\n // PDF\n 'application/pdf': { type: 'pdf', icon: 'pdf', extension: 'pdf' },\n // Word\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': { type: 'word', icon: 'word', extension: 'docx' },\n 'application/msword': { type: 'word', icon: 'word', extension: 'doc' },\n // PowerPoint\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': { type: 'powerpoint', icon: 'powerpoint', extension: 'pptx' },\n 'application/vnd.ms-powerpoint': { type: 'powerpoint', icon: 'powerpoint', extension: 'ppt' },\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12': { type: 'powerpoint', icon: 'powerpoint', extension: 'pptm' },\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': { type: 'powerpoint', icon: 'powerpoint', extension: 'ppsx' },\n // CSV\n 'text/csv': { type: 'csv', icon: 'excel', extension: 'csv' },\n};\n\n// Cache for blob URL file types to avoid repeated fetches\nconst blobUrlCache = new Map<string, TFileItem>();\n\nexport const getFileTypeFromMime = (mimeType: string): TFileItem => {\n const mime = mimeType.toLowerCase().trim();\n return mimeToTypeMap[mime] || { type: 'unknown', icon: 'unknown' };\n}\n\nexport const getFileTypeFromBlobUrl = async (blobUrl: string): Promise<TFileItem> => {\n // Check cache first for performance\n if (blobUrlCache.has(blobUrl)) {\n return blobUrlCache.get(blobUrl)!;\n }\n\n try {\n const response = await fetch(blobUrl);\n const blob = await response.blob();\n const result = getFileTypeFromMime(blob.type);\n\n // Cache the result\n blobUrlCache.set(blobUrl, result);\n\n return result;\n } catch {\n const fallback = { type: 'unknown', icon: 'unknown' };\n blobUrlCache.set(blobUrl, fallback);\n return fallback;\n }\n}\n\nexport function isValidTelNumber(value: string): boolean {\n const cleaned = value.replace(/^tel:/, '').trim();\n // Allow +, digits, spaces, dashes, parentheses\n // Must have 7-15 digits total\n const formatRegex = /^\\+?[\\d\\s\\-()]+$/;\n if (!formatRegex.test(cleaned)) return false;\n\n const digitsOnly = cleaned.replace(/\\D/g, '');\n return digitsOnly.length >= 7 && digitsOnly.length <= 15;\n} ","import { TFileItem } from '../store/type';\n\ninterface BlobCacheEntry {\n url: string | null;\n type: TFileItem | null;\n refCount: number;\n hasError: boolean;\n}\n\nclass BlobCache {\n private cache: Map<string, BlobCacheEntry> = new Map();\n\n /**\n * Generates a cache key from media parameters\n */\n private getCacheKey(channel: string, sessionId: string, messageId: string): string {\n return `${channel}:${sessionId}:${messageId}`;\n }\n\n /**\n * Gets a cached blob URL if it exists\n */\n get(channel: string, sessionId: string, messageId: string): { url: string | null; type: TFileItem | null; hasError: boolean } | null {\n const key = this.getCacheKey(channel, sessionId, messageId);\n const entry = this.cache.get(key);\n\n if (entry) {\n // Increment reference count\n entry.refCount++;\n return { url: entry.url, type: entry.type, hasError: entry.hasError };\n }\n\n return null;\n }\n\n /**\n * Stores a blob URL in the cache\n */\n set(channel: string, sessionId: string, messageId: string, url: string, type: TFileItem): void {\n const key = this.getCacheKey(channel, sessionId, messageId);\n\n // If entry already exists, revoke the old URL before replacing\n const existingEntry = this.cache.get(key);\n if (existingEntry && existingEntry.url) {\n URL.revokeObjectURL(existingEntry.url);\n }\n\n this.cache.set(key, {\n url,\n type,\n refCount: 1,\n hasError: false,\n });\n }\n\n /**\n * Marks a media entry as having an error (failed to load)\n */\n setError(channel: string, sessionId: string, messageId: string): void {\n const key = this.getCacheKey(channel, sessionId, messageId);\n\n this.cache.set(key, {\n url: null,\n type: null,\n refCount: 1,\n hasError: true,\n });\n }\n\n /**\n * Decrements reference count and optionally revokes the blob URL\n * Returns true if the entry was removed\n */\n release(channel: string, sessionId: string, messageId: string): boolean {\n const key = this.getCacheKey(channel, sessionId, messageId);\n const entry = this.cache.get(key);\n\n if (entry) {\n entry.refCount--;\n\n // Keep the blob URL cached even if refCount reaches 0\n // This prevents re-fetching when scrolling back to the same message\n // Only revoke when explicitly cleared or cache is full\n return false;\n }\n\n return false;\n }\n\n /**\n * Clears all cached blob URLs\n */\n clear(): void {\n this.cache.forEach(entry => {\n if (entry.url) {\n URL.revokeObjectURL(entry.url);\n }\n });\n this.cache.clear();\n }\n\n /**\n * Gets the current cache size\n */\n size(): number {\n return this.cache.size;\n }\n\n /**\n * Removes least recently used entries if cache exceeds size limit\n */\n cleanup(maxSize: number = 100): void {\n if (this.cache.size <= maxSize) {\n return;\n }\n\n const entriesToRemove = this.cache.size - maxSize;\n let removed = 0;\n\n // Remove entries with lowest refCount first\n const sortedEntries = Array.from(this.cache.entries())\n .sort((a, b) => a[1].refCount - b[1].refCount);\n\n for (const [key, entry] of sortedEntries) {\n if (removed >= entriesToRemove) {\n break;\n }\n if (entry.url) {\n URL.revokeObjectURL(entry.url);\n }\n this.cache.delete(key);\n removed++;\n }\n }\n}\n\n// Export a singleton instance\nexport const blobCache = new BlobCache();\n","import axios from 'axios';\nimport { configStore } from '../store/store';\nimport { apiService, apiServiceSso } from '../utils/axios';\nimport { BASE_URL } from '../utils/constant';\nimport * as Types from './type';\nimport { getFileTypeFromMime } from '../utils/func';\nimport { TFileItem } from '../store/type';\nimport { blobCache } from '../utils/blobCache';\n\nexport {\n createQuickMessageTemplate,\n createQuickMessageLibraryFiles,\n deleteQuickMessageTemplate,\n getQuickMessageLibraryFiles,\n getQuickMessageTemplates,\n updateQuickMessageLibraryFileName,\n updateQuickMessageTemplate,\n} from './quick-message';\n\n/**\n * @deprecated use '@Props' memberList instead\n */\nexport const getProfileMembers = async (request: { page_number: number; page_size: number }) => {\n const businessId = configStore.get('businessId');\n const { data, status } = await apiServiceSso().get<Types.GetProfileMembersResponse>(`/api/channel/profile/${businessId}/member`, { params: request });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getProfileMembers');\n};\n\nexport const getChats = async (params: Types.GetChatsParams) => {\n const { connectionIds, lastAnswerByIds, statusIds, tagIds, ...rest } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n const { data, status } = await apiService().get<Types.GetChatsResponse>(`api/${businessId}/${shopId}/chat`, {\n params: {\n ...rest,\n connection_id: connectionIds && connectionIds.length === configStore.get('connectionList').length ? undefined : connectionIds,\n last_answer_by_id: lastAnswerByIds && lastAnswerByIds.length === configStore.get('memberList').length ? undefined : lastAnswerByIds,\n status_id: statusIds,\n tag_id: tagIds,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChats');\n};\n\nexport const getChat = async (params: Types.GetChatParams) => {\n const { sessionId } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatResponse>(`api/${businessId}/${shopId}/chat/${sessionId}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChat');\n};\n\nexport const updateChat = async (params: Types.UpdateChatParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateChatResponse>(`api/${businessId}/${shopId}/chat/${sessionId}`, rest);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const translateChatMessage = async (params: Types.TranslateChatMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, text, messageIds } = params;\n const { data, status } = await apiService().post<Types.TranslateChatMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/translate`, {\n text,\n message_ids: messageIds,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const getChatMessages = async (params: Types.GetChatMessagesParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, startMessageId, ...rest } = params;\n const { data, status } = await apiService().get<Types.GetChatMessagesResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/message`, {\n params: {\n start_message_id: startMessageId,\n ...rest,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatMessages');\n};\n\nexport const sendMessage = async (params: Types.SendMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, messages } = params;\n const { data, status } = await apiService().post<Types.SendMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/send-message`, {\n messages: messages?.map(({ mimeType, replyMessageId, buttons, menu_list, ...rest }) => ({\n ...rest,\n mime_type: mimeType,\n reply_message_id: replyMessageId,\n buttons: buttons?.map(({ action_type, text, action }) => ({ alt_text: text, action_type, text, action: action ?? undefined })),\n menu_list: menu_list?.map(({ file_url, title, description, buttons }) => ({ file_url, title, description, buttons: buttons?.map(({ action_type, text, action }) => ({ action_type, text, action: action ?? undefined })), })),\n })),\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to sendMessage');\n};\n\nexport const readMessage = async (params: Types.ReadMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.ReadMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/read`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to readMessage');\n};\n\nexport const unReadMessage = async (params: Types.ReadMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/mark-as-unread`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to unReadMessage');\n};\n\nexport const getMessageMedia = async (params: Types.GetImageParams): Promise<{ url: string | null, type: TFileItem }> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, sessionId, messageId } = params;\n\n const cached = blobCache.get(channel, sessionId, messageId);\n if (cached) {\n if (cached.hasError) {\n return null;\n }\n return cached;\n }\n\n const url = `${BASE_URL}/api/${businessId}/${shopId}/${channel}/${sessionId}/${messageId}/content`;\n\n let attempts = 0;\n const maxRetries = 3;\n\n while (attempts < maxRetries) {\n try {\n const response = await axios.get(url, { responseType: 'arraybuffer' });\n const arrayBuffer = response.data as ArrayBuffer;\n const contentType = response.headers['content-type'];\n\n const blob = new Blob([arrayBuffer], { type: contentType });\n const blobUrl = URL.createObjectURL(blob);\n const blobType = getFileTypeFromMime(blob.type);\n\n blobCache.set(channel, sessionId, messageId, blobUrl, blobType);\n\n blobCache.cleanup(100);\n\n return { url: blobUrl, type: blobType };\n } catch (error: unknown) {\n attempts++;\n if (attempts >= maxRetries) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch image';\n console.error(`Failed to fetch image after ${maxRetries} attempts`, errorMessage);\n\n blobCache.setError(channel, sessionId, messageId);\n\n return null;\n }\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n return null;\n};\n\n//Waiting for resolve expired attachments from facebook eg. attachments?.find((item) => item.type === 'video'|'image')?.payload.url;\nexport const getMessageAttachment = async (params: Types.GetImageParams): Promise<string | null> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, sessionId, messageId } = params;\n\n const url = `${BASE_URL}/api/${businessId}/${shopId}/${channel}/${sessionId}/${messageId}/attachment`;\n\n let attempts = 0;\n const maxRetries = 3;\n\n while (attempts < maxRetries) {\n try {\n const response = await axios.get(url, {\n responseType: 'blob',\n });\n const blobUrl = URL.createObjectURL(response.data);\n return blobUrl;\n } catch (error: unknown) {\n attempts++;\n if (attempts >= maxRetries) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch attachment';\n console.error(`Failed to fetch attachment after ${maxRetries} attempts`, errorMessage);\n return null;\n }\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n return null;\n};\n\nexport const getUser = async (params: Types.GetUserParams) => {\n const { type = 'user', channel, id, sessionId } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n let route = `user/${channel}/${id}`;\n if (type === 'group') {\n route = `${channel}/group/${id}`\n }\n const { data, status } = await apiService().get<Types.GetUserResponse>(`api/${businessId}/${shopId}/${route}`, { params: { session_id: sessionId } });\n\n if (status === 200) {\n let addressFormat = null\n if (data.address && Object.keys(data.address).length > 0) {\n addressFormat = {\n address: data.address?.address || '',\n province: data.address?.province || '',\n district: data.address?.district || '',\n sub_district: data.address?.sub_district || data.address?.subdistrict || '',\n zip_code: data.address?.zip_code || '',\n }\n }\n\n return {\n ...data, address: addressFormat\n };\n }\n\n throw new Error('Failed to getUser');\n};\n\nexport const getActivityLogs = async (params: Types.GetActivityLogParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { type = 'user', channel, id } = params;\n let route = `user/${channel}/${id}/activity-log`;\n if (type === 'group') {\n route = `${channel}/group/${id}/activity_logs`\n }\n const { data, status } = await apiService().get<Types.GetActivityLogsResponse>(`api/${businessId}/${shopId}/${route}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getActivityLogs');\n};\n\nexport const updateUser = async (params: Types.UpdateUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { type = 'user', channel, id } = params;\n let _channel = channel;\n if (type === 'group') {\n _channel = 'line';\n }\n let route = `user/${_channel}/${id}`;\n if (type === 'group') {\n route = `${_channel}/group/${id}`\n }\n const { data, status } = await apiService().patch<Types.UpdateUserResponse>(`api/${businessId}/${shopId}/${route}`, {\n nickname: params.nickname,\n email: params.email,\n phone_number: params.phone_number,\n address: params.address,\n gender: params.gender,\n locale: params.locale,\n note: params.note,\n status_id: params.status_id,\n add_tag_ids: params.add_tag_ids,\n remove_tag_ids: params.remove_tag_ids,\n context: params.context,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const mergeUser = async (params: Types.MergeUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { matchUserId, matchDecision } = params;\n const { data, status } = await apiService().post<Types.MergeUserResponse>(`api/${businessId}/${shopId}/user/merge`, {\n match_user_id: matchUserId,\n match_decision: matchDecision,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to mergeUser');\n};\n\nexport const unlinkUser = async (params: Types.UnlinkUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { zignalUserId, channel, userId } = params;\n const { data, status } = await apiService().request<Types.UnlinkUserResponse>({\n method: 'DELETE',\n url: `api/${businessId}/${shopId}/user/unlink`,\n data: {\n zignal_user_id: zignalUserId,\n channel: channel,\n user_id: userId,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to unlinkUser');\n};\n\nexport const getUserStatuses = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetUserStatusesResponse>(`api/${businessId}/${shopId}/user/status`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getUserStatuses');\n};\n\nexport const createUserStatus = async (params: Types.CreateUserStatusParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserStatusResponse>(`api/${businessId}/${shopId}/user/status`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserStatus');\n};\n\nexport const getUserTags = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetUserTagsResponse>(`api/${businessId}/${shopId}/user/tag`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getUserTags');\n};\n\nexport const createUserTag = async (params: Types.CreateUserTagParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserTagResponse>(`api/${businessId}/${shopId}/user/tag`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserTag');\n};\n\nexport const createUserContext = async (params: Types.CreateUserContextParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserContextResponse>(`api/${businessId}/${shopId}/user/context`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserContext');\n};\n\nexport const saveUserEvent = async (params: Types.SaveUserEventParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.SaveUserEventResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/zwiz/save-user-event`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to saveUserEvent');\n};\n\nexport const getReplyTokenInfo = async (params: Types.GetReplyTokenInfoParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().get<Types.GetReplyTokenInfoResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/reply-token-info`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getReplyTokenInfo');\n};\n\nexport const syncMessage = async (params: Types.SyncMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/sync-message`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncMessage');\n};\n\nexport const syncTags = async (params: Types.SyncTagsParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/sync-tag`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncTags');\n};\n\nexport const syncUser = async (params: Types.SyncUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, id } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/user/${channel}/${id}/sync`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncUser');\n};\n\n// Custom Filter API Functions\nexport const getChatFilters = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatFiltersResponse>(`api/${businessId}/${shopId}/chat/filters`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatFilters');\n};\n\nexport const createChatFilter = async (params: Types.CreateChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { connection_ids, last_answer_by_ids, status_ids, tag_ids, ...rest } = params;\n const { data, status } = await apiService().post<Types.CreateChatFilterResponse>(`api/${businessId}/${shopId}/chat/filters`, {\n ...rest,\n connection_ids,\n last_answer_by_ids,\n status_ids,\n tag_ids,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createChatFilter');\n};\n\nexport const updateChatFilter = async (params: Types.UpdateChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, connection_ids, last_answer_by_ids, status_ids, tag_ids, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateChatFilterResponse>(`api/${businessId}/${shopId}/chat/filters/${id}`, {\n ...rest,\n connection_ids,\n last_answer_by_ids,\n status_ids,\n tag_ids,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateChatFilter');\n};\n\nexport const deleteChatFilter = async (params: Types.DeleteChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().delete<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/filters/${params.id}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to deleteChatFilter');\n};\n\nexport const getChatFilterConfig = async (): Promise<Types.GetChatFilterConfigResponse> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatFilterConfigResponse>(`api/${businessId}/${shopId}/chat/filter-config`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatFilterConfig');\n};"],"version":3}
1
+ {"file":"index3.js","mappings":"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","names":[],"sources":["src/utils/func.ts","src/utils/blobCache.ts","src/api/index.ts"],"sourcesContent":["import { UserAddress } from '../components';\nimport { TFileItem } from '../store/type';\n\nexport const getAddressAsText = (address?: UserAddress | null) => {\n if (!address) return '';\n\n const addressStr = [];\n if (address?.address) addressStr.push(address.address);\n if (address?.province) addressStr.push(address.province);\n if (address?.district) addressStr.push(address.district);\n if (address?.sub_district) addressStr.push(address.sub_district);\n if (address?.zip_code) addressStr.push(address.zip_code);\n return addressStr.join(', ');\n};\n\n\nexport const isUrl = (value: string) => {\n try {\n new URL(value)\n\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getFileNameFromUrl = (url: string): string => {\n try {\n const pathname = new URL(url).pathname;\n return decodeURIComponent(pathname.split('/').pop() || 'Unknown File');\n } catch {\n return 'Unknown File';\n }\n}\n\nexport const getFileTypeAndMimeFromUrl = (url: string): TFileItem => {\n try {\n const pathname = new URL(url).pathname;\n const extension = pathname.split('.').pop()?.toLowerCase();\n\n const mimeMap: Record<string, TFileItem> = {\n // Excel\n 'xlsx': { type: 'excel', icon: 'excel', mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' },\n 'xls': { type: 'excel', icon: 'excel', mime: 'application/vnd.ms-excel' },\n 'xlsm': { type: 'excel', icon: 'excel', mime: 'application/vnd.ms-excel.sheet.macroEnabled.12' },\n // PDF\n 'pdf': { type: 'pdf', icon: 'pdf', mime: 'application/pdf' },\n // Word\n 'docx': { type: 'word', icon: 'word', mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' },\n 'doc': { type: 'word', icon: 'word', mime: 'application/msword' },\n // PowerPoint\n 'pptx': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation' },\n 'ppt': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint' },\n 'pptm': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' },\n 'ppsx': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' },\n 'pps': { type: 'powerpoint', icon: 'powerpoint', mime: 'application/vnd.ms-powerpoint' },\n // Others\n // 'zip': { type: 'archive', mime: 'application/zip' },\n 'csv': { type: 'csv', icon: 'excel', mime: 'text/csv' },\n };\n\n return { ...(mimeMap[extension || ''] || { type: 'unknown', mime: 'application/octet-stream' }), extension };\n } catch {\n return { type: 'unknown', mime: 'application/octet-stream' };\n }\n}\n\nconst mimeToTypeMap: Record<string, TFileItem> = {\n // Excel\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': { type: 'excel', icon: 'excel', extension: 'xlsx' },\n 'application/vnd.ms-excel': { type: 'excel', icon: 'excel', extension: 'xls' },\n 'application/vnd.ms-excel.sheet.macroenabled.12': { type: 'excel', icon: 'excel', extension: 'xlsm' },\n // PDF\n 'application/pdf': { type: 'pdf', icon: 'pdf', extension: 'pdf' },\n // Word\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': { type: 'word', icon: 'word', extension: 'docx' },\n 'application/msword': { type: 'word', icon: 'word', extension: 'doc' },\n // PowerPoint\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': { type: 'powerpoint', icon: 'powerpoint', extension: 'pptx' },\n 'application/vnd.ms-powerpoint': { type: 'powerpoint', icon: 'powerpoint', extension: 'ppt' },\n 'application/vnd.ms-powerpoint.presentation.macroenabled.12': { type: 'powerpoint', icon: 'powerpoint', extension: 'pptm' },\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow': { type: 'powerpoint', icon: 'powerpoint', extension: 'ppsx' },\n // CSV\n 'text/csv': { type: 'csv', icon: 'excel', extension: 'csv' },\n};\n\n// Cache for blob URL file types to avoid repeated fetches\nconst blobUrlCache = new Map<string, TFileItem>();\n\nexport const getFileTypeFromMime = (mimeType: string): TFileItem => {\n const mime = mimeType.toLowerCase().trim();\n return mimeToTypeMap[mime] || { type: 'unknown', icon: 'unknown' };\n}\n\nexport const getFileTypeFromBlobUrl = async (blobUrl: string): Promise<TFileItem> => {\n // Check cache first for performance\n if (blobUrlCache.has(blobUrl)) {\n return blobUrlCache.get(blobUrl)!;\n }\n\n try {\n const response = await fetch(blobUrl);\n const blob = await response.blob();\n const result = getFileTypeFromMime(blob.type);\n\n // Cache the result\n blobUrlCache.set(blobUrl, result);\n\n return result;\n } catch {\n const fallback = { type: 'unknown', icon: 'unknown' };\n blobUrlCache.set(blobUrl, fallback);\n return fallback;\n }\n}\n\nexport function isValidTelNumber(value: string): boolean {\n const cleaned = value.replace(/^tel:/, '').trim();\n // Allow +, digits, spaces, dashes, parentheses\n // Must have 7-15 digits total\n const formatRegex = /^\\+?[\\d\\s\\-()]+$/;\n if (!formatRegex.test(cleaned)) return false;\n\n const digitsOnly = cleaned.replace(/\\D/g, '');\n return digitsOnly.length >= 7 && digitsOnly.length <= 15;\n} ","import { TFileItem } from '../store/type';\n\ninterface BlobCacheEntry {\n url: string | null;\n type: TFileItem | null;\n refCount: number;\n hasError: boolean;\n}\n\nclass BlobCache {\n private cache: Map<string, BlobCacheEntry> = new Map();\n\n /**\n * Generates a cache key from media parameters\n */\n private getCacheKey(channel: string, sessionId: string, messageId: string): string {\n return `${channel}:${sessionId}:${messageId}`;\n }\n\n /**\n * Gets a cached blob URL if it exists\n */\n get(channel: string, sessionId: string, messageId: string): { url: string | null; type: TFileItem | null; hasError: boolean } | null {\n const key = this.getCacheKey(channel, sessionId, messageId);\n const entry = this.cache.get(key);\n\n if (entry) {\n // Increment reference count\n entry.refCount++;\n return { url: entry.url, type: entry.type, hasError: entry.hasError };\n }\n\n return null;\n }\n\n /**\n * Stores a blob URL in the cache\n */\n set(channel: string, sessionId: string, messageId: string, url: string, type: TFileItem): void {\n const key = this.getCacheKey(channel, sessionId, messageId);\n\n // If entry already exists, revoke the old URL before replacing\n const existingEntry = this.cache.get(key);\n if (existingEntry && existingEntry.url) {\n URL.revokeObjectURL(existingEntry.url);\n }\n\n this.cache.set(key, {\n url,\n type,\n refCount: 1,\n hasError: false,\n });\n }\n\n /**\n * Marks a media entry as having an error (failed to load)\n */\n setError(channel: string, sessionId: string, messageId: string): void {\n const key = this.getCacheKey(channel, sessionId, messageId);\n\n this.cache.set(key, {\n url: null,\n type: null,\n refCount: 1,\n hasError: true,\n });\n }\n\n /**\n * Decrements reference count and optionally revokes the blob URL\n * Returns true if the entry was removed\n */\n release(channel: string, sessionId: string, messageId: string): boolean {\n const key = this.getCacheKey(channel, sessionId, messageId);\n const entry = this.cache.get(key);\n\n if (entry) {\n entry.refCount--;\n\n // Keep the blob URL cached even if refCount reaches 0\n // This prevents re-fetching when scrolling back to the same message\n // Only revoke when explicitly cleared or cache is full\n return false;\n }\n\n return false;\n }\n\n /**\n * Clears all cached blob URLs\n */\n clear(): void {\n this.cache.forEach(entry => {\n if (entry.url) {\n URL.revokeObjectURL(entry.url);\n }\n });\n this.cache.clear();\n }\n\n /**\n * Gets the current cache size\n */\n size(): number {\n return this.cache.size;\n }\n\n /**\n * Removes least recently used entries if cache exceeds size limit\n */\n cleanup(maxSize: number = 100): void {\n if (this.cache.size <= maxSize) {\n return;\n }\n\n const entriesToRemove = this.cache.size - maxSize;\n let removed = 0;\n\n // Remove entries with lowest refCount first\n const sortedEntries = Array.from(this.cache.entries())\n .sort((a, b) => a[1].refCount - b[1].refCount);\n\n for (const [key, entry] of sortedEntries) {\n if (removed >= entriesToRemove) {\n break;\n }\n if (entry.url) {\n URL.revokeObjectURL(entry.url);\n }\n this.cache.delete(key);\n removed++;\n }\n }\n}\n\n// Export a singleton instance\nexport const blobCache = new BlobCache();\n","import axios from 'axios';\nimport { configStore } from '../store/store';\nimport { apiService, apiServiceSso } from '../utils/axios';\nimport { BASE_URL } from '../utils/constant';\nimport * as Types from './type';\nimport { getFileTypeFromMime } from '../utils/func';\nimport { TFileItem } from '../store/type';\nimport { blobCache } from '../utils/blobCache';\n\nexport {\n createQuickMessageTemplate,\n createQuickMessageLibraryFiles,\n deleteQuickMessageTemplate,\n getQuickMessageLibraryFiles,\n getQuickMessageTemplates,\n updateQuickMessageLibraryFileName,\n updateQuickMessageTemplate,\n} from './quick-message';\n\n/**\n * @deprecated use '@Props' memberList instead\n */\nexport const getProfileMembers = async (request: { page_number: number; page_size: number }) => {\n const businessId = configStore.get('businessId');\n const { data, status } = await apiServiceSso().get<Types.GetProfileMembersResponse>(`/api/channel/profile/${businessId}/member`, { params: request });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getProfileMembers');\n};\n\nexport const getChats = async (params: Types.GetChatsParams) => {\n const { connectionIds, lastAnswerByIds, statusIds, tagIds, ...rest } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n\n const { data, status } = await apiService().get<Types.GetChatsResponse>(`api/${businessId}/${shopId}/chat`, {\n params: {\n ...rest,\n connection_id: connectionIds && connectionIds.length === configStore.get('connectionList').length ? undefined : connectionIds,\n last_answer_by_id: lastAnswerByIds && lastAnswerByIds.length === configStore.get('memberList').length ? undefined : lastAnswerByIds,\n status_id: statusIds,\n tag_id: tagIds,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChats');\n};\n\nexport const getChat = async (params: Types.GetChatParams) => {\n const { sessionId } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatResponse>(`api/${businessId}/${shopId}/chat/${sessionId}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChat');\n};\n\nexport const updateChat = async (params: Types.UpdateChatParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateChatResponse>(`api/${businessId}/${shopId}/chat/${sessionId}`, rest);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const translateChatMessage = async (params: Types.TranslateChatMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, text, messageIds } = params;\n const { data, status } = await apiService().post<Types.TranslateChatMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/translate`, {\n text,\n message_ids: messageIds,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const getChatMessages = async (params: Types.GetChatMessagesParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, startMessageId, ...rest } = params;\n const { data, status } = await apiService().get<Types.GetChatMessagesResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/message`, {\n params: {\n start_message_id: startMessageId,\n ...rest,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatMessages');\n};\n\nexport const sendMessage = async (params: Types.SendMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId, messages } = params;\n const { data, status } = await apiService().post<Types.SendMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/send-message`, {\n messages: messages?.map(({ mimeType, replyMessageId, buttons, menu_list, ...rest }) => ({\n ...rest,\n mime_type: mimeType,\n reply_message_id: replyMessageId,\n buttons: buttons?.map(({ action_type, text, action }) => ({ alt_text: text, action_type, text, action: action ?? undefined })),\n menu_list: menu_list?.map(({ file_url, title, description, buttons }) => ({ file_url, title, description, buttons: buttons?.map(({ action_type, text, action }) => ({ action_type, text, action: action ?? undefined })), })),\n })),\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to sendMessage');\n};\n\nexport const readMessage = async (params: Types.ReadMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.ReadMessageResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/read`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to readMessage');\n};\n\nexport const unReadMessage = async (params: Types.ReadMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/mark-as-unread`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to unReadMessage');\n};\n\nexport const getMessageMedia = async (params: Types.GetImageParams): Promise<{ url: string | null, type: TFileItem }> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, sessionId, messageId } = params;\n\n const cached = blobCache.get(channel, sessionId, messageId);\n if (cached) {\n if (cached.hasError) {\n return null;\n }\n return cached;\n }\n\n const url = `${BASE_URL}/api/${businessId}/${shopId}/${channel}/${sessionId}/${messageId}/content`;\n\n let attempts = 0;\n const maxRetries = 3;\n\n while (attempts < maxRetries) {\n try {\n const response = await axios.get(url, { responseType: 'arraybuffer' });\n const arrayBuffer = response.data as ArrayBuffer;\n const contentType = response.headers['content-type'];\n\n const blob = new Blob([arrayBuffer], { type: contentType });\n const blobUrl = URL.createObjectURL(blob);\n const blobType = getFileTypeFromMime(blob.type);\n\n blobCache.set(channel, sessionId, messageId, blobUrl, blobType);\n\n blobCache.cleanup(100);\n\n return { url: blobUrl, type: blobType };\n } catch (error: unknown) {\n attempts++;\n if (attempts >= maxRetries) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch image';\n console.error(`Failed to fetch image after ${maxRetries} attempts`, errorMessage);\n\n blobCache.setError(channel, sessionId, messageId);\n\n return null;\n }\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n return null;\n};\n\n//Waiting for resolve expired attachments from facebook eg. attachments?.find((item) => item.type === 'video'|'image')?.payload.url;\nexport const getMessageAttachment = async (params: Types.GetImageParams): Promise<string | null> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, sessionId, messageId } = params;\n\n const url = `${BASE_URL}/api/${businessId}/${shopId}/${channel}/${sessionId}/${messageId}/attachment`;\n\n let attempts = 0;\n const maxRetries = 3;\n\n while (attempts < maxRetries) {\n try {\n const response = await axios.get(url, {\n responseType: 'blob',\n });\n const blobUrl = URL.createObjectURL(response.data);\n return blobUrl;\n } catch (error: unknown) {\n attempts++;\n if (attempts >= maxRetries) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to fetch attachment';\n console.error(`Failed to fetch attachment after ${maxRetries} attempts`, errorMessage);\n return null;\n }\n await new Promise(resolve => setTimeout(resolve, 500));\n }\n }\n\n return null;\n};\n\nexport const getUser = async (params: Types.GetUserParams) => {\n const { type = 'user', channel, id, sessionId } = params;\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n let route = `user/${channel}/${id}`;\n if (type === 'group') {\n route = `${channel}/group/${id}`\n }\n const { data, status } = await apiService().get<Types.GetUserResponse>(`api/${businessId}/${shopId}/${route}`, { params: { session_id: sessionId } });\n\n if (status === 200) {\n let addressFormat = null\n if (data.address && Object.keys(data.address).length > 0) {\n addressFormat = {\n address: data.address?.address || '',\n province: data.address?.province || '',\n district: data.address?.district || '',\n sub_district: data.address?.sub_district || data.address?.subdistrict || '',\n zip_code: data.address?.zip_code || '',\n }\n }\n\n return {\n ...data, address: addressFormat\n };\n }\n\n throw new Error('Failed to getUser');\n};\n\nexport const getActivityLogs = async (params: Types.GetActivityLogParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { type = 'user', channel, id } = params;\n let route = `user/${channel}/${id}/activity-log`;\n if (type === 'group') {\n route = `${channel}/group/${id}/activity_logs`\n }\n const { data, status } = await apiService().get<Types.GetActivityLogsResponse>(`api/${businessId}/${shopId}/${route}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getActivityLogs');\n};\n\nexport const updateUser = async (params: Types.UpdateUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { type = 'user', channel, id } = params;\n let _channel = channel;\n if (type === 'group') {\n _channel = 'line';\n }\n let route = `user/${_channel}/${id}`;\n if (type === 'group') {\n route = `${_channel}/group/${id}`\n }\n const { data, status } = await apiService().patch<Types.UpdateUserResponse>(`api/${businessId}/${shopId}/${route}`, {\n nickname: params.nickname,\n email: params.email,\n phone_number: params.phone_number,\n address: params.address,\n gender: params.gender,\n locale: params.locale,\n note: params.note,\n status_id: params.status_id,\n add_tag_ids: params.add_tag_ids,\n remove_tag_ids: params.remove_tag_ids,\n context: params.context,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUser');\n};\n\nexport const mergeUser = async (params: Types.MergeUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { matchUserId, matchDecision } = params;\n const { data, status } = await apiService().post<Types.MergeUserResponse>(`api/${businessId}/${shopId}/user/merge`, {\n match_user_id: matchUserId,\n match_decision: matchDecision,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to mergeUser');\n};\n\nexport const unlinkUser = async (params: Types.UnlinkUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { zignalUserId, channel, userId } = params;\n const { data, status } = await apiService().request<Types.UnlinkUserResponse>({\n method: 'DELETE',\n url: `api/${businessId}/${shopId}/user/unlink`,\n data: {\n zignal_user_id: zignalUserId,\n channel: channel,\n user_id: userId,\n },\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to unlinkUser');\n};\n\nexport const getUserStatuses = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetUserStatusesResponse>(`api/${businessId}/${shopId}/user/status`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getUserStatuses');\n};\n\nexport const createUserStatus = async (params: Types.CreateUserStatusParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserStatusResponse>(`api/${businessId}/${shopId}/user/status`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserStatus');\n};\n\nexport const getUserTags = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetUserTagsResponse>(`api/${businessId}/${shopId}/user/tag`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getUserTags');\n};\n\nexport const createUserTag = async (params: Types.CreateUserTagParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserTagResponse>(`api/${businessId}/${shopId}/user/tag`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserTag');\n};\n\nexport const updateUserStatus = async (params: Types.UpdateUserStatusParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateUserStatusResponse>(`api/${businessId}/${shopId}/user/status/${id}`, rest);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUserStatus');\n};\n\nexport const deleteUserStatus = async (params: Types.DeleteUserStatusParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, force, checkOnly } = params;\n const { data, status } = await apiService().delete<Types.DeleteUserStatusResponse>(`api/${businessId}/${shopId}/user/status/${id}`, {\n data: { force, check_only: checkOnly }\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to deleteUserStatus');\n};\n\nexport const reorderUserStatus = async (params: Types.ReorderUserStatusParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, sequence } = params;\n const { data, status } = await apiService().patch<Types.ReorderUserStatusResponse>(`api/${businessId}/${shopId}/user/status/${id}`, {\n sequence\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to reorderUserStatus');\n};\n\nexport const updateUserTag = async (params: Types.UpdateUserTagParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateUserTagResponse>(`api/${businessId}/${shopId}/user/tag/${id}`, rest);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateUserTag');\n};\n\nexport const deleteUserTag = async (params: Types.DeleteUserTagParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, force, checkOnly } = params;\n const { data, status } = await apiService().delete<Types.DeleteUserTagResponse>(`api/${businessId}/${shopId}/user/tag/${id}`, {\n data: { force, check_only: checkOnly }\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to deleteUserTag');\n};\n\nexport const reorderUserTag = async (params: Types.ReorderUserTagParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, sequence } = params;\n const { data, status } = await apiService().patch<Types.ReorderUserTagResponse>(`api/${businessId}/${shopId}/user/tag/${id}`, {\n sequence\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to reorderUserTag');\n};\n\nexport const createUserContext = async (params: Types.CreateUserContextParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().post<Types.CreateUserContextResponse>(`api/${businessId}/${shopId}/user/context`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createUserContext');\n};\n\nexport const saveUserEvent = async (params: Types.SaveUserEventParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.SaveUserEventResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/zwiz/save-user-event`, params);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to saveUserEvent');\n};\n\nexport const getReplyTokenInfo = async (params: Types.GetReplyTokenInfoParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().get<Types.GetReplyTokenInfoResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/reply-token-info`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getReplyTokenInfo');\n};\n\nexport const syncMessage = async (params: Types.SyncMessageParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/sync-message`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncMessage');\n};\n\nexport const syncTags = async (params: Types.SyncTagsParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { sessionId } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/${sessionId}/sync-tag`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncTags');\n};\n\nexport const syncUser = async (params: Types.SyncUserParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { channel, id } = params;\n const { data, status } = await apiService().post<Types.BaseResponse>(`api/${businessId}/${shopId}/user/${channel}/${id}/sync`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to syncUser');\n};\n\n// Custom Filter API Functions\nexport const getChatFilters = async () => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatFiltersResponse>(`api/${businessId}/${shopId}/chat/filters`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatFilters');\n};\n\nexport const createChatFilter = async (params: Types.CreateChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { connection_ids, last_answer_by_ids, status_ids, tag_ids, ...rest } = params;\n const { data, status } = await apiService().post<Types.CreateChatFilterResponse>(`api/${businessId}/${shopId}/chat/filters`, {\n ...rest,\n connection_ids,\n last_answer_by_ids,\n status_ids,\n tag_ids,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to createChatFilter');\n};\n\nexport const updateChatFilter = async (params: Types.UpdateChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { id, connection_ids, last_answer_by_ids, status_ids, tag_ids, ...rest } = params;\n const { data, status } = await apiService().patch<Types.UpdateChatFilterResponse>(`api/${businessId}/${shopId}/chat/filters/${id}`, {\n ...rest,\n connection_ids,\n last_answer_by_ids,\n status_ids,\n tag_ids,\n });\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to updateChatFilter');\n};\n\nexport const deleteChatFilter = async (params: Types.DeleteChatFilterParams) => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().delete<Types.BaseResponse>(`api/${businessId}/${shopId}/chat/filters/${params.id}`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to deleteChatFilter');\n};\n\nexport const getChatFilterConfig = async (): Promise<Types.GetChatFilterConfigResponse> => {\n const businessId = configStore.get('businessId');\n const shopId = configStore.get('shopId');\n const { data, status } = await apiService().get<Types.GetChatFilterConfigResponse>(`api/${businessId}/${shopId}/chat/filter-config`);\n\n if (status === 200) {\n return data;\n }\n\n throw new Error('Failed to getChatFilterConfig');\n};"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface MasterDataItem extends Components.MasterDataItem, HTMLElement {}
4
+ export const MasterDataItem: {
5
+ prototype: MasterDataItem;
6
+ new (): MasterDataItem;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,9 @@
1
+ import { M as MasterDataItem$1, d as defineCustomElement$1 } from './master-data-item2.js';
2
+
3
+ const MasterDataItem = MasterDataItem$1;
4
+ const defineCustomElement = defineCustomElement$1;
5
+
6
+ export { MasterDataItem, defineCustomElement };
7
+ //# sourceMappingURL=master-data-item.js.map
8
+
9
+ //# sourceMappingURL=master-data-item.js.map
@@ -0,0 +1 @@
1
+ {"file":"master-data-item.js","mappings":";;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -0,0 +1,99 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h } from './index2.js';
2
+ import { Z as ZIconButton } from './z-icon-button.js';
3
+ import { I as Icon } from './icon.js';
4
+ import { u as useTranslation } from './utils.js';
5
+ import { r as reorderIcon } from './icon-svg.js';
6
+ import { c as configStore } from './store.js';
7
+
8
+ const masterDataItemCss = "@layer base{*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-x-reverse:0;--tw-shadow:0 0 #0000;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-alpha:100%;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-offset-width:0;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-drop-shadow-alpha:100%;--tw-border-style:solid;border:0 solid;box-sizing:border-box;margin:0;padding:0}}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-space-x-reverse:0;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-border-style:solid;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:host,:root{--color-red-700:oklch(50.5% .213 27.518);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-blue-500:oklch(62.3% .214 259.815);--color-pink-100:oklch(94.8% .028 342.258);--color-gray-400:oklch(70.7% .022 261.325);--font-weight-semibold:600;--font-weight-bold:700;--animate-spin:spin 1s linear infinite;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace;--color-red-500:oklch(63.7% .237 25.331);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--color-black:#000;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:1.33333;--text-sm:.875rem;--text-sm--line-height:1.42857;--text-base:1rem;--text-base--line-height:1.5;--text-lg:1.125rem;--text-lg--line-height:1.55556;--font-weight-medium:500;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:\"Kanit\",var(--default-font);--default-mono-font-family:var(--font-mono);--default-font:ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\";--color-primary:#e02848;--color-secondary:#023761;--color-background:#fff;--color-surface:#000;--color-paper:#f3f4f6;--color-divider:#e5e7eb;--color-theme-gray:#6b7280;--color-overlay:#0000004d;--color-selected:#fdeef1}}@layer base{::file-selector-button{appearance:button;background-color:#0000;border:0 solid;border-radius:0;box-sizing:border-box;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;margin:0;margin-inline-end:4px;opacity:1;padding:0}:host,html{-webkit-text-size-adjust:100%;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);tab-size:4;-webkit-tap-highlight-color:transparent;line-height:1.5}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-size:1em;font-variation-settings:var(--default-mono-font-variation-settings,normal)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}button,input,optgroup,select,textarea{background-color:#0000;border-radius:0;color:inherit;font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-datetime-edit-meridiem-field{padding-block:0;padding-bottom:0;padding-top:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],input:where(:not([type])),select,textarea{appearance:none;--tw-shadow:0 0 #0000;background-color:#fff;border-color:oklch(55.1% .027 264.364);border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem}:is([type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select):focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);border-color:oklch(54.6% .245 262.881);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}input::placeholder,textarea::placeholder{color:oklch(55.1% .027 264.364);opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}select{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='oklch(55.1%25 0.027 264.364)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;print-color-adjust:exact}[multiple],[size]:where(select:not([size=\"1\"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;print-color-adjust:unset}[type=checkbox],[type=radio]{appearance:none;color:oklch(54.6% .245 262.881);print-color-adjust:exact;-webkit-user-select:none;user-select:none;vertical-align:middle;--tw-shadow:0 0 #0000;background-color:#fff;background-origin:border-box;border-color:oklch(55.1% .027 264.364);border-width:1px;display:inline-block;flex-shrink:0;height:1rem;padding:0;width:1rem}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline-offset:2px;--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:oklch(54.6% .245 262.881);--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);outline:2px solid #0000}[type=checkbox]:checked,[type=radio]:checked{background-color:currentColor;background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Cpath d='M12.207 4.793a1 1 0 0 1 0 1.414l-5 5a1 1 0 0 1-1.414 0l-2-2a1 1 0 0 1 1.414-1.414L6.5 9.086l4.293-4.293a1 1 0 0 1 1.414 0'/%3E%3C/svg%3E\")}[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\")}[type=checkbox]:checked:focus,[type=checkbox]:checked:hover,[type=radio]:checked:focus,[type=radio]:checked:hover{background-color:currentColor;border-color:#0000}[type=checkbox]:indeterminate{background-color:currentColor;background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:100% 100%;border-color:#0000}[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-radius:0;border-width:0;font-size:unset;line-height:inherit;padding:0}[type=file]:focus{outline:1px solid buttontext;outline:1px auto -webkit-focus-ring-color}}@layer components{.dialog-backdrop{align-items:center;background-color:#0006;display:flex;inset:calc(var(--spacing)*0);justify-content:center;position:fixed;z-index:50}@supports (color:color-mix(in lab,red,red)){.dialog-backdrop{background-color:color-mix(in oklab,var(--color-black)40%,transparent);background-color:color-mix(in srgb,#00040%,transparent)}}.chat-item{border-radius:var(--radius-xl);cursor:pointer;margin-block:calc(var(--spacing)*1);margin-inline:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4);--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);align-items:flex-start;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative}:where(.chat-item>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-pin{position:absolute;right:calc(var(--spacing)*-3);top:calc(var(--spacing)*1)}.chat-item .chat-item-pin-icon{fill:currentColor;height:calc(var(--spacing)*3);rotate:45deg;width:calc(var(--spacing)*3)}.chat-item .chat-item-content-container{display:flex;flex-direction:row;width:100%}:where(.chat-item .chat-item-content-container>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*4*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*4*var(--tw-space-x-reverse))}.chat-item .chat-item-avatar-wrapper{align-self:center;flex-shrink:0;position:relative}.chat-item .chat-item-avatar-badge{bottom:calc(var(--spacing)*-.5);position:absolute;right:calc(var(--spacing)*-.5)}.chat-item .chat-item-content-wrapper{min-height:calc(var(--spacing)*18);width:100%}.chat-item .chat-item-content-main{align-items:center;display:flex}:where(.chat-item .chat-item-content-main>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-end:calc(var(--spacing)*1*(1 - var(--tw-space-x-reverse)));margin-inline-start:calc(var(--spacing)*1*var(--tw-space-x-reverse))}.chat-item .chat-item-content-main-image{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.chat-item .chat-item-content-main-name{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-main-time{color:var(--color-gray-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-secondary{align-items:flex-start;display:flex;flex-direction:row;width:100%}.chat-item .chat-item-content-secondary-nickname{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.chat-item .chat-item-content-secondary-message,.chat-item .chat-item-content-secondary-nickname{color:var(--color-surface);-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-secondary-message{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.chat-item .chat-item-content-unread{background-color:var(--color-primary);border-radius:3.40282e+38px;color:var(--color-white);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-left:auto}.chat-item .chat-item-content-unread-mark{display:inline-block;height:calc(var(--spacing)*2.5);width:calc(var(--spacing)*2.5)}.chat-item .chat-item-content-unread-count{padding-block:calc(var(--spacing)*.5);padding-inline:calc(var(--spacing)*2)}.z-icon-button{cursor:pointer;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-icon-button:focus{--tw-outline-style:none;outline-style:none}.z-icon-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-icon-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-icon-button-disabled{cursor:not-allowed;opacity:.5}.z-button{cursor:pointer;--tw-font-weight:var(--font-weight-medium);align-items:center;border-radius:3.40282e+38px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-button:focus{--tw-outline-style:none;outline-style:none}.z-button-small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2)}.z-button-medium{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*3)}.z-button-large{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4)}.z-button-primary{background-color:var(--color-primary);color:var(--color-white)}.z-button-outlined{border-color:var(--color-primary);border-style:var(--tw-border-style);border-width:1px;color:var(--color-primary)}.z-button-disabled{cursor:not-allowed;opacity:.5}.z-button-text{margin-inline:calc(var(--spacing)*2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.z-input-area-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input-area-input,.z-input-area-label{color:var(--color-surface);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input-area-input{background-color:var(--color-paper);border-color:var(--color-surface);border-radius:var(--radius-lg);border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-width:1px;width:100%}.z-input-area-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-area-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-input-label{margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-input,.z-input-label{color:var(--color-surface);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-input{background-color:var(--color-background);border-color:var(--color-divider);border-radius:var(--radius-md);border-style:var(--tw-border-style);padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);--tw-ring-color:var(--color-primary);border-width:1px;width:100%}.z-input:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-input-error{color:var(--color-red-500);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));margin-top:calc(var(--spacing)*1)}.z-select-input-label{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));margin-bottom:calc(var(--spacing)*1);--tw-font-weight:var(--font-weight-medium);display:block;font-weight:var(--font-weight-medium)}.z-tag-or-status-item{align-items:center;border-radius:var(--radius-2xl);gap:calc(var(--spacing)*2);padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*3);--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:inline-flex}.z-tag-or-status-item .z-tag-or-status-item-name{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));max-width:calc(var(--spacing)*20)}.z-tag-or-status-item .z-tag-or-status-item-icon{border-radius:3.40282e+38px;height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.z-context-input{align-items:stretch;display:flex;flex-direction:row;margin-block:calc(var(--spacing)*1)}.z-context-input-key{background-color:var(--color-background);border-bottom-left-radius:var(--radius-3xl);border-color:var(--color-divider);border-style:var(--tw-border-style);border-top-left-radius:var(--radius-3xl);border-width:1px;color:var(--color-surface);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));max-height:6.4rem;min-height:2.4rem;padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);resize:none;width:100%;--tw-ring-color:var(--color-primary);flex:1}.z-context-input-key:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-context-input-value{background-color:var(--color-background);border-bottom-right-radius:var(--radius-3xl);border-color:var(--color-primary);border-style:var(--tw-border-style);border-top-right-radius:var(--radius-3xl);border-width:1px;color:var(--color-surface);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));max-height:6.4rem;min-height:2.4rem;padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*4);resize:none;width:100%;--tw-ring-color:var(--color-primary);flex:1}.z-context-input-value:focus{border-color:var(--color-primary);--tw-outline-style:none;outline-style:none}.z-text-with-link{color:var(--color-blue-600);text-decoration-line:underline}.z-button-group{display:inline-flex}.z-button-group-tab{border-radius:var(--radius-md);display:flex;gap:calc(var(--spacing)*1);padding:calc(var(--spacing)*.5)!important}.z-button-group-tab-overlay{background-color:var(--color-overlay)}.z-button-group-item{border-style:var(--tw-border-style);cursor:pointer;--tw-font-weight:var(--font-weight-medium);align-items:center;border-width:1px;display:inline-flex;font-weight:var(--font-weight-medium);justify-content:center;transition-duration:var(--tw-duration,var(--default-transition-duration));transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))}.z-button-group-item:focus{--tw-outline-style:none;outline-style:none}.z-button-group-item-tab{align-items:center;border-radius:var(--radius-sm);border-style:var(--tw-border-style)!important;border-width:0!important;display:flex;flex:1;flex-direction:column;gap:calc(var(--spacing)*2);justify-content:center;padding:calc(var(--spacing)*1)!important}.z-button-group-item-tab-selected{background-color:var(--color-white);--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.z-button-group-item-tab-selected,.z-button-group-item-tab-unselected{border-style:var(--tw-border-style)!important;border-width:0!important}.z-button-group-small{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));padding-block:calc(var(--spacing)*1.5);padding-inline:calc(var(--spacing)*2)}.z-button-group-medium{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));padding-block:calc(var(--spacing)*2);padding-inline:calc(var(--spacing)*3)}.z-button-group-large{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));padding-block:calc(var(--spacing)*3);padding-inline:calc(var(--spacing)*4)}.z-button-group-item-first{border-bottom-left-radius:3.40282e+38px;border-top-left-radius:3.40282e+38px}.z-button-group-item-last{border-bottom-right-radius:3.40282e+38px;border-top-right-radius:3.40282e+38px}.z-button-group-item-middle{border-radius:0}.z-button-group-item-primary-selected{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-white)}.z-button-group-item-primary-unselected{background-color:var(--color-white);border-color:var(--color-primary);color:var(--color-primary)}.z-button-group-item-outlined-selected{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-white)}.z-button-group-item-outlined-unselected{background-color:#0000;border-color:var(--color-primary);color:var(--color-primary)}.z-button-group-item-disabled{cursor:not-allowed;opacity:.5}.z-button-group-item:not(:first-child){margin-left:-1px}.z-avatar-error{align-items:center;display:flex;justify-content:center}.z-avatar-2x-small{height:calc(var(--spacing)*3);min-height:calc(var(--spacing)*3);min-width:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.z-avatar-x-small{height:calc(var(--spacing)*4);min-height:calc(var(--spacing)*4);min-width:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.z-avatar-small{height:calc(var(--spacing)*8);min-height:calc(var(--spacing)*8);min-width:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.z-avatar-medium{height:calc(var(--spacing)*16);min-height:calc(var(--spacing)*16);min-width:calc(var(--spacing)*16);width:calc(var(--spacing)*16)}.z-avatar-large{height:calc(var(--spacing)*32);min-height:calc(var(--spacing)*32);min-width:calc(var(--spacing)*32);width:calc(var(--spacing)*32)}.z-avatar-full{height:100%;width:100%}.z-avatar-group{background-color:#023761;border-radius:3.40282e+38px}}@layer utilities{.relative{position:relative}.size-5{height:calc(var(--spacing)*5);width:calc(var(--spacing)*5)}.text-primary{color:var(--color-primary)}}[data-theme=light]{--color-primary:#e02848;--color-secondary:#023761;--color-background:#fff;--color-surface:#000;--color-paper:#f3f4f6;--color-divider:#e5e7eb;--color-theme-gray:#6b7280;--color-overlay:#0000004d;--color-selected:#fdeef1}[data-theme=dark]{--color-primary:#b50f30;--color-secondary:#fff;--color-background:#23292d;--color-surface:#fff;--color-paper:#374151;--color-divider:#4b5563;--color-theme-gray:#d1d5db;--color-overlay:#ffffff4d;--color-selected:#3a242e}.scroll-container::-webkit-scrollbar{background:#0000001a;height:8px;width:8px}.scroll-container:active::-webkit-scrollbar,.scroll-container:hover::-webkit-scrollbar{background:#0003}.scroll-container:active::-webkit-scrollbar-thumb,.scroll-container:hover::-webkit-scrollbar-thumb{background:#0006;border-radius:4px}.bg-time-badge{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-time-badge{background-color:color-mix(in srgb,var(--color-surface)30%,transparent);background-color:color-mix(in srgb,#00030%,transparent)}}.placeholder-surface::placeholder{color:var(--color-text-gray)}.z-width-100{width:100%}.z-width-90{width:90%}.z-width-75{width:75%}.z-width-50{width:50%}.z-width-25{width:25%}.z-width-0{width:0}.z-animate-width{transition-duration:.5s;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1)}.z-animate-grid-template-cols{transition:grid-template-rows .5s}[type=checkbox]{background-color:var(--color-gray-300);border-color:var(--color-gray-300);border-radius:4px;cursor:pointer}[type=checkbox]:checked,[type=checkbox]:indeterminate{background-color:var(--color-primary);border-color:var(--color-primary);border-radius:4px;cursor:pointer}[type=checkbox]:focus{offset:0;outline-offset:0;--tw-ring-color:var(--color-primary);outline:none}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.grid-cols-1{grid-template-columns:1fr}.grid-cols-1_3{grid-template-columns:1fr 3fr}.grid-cols-1_2_1{grid-template-columns:1fr 2fr 1fr}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.top-1\\/2{top:50%}.right-3{right:calc(var(--spacing)*3)}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.m-2{margin:calc(var(--spacing)*2)}.mx-4{margin-inline:calc(var(--spacing)*4)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-auto{margin-top:auto}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-0\\.5{margin-left:calc(var(--spacing)*.5)}.ml-auto{margin-left:auto}.flex{display:flex}.size-3{height:calc(var(--spacing)*3);width:calc(var(--spacing)*3)}.size-4{height:calc(var(--spacing)*4);width:calc(var(--spacing)*4)}.size-8{height:calc(var(--spacing)*8);width:calc(var(--spacing)*8)}.size-16{height:calc(var(--spacing)*16);width:calc(var(--spacing)*16)}.size-32{height:calc(var(--spacing)*32);width:calc(var(--spacing)*32)}.size-\\[8px\\]{height:8px;width:8px}.size-\\[10px\\]{height:10px;width:10px}.w-1\\/2{width:50%}.w-9{width:calc(var(--spacing)*9)}.w-full{width:100%}.max-w-32{max-width:calc(var(--spacing)*32)}.-translate-y-1\\/2{--tw-translate-y:-50%}.-translate-y-1\\/2,.translate-y-0{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y:calc(var(--spacing)*0)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.animate-spin{animation:var(--animate-spin)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-y-1{row-gap:calc(var(--spacing)*1)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rounded-full{border-radius:3.40282e+38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-b-\\[0\\.5px\\]{border-bottom-style:var(--tw-border-style);border-bottom-width:.5px}.border-divider{border-color:var(--color-divider)}.border-primary{border-color:var(--color-primary)}.bg-background{background-color:var(--color-background)}.bg-pink-100{background-color:var(--color-pink-100)}.bg-selected{background-color:var(--color-selected)}.pt-2{padding-top:calc(var(--spacing)*2)}.pr-16{padding-right:calc(var(--spacing)*16)}.text-right{text-align:right}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.text-background{color:var(--color-background)}.text-black{color:var(--color-black)}.text-blue-500{color:var(--color-blue-500)}.text-gray-400{color:var(--color-gray-400)}.text-green-500{color:var(--color-green-500)}.text-green-700{color:var(--color-green-700)}.text-red-700{color:var(--color-red-700)}.text-surface{color:var(--color-surface)}.text-theme-gray{color:var(--color-theme-gray)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-100{opacity:1}}@keyframes spin{to{transform:rotate(1turn)}}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities{.resize{resize:both}}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities;/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer utilities;/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */@layer properties{}@layer base{}@layer components{.chat-item .chat-item-content-main-name,.chat-item .chat-item-content-main-time{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.chat-item .chat-item-content-secondary-message,.chat-item .chat-item-content-secondary-nickname{color:var(--color-surface);-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.z-icon-button-outlined,.z-icon-button-text{color:var(--color-primary)}.z-input,.z-input-area-input,.z-input-area-label,.z-input-label{color:var(--color-surface);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.z-button-group-item-tab,.z-button-group-item-tab-selected{border-style:var(--tw-border-style)!important;border-width:0!important}}@layer utilities{.-translate-y-1\\/2,.translate-y-0{translate:var(--tw-translate-x)var(--tw-translate-y)}}@property --tw-translate-x{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-y{syntax:\"*\";inherits:false;initial-value:0}@property --tw-translate-z{syntax:\"*\";inherits:false;initial-value:0}:host{display:block}.master-data-item{align-items:center;background-color:var(--color-background);border-bottom:1px solid var(--color-divider);display:flex;padding:.5rem 0;transition:background-color .2s}.master-data-item:hover{background-color:var(--color-background-hover)}.master-data-item-drag-handle{align-items:center;color:var(--color-text-primary);cursor:grab;display:flex;margin-right:.5rem}.master-data-item-color{border-radius:50%;flex-shrink:0;height:1.5rem;margin:0 1rem;width:1.5rem}.master-data-item-name{color:var(--color-surface);flex-grow:1;font-size:1rem;font-weight:500;margin-left:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.master-data-item-actions{align-items:center;display:flex;gap:16px}.master-data-menu{background-color:var(--color-background);border:1px solid var(--color-border);border-radius:4px;box-shadow:0 2px 5px #0000001a;min-width:150px;position:absolute;right:0;top:100%;z-index:10}.master-data-menu-item{color:var(--color-text-primary);cursor:pointer;font-size:.875rem;padding:.5rem 1rem}.master-data-menu-item:hover{background-color:var(--color-background-hover)}.master-data-menu-item.disabled{color:var(--color-text-disabled);cursor:not-allowed;pointer-events:none}@property --tw-space-x-reverse{syntax:\"*\";inherits:false;initial-value:0}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@media (forced-colors:active){[type=checkbox]:checked,[type=radio]:checked{appearance:auto}[type=checkbox]:indeterminate{appearance:auto}[type=checkbox]:checked,[type=checkbox]:indeterminate,[type=radio]:checked{appearance:auto}}@media (hover:hover){.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.z-button-group-item-tab:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.z-button-group-item-tab-unselected:hover{background-color:var(--color-white)}.z-button-group-item-primary-unselected:hover{--tw-brightness:brightness(95%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.z-button-group-item-outlined-unselected:hover{background-color:#e028481a}@supports (color:color-mix(in lab,red,red)){.z-button-group-item-outlined-unselected:hover{background-color:color-mix(in oklab,var(--color-primary)10%,transparent);background-color:color-mix(in srgb,#e0284810%,transparent)}}.hover\\:brightness-110:hover,.z-button-outlined:hover,.z-button-primary:hover,.z-icon-button-outlined:hover,.z-icon-button-primary:hover,.z-icon-button-text:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}@media screen and (min-width:0){.z-max-height{height:calc(100vh - 56px)}}@media screen and (min-width:600px){.z-max-height{height:calc(100vh - 64px)}}";
9
+
10
+ const MasterDataItem = /*@__PURE__*/ proxyCustomElement(class MasterDataItem extends H {
11
+ constructor(registerHost) {
12
+ super();
13
+ if (registerHost !== false) {
14
+ this.__registerHost();
15
+ }
16
+ this.edit = createEvent(this, "edit");
17
+ this.moveToTop = createEvent(this, "moveToTop");
18
+ this.moveToBottom = createEvent(this, "moveToBottom");
19
+ this.itemDragStart = createEvent(this, "itemDragStart");
20
+ this.itemDragOver = createEvent(this, "itemDragOver");
21
+ this.itemDrop = createEvent(this, "itemDrop");
22
+ }
23
+ item;
24
+ index;
25
+ isFirst;
26
+ isLast;
27
+ isSearching = false;
28
+ draggableItem = false;
29
+ edit;
30
+ moveToTop;
31
+ moveToBottom;
32
+ itemDragStart;
33
+ itemDragOver;
34
+ itemDrop;
35
+ isMenuOpen = false;
36
+ toggleMenu = (e) => {
37
+ e.stopPropagation();
38
+ this.isMenuOpen = !this.isMenuOpen;
39
+ };
40
+ closeMenu = () => {
41
+ this.isMenuOpen = false;
42
+ };
43
+ handleEdit = () => {
44
+ this.edit.emit();
45
+ };
46
+ handleMoveToTop = () => {
47
+ this.moveToTop.emit(this.item.id);
48
+ this.closeMenu();
49
+ };
50
+ handleMoveToBottom = () => {
51
+ this.moveToBottom.emit(this.item.id);
52
+ this.closeMenu();
53
+ };
54
+ componentDidLoad() {
55
+ document.addEventListener('click', this.closeMenu);
56
+ }
57
+ disconnectedCallback() {
58
+ document.removeEventListener('click', this.closeMenu);
59
+ }
60
+ render() {
61
+ const t = useTranslation();
62
+ const theme = configStore.get('theme');
63
+ return (h("div", { key: '8efbeec52ada6e31e4a5e88e317e405b596d1637', "data-theme": theme, class: "master-data-item", draggable: this.draggableItem, onDragStart: () => this.itemDragStart.emit(this.item.id), onDragOver: (e) => {
64
+ e.preventDefault();
65
+ this.itemDragOver.emit(this.item.id);
66
+ }, onDrop: (e) => {
67
+ e.preventDefault();
68
+ this.itemDrop.emit(this.item.id);
69
+ } }, !this.isSearching && (h("div", { key: 'e36774e2d00a461a85efb812dfa277dc43849557', class: "master-data-item-drag-handle" }, h(Icon, { key: 'cde5e06f199f1d88bd6d3db05c345681f5a92488', name: "Grip", addClass: 'size-5 text-primary' }))), h("div", { key: '6b61de31eafe7e007ecfa7e92b87d8f503097d4d', class: "master-data-item-color", style: { backgroundColor: this.item.color } }), h("div", { key: '39bf0cf04095787f1d9822bcf507b54479136153', class: "master-data-item-name" }, this.item.name), h("div", { key: '82d5a892f95c9010cbf9b0cfdf79d59e751cdd04', class: "master-data-item-actions" }, !this.isSearching && (h("div", { key: '46e8abed2ff9ae5fc6cbd74c98c368dec024f93a', class: "relative" }, h(ZIconButton, { key: '886159e0ee4d04720118607ea3882542389f914c', icon: reorderIcon, onClick: this.toggleMenu, variant: "text", noPadding: true }), this.isMenuOpen && (h("div", { key: 'cce23c486b1690986f1d2d621874ee49daf3b287', class: "master-data-menu" }, h("div", { key: 'eeda4167917cd95140f5f023244787f28bf3ab6e', class: `master-data-menu-item ${this.isFirst ? 'disabled' : ''}`, onClick: this.handleMoveToTop }, t('move_to_top')), h("div", { key: '02ae43eefca71722f18240aefd83b9f3d3578596', class: `master-data-menu-item ${this.isLast ? 'disabled' : ''}`, onClick: this.handleMoveToBottom }, t('move_to_bottom')))))), h(ZIconButton, { key: '0977e5e115132d6deb4fff95aa8f4f6069cf51e9', iconName: "Pencil", onClick: this.handleEdit, variant: "text", noPadding: true }))));
70
+ }
71
+ static get style() { return masterDataItemCss; }
72
+ }, [768, "master-data-item", {
73
+ "item": [16],
74
+ "index": [2],
75
+ "isFirst": [4, "is-first"],
76
+ "isLast": [4, "is-last"],
77
+ "isSearching": [4, "is-searching"],
78
+ "draggableItem": [4, "draggable-item"],
79
+ "isMenuOpen": [32]
80
+ }]);
81
+ function defineCustomElement() {
82
+ if (typeof customElements === "undefined") {
83
+ return;
84
+ }
85
+ const components = ["master-data-item"];
86
+ components.forEach(tagName => { switch (tagName) {
87
+ case "master-data-item":
88
+ if (!customElements.get(tagName)) {
89
+ customElements.define(tagName, MasterDataItem);
90
+ }
91
+ break;
92
+ } });
93
+ }
94
+ defineCustomElement();
95
+
96
+ export { MasterDataItem as M, defineCustomElement as d };
97
+ //# sourceMappingURL=master-data-item2.js.map
98
+
99
+ //# sourceMappingURL=master-data-item2.js.map
@@ -0,0 +1 @@
1
+ {"file":"master-data-item2.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/master-data-item/master-data-item.css?tag=master-data-item","src/components/master-data-item/master-data-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.master-data-item {\n display: flex;\n align-items: center;\n padding: 0.5rem 0;\n border-bottom: 1px solid var(--color-divider);\n background-color: var(--color-background);\n transition: background-color 0.2s;\n}\n\n.master-data-item:hover {\n background-color: var(--color-background-hover);\n}\n\n.master-data-item-drag-handle {\n cursor: grab;\n color: var(--color-text-primary);\n margin-right: 0.5rem;\n display: flex;\n align-items: center;\n}\n\n.master-data-item-color {\n width: 1.5rem;\n height: 1.5rem;\n border-radius: 50%;\n margin: 0 1rem;\n flex-shrink: 0;\n}\n\n.master-data-item-name {\n flex-grow: 1;\n font-size: 1rem;\n color: var(--color-surface);\n margin-left: 1rem;\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.master-data-item-actions {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.master-data-menu {\n position: absolute;\n right: 0;\n top: 100%;\n background-color: var(--color-background);\n border: 1px solid var(--color-border);\n border-radius: 4px;\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n z-index: 10;\n min-width: 150px;\n}\n\n.master-data-menu-item {\n padding: 0.5rem 1rem;\n cursor: pointer;\n font-size: 0.875rem;\n color: var(--color-text-primary);\n}\n\n.master-data-menu-item:hover {\n background-color: var(--color-background-hover);\n}\n\n.master-data-menu-item.disabled {\n color: var(--color-text-disabled);\n cursor: not-allowed;\n pointer-events: none;\n}\n","import { Component, Prop, State, h, Event, EventEmitter } from '@stencil/core';\nimport { ZIconButton } from '../internal-component/z-icon-button';\nimport { Icon } from '../internal-component/icon';\nimport { useTranslation } from '../../utils/utils';\nimport { reorderIcon } from '../../utils/icon-svg';\nimport { configStore } from '../../store/store';\n\n@Component({\n tag: 'master-data-item',\n styleUrl: 'master-data-item.css',\n})\nexport class MasterDataItem {\n @Prop() item: { id: string; name: string; color: string; sequence: number };\n @Prop() index: number;\n @Prop() isFirst: boolean;\n @Prop() isLast: boolean;\n @Prop() isSearching: boolean = false;\n\n @Prop() draggableItem: boolean = false;\n\n @Event() edit: EventEmitter<void>;\n @Event() moveToTop: EventEmitter<string>;\n @Event() moveToBottom: EventEmitter<string>;\n @Event() itemDragStart: EventEmitter<string>;\n @Event() itemDragOver: EventEmitter<string>;\n @Event() itemDrop: EventEmitter<string>;\n\n @State() isMenuOpen: boolean = false;\n\n private toggleMenu = (e: MouseEvent) => {\n e.stopPropagation();\n this.isMenuOpen = !this.isMenuOpen;\n };\n\n private closeMenu = () => {\n this.isMenuOpen = false;\n };\n\n private handleEdit = () => {\n this.edit.emit();\n };\n\n private handleMoveToTop = () => {\n this.moveToTop.emit(this.item.id);\n this.closeMenu();\n };\n\n private handleMoveToBottom = () => {\n this.moveToBottom.emit(this.item.id);\n this.closeMenu();\n };\n\n componentDidLoad() {\n document.addEventListener('click', this.closeMenu);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.closeMenu);\n }\n\n render() {\n const t = useTranslation();\n const theme = configStore.get('theme');\n\n\n return (\n <div\n data-theme={theme}\n class=\"master-data-item\"\n draggable={this.draggableItem}\n onDragStart={() => this.itemDragStart.emit(this.item.id)}\n onDragOver={(e) => {\n e.preventDefault();\n this.itemDragOver.emit(this.item.id);\n }}\n onDrop={(e) => {\n e.preventDefault();\n this.itemDrop.emit(this.item.id);\n }}\n >\n {!this.isSearching && (\n <div class=\"master-data-item-drag-handle\">\n <Icon name=\"Grip\" addClass='size-5 text-primary' />\n </div>\n )}\n\n <div\n class=\"master-data-item-color\"\n style={{ backgroundColor: this.item.color }}\n />\n\n <div class=\"master-data-item-name\">{this.item.name}</div>\n\n <div class=\"master-data-item-actions\">\n {!this.isSearching && (\n <div class=\"relative\">\n <ZIconButton\n icon={reorderIcon}\n onClick={this.toggleMenu}\n variant=\"text\"\n noPadding\n />\n {this.isMenuOpen && (\n <div class=\"master-data-menu\">\n <div\n class={`master-data-menu-item ${this.isFirst ? 'disabled' : ''}`}\n onClick={this.handleMoveToTop}\n >\n {t('move_to_top')}\n </div>\n <div\n class={`master-data-menu-item ${this.isLast ? 'disabled' : ''}`}\n onClick={this.handleMoveToBottom}\n >\n {t('move_to_bottom')}\n </div>\n </div>\n )}\n </div>\n )}\n\n <ZIconButton\n iconName=\"Pencil\"\n onClick={this.handleEdit}\n variant=\"text\"\n noPadding\n />\n </div>\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface MasterStatusApp extends Components.MasterStatusApp, HTMLElement {}
4
+ export const MasterStatusApp: {
5
+ prototype: MasterStatusApp;
6
+ new (): MasterStatusApp;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;