@quoreadmin/ui 1.7.20 → 1.8.1

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 (355) hide show
  1. package/dist/index.css +1 -1
  2. package/dist/index.js +42 -40
  3. package/dist/index10.js +2 -2
  4. package/dist/{index100.js → index101.js} +1 -1
  5. package/dist/index103.js +138 -6
  6. package/dist/index104.js +4 -0
  7. package/dist/index107.js +2 -2
  8. package/dist/index109.js +1 -1
  9. package/dist/index11.js +2 -2
  10. package/dist/index111.js +3 -3
  11. package/dist/index113.js +6 -6
  12. package/dist/index115.js +1 -1
  13. package/dist/index117.js +5 -5
  14. package/dist/index12.js +2 -2
  15. package/dist/index127.js +69 -10
  16. package/dist/index129.js +9 -75
  17. package/dist/index13.js +2 -2
  18. package/dist/index131.js +68 -243
  19. package/dist/index133.js +257 -0
  20. package/dist/index136.js +35 -16
  21. package/dist/index138.js +22 -50
  22. package/dist/index14.js +2 -2
  23. package/dist/index140.js +38 -1110
  24. package/dist/index142.js +1059 -216
  25. package/dist/index144.js +238 -294
  26. package/dist/index146.js +335 -16
  27. package/dist/index148.js +15 -87
  28. package/dist/index15.js +2 -2
  29. package/dist/index150.js +71 -61
  30. package/dist/index152.js +66 -93
  31. package/dist/index154.js +120 -0
  32. package/dist/index157.js +373 -28
  33. package/dist/index159.js +28 -194
  34. package/dist/index16.js +2 -2
  35. package/dist/index161.js +210 -0
  36. package/dist/index164.js +110 -5518
  37. package/dist/index165.js +484 -80
  38. package/dist/index166.js +5505 -844
  39. package/dist/index167.js +90 -37
  40. package/dist/index168.js +816 -235
  41. package/dist/index169.js +28 -140
  42. package/dist/index17.js +2 -2
  43. package/dist/index170.js +271 -1190
  44. package/dist/index171.js +134 -756
  45. package/dist/index172.js +1133 -1242
  46. package/dist/index173.js +753 -257
  47. package/dist/index174.js +1290 -88
  48. package/dist/index175.js +276 -2
  49. package/dist/index176.js +86 -1356
  50. package/dist/index177.js +4 -0
  51. package/dist/index178.js +1372 -14
  52. package/dist/index18.js +2 -2
  53. package/dist/index180.js +11 -11
  54. package/dist/index181.js +11 -11
  55. package/dist/index182.js +12 -19
  56. package/dist/index183.js +18 -759
  57. package/dist/index184.js +25 -1122
  58. package/dist/index185.js +625 -1100
  59. package/dist/index186.js +1122 -11277
  60. package/dist/index187.js +1234 -36
  61. package/dist/index188.js +11276 -43
  62. package/dist/index19.js +2 -2
  63. package/dist/index191.js +36 -5938
  64. package/dist/index192.js +42 -205
  65. package/dist/index193.js +5922 -19
  66. package/dist/index194.js +199 -10
  67. package/dist/index195.js +33 -76
  68. package/dist/index196.js +14 -249
  69. package/dist/index197.js +72 -13678
  70. package/dist/index198.js +253 -27
  71. package/dist/index199.js +13669 -48
  72. package/dist/index2.js +2 -2
  73. package/dist/index20.js +2 -2
  74. package/dist/index200.js +25 -236
  75. package/dist/index201.js +45 -290
  76. package/dist/index202.js +179 -229
  77. package/dist/index203.js +304 -29
  78. package/dist/index204.js +286 -114
  79. package/dist/index205.js +29 -32
  80. package/dist/index206.js +116 -26
  81. package/dist/index207.js +31 -31
  82. package/dist/index208.js +26 -9
  83. package/dist/index209.js +35 -18
  84. package/dist/index21.js +2 -2
  85. package/dist/index210.js +8 -9
  86. package/dist/index211.js +19 -10
  87. package/dist/index212.js +10 -51
  88. package/dist/index213.js +9 -42
  89. package/dist/index214.js +50 -3
  90. package/dist/index215.js +40 -36
  91. package/dist/index216.js +4 -21
  92. package/dist/index217.js +35 -84
  93. package/dist/index218.js +21 -407
  94. package/dist/index219.js +159 -20
  95. package/dist/index22.js +3 -3
  96. package/dist/index220.js +19 -160
  97. package/dist/index221.js +10 -10
  98. package/dist/index222.js +15 -13
  99. package/dist/index223.js +198 -21
  100. package/dist/index224.js +51 -180
  101. package/dist/index225.js +82 -64
  102. package/dist/index226.js +406 -33
  103. package/dist/index227.js +33 -39
  104. package/dist/index228.js +36 -123
  105. package/dist/index229.js +158 -35
  106. package/dist/index23.js +2 -2
  107. package/dist/index230.js +227 -79
  108. package/dist/index231.js +36 -19
  109. package/dist/index232.js +10 -20
  110. package/dist/index233.js +22 -20
  111. package/dist/index234.js +126 -19
  112. package/dist/index235.js +35 -158
  113. package/dist/index236.js +79 -227
  114. package/dist/index237.js +19 -36
  115. package/dist/index238.js +20 -10
  116. package/dist/index239.js +20 -3632
  117. package/dist/index24.js +2 -2
  118. package/dist/index240.js +20 -55
  119. package/dist/index241.js +22 -77
  120. package/dist/index242.js +22 -52
  121. package/dist/index243.js +20 -215
  122. package/dist/index244.js +836 -10
  123. package/dist/index245.js +695 -50
  124. package/dist/index246.js +174 -59
  125. package/dist/index247.js +22 -54
  126. package/dist/index248.js +20 -75
  127. package/dist/index249.js +19 -722
  128. package/dist/index25.js +60 -11
  129. package/dist/index250.js +3 -39
  130. package/dist/index251.js +181 -58
  131. package/dist/index252.js +133 -11
  132. package/dist/index253.js +1189 -671
  133. package/dist/index254.js +20 -820
  134. package/dist/index255.js +11 -11
  135. package/dist/index256.js +9 -9
  136. package/dist/index257.js +22 -13
  137. package/dist/index258.js +20 -836
  138. package/dist/index259.js +19 -701
  139. package/dist/index26.js +1 -1
  140. package/dist/index260.js +2 -176
  141. package/dist/index261.js +2 -22
  142. package/dist/index262.js +3632 -20
  143. package/dist/index263.js +55 -20
  144. package/dist/index264.js +77 -3
  145. package/dist/index265.js +46 -181
  146. package/dist/index266.js +209 -127
  147. package/dist/index267.js +10 -1223
  148. package/dist/index268.js +57 -20
  149. package/dist/index269.js +61 -22
  150. package/dist/index27.js +1 -1
  151. package/dist/index270.js +54 -22
  152. package/dist/index271.js +75 -29
  153. package/dist/index272.js +722 -19
  154. package/dist/index273.js +39 -20
  155. package/dist/index274.js +64 -2
  156. package/dist/index275.js +11 -2
  157. package/dist/index276.js +689 -237
  158. package/dist/index277.js +820 -8
  159. package/dist/index278.js +42 -126
  160. package/dist/index279.js +59 -63
  161. package/dist/index28.js +1 -1
  162. package/dist/index280.js +26 -3
  163. package/dist/index281.js +21 -26
  164. package/dist/index282.js +21 -53
  165. package/dist/index283.js +15 -78
  166. package/dist/index284.js +17 -26
  167. package/dist/index285.js +253 -22
  168. package/dist/index286.js +8 -22
  169. package/dist/index287.js +137 -15
  170. package/dist/index288.js +83 -17
  171. package/dist/index289.js +2 -2
  172. package/dist/index29.js +1 -1
  173. package/dist/index290.js +3 -2
  174. package/dist/index291.js +24 -1515
  175. package/dist/index292.js +2 -386
  176. package/dist/index293.js +245 -2714
  177. package/dist/index294.js +4 -84
  178. package/dist/index295.js +135 -3765
  179. package/dist/index296.js +70 -57
  180. package/dist/index297.js +86 -14
  181. package/dist/index298.js +27 -82
  182. package/dist/index299.js +13 -199
  183. package/dist/index3.js +2 -2
  184. package/dist/index30.js +1 -1
  185. package/dist/index300.js +66 -237
  186. package/dist/index301.js +3 -78
  187. package/dist/index302.js +2 -22
  188. package/dist/index303.js +74 -926
  189. package/dist/index304.js +52 -21
  190. package/dist/index305.js +5 -19
  191. package/dist/index306.js +4 -19
  192. package/dist/index307.js +171 -61
  193. package/dist/index308.js +62 -18
  194. package/dist/index309.js +74 -18
  195. package/dist/index31.js +1 -1
  196. package/dist/index310.js +78 -21
  197. package/dist/index311.js +11 -11
  198. package/dist/index312.js +930 -58
  199. package/dist/index313.js +21 -261
  200. package/dist/index314.js +19 -5
  201. package/dist/index315.js +19 -139
  202. package/dist/index316.js +67 -71
  203. package/dist/index317.js +17 -85
  204. package/dist/index318.js +19 -29
  205. package/dist/index319.js +21 -15
  206. package/dist/index32.js +1 -1
  207. package/dist/index320.js +21 -74
  208. package/dist/index321.js +63 -4
  209. package/dist/index322.js +1518 -2
  210. package/dist/index323.js +376 -73
  211. package/dist/index324.js +2726 -48
  212. package/dist/index325.js +84 -4
  213. package/dist/index326.js +3769 -4
  214. package/dist/index327.js +51 -170
  215. package/dist/index328.js +14 -62
  216. package/dist/index329.js +84 -75
  217. package/dist/index33.js +1 -1
  218. package/dist/index330.js +201 -8
  219. package/dist/index331.js +245 -12
  220. package/dist/index332.js +32 -50
  221. package/dist/index333.js +8 -11
  222. package/dist/index334.js +12 -13
  223. package/dist/index335.js +49 -52
  224. package/dist/index336.js +9 -49
  225. package/dist/index337.js +10 -27
  226. package/dist/index338.js +58 -2
  227. package/dist/index339.js +52 -5
  228. package/dist/index34.js +1 -1
  229. package/dist/index340.js +31 -2
  230. package/dist/index341.js +2 -23
  231. package/dist/index342.js +4 -40
  232. package/dist/index343.js +2 -2
  233. package/dist/index344.js +22 -10
  234. package/dist/index345.js +38 -17
  235. package/dist/index346.js +2 -17
  236. package/dist/index347.js +10 -9
  237. package/dist/index348.js +20 -10
  238. package/dist/index349.js +17 -2
  239. package/dist/index35.js +1 -1
  240. package/dist/index350.js +9 -8
  241. package/dist/index351.js +10 -10
  242. package/dist/index352.js +2 -14
  243. package/dist/index353.js +9 -37
  244. package/dist/index354.js +9 -19
  245. package/dist/index355.js +14 -20
  246. package/dist/index356.js +17 -62
  247. package/dist/index357.js +56 -36
  248. package/dist/index358.js +26 -16
  249. package/dist/index359.js +6 -56
  250. package/dist/index36.js +1 -1
  251. package/dist/index360.js +51 -28
  252. package/dist/index361.js +7 -7
  253. package/dist/index362.js +11 -51
  254. package/dist/index363.js +6 -6
  255. package/dist/index364.js +28 -12
  256. package/dist/index365.js +2 -7
  257. package/dist/index366.js +69 -27
  258. package/dist/index367.js +167 -2
  259. package/dist/index368.js +20 -70
  260. package/dist/index369.js +20 -167
  261. package/dist/index37.js +4 -16
  262. package/dist/index370.js +61 -98
  263. package/dist/index371.js +37 -91
  264. package/dist/index372.js +30 -97
  265. package/dist/index373.js +11 -17
  266. package/dist/index374.js +3 -30
  267. package/dist/index375.js +3 -10
  268. package/dist/index376.js +13 -4
  269. package/dist/index377.js +7 -4
  270. package/dist/index378.js +12 -13
  271. package/dist/index379.js +5 -7
  272. package/dist/index38.js +15 -43
  273. package/dist/index380.js +33 -12
  274. package/dist/index381.js +31 -5
  275. package/dist/index382.js +27 -32
  276. package/dist/index383.js +58 -28
  277. package/dist/index384.js +16 -27
  278. package/dist/index385.js +99 -59
  279. package/dist/index386.js +91 -3
  280. package/dist/index387.js +98 -2
  281. package/dist/index388.js +3 -2
  282. package/dist/index389.js +2 -17
  283. package/dist/index39.js +42 -67
  284. package/dist/index390.js +2 -13
  285. package/dist/index391.js +17 -6
  286. package/dist/index392.js +13 -32
  287. package/dist/index393.js +8 -0
  288. package/dist/index394.js +34 -0
  289. package/dist/index4.js +2 -2
  290. package/dist/index40.js +66 -26
  291. package/dist/index41.js +25 -32
  292. package/dist/index42.js +32 -37
  293. package/dist/index43.js +37 -1300
  294. package/dist/index44.js +1273 -337
  295. package/dist/index45.js +357 -145
  296. package/dist/index46.js +155 -18
  297. package/dist/index47.js +16 -42
  298. package/dist/index48.js +44 -68
  299. package/dist/index49.js +67 -61
  300. package/dist/index5.js +2 -2
  301. package/dist/index50.js +57 -175
  302. package/dist/index51.js +173 -77
  303. package/dist/index52.js +78 -199
  304. package/dist/index53.js +206 -68
  305. package/dist/index54.js +69 -20
  306. package/dist/index55.js +20 -11
  307. package/dist/index56.js +10 -6
  308. package/dist/index57.js +5 -209
  309. package/dist/index58.js +210 -12
  310. package/dist/index59.js +12 -184
  311. package/dist/index6.js +2 -2
  312. package/dist/index60.js +176 -68
  313. package/dist/index61.js +79 -0
  314. package/dist/index63.js +7 -63
  315. package/dist/index64.js +65 -0
  316. package/dist/index7.js +2 -2
  317. package/dist/{index71.js → index72.js} +2 -2
  318. package/dist/index76.js +40 -308
  319. package/dist/index77.js +330 -0
  320. package/dist/index8.js +3 -3
  321. package/dist/{index80.js → index81.js} +5 -5
  322. package/dist/{index82.js → index83.js} +1 -1
  323. package/dist/index85.js +23 -131
  324. package/dist/index86.js +144 -0
  325. package/dist/{index87.js → index88.js} +5 -5
  326. package/dist/index9.js +2 -2
  327. package/dist/{index89.js → index90.js} +5 -5
  328. package/dist/{index95.js → index96.js} +3 -3
  329. package/dist/index98.js +20 -25
  330. package/dist/index99.js +34 -0
  331. package/dist/src/components/footer-actions/footer-actions.stories.d.ts +33 -1
  332. package/dist/src/components/footer-actions/footer-actions.vue.d.ts +29 -2
  333. package/dist/src/components/page-header/page-header.stories.d.ts +394 -0
  334. package/dist/src/components/page-header/page-header.vue.d.ts +43 -0
  335. package/dist/src/index.d.ts +1 -0
  336. package/package.json +1 -1
  337. package/src/assets/illustrations/app-icon-news.svg +1 -0
  338. package/dist/index102.js +0 -142
  339. package/dist/index134.js +0 -56
  340. package/dist/index155.js +0 -389
  341. package/dist/index162.js +0 -116
  342. package/dist/index163.js +0 -497
  343. package/dist/index179.js +0 -20
  344. package/dist/index62.js +0 -9
  345. package/dist/index75.js +0 -62
  346. package/dist/index84.js +0 -36
  347. package/dist/index97.js +0 -29
  348. package/dist/src/components/footer-actions/footer-actions.d.ts +0 -3
  349. /package/dist/{index65.js → index66.js} +0 -0
  350. /package/dist/{index67.js → index68.js} +0 -0
  351. /package/dist/{index69.js → index70.js} +0 -0
  352. /package/dist/{index73.js → index74.js} +0 -0
  353. /package/dist/{index78.js → index79.js} +0 -0
  354. /package/dist/{index91.js → index92.js} +0 -0
  355. /package/dist/{index93.js → index94.js} +0 -0
package/dist/index142.js CHANGED
@@ -1,294 +1,1137 @@
1
- import { defineComponent as H, ref as n, computed as a, watch as g, nextTick as f } from "vue";
2
- import { Multiselect as I } from "./index189.js";
3
- import { useI18n as k } from "vue-i18n";
4
- /* empty css */
5
- import q from "./index6.js";
6
- const U = H({
7
- name: "QSelect",
1
+ import { defineComponent as ct, ref as i, computed as _, watch as B, onMounted as dt, onUnmounted as mt } from "vue";
2
+ import { useI18n as vt } from "vue-i18n";
3
+ import { DateTime as w } from "./index166.js";
4
+ import "./index191.js";
5
+ import pt from "./index2.js";
6
+ import ft from "./index3.js";
7
+ import ht from "./index4.js";
8
+ import yt from "./index21.js";
9
+ import gt from "./index28.js";
10
+ import _t from "./index40.js";
11
+ import wt from "./index20.js";
12
+ import It from "./index47.js";
13
+ import Dt from "./index48.js";
14
+ import Tt from "./index50.js";
15
+ import K from "./index192.js";
16
+ const Ft = ct({
17
+ name: "QRoomDetailsPopover",
8
18
  components: {
9
- QBadge: q,
10
- VueMultiselect: I
19
+ QAccordion: pt,
20
+ QActivityItem: ft,
21
+ QAvatar: ht,
22
+ QDatePicker: wt,
23
+ QDivider: yt,
24
+ QIcon: gt,
25
+ QPopover: _t,
26
+ QTag: It,
27
+ QTextarea: Dt,
28
+ QTooltip: Tt
11
29
  },
12
30
  props: {
13
31
  id: {
14
32
  type: String,
15
33
  default: ""
16
34
  },
17
- // Options in the select
18
- options: {
19
- type: [Array, Object],
20
- required: !0
35
+ roomDetails: {
36
+ type: Object,
37
+ default: () => {
38
+ }
21
39
  },
22
- // v-model
23
- modelValue: {
24
- type: [String, Number, Array, Object, null, void 0],
25
- default: void 0
40
+ guestDetails: {
41
+ type: Object,
42
+ default: () => {
43
+ }
26
44
  },
27
- // trackby is for selected value
28
- // Used to compare objects. Only use if options are objects.
29
- trackBy: {
30
- type: String,
31
- default: "id"
45
+ propertyId: {
46
+ type: [Number, String],
47
+ default: ""
32
48
  },
33
- // Label from option Object, that will be visible in the dropdown.
34
- label: {
49
+ propertyTimeZone: {
35
50
  type: String,
36
- default: "label"
51
+ default: "America/Chicago"
37
52
  },
38
- // Equivalent to the placeholder attribute on a <select> input.
39
- placeholder: {
40
- type: String,
53
+ trigger: {
54
+ type: [Number, String],
41
55
  default: ""
42
56
  },
43
- // In our case, the multiselect acts like the tagging component - https://vue-multiselect.js.org/#sub-tagging
44
- multiple: {
45
- type: Boolean,
46
- default: !1
57
+ comments: {
58
+ type: Array,
59
+ default: () => []
47
60
  },
48
- taggable: {
49
- type: Boolean,
50
- default: !1
61
+ room: {
62
+ type: Object,
63
+ default: () => {
64
+ }
51
65
  },
52
- // Add / removes search input.
53
- searchable: {
66
+ showActionMenu: {
54
67
  type: Boolean,
55
68
  default: !0
56
69
  },
57
- // Defaulting to an empty function - this overrides vue-multiselects default sort
58
- // customLabel(a, label).length - customLabel(b, label).length
59
- // which is sorting by the length of the label desc
60
- filterSortFunction: {
61
- type: Function,
62
- default: () => {
63
- }
70
+ showActionsLink: {
71
+ type: Boolean,
72
+ default: !0
64
73
  },
65
- disabled: {
74
+ showGuestDetails: {
66
75
  type: Boolean,
67
76
  default: !1
68
77
  },
69
- loading: {
78
+ showComments: {
70
79
  type: Boolean,
71
80
  default: !1
72
81
  },
73
- // Grouping - like optgroups
74
- // https://vue-multiselect.js.org/#sub-option-groups
75
- groupValues: {
76
- type: String,
77
- default: ""
78
- },
79
- groupLabel: {
80
- type: String,
81
- default: ""
82
- },
83
- // Props for vue-multiselect - deselectGroupLabel, selectGroupLabel, selectLabel
84
- groupSelectable: {
82
+ showTickets: {
85
83
  type: Boolean,
86
84
  default: !0
87
85
  },
88
- // A couple of dropdowns have checkboxes
89
- hasCheckboxes: {
90
- type: Boolean,
91
- default: !1
92
- },
93
- size: {
94
- type: String,
95
- default: "lg"
96
- },
97
- // TODO: Document what this is for when I realize what it is used for
98
- info: {
99
- type: String,
100
- default: ""
101
- },
102
- // NEW - Allows to remove all selected values. Otherwise one must be left selected.
103
- allowEmpty: {
86
+ showGuestCallback: {
104
87
  type: Boolean,
105
88
  default: !0
106
89
  },
107
- // Array of keyboard key aliases to block when selecting ex ['Tab', 'Enter', 'Delete']
108
- blockKeys: {
109
- type: Array,
110
- default: () => ["Delete"]
111
- },
112
- // We could make this a slot like optionPrefix
113
- noResultMessage: {
114
- type: String,
115
- default: ""
116
- },
117
- // Message to show when options array is empty
118
- noOptionsMessage: {
119
- type: String,
120
- default: ""
121
- },
122
- // Selection control for mobile
123
- selectionControl: {
90
+ showRoomName: {
124
91
  type: Boolean,
125
92
  default: !1
126
93
  },
127
- showExpanded: {
94
+ hover: {
128
95
  type: Boolean,
129
96
  default: !1
130
97
  },
131
- showPlaceholderImage: {
132
- type: Boolean,
133
- default: !0
98
+ size: {
99
+ type: String,
100
+ default: "md"
134
101
  },
135
- // Use this with multiple = true
136
- showSelectAll: {
102
+ open: {
137
103
  type: Boolean,
138
104
  default: !1
139
105
  },
140
- // Helpful text for user to know how to add a new option
141
- tagPlaceholder: {
106
+ align: {
142
107
  type: String,
143
- default: ""
108
+ default: "left"
144
109
  },
145
- // Expands the field to see all selected options
146
- expand: {
147
- type: Boolean,
148
- default: !1
110
+ position: {
111
+ type: String,
112
+ default: "bottom"
149
113
  },
150
- // Shows the selected count
151
- showSelectedCount: {
152
- type: Boolean,
153
- default: !1
114
+ locale: {
115
+ type: String,
116
+ default: "en"
117
+ },
118
+ pmsBaseUrl: {
119
+ type: String,
120
+ default: "",
121
+ required: !0
154
122
  },
155
- // Send email report and schedule report have email dropdowns with name & email. In those use cases, the selected value needs to be truncated.
156
- truncateTag: {
123
+ allowWhenWhere: {
157
124
  type: Boolean,
158
125
  default: !1
159
126
  },
160
- // Limit of options shown to the user - refer to receipents and week frequency example
161
- limitShown: {
162
- type: Number,
163
- default: null
164
- },
165
- // Ability to pass in a function if we need validation for tags (example: email needs to check if it's a valid email before adding it to the list of options)
166
- validationMethod: {
167
- type: Function,
168
- default: () => !0
127
+ quickReplies: {
128
+ type: Array,
129
+ default: () => []
169
130
  },
170
- // Show descriptions as part of the options (on right).
171
- showOptionDescription: {
131
+ /** Whether this is a test environment (enables simulation features) */
132
+ isTestEnvironment: {
172
133
  type: Boolean,
173
134
  default: !1
174
135
  },
175
- // There are use cases where we do not want taggable true, because taggable allows for adding values to the list of options. There are scenarios where design wants the tag styling in some places but then not in others
176
- showTags: {
136
+ /** Set if the popover is teleported to the body (escapes overflow clipping) */
137
+ teleport: {
177
138
  type: Boolean,
178
139
  default: !1
179
140
  },
180
- // Open direction of the options. Default to below.
181
- openDirection: {
141
+ /** Target element for teleport */
142
+ teleportTo: {
182
143
  type: String,
183
- default: "bottom"
184
- },
185
- // Shows "*Required" indicator next to placeholder with different styling
186
- required: {
187
- type: Boolean,
188
- default: !1
189
- },
190
- // Use this with taggable = false, multiple = false, showTags = false to allow for adding options without tags.
191
- useAddTagsOnly: {
192
- type: Boolean,
193
- default: !1
144
+ default: "body"
194
145
  },
195
- clearOnSelect: {
146
+ /** Whether to close the popover when the trigger scrolls out of its scrollable parent */
147
+ closeOnScrollOutOfView: {
196
148
  type: Boolean,
197
149
  default: !1
198
150
  },
199
- closeOnSelect: {
151
+ /** Whether to scroll the page to bring the popover into view when it opens or content changes */
152
+ scrollIntoView: {
200
153
  type: Boolean,
201
154
  default: !1
202
155
  },
203
- // Enables floating label behavior - label floats to top when focused or has value
204
- floatingLabel: {
205
- type: Boolean,
206
- default: !1
156
+ /** Padding (in pixels) from viewport edge when scrolling popover into view */
157
+ scrollIntoViewPadding: {
158
+ type: Number,
159
+ default: 20
207
160
  }
208
161
  },
209
- emits: ["update:model-value"],
210
- setup(l, { slots: h, emit: o }) {
211
- const { t: r } = k(), d = n(null), c = n(null), e = n(l.modelValue), p = n(""), s = n(!1), i = n([]), y = a(() => Array.isArray(l.options) ? l.options.length : 0), m = a(() => !!h.action), S = a(() => l.noResultMessage || r("HC_PRESS_ENTER_TO_CREATE_A_TAG")), b = a(() => l.tagPlaceholder || r("HC_PRESS_ENTER_TO_CREATE_A_TAG")), B = a(() => l.noOptionsMessage || r("HC_LIST_IS_EMPTY")), _ = a(() => y.value === e.value.length ? r("HC_ALL") : e.value.length > 1 ? r("HC_MULTIPLE_SELECTED") : e.value[0].label || e.value[0].name || ""), T = a(() => l.taggable || l.showTags), A = a(() => !!(l.groupValues && l.groupLabel && l.groupSelectable)), v = a(() => l.multiple ? Array.isArray(e.value) && e.value.length > 0 : e.value !== null && e.value !== void 0 && e.value !== ""), E = a(() => l.floatingLabel), C = a(() => l.floatingLabel && v.value), O = (t) => {
212
- o("update:model-value", t);
213
- }, w = (t) => {
214
- p.value = t;
215
- }, L = async (t) => {
216
- const u = {
217
- label: t,
218
- name: t,
219
- added: !0
220
- // maybe change this to class - I am going to use this for external emails
221
- };
222
- if (!l.validationMethod(u)) {
223
- await f(), d.value.search = t;
224
- return;
162
+ emits: ["create:callback", "create:todo", "refresh:pms", "show:toast", "toggle"],
163
+ setup(o, { emit: h }) {
164
+ const { t: c } = vt(), l = i(null), ie = i(!1), ue = i("left"), X = i([
165
+ {
166
+ id: 1,
167
+ label: c("HC_DEPARTMENT")
168
+ },
169
+ {
170
+ id: 2,
171
+ label: c("HC_PERSON")
172
+ },
173
+ {
174
+ id: 0,
175
+ label: c("HC_ANYONE")
225
176
  }
226
- i.value.push(u), e.value.push(u);
227
- }, M = () => {
228
- e.value = [], o("update:model-value", e.value);
229
- }, R = (t) => {
230
- typeof t == "number" && t >= 0 ? e.value.splice(t, 1) : e.value = [], f(() => {
231
- o("update:model-value", e.value);
232
- });
233
- }, V = (t) => {
234
- l.multiple && e.value && t.length === e.value.length && f(() => {
235
- e.value = [], o("update:model-value", e.value);
177
+ ]), b = i(""), p = i({
178
+ checkInDate: /* @__PURE__ */ new Date(),
179
+ checkOutDate: /* @__PURE__ */ new Date(),
180
+ guestEmail: "",
181
+ guestLoyalty: "",
182
+ guestMood: null,
183
+ guestName: "",
184
+ guestPhone: "",
185
+ inHouse: !!l.value?.tokenId || !1,
186
+ problem: null,
187
+ notes: "",
188
+ tokenId: l.value?.tokenId
189
+ }), G = i(250), U = i(290), M = i([]), we = i([]), Z = i(!0), ee = i(!0), N = i({
190
+ info: !0,
191
+ tickets: !0,
192
+ comments: !0
193
+ }), te = i(!0), be = i(o.guestDetails), O = i([]), y = i({
194
+ actionItems: !1,
195
+ conversationToggle: !1,
196
+ messages: !1,
197
+ pms: !1,
198
+ roomNotices: !1,
199
+ sendingMessage: !1,
200
+ tickets: !1
201
+ }), C = i([]), ce = i([]), de = i("bottom"), R = i(null), H = i(!1), W = i(!1), j = i(""), me = i(!1), A = i(!1), k = i(null), Q = i(null), Ce = 3e4, d = i({
202
+ assignType: null,
203
+ department: null,
204
+ due: /* @__PURE__ */ new Date(),
205
+ item: null,
206
+ notes: "",
207
+ person: null,
208
+ requestedBy: null,
209
+ when: null,
210
+ where: null
211
+ }), $ = i([
212
+ {
213
+ id: 0,
214
+ label: c("HC_STAFF_MEMBER")
215
+ },
216
+ {
217
+ id: 1,
218
+ label: c("HC_HOTEL_GUEST")
219
+ }
220
+ ]), ve = i(!1), E = i(null), I = i({
221
+ endDate: /* @__PURE__ */ new Date(),
222
+ issue: null,
223
+ notes: "",
224
+ startDate: /* @__PURE__ */ new Date()
225
+ }), ae = i([]), se = i(!1), S = i([]), L = i([]), Me = i([
226
+ {
227
+ label: c("HC_COMPLAINT"),
228
+ id: "complaint"
229
+ },
230
+ {
231
+ label: c("HC_REQUEST"),
232
+ id: "request"
233
+ },
234
+ {
235
+ label: c("HC_ROOM_NOTICE"),
236
+ id: "room_notice"
237
+ },
238
+ {
239
+ label: c("HC_WORK_ORDER"),
240
+ id: "work_order"
241
+ }
242
+ ]), J = i(), P = i(null), v = i({
243
+ assignType: null,
244
+ department: null,
245
+ due: /* @__PURE__ */ new Date(),
246
+ item: null,
247
+ issue: null,
248
+ notes: "",
249
+ person: null,
250
+ requestedBy: null
251
+ }), pe = i([]), q = i([]), x = i([]), Ne = _(() => {
252
+ switch (l.value.cleaning?.name || l.value.cleaningStatus) {
253
+ case "CLEAN":
254
+ case "INSPECTED":
255
+ return "CLEAN";
256
+ case "DIRTY":
257
+ case "PICKUP":
258
+ case "OUT OF ORDER":
259
+ case "OUT OF SERVICE":
260
+ return "DIRTY";
261
+ default:
262
+ return "";
263
+ }
264
+ }), Re = _(() => {
265
+ const e = b.value.toLowerCase();
266
+ return o.quickReplies.filter((t) => t.toLowerCase().match(e));
267
+ }), He = _(() => {
268
+ if (!C.value.length) return [];
269
+ const e = [];
270
+ let t = null;
271
+ return C.value.forEach((a) => {
272
+ const s = w.fromFormat(
273
+ a.dateUtc,
274
+ "yyyy-MM-dd HH:mm:ss",
275
+ { zone: "utc" }
276
+ ).setZone(o.propertyTimeZone), n = s.toFormat("yyyy-MM-dd-HH");
277
+ n !== t && (e.push({
278
+ type: "separator",
279
+ label: s.toFormat("ccc, LLL d 'at' h:mma").replace("AM", "am").replace("PM", "pm"),
280
+ hourKey: n
281
+ }), t = n), e.push({
282
+ type: "message",
283
+ ...a,
284
+ formattedTime: s.toFormat("h:mma").replace("AM", "am").replace("PM", "pm")
285
+ });
286
+ }), e;
287
+ }), Ie = _(() => S.value.length ? !!S.value.find(
288
+ (t) => t.type === "complaint"
289
+ ) : !1), Le = _(() => S.value.length ? !!S.value.find(
290
+ (t) => t.type === "callback"
291
+ ) : !1), Pe = _(() => {
292
+ let e = [];
293
+ return O.value[0] && O.value[0].options === void 0 ? O.value.forEach((t) => {
294
+ e.push({
295
+ id: parseInt(t.id),
296
+ label: t.display_name
297
+ });
298
+ }) : e = O.value, e;
299
+ }), De = _(() => l.value.occupancy?.name === "OCCUPIED" || l.value.occupancyStatus === "OCCUPIED"), qe = _(() => De.value && Ie.value ? "HK_ROOM_STATUS_Occupied_Complaint" : "HK_ROOM_STATUS_Occupied"), xe = _(() => {
300
+ switch (E.value?.id) {
301
+ case "request":
302
+ case "work_order":
303
+ return X.value[0];
304
+ default:
305
+ return null;
306
+ }
307
+ }), Fe = _(() => {
308
+ if (M.value)
309
+ switch (E.value?.id) {
310
+ case "request":
311
+ return M.value.find((e) => parseInt(e.id) === 4);
312
+ case "work_order":
313
+ return M.value.find((e) => parseInt(e.id) === 2);
314
+ default:
315
+ return null;
316
+ }
317
+ return null;
318
+ }), Be = _(() => {
319
+ switch (E.value?.id) {
320
+ case "request":
321
+ return $.value[1];
322
+ case "work_order":
323
+ return $.value[0];
324
+ default:
325
+ return null;
326
+ }
327
+ }), Ge = _(() => {
328
+ let e = "";
329
+ if (l.value && l.value.reservations[0]) {
330
+ const t = w.fromISO(
331
+ l.value.reservations[0].arrivalDate
332
+ ), a = t.toFormat("MMM"), s = t.day, n = t.year, r = w.fromISO(
333
+ l.value.reservations[0].departureDate
334
+ ), u = r.toFormat("MMM"), m = r.day, f = r.year;
335
+ e += a + " " + s, n !== f && (e += ", " + n), a === u ? e += "-" + m : e += " - " + u + " " + m, e += ", " + f;
336
+ }
337
+ return e;
338
+ }), Ue = _(() => {
339
+ let e = ae.value;
340
+ return e = [...new Set(e)], e;
341
+ }), We = _(() => {
342
+ const e = E.value?.id;
343
+ if (!e)
344
+ return !1;
345
+ switch (e) {
346
+ case "room_notice":
347
+ return I.value.issue && I.value.startDate && I.value.endDate;
348
+ case "complaint":
349
+ return p.value.problem && p.value.guestName && p.value.guestMood;
350
+ case "work_order":
351
+ return v.value.item && v.value.issue && v.value.requestedBy && v.value.due && (v.value.assignType && v.value.assignType.id === 0 || v.value.assignType && v.value.assignType.id === 1 && v.value.department || v.value.assignType && v.value.assignType.id === 2 && v.value.person);
352
+ case "request":
353
+ return d.value.item && d.value.requestedBy && d.value.due && (d.value.assignType && d.value.assignType.id === 0 || d.value.assignType && d.value.assignType.id === 1 && d.value.department || d.value.assignType && d.value.assignType.id === 2 && d.value.person);
354
+ default:
355
+ return !1;
356
+ }
357
+ }), Te = () => {
358
+ se.value = !1, H.value = !1, ie.value = !1, ve.value = !1, O.value = [], ce.value = [], pe.value = [], q.value = [], x.value = [], E.value = null, I.value.issue = null, I.value.startDate = /* @__PURE__ */ new Date(), I.value.endDate = /* @__PURE__ */ new Date(), I.value.notes = "", p.value.guestName = "", p.value.guestEmail = "", p.value.guestPhone = "", p.value.guestMood = null, p.value.guestLoyalty = "", p.value.problem = null, p.value.checkInDate = /* @__PURE__ */ new Date(), p.value.checkOutDate = /* @__PURE__ */ new Date(), p.value.notes = "", v.value.assignType = null, v.value.department = null, v.value.person = null, v.value.due = /* @__PURE__ */ new Date(), v.value.item = null, v.value.issue = null, v.value.notes = "", d.value.assignType = null, d.value.department = null, d.value.person = null, d.value.due = /* @__PURE__ */ new Date(), d.value.item = null, d.value.notes = "", d.value.when = null, d.value.where = null;
359
+ }, je = async () => {
360
+ h("create:callback", l.value), h("toggle", !1);
361
+ }, F = (e) => {
362
+ const t = [];
363
+ (Array.isArray(e) ? e : Object.values(e)).forEach((s) => {
364
+ const n = s.senderType || s.sender_type, r = s.senderName || "", u = s.senderId || s.sender_id, m = s.profileImg || s.profile_img, f = r ? r.split(" ") : ["", ""], g = s.user_first_name || s.guest_first_name || f[0] || "", z = s.user_last_name || s.guest_last_name || f.slice(1).join(" ") || "", re = g && z ? `${g} ${z}` : g || "Auto-Reply", le = n === "system" || n === "user", D = n === "guest";
365
+ let T = {
366
+ id: s.id,
367
+ isPropertyEmployee: n === "user",
368
+ isSent: !!s.sent,
369
+ isSystemMessage: n === "system",
370
+ isStaffMessage: le,
371
+ isGuestMessage: D,
372
+ comment: s.content,
373
+ dateUtc: s.sent || s.created,
374
+ user: {
375
+ firstName: g || "Auto-Reply",
376
+ icon: "",
377
+ id: u || "system-message",
378
+ initials: "",
379
+ lastName: z || "",
380
+ name: re,
381
+ src: m || ""
382
+ }
383
+ };
384
+ T.user.firstName && T.user.lastName ? T.user.initials = T.user.firstName[0] + T.user.lastName[0] : T.user.firstName && (T.user.initials = T.user.firstName[0]), le && (T.user.icon = "property-fill"), t.push(T);
385
+ }), C.value = t;
386
+ }, Qe = (e) => {
387
+ if (!e || e.length === 0) return;
388
+ (Array.isArray(e) ? e : Object.values(e)).forEach((a) => {
389
+ if (C.value.some((T) => T.id === a.id))
390
+ return;
391
+ const s = a.senderType || a.sender_type, n = a.senderName || "", r = a.senderId || a.sender_id, u = a.profileImg || a.profile_img, m = n ? n.split(" ") : ["", ""], f = a.user_first_name || a.guest_first_name || m[0] || "", g = a.user_last_name || a.guest_last_name || m.slice(1).join(" ") || "", z = f && g ? `${f} ${g}` : f || "Auto-Reply", re = s === "system" || s === "user", le = s === "guest";
392
+ let D = {
393
+ id: a.id,
394
+ isPropertyEmployee: s === "user",
395
+ isSent: !!a.sent,
396
+ isSystemMessage: s === "system",
397
+ isStaffMessage: re,
398
+ isGuestMessage: le,
399
+ comment: a.content,
400
+ dateUtc: a.sent || a.created,
401
+ user: {
402
+ firstName: f || "Auto-Reply",
403
+ icon: "",
404
+ id: r || "system-message",
405
+ initials: "",
406
+ lastName: g || "",
407
+ name: z,
408
+ src: u || ""
409
+ }
410
+ };
411
+ D.user.firstName && D.user.lastName ? D.user.initials = D.user.firstName[0] + D.user.lastName[0] : D.user.firstName && (D.user.initials = D.user.firstName[0]), re && (D.user.icon = "property-fill"), C.value.push(D);
236
412
  });
237
- }, x = async () => {
238
- if (s.value || (s.value = !0, i.value = l.options), c.value && l.searchable) {
239
- await f();
240
- const t = c.value.querySelector(
241
- ".multiselect__content-wrapper"
242
- ), u = c.value.querySelector(
243
- ".multiselect__input"
413
+ }, fe = async (e = !1) => {
414
+ if (o.showComments && l.value.tokenId) {
415
+ e || (y.value.messages = !0);
416
+ try {
417
+ let t = `/api/client/connect/getMessages.php?tokenId=${l.value.tokenId}`;
418
+ e && k.value !== null && (t += `&lastMsgId=${k.value}`);
419
+ const s = await (await fetch(t, {
420
+ method: "GET",
421
+ credentials: "include"
422
+ })).json();
423
+ if (s.status === "error")
424
+ throw new Error(s.message || "Failed to get messages");
425
+ if (A.value = !s.closed, s.messages && s.messages.length > 0) {
426
+ k.value = s.messages[s.messages.length - 1].id, e ? Qe(s.messages) : F(s.messages);
427
+ const n = setTimeout(Y, 100);
428
+ L.value.push(n);
429
+ } else e || F(s.messages || []);
430
+ } catch (t) {
431
+ console.error("getChatMessages error:", t);
432
+ } finally {
433
+ e || (y.value.messages = !1);
434
+ }
435
+ }
436
+ }, $e = (e) => {
437
+ const t = w.utc(), a = w.fromFormat(e, "yyyy-MM-dd HH:mm:ss", { zone: "utc" }), s = t.diff(
438
+ a,
439
+ [
440
+ "years",
441
+ "months",
442
+ "days",
443
+ "hours",
444
+ "minutes"
445
+ ]
446
+ ), n = Math.floor(s.years), r = Math.floor(s.months), u = Math.floor(s.days), m = Math.floor(s.hours), f = Math.floor(s.minutes);
447
+ if (n)
448
+ return n === 1 ? c("HC_ONE_YEAR_AGO") : c("HC_X_YEARS_AGO", { years: n });
449
+ if (r)
450
+ return r === 1 ? c("HC_ONE_MONTH_AGO") : c("HC_X_MONTHS_AGO", { months: r });
451
+ if (u)
452
+ return u === 1 ? c("HC_ONE_DAY_AGO") : c("HC_X_DAYS_AGO", { days: u });
453
+ if (m)
454
+ return m === 1 ? c("HC_ONE_HOUR_AGO") : c("HC_X_HOURS_AGO", { hours: m });
455
+ if (f)
456
+ return f === 1 ? c("HC_ONE_MINUTE_AGO") : c("HC_X_MINUTES_AGO", { minutes: f });
457
+ if (f === 0)
458
+ return c("HC_A_MOMENT_AGO");
459
+ }, Je = async () => {
460
+ o.showGuestDetails && oe(), ne(), V(), h("refresh:pms", l.value);
461
+ }, oe = async () => {
462
+ try {
463
+ y.value.pms = !0;
464
+ const e = new AbortController(), t = setTimeout(() => e.abort(), 45e3);
465
+ L.value.push(t);
466
+ const a = o.pmsBaseUrl;
467
+ if (!a)
468
+ throw new Error("PMS base URL is required");
469
+ const s = {
470
+ Authorization: "Bearer " + (() => {
471
+ const g = `; ${document.cookie}`.split("; QV2Auth=");
472
+ return g.length === 2 && g.pop()?.split(";").shift() || "";
473
+ })(),
474
+ "Content-Type": "application/json"
475
+ }, n = l.value?.qv2Rooms?.qRoomId || l.value?.id || o.room.id, r = await fetch(
476
+ `${a}/vendors/properties/statuses/${o.propertyId}/rooms`,
477
+ {
478
+ method: "POST",
479
+ headers: s,
480
+ signal: e.signal,
481
+ body: JSON.stringify({ roomsIds: [n] })
482
+ }
483
+ );
484
+ clearTimeout(t), r.ok || ke(r);
485
+ const u = await r.json(), m = u.data?.pmsRooms || u.data?.rooms || u.rooms || [];
486
+ R.value = m, m.length > 0 ? l.value = {
487
+ ...m[0],
488
+ tokenId: m[0].tokenId || o.room.tokenId
489
+ } : l.value = o.room, y.value.pms = !1;
490
+ } catch (e) {
491
+ return y.value.pms = !1, h("show:toast", {
492
+ show: !0,
493
+ message: c("HC_FAILED_TO_LOAD_PMS_DATA"),
494
+ variant: "error",
495
+ icon: "exclamation-circle"
496
+ }), e;
497
+ }
498
+ }, ne = async () => {
499
+ try {
500
+ y.value.roomNotices = !0;
501
+ const e = await fetch(
502
+ "/api/client/common/getRoomNotices.php?propertyId=" + o.propertyId + "&roomIds=[" + o.room.id + "]"
244
503
  );
245
- u.style.width = t.clientWidth + "px";
504
+ if (!e.ok)
505
+ throw new Error(`HTTP error! status: ${e.status}`);
506
+ const t = await e.json();
507
+ ae.value = t.notices;
508
+ } catch (e) {
509
+ console.error("Error getting room notices:", e), ae.value = [], h("show:toast", {
510
+ show: !0,
511
+ message: c("HC_FAILED_TO_LOAD_ROOM_NOTICES"),
512
+ variant: "error",
513
+ icon: "exclamation-circle"
514
+ });
515
+ } finally {
516
+ y.value.roomNotices = !1;
517
+ }
518
+ }, he = async () => {
519
+ try {
520
+ const e = new FormData();
521
+ e.append("property_id", o.propertyId), e.append("filter", "tasks_new");
522
+ const [t, a] = await Promise.all([
523
+ fetch("/api/client/common/getDepartments.php", {
524
+ method: "POST"
525
+ }),
526
+ fetch("/api/client/common/getDepartmentUsersByPropertyId.php", {
527
+ method: "POST",
528
+ body: e
529
+ })
530
+ ]), s = await t.json(), n = await a.json();
531
+ if (s.departments && (s.departments.forEach((r) => {
532
+ r.label = r.display_name;
533
+ }), M.value = s.departments), n.users) {
534
+ const r = [];
535
+ let u = {
536
+ group: "",
537
+ options: []
538
+ };
539
+ n.users.forEach((m) => {
540
+ m.translated_department !== u.group && (u.group && r.push({ ...u }), u.group = m.translated_department, u.options = []), u.options.push(m);
541
+ }), u.group && r.push({ ...u }), we.value = r;
542
+ }
543
+ } catch (e) {
544
+ console.error("Error getting shared data:", e), h("show:toast", {
545
+ show: !0,
546
+ message: c("HC_FAILED_TO_LOAD_SHARED_DATA"),
547
+ variant: "error",
548
+ icon: "exclamation-circle"
549
+ });
550
+ }
551
+ }, Oe = async () => {
552
+ try {
553
+ const t = await (await fetch(
554
+ `/api/client/connect/getStayDetails.php?tokenId=${l.value.tokenId}`,
555
+ {
556
+ method: "GET",
557
+ credentials: "include"
558
+ }
559
+ )).json();
560
+ if (t.status === "error")
561
+ throw new Error(t.message || "Failed to get stay details");
562
+ t.userName && (p.value.guestName = t.userName), t.cellPhone && (p.value.guestPhone = t.cellPhone), t.email && (p.value.guestEmail = t.email), t.checkIn && (p.value.checkInDate = w.fromISO(
563
+ t.checkIn
564
+ ).toJSDate()), t.checkOut && (p.value.checkOutDate = w.fromISO(
565
+ t.checkOut
566
+ ).toJSDate());
567
+ } catch (e) {
568
+ console.error("getStayDetails error:", e), h("show:toast", {
569
+ show: !0,
570
+ message: c("HC_FAILED_TO_LOAD_STAY_DETAILS"),
571
+ variant: "error",
572
+ icon: "exclamation-circle"
573
+ });
574
+ }
575
+ }, Ve = (e) => {
576
+ switch (e) {
577
+ case "complaint":
578
+ return "red-30";
579
+ case "hk_request":
580
+ return "maroon-30";
581
+ case "callback":
582
+ return "teal-10";
583
+ case "workorder":
584
+ return "orange-20";
585
+ case "task":
586
+ return "green-20";
587
+ }
588
+ }, Ye = (e) => {
589
+ switch (e) {
590
+ case "complaint":
591
+ return "face-frown";
592
+ case "hk_request":
593
+ return "concierge-bell";
594
+ case "callback":
595
+ return "phone";
596
+ case "workorder":
597
+ return "hammer";
598
+ case "task":
599
+ return "check";
600
+ }
601
+ }, V = async () => {
602
+ try {
603
+ y.value.tickets = !0;
604
+ const e = await fetch(
605
+ "/api/client/common/getAllToDos.php?propertyId=" + o.propertyId + "&roomIds=[" + o.room.id + "]"
606
+ );
607
+ if (!e.ok)
608
+ throw new Error(`HTTP error! status: ${e.status}`);
609
+ const t = await e.json();
610
+ S.value = t.tickets;
611
+ } catch (e) {
612
+ console.error("Error getting tickets:", e), S.value = [], h("show:toast", {
613
+ show: !0,
614
+ message: c("HC_FAILED_TO_LOAD_TICKETS"),
615
+ variant: "error",
616
+ icon: "exclamation-circle"
617
+ });
618
+ } finally {
619
+ y.value.tickets = !1;
620
+ }
621
+ }, ke = async (e) => {
622
+ const t = await e.text();
623
+ let a;
624
+ try {
625
+ a = JSON.parse(t).response;
626
+ } catch {
627
+ a = { code: e.status, message: t };
628
+ }
629
+ return a.code === 401 ? (window.location.href = "/logout.php?unauthorized=1", { error: a }) : a;
630
+ }, ze = (e) => {
631
+ const t = document.querySelectorAll(".pulse");
632
+ if (t && t.length) {
633
+ const a = l.value?.qv2Rooms?.qRoomId || l.value?.id || o.room?.id, s = document.getElementById("room-" + a), n = s?.classList;
634
+ switch (e) {
635
+ case "room_notice":
636
+ (n?.contains("roombox_unsel") || n?.contains("roombox_unsel_active")) && (s?.classList.remove(), s?.classList.add("roomnoticeroombox_sel"));
637
+ break;
638
+ case "complaint":
639
+ !n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && (s?.classList.remove(), s?.classList.add("complaintsroombox_sel"));
640
+ break;
641
+ case "request":
642
+ !n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && (s?.classList.remove(), s?.classList.add("guestrequestroombox_sel"));
643
+ break;
644
+ case "work_order":
645
+ !n?.contains("smsroombox_sel") && !n?.contains("callbackroombox_sel") && !n?.contains("complaintsroombox_sel") && !n?.contains("guestrequestroombox_sel") && (s?.classList.remove(), s?.classList.add("workordersroombox_sel"));
646
+ break;
647
+ }
648
+ const r = setTimeout(() => {
649
+ t.forEach((u) => {
650
+ u.classList.remove("pulse");
651
+ });
652
+ }, 4500);
653
+ L.value.push(r);
654
+ }
655
+ }, Ke = () => {
656
+ window.open("/guest/overview.php", "_blank");
657
+ }, Xe = (e) => {
658
+ let t = "";
659
+ switch (e.type) {
660
+ case "complaint":
661
+ t = `/complaints/complaints_view.php?id=${e.id}`;
662
+ break;
663
+ case "request":
664
+ t = `/tasks/hk_request.php?id=${e.id}`;
665
+ break;
666
+ case "satisfaction-call":
667
+ t = `/tasks/task_callback.php?id=${e.id}`;
668
+ break;
669
+ case "work-order":
670
+ t = `/tasks/workorder.php?id=${e.id}`;
671
+ break;
672
+ case "task":
673
+ t = `/tasks/task.php?id=${e.id}`;
674
+ break;
675
+ default:
676
+ return "#";
677
+ }
678
+ window.open(t, "_blank");
679
+ }, Ze = async () => {
680
+ ve.value = !0;
681
+ const e = l.value?.qv2Rooms?.qRoomId || l.value?.id || o.room?.id, t = l.value?.qv2Rooms?.qRoomName || l.value?.name || o.room?.name, a = {
682
+ type: E.value?.id,
683
+ propertyId: o.propertyId,
684
+ userId: P.value,
685
+ areaId: e,
686
+ areaName: t
687
+ };
688
+ switch (E.value?.id) {
689
+ case "complaint":
690
+ a.tokenId = l.value.tokenId, a.problemId = p.value.problem.id, a.guestName = p.value.guestName, a.guestPhone = p.value.guestPhone, a.guestEmail = p.value.guestEmail, a.guestLoyalty = p.value.guestLoyalty, a.guestMood = p.value.guestMood.id, a.checkInDate = w.fromJSDate(p.value.checkInDate).toFormat(
691
+ "yyyy-MM-dd"
692
+ ), a.checkOutDate = w.fromJSDate(p.value.checkOutDate).toFormat(
693
+ "yyyy-MM-dd"
694
+ ), a.notes = p.value.notes, a.inHouse = 2, a.source = "dashboard", h("create:todo", a);
695
+ break;
696
+ case "request":
697
+ a.itemId = d.value.item.id, a.assignType = d.value.assignType.id, a.occupied = d.value.requestedBy.id, a.notes = d.value.notes, a.dueDate = w.fromJSDate(d.value.due).toFormat("yyyy-MM-dd"), d.value.assignType.id === 1 && (a.department = d.value.department.id), d.value.assignType.id === 2 && (a.person = d.value.person.id), o.allowWhenWhere && (a.requestWhen = d.value.when ? d.value.when.id : "", a.requestWhere = d.value.where ? d.value.where.id : ""), h("create:todo", a);
698
+ break;
699
+ case "room_notice":
700
+ a.issueId = I.value.issue.id, a.startDate = w.fromJSDate(I.value.startDate).toFormat("yyyy-MM-dd"), a.endDate = w.fromJSDate(I.value.endDate).toFormat("yyyy-MM-dd"), a.notes = I.value.notes, a.sendPush = "1", h("create:todo", a);
701
+ break;
702
+ case "work_order":
703
+ a.itemId = v.value.item.id, a.issueId = v.value.issue.id, a.assignType = v.value.assignType.id, a.occupied = v.value.requestedBy.id, a.notes = v.value.notes, a.dueDate = w.fromJSDate(v.value.due).toFormat("yyyy-MM-dd"), v.value.assignType.id === 1 && (a.department = v.value.department.id), v.value.assignType.id === 2 && (a.person = v.value.person.id), h("create:todo", a);
704
+ break;
246
705
  }
247
- }, P = () => {
248
- s.value = !1;
249
- }, F = async () => {
250
- if (!d.value)
706
+ }, et = (e) => {
707
+ ge(), _e(), o.hover && h("toggle", e);
708
+ }, tt = (e) => {
709
+ Se(), b.value = e;
710
+ }, at = async (e) => {
711
+ if (console.log("selected:", e), E.value = e, O.value = [], I.value.issue = null, p.value.problem = null, v.value.item = null, v.value.issue = null, d.value.item = null, !E.value) {
712
+ y.value.actionItems = !1;
251
713
  return;
252
- const t = d.value;
253
- e.value = [], l.groupValues ? t.filteredOptions.forEach((u) => {
254
- e.value.push(u);
255
- }) : e.value = t.filteredOptions, o("update:model-value", e.value);
714
+ }
715
+ y.value.actionItems = !0;
716
+ const t = l.value?.qv2Rooms?.qRoomId || l.value?.id || o.room?.id, a = new FormData();
717
+ switch (a.append("property_id", o.propertyId), a.append("area_id", t), e.id) {
718
+ case "complaint":
719
+ try {
720
+ l.value.tokenId && await Oe();
721
+ const n = await (await fetch("/api/client/common/getComplaintProblemsByPropertyId.php", {
722
+ method: "POST",
723
+ body: a
724
+ })).json();
725
+ n.items && (O.value = n.items);
726
+ const r = await K.post(
727
+ "/api/client/common/getComplaintMoods.php"
728
+ );
729
+ r.data.items.forEach((u) => {
730
+ u.label = u.display_name;
731
+ }), ce.value = r.data.items;
732
+ } catch (s) {
733
+ console.error("Error loading complaint options:", s), h("show:toast", {
734
+ show: !0,
735
+ message: c("HC_FAILED_TO_LOAD_COMPLAINT_OPTIONS"),
736
+ variant: "error",
737
+ icon: "exclamation-circle"
738
+ });
739
+ } finally {
740
+ y.value.actionItems = !1;
741
+ }
742
+ break;
743
+ case "room_notice":
744
+ try {
745
+ const n = await (await fetch("/api/client/common/getRoomNoticeIssuesByPropertyId.php", {
746
+ method: "POST",
747
+ body: a
748
+ })).json();
749
+ n.items && (O.value = n.items);
750
+ } catch (s) {
751
+ console.error("Error loading room notice options:", s), h("show:toast", {
752
+ show: !0,
753
+ message: c("HC_FAILED_TO_LOAD_ROOM_NOTICE_OPTIONS"),
754
+ variant: "error",
755
+ icon: "exclamation-circle"
756
+ });
757
+ } finally {
758
+ y.value.actionItems = !1;
759
+ }
760
+ break;
761
+ case "request":
762
+ try {
763
+ d.value.requestedBy = $.value[1], d.value.assignType = X.value[0];
764
+ const n = await (await fetch("/api/client/common/getHousekeepingItemsByPropertyId.php", {
765
+ method: "POST",
766
+ body: a
767
+ })).json();
768
+ if (n.items && (O.value = n.items), await he(), d.value.department = M.value.find(
769
+ (r) => parseInt(r.id) === 4
770
+ ), o.allowWhenWhere)
771
+ try {
772
+ const r = new FormData();
773
+ r.append("property_id", o.propertyId);
774
+ const m = await (await fetch(
775
+ "/api/client/common/getWhenWhereOptions.php",
776
+ {
777
+ method: "POST",
778
+ body: r
779
+ }
780
+ )).json();
781
+ m.when && Array.isArray(m.when) ? q.value = m.when.map((f) => ({
782
+ id: f.id,
783
+ label: f.name,
784
+ value: f.id
785
+ })) : q.value = [], m.where && Array.isArray(m.where) ? x.value = m.where.map((f) => ({
786
+ id: f.id,
787
+ label: f.name,
788
+ value: f.id
789
+ })) : x.value = [];
790
+ } catch (r) {
791
+ console.error("Error loading When/Where options:", r), q.value = [], x.value = [], h("show:toast", {
792
+ show: !0,
793
+ message: c("HC_FAILED_TO_LOAD_WHEN_WHERE_OPTIONS"),
794
+ variant: "error",
795
+ icon: "exclamation-circle"
796
+ });
797
+ }
798
+ } catch (s) {
799
+ console.error("Error loading request options:", s), h("show:toast", {
800
+ show: !0,
801
+ message: c("HC_FAILED_TO_LOAD_REQUEST_OPTIONS"),
802
+ variant: "error",
803
+ icon: "exclamation-circle"
804
+ });
805
+ } finally {
806
+ y.value.actionItems = !1;
807
+ }
808
+ break;
809
+ case "work_order":
810
+ try {
811
+ v.value.requestedBy = $.value[0], v.value.assignType = X.value[0];
812
+ const n = await (await fetch("/api/client/common/getItemsByRoomId.php", {
813
+ method: "POST",
814
+ body: a
815
+ })).json(), r = [];
816
+ let u = {
817
+ group: "",
818
+ options: []
819
+ };
820
+ n.items && (n.items.forEach((m) => {
821
+ m.section_name !== u.group && (u.group && r.push({ ...u }), u.group = m.section_name, u.options = []), m.label && u.options.push(m);
822
+ }), u.group && r.push({ ...u })), O.value = r, await Promise.all([
823
+ K.post(
824
+ "/api/client/common/getWorkOrderIssues.php"
825
+ ),
826
+ he()
827
+ ]).then((m) => {
828
+ const f = m[0];
829
+ f.data.issues.forEach((g) => {
830
+ g.label = g.display_name;
831
+ }), pe.value = f.data.issues;
832
+ }), v.value.department = M.value.find(
833
+ (m) => parseInt(m.id) === 2
834
+ );
835
+ } catch (s) {
836
+ console.error("Error loading work order options:", s), h("show:toast", {
837
+ show: !0,
838
+ message: c("HC_FAILED_TO_LOAD_WORK_ORDER_OPTIONS"),
839
+ variant: "error",
840
+ icon: "exclamation-circle"
841
+ });
842
+ } finally {
843
+ y.value.actionItems = !1;
844
+ }
845
+ break;
846
+ default:
847
+ y.value.actionItems = !1;
848
+ return;
849
+ }
850
+ }, st = () => {
851
+ se.value = !se.value, ie.value = !1;
852
+ }, Ee = () => {
853
+ const e = document.getElementById("comment-field"), t = document.getElementById("hidden-text");
854
+ e.style.height = t?.offsetHeight + "px";
855
+ }, Y = () => {
856
+ const e = document.getElementById("comments-container");
857
+ e?.scroll({
858
+ top: e.scrollHeight,
859
+ behavior: "smooth"
860
+ });
861
+ }, ot = async (e) => {
862
+ if (e && e.type === "keydown" && e.preventDefault(), l.value.tokenId && b.value && !H.value) {
863
+ y.value.sendingMessage = !0;
864
+ try {
865
+ const t = new FormData();
866
+ t.append("tokenId", l.value.tokenId), t.append("content", b.value), t.append("senderId", P.value || "");
867
+ const a = await K.post(
868
+ "/api/client/connect/sendMessage.php",
869
+ t
870
+ );
871
+ if (a.data.status === "error") {
872
+ h("show:toast", {
873
+ show: !0,
874
+ message: c("HC_FAILED_TO_SEND_MESSAGE"),
875
+ variant: "error",
876
+ icon: "exclamation-circle"
877
+ });
878
+ return;
879
+ }
880
+ b.value = "", A.value = !a.data.closed, a.data.messages && (F(a.data.messages), a.data.messages.length > 0 && (k.value = a.data.messages[a.data.messages.length - 1].id)), Y();
881
+ } catch (t) {
882
+ console.error("sendChatMessage error:", t), h("show:toast", {
883
+ show: !0,
884
+ message: c("HC_FAILED_TO_SEND_MESSAGE"),
885
+ variant: "error",
886
+ icon: "exclamation-circle"
887
+ });
888
+ } finally {
889
+ y.value.sendingMessage = !1;
890
+ }
891
+ }
892
+ }, nt = async () => {
893
+ if (!(!l.value.tokenId || !P.value)) {
894
+ y.value.conversationToggle = !0;
895
+ try {
896
+ const e = A.value ? "/api/client/connect/closeConversation.php" : "/api/client/connect/openConversation.php", t = new FormData();
897
+ t.append("tokenId", l.value.tokenId), t.append("userId", P.value), A.value && k.value !== null && t.append("lastMsgId", k.value.toString());
898
+ const a = await K.post(e, t);
899
+ if (a.data.status === "error") {
900
+ h("show:toast", {
901
+ show: !0,
902
+ message: c("HC_FAILED_TO_UPDATE_CONVERSATION"),
903
+ variant: "error",
904
+ icon: "exclamation-circle"
905
+ });
906
+ return;
907
+ }
908
+ A.value = !a.data.closed, a.data.messages && (F(a.data.messages), a.data.messages.length > 0 && (k.value = a.data.messages[a.data.messages.length - 1].id)), h("show:toast", {
909
+ show: !0,
910
+ message: A.value ? c("HC_CONVERSATION_REOPENED") : c("HC_CONVERSATION_CLOSED"),
911
+ variant: "success",
912
+ icon: "check-circle"
913
+ });
914
+ } catch (e) {
915
+ console.error("toggleMarkOpenClose error:", e), h("show:toast", {
916
+ show: !0,
917
+ message: c("HC_FAILED_TO_UPDATE_CONVERSATION"),
918
+ variant: "error",
919
+ icon: "exclamation-circle"
920
+ });
921
+ } finally {
922
+ y.value.conversationToggle = !1;
923
+ }
924
+ }
925
+ }, rt = async () => {
926
+ if (o.isTestEnvironment && !(!l.value?.tokenId || !j.value.trim())) {
927
+ me.value = !0;
928
+ try {
929
+ const e = new FormData();
930
+ e.append("tokenId", l.value.tokenId), e.append("content", j.value.trim());
931
+ const t = await K.post(
932
+ "/api/client/connect/simulateInbound.php",
933
+ e
934
+ );
935
+ if (t.data.status === "error") {
936
+ h("show:toast", {
937
+ show: !0,
938
+ message: c("HC_FAILED_TO_SIMULATE_MESSAGE"),
939
+ variant: "error",
940
+ icon: "exclamation-circle"
941
+ });
942
+ return;
943
+ }
944
+ t.data.messages && (F(t.data.messages), A.value = !t.data.closed, t.data.messages.length > 0 && (k.value = t.data.messages[t.data.messages.length - 1].id)), j.value = "", W.value = !1, Y(), h("show:toast", {
945
+ show: !0,
946
+ message: c("HC_SIMULATED_GUEST_REPLY"),
947
+ variant: "success",
948
+ icon: "check-circle"
949
+ });
950
+ } catch (e) {
951
+ console.error("simulateGuestReply error:", e), h("show:toast", {
952
+ show: !0,
953
+ message: c("HC_FAILED_TO_SIMULATE_MESSAGE"),
954
+ variant: "error",
955
+ icon: "exclamation-circle"
956
+ });
957
+ } finally {
958
+ me.value = !1;
959
+ }
960
+ }
961
+ }, lt = () => {
962
+ W.value = !W.value, W.value || (j.value = "");
963
+ }, it = () => {
964
+ Q.value || (Q.value = setInterval(() => {
965
+ document.visibilityState === "visible" && fe(!0);
966
+ }, Ce));
967
+ }, ye = () => {
968
+ Q.value && (clearInterval(Q.value), Q.value = null);
969
+ }, ge = () => {
970
+ if (o.align === "left" || o.align === "right") {
971
+ const e = J.value?.getBoundingClientRect().left, t = window.innerWidth;
972
+ ue.value = t - e < U.value ? "right" : "left";
973
+ } else {
974
+ const e = J.value?.getBoundingClientRect().top, t = window.innerHeight;
975
+ ue.value = t - e < G.value ? "bottom" : "top";
976
+ }
977
+ }, _e = () => {
978
+ if (o.position === "top" || o.position === "bottom") {
979
+ const e = J.value?.getBoundingClientRect().top, t = window.innerHeight;
980
+ de.value = t - e < G.value ? "top" : "bottom";
981
+ } else {
982
+ const e = J.value?.getBoundingClientRect().left, t = window.innerWidth;
983
+ de.value = t - e < U.value ? "left" : "right";
984
+ }
985
+ }, Se = () => {
986
+ H.value = !H.value, H.value ? (b.value = "", N.value.info = ee.value, N.value.tickets = te.value, N.value.comments = Z.value, ee.value = !1, te.value = !1, document.getElementById("comment-field")?.focus()) : (ee.value = N.value.info, te.value = N.value.tickets, Z.value = N.value.comments);
987
+ }, ut = async (e, t) => {
988
+ const a = l.value?.qv2Rooms?.qRoomId || l.value?.id || o.room?.id, s = new FormData();
989
+ if (s.append("property_id", o.propertyId), s.append("room_ids", JSON.stringify([a])), await V(), S.value) {
990
+ const n = [];
991
+ S.value.forEach((r) => {
992
+ r.id === e && r.type === t ? n.unshift({
993
+ ...r,
994
+ isNew: !0
995
+ }) : n.push({
996
+ ...r,
997
+ isNew: !1
998
+ });
999
+ }), n.sort((r, u) => r.id === e ? -1 : u.id === e ? 1 : 0), S.value = [...n];
1000
+ }
256
1001
  };
257
- return g(() => l.modelValue, (t) => {
258
- e.value = t;
259
- }), g(() => l.options, (t) => {
260
- s.value && (i.value = t);
1002
+ B(() => o.open, () => {
1003
+ if (o.open && o.showComments && C.value.length) {
1004
+ const e = setTimeout(Y, 500);
1005
+ L.value.push(e);
1006
+ }
1007
+ o.open || (Te(), ye(), k.value = null, C.value = [], A.value = !1);
1008
+ }), B(
1009
+ () => [o.open, o.showComments, Z.value, l.value?.tokenId],
1010
+ ([e, t, a, s]) => {
1011
+ e && t && a && s ? it() : ye();
1012
+ }
1013
+ ), B(b, () => {
1014
+ const e = setTimeout(Ee, 100);
1015
+ L.value.push(e);
1016
+ }), B(() => o.allowWhenWhere, (e, t) => {
1017
+ t === !0 && e === !1 && (d.value.when = null, d.value.where = null, q.value = [], x.value = []);
1018
+ });
1019
+ const Ae = () => !!(o.room.reservations || o.room.cleaning || o.room.occupancy);
1020
+ return B(() => o.open, async (e, t) => {
1021
+ e && !t && (Ae() ? (l.value = o.room, R.value = [o.room]) : o.showGuestDetails && !R.value ? await oe() : l.value || (l.value = o.room), V(), ne(), o.showComments && fe());
1022
+ }), B(
1023
+ () => o.room.id,
1024
+ (e, t) => {
1025
+ e !== t && (l.value = o.room, R.value = null, o.open && (Ae() ? R.value = [o.room] : o.showGuestDetails && oe(), V(), ne()));
1026
+ }
1027
+ ), dt(async () => {
1028
+ const e = JSON.parse(
1029
+ window.localStorage.getItem("authenticated")
1030
+ );
1031
+ P.value = e?.user?.id || window.userId || "", l.value = o.room, o.size === "sm" && (G.value = 140, U.value = 160), o.size === "lg" && (G.value = 250, U.value = 440), ge(), _e();
1032
+ }), mt(() => {
1033
+ L.value.forEach((e) => {
1034
+ clearTimeout(e);
1035
+ }), ye();
261
1036
  }), {
262
- currentSelect: d,
263
- currentContainer: c,
264
- search: p,
265
- selected: e,
266
- isOpened: s,
267
- internalOptions: i,
268
- // computed
269
- hasAction: m,
270
- noResultsText: S,
271
- noOptionsText: B,
272
- noTagFound: b,
273
- selectedCount: y,
274
- selectedText: _,
275
- useTags: T,
276
- enableGroupSelect: A,
277
- hasValue: v,
278
- showFloatingLabel: E,
279
- isLabelFloated: C,
280
- addTag: L,
281
- clearAll: M,
282
- onOpen: x,
283
- onClose: P,
284
- onRemove: V,
285
- onUpdateValue: O,
286
- removeElement: R,
287
- searchChange: w,
288
- selectAll: F
1037
+ DateTime: w,
1038
+ // Refs
1039
+ actionMenuOpen: ie,
1040
+ alignment: ue,
1041
+ assignTypes: X,
1042
+ comment: b,
1043
+ complaint: p,
1044
+ componentHeight: G,
1045
+ componentWidth: U,
1046
+ departments: M,
1047
+ departmentUsers: we,
1048
+ expandComments: Z,
1049
+ expandGuestInfo: ee,
1050
+ expandedStates: N,
1051
+ expandTickets: te,
1052
+ guestDetailsData: be,
1053
+ itemOptions: O,
1054
+ loading: y,
1055
+ messages: C,
1056
+ moodOptions: ce,
1057
+ pmsData: R,
1058
+ positioning: de,
1059
+ quickReplyOpen: H,
1060
+ request: d,
1061
+ requestedByOptions: $,
1062
+ requestLoading: ve,
1063
+ requestType: E,
1064
+ roomDetailsData: l,
1065
+ roomNotice: I,
1066
+ roomNotices: ae,
1067
+ showCreateRequest: se,
1068
+ ticketsList: S,
1069
+ todoOptions: Me,
1070
+ trigger: J,
1071
+ userId: P,
1072
+ workOrder: v,
1073
+ workOrderIssues: pe,
1074
+ whenOptions: q,
1075
+ whereOptions: x,
1076
+ // Guest Connect state
1077
+ isConversationOpen: A,
1078
+ lastMessageId: k,
1079
+ // Simulate Guest Reply state (test environments only)
1080
+ simulateOpen: W,
1081
+ simulateContent: j,
1082
+ simulateLoading: me,
1083
+ // Computed
1084
+ cleanliness: Ne,
1085
+ filteredReplies: Re,
1086
+ groupedMessages: He,
1087
+ hasGuestCallback: Le,
1088
+ hasComplaint: Ie,
1089
+ itemOptionsList: Pe,
1090
+ occupied: De,
1091
+ occupancyTooltipContent: qe,
1092
+ selectedAssignType: xe,
1093
+ selectedDepartment: Fe,
1094
+ selectedRequestedBy: Be,
1095
+ stayDetails: Ge,
1096
+ tagsList: Ue,
1097
+ validateToDo: We,
1098
+ // Methods
1099
+ closeRequest: Te,
1100
+ createCallback: je,
1101
+ createMessageList: F,
1102
+ getChatMessages: fe,
1103
+ getHowLongAgo: $e,
1104
+ getPMSData: oe,
1105
+ getRoomNotices: ne,
1106
+ getSharedData: he,
1107
+ getStayDetails: Oe,
1108
+ getTicketColor: Ve,
1109
+ getTicketIcon: Ye,
1110
+ getTickets: V,
1111
+ handleFailedResponse: ke,
1112
+ handlePulse: ze,
1113
+ onClickEditConnectGuest: Ke,
1114
+ onClickTicket: Xe,
1115
+ onCreateRequestSubmit: Ze,
1116
+ onHoverToggle: et,
1117
+ onSelectQuickReply: tt,
1118
+ onSelectToDo: at,
1119
+ openRequest: st,
1120
+ refreshPMSData: Je,
1121
+ resizeTextarea: Ee,
1122
+ scrollToConnectBottom: Y,
1123
+ sendChatMessage: ot,
1124
+ setAlignment: ge,
1125
+ setPositioning: _e,
1126
+ toggleMarkOpenClose: nt,
1127
+ toggleQuickReply: Se,
1128
+ updateTickets: ut,
1129
+ // Simulate Guest Reply methods (test environments only)
1130
+ simulateGuestReply: rt,
1131
+ toggleSimulateOpen: lt
289
1132
  };
290
1133
  }
291
1134
  });
292
1135
  export {
293
- U as default
1136
+ Ft as default
294
1137
  };