@flamingo-stack/openframe-frontend-core 0.0.756 → 0.0.758
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/export-map.json +1 -1
- package/dist/{chunk-7KPU7RGS.cjs → chunk-2AEGJHW2.cjs} +83 -82
- package/dist/{chunk-QKFJ6ORK.cjs → chunk-3C4U4UW6.cjs} +1 -1
- package/dist/{chunk-57JA37HP.cjs → chunk-5THYJU3G.cjs} +123 -77
- package/dist/{chunk-4YL4Y3BV.cjs → chunk-ECHJO4NI.cjs} +48 -24
- package/dist/{chunk-TAEEGNFL.cjs → chunk-GU3M4YF3.cjs} +75 -68
- package/dist/{chunk-MDXZMTCK.cjs → chunk-IQFXJSAH.cjs} +22 -22
- package/dist/{chunk-KNNJ4WLF.cjs → chunk-JEIAB7JQ.cjs} +2 -2
- package/dist/{chunk-MBQTLZAG.cjs → chunk-L2RNZOCI.cjs} +11 -11
- package/dist/{chunk-VOXDBCBV.cjs → chunk-N2US7DLB.cjs} +47 -36
- package/dist/{chunk-KFUC2XF7.cjs → chunk-RPADJ2E6.cjs} +3 -3
- package/dist/{chunk-PUK27ZB6.cjs → chunk-RUMRBL5X.cjs} +13 -13
- package/dist/{chunk-CYDWQYIQ.cjs → chunk-SEPHTWFL.cjs} +5 -5
- package/dist/{chunk-W5MEHJRQ.cjs → chunk-U2UVB4IF.cjs} +2 -2
- package/dist/{chunk-BTIYXBA2.cjs → chunk-WSRMYHIV.cjs} +2 -2
- package/dist/{chunk-KSU3CXKY.cjs → chunk-YBOA5GZV.cjs} +3 -3
- package/dist/{chunk-MR5KMPSE.cjs → chunk-YLVTECAD.cjs} +4 -4
- package/dist/{cloud-tenants-NOZGXQZY.cjs → cloud-tenants-WJCL4P3Y.cjs} +3 -3
- package/dist/components/case-studies/index.cjs +11 -11
- package/dist/components/chat/embeddable-chat.js +8 -6
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/docs/doc-viewer.d.ts +4 -0
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/doc-viewer.js +3 -0
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/docs/use-document-tree.js +9 -1
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/features/index.cjs +3 -3
- package/dist/components/help-center-pages/index.cjs +57 -56
- package/dist/components/help-center-pages/trust-center-page.d.ts +7 -1
- package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
- package/dist/components/help-center-pages/trust-center-page.js +4 -3
- package/dist/components/index.cjs +34 -32
- package/dist/components/layout/page-data-sync.d.ts +18 -0
- package/dist/components/layout/page-data-sync.d.ts.map +1 -0
- package/dist/components/layout/page-data-sync.js +33 -0
- package/dist/components/meeting-scheduler/index.cjs +19 -19
- package/dist/components/navigation/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/product-demo/index.cjs +7 -7
- package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
- package/dist/components/shared/delivery/delivery-lists.js +6 -0
- package/dist/components/shared/dev-section/dev-section-view.d.ts +3 -16
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.js +6 -13
- package/dist/components/shared/legal-document/legal-document-page.d.ts +1 -3
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +3 -9
- package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
- package/dist/components/shared/roadmap/roadmap-view.js +29 -17
- package/dist/components/tickets/hooks/use-tickets-list.d.ts +4 -0
- package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
- package/dist/components/tickets/hooks/use-tickets-list.js +1 -0
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/tickets/ticket-center.d.ts.map +1 -1
- package/dist/components/tickets/ticket-center.js +5 -6
- package/dist/components/ui/data-attribution.d.ts +13 -0
- package/dist/components/ui/data-attribution.d.ts.map +1 -1
- package/dist/components/ui/data-attribution.js +30 -1
- package/dist/components/ui/index.cjs +5 -3
- package/dist/{devices-M4KBTOTC.cjs → devices-PCMSALOA.cjs} +4 -4
- package/dist/{embeddable-chat-KGJVVG2V.cjs → embeddable-chat-CHHWPGAY.cjs} +8 -6
- package/dist/index.cjs +13 -7
- package/dist/{knowledge-VVF6CJEG.cjs → knowledge-FVCXNAMW.cjs} +3 -3
- package/dist/{logs-7E6HBJ55.cjs → logs-IINFWMUF.cjs} +11 -11
- package/dist/{policies-UMZLJTBD.cjs → policies-P3ZT774G.cjs} +7 -7
- package/dist/{scripts-XVNAEYCH.cjs → scripts-KO4V2XO5.cjs} +8 -8
- package/dist/{software-update-U43ZFHMC.cjs → software-update-PSJUU363.cjs} +6 -6
- package/dist/types/data-sync.d.ts +22 -0
- package/dist/types/data-sync.d.ts.map +1 -0
- package/dist/types/data-sync.js +12 -0
- package/dist/types/doc-source.d.ts +4 -0
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/types/index.cjs +12 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/package.json +1 -1
- package/src/components/chat/embeddable-chat.tsx +10 -6
- package/src/components/docs/doc-viewer.tsx +9 -0
- package/src/components/docs/use-document-tree.ts +10 -0
- package/src/components/help-center-pages/trust-center-page.tsx +10 -3
- package/src/components/layout/page-data-sync.tsx +60 -0
- package/src/components/shared/delivery/delivery-lists.tsx +12 -2
- package/src/components/shared/dev-section/dev-section-view.tsx +37 -56
- package/src/components/shared/legal-document/legal-document-page.tsx +5 -13
- package/src/components/shared/roadmap/roadmap-view.tsx +37 -20
- package/src/components/tickets/hooks/use-tickets-list.ts +7 -0
- package/src/components/tickets/ticket-center.tsx +7 -3
- package/src/components/ui/data-attribution.tsx +44 -0
- package/src/types/data-sync.ts +26 -0
- package/src/types/doc-source.ts +4 -0
- package/src/types/index.ts +1 -0
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkSEPHTWFLcjs = require('./chunk-SEPHTWFL.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
|
|
12
|
+
var _chunkECHJO4NIcjs = require('./chunk-ECHJO4NI.cjs');
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
|
|
@@ -19,7 +20,8 @@ var _chunk5E6JHOGXcjs = require('./chunk-5E6JHOGX.cjs');
|
|
|
19
20
|
|
|
20
21
|
|
|
21
22
|
|
|
22
|
-
var
|
|
23
|
+
var _chunkWSRMYHIVcjs = require('./chunk-WSRMYHIV.cjs');
|
|
24
|
+
|
|
23
25
|
|
|
24
26
|
|
|
25
27
|
|
|
@@ -31,7 +33,7 @@ var _chunkBTIYXBA2cjs = require('./chunk-BTIYXBA2.cjs');
|
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
|
|
34
|
-
var
|
|
36
|
+
var _chunk5THYJU3Gcjs = require('./chunk-5THYJU3G.cjs');
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
|
|
@@ -44,7 +46,7 @@ var _chunkVUWPLQBYcjs = require('./chunk-VUWPLQBY.cjs');
|
|
|
44
46
|
|
|
45
47
|
|
|
46
48
|
|
|
47
|
-
var
|
|
49
|
+
var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
|
|
48
50
|
|
|
49
51
|
|
|
50
52
|
|
|
@@ -132,7 +134,7 @@ var TicketActionFailure = class extends Error {
|
|
|
132
134
|
function useTicketActions(options) {
|
|
133
135
|
const queryClient = _reactquery.useQueryClient.call(void 0, );
|
|
134
136
|
const ticketActionEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.ticketActionUrl, () => ( TICKET_ACTION_ENDPOINT));
|
|
135
|
-
const ticketLive =
|
|
137
|
+
const ticketLive = _chunkWSRMYHIVcjs.useOptionalTicketLive.call(void 0, );
|
|
136
138
|
const notifyTicketCreated = _optionalChain([ticketLive, 'optionalAccess', _2 => _2.notifyTicketCreated]);
|
|
137
139
|
const { prependOptimistic, removeOptimistic, removeTicketFromCache, toast: toast2, onSupportSystemDown } = options;
|
|
138
140
|
const formInFlightRef = _react.useRef.call(void 0, null);
|
|
@@ -293,10 +295,10 @@ function useTicketActions(options) {
|
|
|
293
295
|
..._optionalChain([input, 'access', _3 => _3.attachments, 'optionalAccess', _4 => _4.length]) ? { attachments: input.attachments } : {}
|
|
294
296
|
});
|
|
295
297
|
if (result.mirror_synced === false) {
|
|
296
|
-
toast2(
|
|
298
|
+
toast2(_chunkWSRMYHIVcjs.TOAST_COPY.open_mirror_pending);
|
|
297
299
|
watchMirrorSync(placeholderId, result.ticket_id);
|
|
298
300
|
} else {
|
|
299
|
-
toast2(
|
|
301
|
+
toast2(_chunkWSRMYHIVcjs.TOAST_COPY.open_success);
|
|
300
302
|
await queryClient.invalidateQueries({ queryKey: ["tickets"] });
|
|
301
303
|
removeOptimistic(placeholderId);
|
|
302
304
|
}
|
|
@@ -382,7 +384,7 @@ function useTicketActions(options) {
|
|
|
382
384
|
...hasText ? { content_addendum: trimmed } : {},
|
|
383
385
|
...hasFiles ? { attachments } : {}
|
|
384
386
|
},
|
|
385
|
-
|
|
387
|
+
_chunkWSRMYHIVcjs.TOAST_COPY.comment_success,
|
|
386
388
|
"send message"
|
|
387
389
|
);
|
|
388
390
|
if (ok) {
|
|
@@ -405,13 +407,13 @@ function useTicketActions(options) {
|
|
|
405
407
|
status: "CLOSED",
|
|
406
408
|
..._optionalChain([resolution, 'optionalAccess', _6 => _6.trim, 'call', _7 => _7()]) ? { resolution: resolution.trim() } : {}
|
|
407
409
|
},
|
|
408
|
-
|
|
410
|
+
_chunkWSRMYHIVcjs.TOAST_COPY.close_success,
|
|
409
411
|
"close ticket"
|
|
410
412
|
),
|
|
411
413
|
[updateTicket]
|
|
412
414
|
);
|
|
413
415
|
const reopenTicket = _react.useCallback.call(void 0,
|
|
414
|
-
(ticket) => updateTicket(ticket, { status: "OPEN" },
|
|
416
|
+
(ticket) => updateTicket(ticket, { status: "OPEN" }, _chunkWSRMYHIVcjs.TOAST_COPY.reopen_success, "reopen ticket"),
|
|
415
417
|
[updateTicket]
|
|
416
418
|
);
|
|
417
419
|
return _react.useMemo.call(void 0,
|
|
@@ -610,6 +612,7 @@ function useTicketsList(filters) {
|
|
|
610
612
|
void query.refetch();
|
|
611
613
|
},
|
|
612
614
|
lastUpdatedAt: query.dataUpdatedAt || null,
|
|
615
|
+
sync: _nullishCoalesce(_optionalChain([data, 'optionalAccess', _21 => _21.sync]), () => ( null)),
|
|
613
616
|
totalCount,
|
|
614
617
|
page: echoedPage,
|
|
615
618
|
pageSize: echoedPageSize,
|
|
@@ -620,14 +623,14 @@ function useTicketsList(filters) {
|
|
|
620
623
|
// src/components/tickets/ticket-open-form.tsx
|
|
621
624
|
|
|
622
625
|
var _jsxruntime = require('react/jsx-runtime');
|
|
623
|
-
var COUNTER_VISIBLE_AT = Math.floor(
|
|
626
|
+
var COUNTER_VISIBLE_AT = Math.floor(_chunkWSRMYHIVcjs.TICKET_TEXT_MAX_CHARS * 0.8);
|
|
624
627
|
function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
625
628
|
const [subject, setSubject] = _react.useState.call(void 0, "");
|
|
626
629
|
const [content, setContent] = _react.useState.call(void 0, "");
|
|
627
630
|
const { attachments, readyAttachments, hasInflightUploads, addFiles, removeAttachment, clear } = _chunkQTYSYEHKcjs.useChatAttachments.call(void 0, );
|
|
628
631
|
const trimmedSubject = subject.trim();
|
|
629
632
|
const trimmedContent = content.trim();
|
|
630
|
-
const overCap = content.length >
|
|
633
|
+
const overCap = content.length > _chunkWSRMYHIVcjs.TICKET_TEXT_MAX_CHARS;
|
|
631
634
|
const showCounter = content.length >= COUNTER_VISIBLE_AT;
|
|
632
635
|
const canSubmit = !isSubmitting && !supportSystemDown && !hasInflightUploads && trimmedSubject.length > 0 && trimmedContent.length > 0 && !overCap;
|
|
633
636
|
const handleSubmit = async (e) => {
|
|
@@ -644,7 +647,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
644
647
|
clear();
|
|
645
648
|
}
|
|
646
649
|
};
|
|
647
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ...
|
|
650
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.Card, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit, className: "flex flex-col gap-6 md:flex-row", ..._chunk3C4U4UW6cjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS, children: [
|
|
648
651
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1 md:max-w-md", children: [
|
|
649
652
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "mb-2 text-ods-text-primary text-h2", children: "Need Support?" }),
|
|
650
653
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Can't find what you're looking for? Submit a support ticket below \u2014 we'll follow up shortly." }),
|
|
@@ -669,7 +672,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
669
672
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
670
673
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "label", { htmlFor: "ticket-content", className: "mb-1 block text-ods-text-primary text-h6", children: "Your Message" }),
|
|
671
674
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
672
|
-
|
|
675
|
+
_chunk5THYJU3Gcjs.Textarea,
|
|
673
676
|
{
|
|
674
677
|
id: "ticket-content",
|
|
675
678
|
placeholder: "Describe your issue or question in detail...",
|
|
@@ -683,7 +686,7 @@ function TicketOpenForm({ onSubmit, isSubmitting, supportSystemDown }) {
|
|
|
683
686
|
showCounter && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: `mt-1 text-right text-h6 ${overCap ? "text-ods-error" : "text-ods-text-secondary"}`, children: [
|
|
684
687
|
content.length,
|
|
685
688
|
"/",
|
|
686
|
-
|
|
689
|
+
_chunkWSRMYHIVcjs.TICKET_TEXT_MAX_CHARS
|
|
687
690
|
] })
|
|
688
691
|
] }),
|
|
689
692
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -727,10 +730,10 @@ var _usesticktobottom = require('use-stick-to-bottom');
|
|
|
727
730
|
var LIST_ENGAGEMENTS_ENDPOINT = "/api/chat/agent/list-engagements";
|
|
728
731
|
function useTicketEngagements(externalTicketId, enabled = true) {
|
|
729
732
|
const identity = _chunkQTYSYEHKcjs.useChatIdentity.call(void 0, );
|
|
730
|
-
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access',
|
|
733
|
+
const identityKey = _nullishCoalesce(_optionalChain([identity, 'access', _22 => _22.user, 'optionalAccess', _23 => _23.email]), () => ( "anon"));
|
|
731
734
|
const listEngagementsEndpoint = _nullishCoalesce(_chunkUJ7AXHRZcjs.useRequiredChatRuntime.call(void 0, ).endpoints.listEngagementsUrl, () => ( LIST_ENGAGEMENTS_ENDPOINT));
|
|
732
735
|
const fetchable = enabled && !!externalTicketId && !externalTicketId.startsWith("temp-");
|
|
733
|
-
const queryEnabled = fetchable && identity.authTier !== "anon" && !!_optionalChain([identity, 'access',
|
|
736
|
+
const queryEnabled = fetchable && identity.authTier !== "anon" && !!_optionalChain([identity, 'access', _24 => _24.user, 'optionalAccess', _25 => _25.email]);
|
|
734
737
|
const query = _reactquery.useQuery.call(void 0, {
|
|
735
738
|
queryKey: ["ticket-engagements", externalTicketId, identityKey],
|
|
736
739
|
enabled: queryEnabled,
|
|
@@ -799,7 +802,7 @@ function TicketLinkedDeliveryCard({ clickup, className }) {
|
|
|
799
802
|
dateClosed: clickup.date_closed,
|
|
800
803
|
clickupUrl: _nullishCoalesce(clickup.clickup_url, () => ( ""))
|
|
801
804
|
};
|
|
802
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunk7Z4EQOIXcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
805
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${_chunk7Z4EQOIXcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} ${_nullishCoalesce(className, () => ( ""))}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DeliveryRow, { item, href: clickup.delivery_href, caption: "Linked delivery" }) });
|
|
803
806
|
}
|
|
804
807
|
|
|
805
808
|
// src/components/tickets/ticket-reply-composer.tsx
|
|
@@ -852,7 +855,7 @@ function TicketReplyComposer({
|
|
|
852
855
|
sending: busy || attachments.hasInflightUploads,
|
|
853
856
|
disabled: supportSystemDown,
|
|
854
857
|
allowEmptySend: hasReadyFiles,
|
|
855
|
-
maxLength:
|
|
858
|
+
maxLength: _chunkWSRMYHIVcjs.TICKET_TEXT_MAX_CHARS,
|
|
856
859
|
onSend: handleSend
|
|
857
860
|
}
|
|
858
861
|
),
|
|
@@ -881,25 +884,25 @@ function TicketReplyComposer({
|
|
|
881
884
|
}
|
|
882
885
|
)
|
|
883
886
|
] }),
|
|
884
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
885
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
886
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
887
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
887
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.AlertDialog, { open: closeDialogOpen, onOpenChange: setCloseDialogOpen, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5THYJU3Gcjs.AlertDialogContent, { className: "border-ods-border bg-ods-card", children: [
|
|
888
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5THYJU3Gcjs.AlertDialogHeader, { children: [
|
|
889
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.AlertDialogTitle, { className: "text-ods-text-primary", children: "Close this ticket?" }),
|
|
890
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.AlertDialogDescription, { className: "text-ods-text-secondary", children: "Add an optional resolution note below. You can reopen the ticket later if needed." })
|
|
888
891
|
] }),
|
|
889
892
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
890
|
-
|
|
893
|
+
_chunk5THYJU3Gcjs.Textarea,
|
|
891
894
|
{
|
|
892
895
|
value: resolution,
|
|
893
896
|
onChange: (e) => setResolution(e.target.value),
|
|
894
897
|
placeholder: "Resolution (optional)",
|
|
895
898
|
rows: 3,
|
|
896
|
-
maxLength:
|
|
899
|
+
maxLength: _chunkWSRMYHIVcjs.TICKET_TEXT_MAX_CHARS,
|
|
897
900
|
className: "mt-2"
|
|
898
901
|
}
|
|
899
902
|
),
|
|
900
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
903
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk5THYJU3Gcjs.AlertDialogFooter, { children: [
|
|
901
904
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
902
|
-
|
|
905
|
+
_chunk5THYJU3Gcjs.AlertDialogCancel,
|
|
903
906
|
{
|
|
904
907
|
disabled: busy,
|
|
905
908
|
className: "border-ods-border bg-transparent text-ods-text-primary hover:bg-ods-border",
|
|
@@ -907,7 +910,7 @@ function TicketReplyComposer({
|
|
|
907
910
|
}
|
|
908
911
|
),
|
|
909
912
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
910
|
-
|
|
913
|
+
_chunk5THYJU3Gcjs.AlertDialogAction,
|
|
911
914
|
{
|
|
912
915
|
onClick: () => void confirmClose(),
|
|
913
916
|
disabled: busy,
|
|
@@ -970,11 +973,11 @@ var TICKET_FEED_INNER = "flex flex-col gap-4 md:gap-6 px-4 md:px-6 py-4 md:py-6"
|
|
|
970
973
|
var TICKET_FEED_SKELETON_ROWS = 6;
|
|
971
974
|
function TicketTimelinePanel({ ticket }) {
|
|
972
975
|
const identity = _chunkQTYSYEHKcjs.useChatIdentity.call(void 0, );
|
|
973
|
-
const externalId =
|
|
976
|
+
const externalId = _chunkWSRMYHIVcjs.isOptimistic.call(void 0, ticket) ? null : ticket.external_id;
|
|
974
977
|
const { engagements, isLoading } = useTicketEngagements(externalId, !!externalId);
|
|
975
|
-
const live =
|
|
976
|
-
const setOpenTicketId = _optionalChain([live, 'optionalAccess',
|
|
977
|
-
const markRead = _optionalChain([live, 'optionalAccess',
|
|
978
|
+
const live = _chunkWSRMYHIVcjs.useOptionalTicketLive.call(void 0, );
|
|
979
|
+
const setOpenTicketId = _optionalChain([live, 'optionalAccess', _26 => _26.setOpenTicketId]);
|
|
980
|
+
const markRead = _optionalChain([live, 'optionalAccess', _27 => _27.markRead]);
|
|
978
981
|
const markReadDebounceRef = _react.useRef.call(void 0, null);
|
|
979
982
|
_react.useEffect.call(void 0, () => {
|
|
980
983
|
if (!externalId || !setOpenTicketId || !markRead) return void 0;
|
|
@@ -996,7 +999,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
996
999
|
markReadDebounceRef.current = setTimeout(() => {
|
|
997
1000
|
markReadDebounceRef.current = null;
|
|
998
1001
|
void markRead(externalId);
|
|
999
|
-
},
|
|
1002
|
+
}, _chunkWSRMYHIVcjs.TICKET_MARK_READ_DEBOUNCE_MS);
|
|
1000
1003
|
}, [engagementsCount, externalId, markRead]);
|
|
1001
1004
|
const { scrollRef, contentRef } = _usesticktobottom.useStickToBottom.call(void 0, { initial: "instant", resize: "smooth" });
|
|
1002
1005
|
const bodyTurns = ticket.body ? ticket.body.split(TURN_SEPARATOR_RE).map((t) => t.trim()).filter(Boolean) : [];
|
|
@@ -1004,14 +1007,14 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1004
1007
|
engagements.filter((e) => e.authorRole === "customer").map((e) => (_nullishCoalesce(e.body, () => ( ""))).trim()).filter(Boolean)
|
|
1005
1008
|
);
|
|
1006
1009
|
const suppressBodyTurnZero = bodyTurns.length > 0 && customerEngagementBodies.has(bodyTurns[0]);
|
|
1007
|
-
const sessionEmailLower = _nullishCoalesce(_optionalChain([identity, 'access',
|
|
1010
|
+
const sessionEmailLower = _nullishCoalesce(_optionalChain([identity, 'access', _28 => _28.user, 'optionalAccess', _29 => _29.email, 'optionalAccess', _30 => _30.trim, 'call', _31 => _31(), 'access', _32 => _32.toLowerCase, 'call', _33 => _33()]), () => ( null));
|
|
1008
1011
|
const isViewerTheCustomer = !!sessionEmailLower && ticket.customer_emails.some((e) => e.trim().toLowerCase() === sessionEmailLower);
|
|
1009
|
-
const viewerName = _optionalChain([identity, 'access',
|
|
1010
|
-
const ticketCustomerName = _optionalChain([ticket, 'access',
|
|
1011
|
-
const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access',
|
|
1012
|
-
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access',
|
|
1012
|
+
const viewerName = _optionalChain([identity, 'access', _34 => _34.user, 'optionalAccess', _35 => _35.name, 'optionalAccess', _36 => _36.trim, 'call', _37 => _37()]) || null;
|
|
1013
|
+
const ticketCustomerName = _optionalChain([ticket, 'access', _38 => _38.customer_name, 'optionalAccess', _39 => _39.trim, 'call', _40 => _40()]) || null;
|
|
1014
|
+
const customerName = (isViewerTheCustomer ? viewerName : null) || ticketCustomerName || viewerName || _optionalChain([identity, 'access', _41 => _41.user, 'optionalAccess', _42 => _42.email]) || "You";
|
|
1015
|
+
const customerAvatar = isViewerTheCustomer ? _nullishCoalesce(_optionalChain([identity, 'access', _43 => _43.user, 'optionalAccess', _44 => _44.avatarUrl]), () => ( void 0)) : void 0;
|
|
1013
1016
|
if (isLoading) {
|
|
1014
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNO5UJLLQcjs.LoadingRegion, { label: "Loading messages", className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1017
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `${TICKET_FEED_FRAME} ${TICKET_FEED_HEIGHT}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNO5UJLLQcjs.LoadingRegion, { label: "Loading messages", className: TICKET_FEED_INNER, children: Array.from({ length: TICKET_FEED_SKELETON_ROWS }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3C4U4UW6cjs.ChatMessageRowSkeleton, {}, i)) }) });
|
|
1015
1018
|
}
|
|
1016
1019
|
if (bodyTurns.length === 0 && engagements.length === 0) {
|
|
1017
1020
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1030,7 +1033,7 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1030
1033
|
const isResolution = turn.startsWith("[Resolution]");
|
|
1031
1034
|
const text = isResolution ? turn.replace(/^\[Resolution\]\s*/, "") : turn;
|
|
1032
1035
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1033
|
-
|
|
1036
|
+
_chunk3C4U4UW6cjs.ChatMessageRow,
|
|
1034
1037
|
{
|
|
1035
1038
|
displayName: customerName,
|
|
1036
1039
|
avatarUrl: customerAvatar,
|
|
@@ -1041,12 +1044,12 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1041
1044
|
}),
|
|
1042
1045
|
engagements.map((eng) => {
|
|
1043
1046
|
const isCustomer = eng.authorRole === "customer";
|
|
1044
|
-
const isOwnReply = isCustomer && !!eng.authorId && !!_optionalChain([identity, 'access',
|
|
1047
|
+
const isOwnReply = isCustomer && !!eng.authorId && !!_optionalChain([identity, 'access', _45 => _45.user, 'optionalAccess', _46 => _46.email]) && eng.authorId.toLowerCase() === identity.user.email.toLowerCase();
|
|
1045
1048
|
let author;
|
|
1046
1049
|
let avatarSrc;
|
|
1047
1050
|
if (isCustomer && isOwnReply) {
|
|
1048
|
-
author = _optionalChain([identity, 'access',
|
|
1049
|
-
avatarSrc = _nullishCoalesce(_optionalChain([identity, 'access',
|
|
1051
|
+
author = _optionalChain([identity, 'access', _47 => _47.user, 'optionalAccess', _48 => _48.name, 'optionalAccess', _49 => _49.trim, 'call', _50 => _50()]) || customerName;
|
|
1052
|
+
avatarSrc = _nullishCoalesce(_optionalChain([identity, 'access', _51 => _51.user, 'optionalAccess', _52 => _52.avatarUrl]), () => ( void 0));
|
|
1050
1053
|
} else if (isCustomer) {
|
|
1051
1054
|
author = ticketCustomerName || "Customer";
|
|
1052
1055
|
avatarSrc = void 0;
|
|
@@ -1059,13 +1062,13 @@ function TicketTimelinePanel({ ticket }) {
|
|
|
1059
1062
|
}
|
|
1060
1063
|
const engAttachments = mapEngagementAttachments(eng.attachments);
|
|
1061
1064
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1062
|
-
|
|
1065
|
+
_chunk3C4U4UW6cjs.ChatMessageRow,
|
|
1063
1066
|
{
|
|
1064
1067
|
displayName: author,
|
|
1065
1068
|
avatarUrl: avatarSrc,
|
|
1066
1069
|
timeLabel: eng.createdAt ? _chunkF64VMOIBcjs.formatRelativeTime.call(void 0, eng.createdAt) : null,
|
|
1067
1070
|
body: stripAttachmentsPreamble(_nullishCoalesce(eng.body, () => ( ""))),
|
|
1068
|
-
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1071
|
+
footer: engAttachments.length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.TicketAttachmentsList, { attachments: engAttachments, size: "compact" }) }) : null
|
|
1069
1072
|
},
|
|
1070
1073
|
eng.id
|
|
1071
1074
|
);
|
|
@@ -1082,7 +1085,7 @@ function mapEngagementAttachments(files) {
|
|
|
1082
1085
|
// Show an inline thumbnail for image attachments (the signed `url` is a
|
|
1083
1086
|
// viewable URL). Non-images fall back to the file-type icon. SquareAvatar
|
|
1084
1087
|
// degrades to initials on a broken/expired image URL.
|
|
1085
|
-
thumbnailSrc: url && (_nullishCoalesce(_optionalChain([f, 'access',
|
|
1088
|
+
thumbnailSrc: url && (_nullishCoalesce(_optionalChain([f, 'access', _53 => _53.mime, 'optionalAccess', _54 => _54.startsWith, 'call', _55 => _55("image/")]), () => ( false))) ? url : void 0,
|
|
1086
1089
|
onDownload: url ? () => window.open(url, "_blank", "noopener,noreferrer") : void 0
|
|
1087
1090
|
};
|
|
1088
1091
|
});
|
|
@@ -1143,8 +1146,8 @@ function ReplyFailureBanner({ error, onDismiss }) {
|
|
|
1143
1146
|
);
|
|
1144
1147
|
}
|
|
1145
1148
|
function AssignedAgentRow({ assignedOwner }) {
|
|
1146
|
-
const trimmedName = _optionalChain([assignedOwner, 'optionalAccess',
|
|
1147
|
-
const emailFallback = _optionalChain([assignedOwner, 'optionalAccess',
|
|
1149
|
+
const trimmedName = _optionalChain([assignedOwner, 'optionalAccess', _56 => _56.name, 'optionalAccess', _57 => _57.trim, 'call', _58 => _58()]) || null;
|
|
1150
|
+
const emailFallback = _optionalChain([assignedOwner, 'optionalAccess', _59 => _59.email, 'optionalAccess', _60 => _60.trim, 'call', _61 => _61()]) || null;
|
|
1148
1151
|
const displayLabel = _nullishCoalesce(trimmedName, () => ( (emailFallback ? emailFallback.split("@")[0] : null)));
|
|
1149
1152
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 text-h6", children: [
|
|
1150
1153
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h5", children: "Assigned to" }),
|
|
@@ -1154,7 +1157,7 @@ function AssignedAgentRow({ assignedOwner }) {
|
|
|
1154
1157
|
{
|
|
1155
1158
|
size: "sm",
|
|
1156
1159
|
variant: "round",
|
|
1157
|
-
src: _nullishCoalesce(_optionalChain([assignedOwner, 'optionalAccess',
|
|
1160
|
+
src: _nullishCoalesce(_optionalChain([assignedOwner, 'optionalAccess', _62 => _62.avatarUrl]), () => ( void 0)),
|
|
1158
1161
|
alt: displayLabel,
|
|
1159
1162
|
fallback: displayLabel
|
|
1160
1163
|
}
|
|
@@ -1178,7 +1181,7 @@ function TicketRow({
|
|
|
1178
1181
|
onActionCollapsed,
|
|
1179
1182
|
id
|
|
1180
1183
|
}) {
|
|
1181
|
-
const optimistic =
|
|
1184
|
+
const optimistic = _chunkWSRMYHIVcjs.isOptimistic.call(void 0, ticket);
|
|
1182
1185
|
const rowRef = _react.useRef.call(void 0, null);
|
|
1183
1186
|
const handleClick = _react.useCallback.call(void 0, () => {
|
|
1184
1187
|
onToggle(ticket.id);
|
|
@@ -1216,7 +1219,7 @@ function TicketRow({
|
|
|
1216
1219
|
};
|
|
1217
1220
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rowRef, id, className: "scroll-mt-24", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Collapsible, { open: expanded && !optimistic, className: "border-b border-ods-border last:border-b-0", children: [
|
|
1218
1221
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1219
|
-
|
|
1222
|
+
_chunk3C4U4UW6cjs.ChatTicketItem,
|
|
1220
1223
|
{
|
|
1221
1224
|
ticket: tileData,
|
|
1222
1225
|
onClick: optimistic ? void 0 : handleClick,
|
|
@@ -1253,7 +1256,7 @@ function TicketCenter({ toast: toast2 = _chunkVUWPLQBYcjs.toast } = {}) {
|
|
|
1253
1256
|
if (identity.isLoading) {
|
|
1254
1257
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCenterSkeleton, {});
|
|
1255
1258
|
}
|
|
1256
|
-
if (identity.authTier === "anon" || !_optionalChain([identity, 'access',
|
|
1259
|
+
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _63 => _63.user, 'optionalAccess', _64 => _64.email])) {
|
|
1257
1260
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1258
1261
|
_chunk5E6JHOGXcjs.EmptyState,
|
|
1259
1262
|
{
|
|
@@ -1271,7 +1274,7 @@ function TicketCenterAuthed({
|
|
|
1271
1274
|
sessionEmail
|
|
1272
1275
|
}) {
|
|
1273
1276
|
const queryClient = _reactquery.useQueryClient.call(void 0, );
|
|
1274
|
-
const { tickets, isLoading, isFetching, refetch,
|
|
1277
|
+
const { tickets, isLoading, isFetching, refetch, sync } = useTicketsList({
|
|
1275
1278
|
customerEmail: sessionEmail
|
|
1276
1279
|
});
|
|
1277
1280
|
const [optimisticTickets, setOptimisticTickets] = _react.useState.call(void 0, []);
|
|
@@ -1304,6 +1307,7 @@ function TicketCenterAuthed({
|
|
|
1304
1307
|
const toggleRow = _react.useCallback.call(void 0, (id) => {
|
|
1305
1308
|
setExpandedTicketId((prev) => prev === id ? null : id);
|
|
1306
1309
|
}, []);
|
|
1310
|
+
const syncInPage = _chunkECHJO4NIcjs.usePageDataSync.call(void 0, sync, isLoading);
|
|
1307
1311
|
const merged = [...optimisticTickets, ...tickets];
|
|
1308
1312
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6", children: [
|
|
1309
1313
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -1318,10 +1322,7 @@ function TicketCenterAuthed({
|
|
|
1318
1322
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between gap-3", children: [
|
|
1319
1323
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h5", children: "Your Current Tickets" }),
|
|
1320
1324
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 text-ods-text-secondary text-h6", children: [
|
|
1321
|
-
|
|
1322
|
-
"Updated ",
|
|
1323
|
-
_chunkF64VMOIBcjs.formatRelativeTime.call(void 0, new Date(lastUpdatedAt))
|
|
1324
|
-
] }),
|
|
1325
|
+
!syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { sync, inline: true }),
|
|
1325
1326
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1326
1327
|
_chunk2QMBXGMQcjs.Button,
|
|
1327
1328
|
{
|
|
@@ -1347,11 +1348,11 @@ function TicketCenterAuthed({
|
|
|
1347
1348
|
) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.Card, { className: "overflow-hidden", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1348
1349
|
TicketRow,
|
|
1349
1350
|
{
|
|
1350
|
-
id:
|
|
1351
|
+
id: _chunk3C4U4UW6cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1351
1352
|
ticket,
|
|
1352
1353
|
expanded: expandedTicketId === ticket.id,
|
|
1353
1354
|
onToggle: toggleRow,
|
|
1354
|
-
busy:
|
|
1355
|
+
busy: _chunkWSRMYHIVcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
|
|
1355
1356
|
supportSystemDown,
|
|
1356
1357
|
onSendMessage: actions.sendMessage,
|
|
1357
1358
|
onClose: actions.closeTicket,
|
|
@@ -1407,7 +1408,7 @@ function HelpCenterCard({
|
|
|
1407
1408
|
onClearReplyError,
|
|
1408
1409
|
id
|
|
1409
1410
|
}) {
|
|
1410
|
-
const optimistic =
|
|
1411
|
+
const optimistic = _chunkWSRMYHIVcjs.isOptimistic.call(void 0, ticket);
|
|
1411
1412
|
const rawStatus = (_nullishCoalesce(ticket.status, () => ( "OPEN"))).toUpperCase();
|
|
1412
1413
|
const priority = (_nullishCoalesce(ticket.priority, () => ( ""))).toUpperCase();
|
|
1413
1414
|
const relativeUpdated = ticket.hubspot_updated_at ? _chunkF64VMOIBcjs.formatRelativeTime.call(void 0, ticket.hubspot_updated_at) : "recently";
|
|
@@ -1429,8 +1430,8 @@ function HelpCenterCard({
|
|
|
1429
1430
|
});
|
|
1430
1431
|
return () => cancelAnimationFrame(raf);
|
|
1431
1432
|
}, [isExpanded]);
|
|
1432
|
-
const live =
|
|
1433
|
-
const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess',
|
|
1433
|
+
const live = _chunkWSRMYHIVcjs.useOptionalTicketLive.call(void 0, );
|
|
1434
|
+
const unreadCount = !optimistic && ticket.external_id && _optionalChain([live, 'optionalAccess', _65 => _65.unreadByTicket, 'access', _66 => _66[ticket.external_id]]) || 0;
|
|
1434
1435
|
const rightBadges = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1435
1436
|
unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1436
1437
|
_chunk7Z4EQOIXcjs.StatusBadge,
|
|
@@ -1479,7 +1480,7 @@ function HelpCenterCard({
|
|
|
1479
1480
|
"aria-controls": isExpanded ? `help-center-drawer-${ticket.id}` : void 0,
|
|
1480
1481
|
className: "w-full p-[12px] text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent disabled:cursor-default content-md:p-[16px]",
|
|
1481
1482
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1482
|
-
|
|
1483
|
+
_chunkECHJO4NIcjs.DevCardRowContent,
|
|
1483
1484
|
{
|
|
1484
1485
|
title,
|
|
1485
1486
|
subtitle,
|
|
@@ -1590,7 +1591,7 @@ function HelpCenterCreateForm({
|
|
|
1590
1591
|
subjectError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { id: "help-center-subject-error", className: "mt-1 text-ods-error text-h6", children: subjectError })
|
|
1591
1592
|
] });
|
|
1592
1593
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1593
|
-
|
|
1594
|
+
_chunkSEPHTWFLcjs.ContactForm,
|
|
1594
1595
|
{
|
|
1595
1596
|
rescue: null,
|
|
1596
1597
|
title: "Open a new ticket",
|
|
@@ -1633,25 +1634,25 @@ function HelpCenterList({ toast: toast2 = _chunkVUWPLQBYcjs.toast, backButton, t
|
|
|
1633
1634
|
const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
|
|
1634
1635
|
const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
|
|
1635
1636
|
const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
|
|
1636
|
-
const search = searchParams.get(
|
|
1637
|
+
const search = searchParams.get(_chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.search) || "";
|
|
1637
1638
|
const status = searchParams.get("status") || "all";
|
|
1638
|
-
const ticketParam = searchParams.get(
|
|
1639
|
+
const ticketParam = searchParams.get(_chunk3C4U4UW6cjs.TICKET_OPEN_PARAM) || "";
|
|
1639
1640
|
const page = _chunkBLH2SFOOcjs.positiveInt.call(void 0, searchParams.get("page"), 1);
|
|
1640
1641
|
if (identity.isLoading) {
|
|
1641
1642
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1642
|
-
|
|
1643
|
+
_chunkECHJO4NIcjs.DevSectionPage,
|
|
1643
1644
|
{
|
|
1644
1645
|
sectionKey: "tickets",
|
|
1645
1646
|
backButton,
|
|
1646
1647
|
title,
|
|
1647
1648
|
shell,
|
|
1648
1649
|
preControls: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpCenterCreateFormSkeleton, {}),
|
|
1649
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1650
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DevCardRowSkeletonList, {})
|
|
1650
1651
|
}
|
|
1651
1652
|
);
|
|
1652
1653
|
}
|
|
1653
|
-
if (identity.authTier === "anon" || !_optionalChain([identity, 'access',
|
|
1654
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1654
|
+
if (identity.authTier === "anon" || !_optionalChain([identity, 'access', _67 => _67.user, 'optionalAccess', _68 => _68.email])) {
|
|
1655
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1655
1656
|
_chunk5E6JHOGXcjs.EmptyState,
|
|
1656
1657
|
{
|
|
1657
1658
|
type: "generic",
|
|
@@ -1661,7 +1662,7 @@ function HelpCenterList({ toast: toast2 = _chunkVUWPLQBYcjs.toast, backButton, t
|
|
|
1661
1662
|
}
|
|
1662
1663
|
) });
|
|
1663
1664
|
}
|
|
1664
|
-
const sessionName = [_optionalChain([identity, 'access',
|
|
1665
|
+
const sessionName = [_optionalChain([identity, 'access', _69 => _69.user, 'optionalAccess', _70 => _70.firstName]), _optionalChain([identity, 'access', _71 => _71.user, 'optionalAccess', _72 => _72.lastName])].filter(Boolean).join(" ").trim() || _optionalChain([identity, 'access', _73 => _73.user, 'optionalAccess', _74 => _74.email, 'optionalAccess', _75 => _75.split, 'call', _76 => _76("@"), 'access', _77 => _77[0]]) || "Customer";
|
|
1665
1666
|
const sessionEmail = identity.user.email;
|
|
1666
1667
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1667
1668
|
HelpCenterListAuthed,
|
|
@@ -1703,8 +1704,8 @@ function HelpCenterListAuthed({
|
|
|
1703
1704
|
const setOpenTicket = _react.useCallback.call(void 0,
|
|
1704
1705
|
(externalId) => {
|
|
1705
1706
|
const params = new URLSearchParams(searchParams.toString());
|
|
1706
|
-
if (externalId) params.set(
|
|
1707
|
-
else params.delete(
|
|
1707
|
+
if (externalId) params.set(_chunk3C4U4UW6cjs.TICKET_OPEN_PARAM, externalId);
|
|
1708
|
+
else params.delete(_chunk3C4U4UW6cjs.TICKET_OPEN_PARAM);
|
|
1708
1709
|
const qs = params.toString();
|
|
1709
1710
|
router.replace(qs ? `${pathname}?${qs}` : pathname, { scroll: false });
|
|
1710
1711
|
},
|
|
@@ -1727,7 +1728,7 @@ function HelpCenterListAuthed({
|
|
|
1727
1728
|
// status/pipeline change with no accompanying reply has no live
|
|
1728
1729
|
// path until the next event/focus/reconnect.
|
|
1729
1730
|
});
|
|
1730
|
-
const expandedTicketId = ticketParam && _optionalChain([tickets, 'access',
|
|
1731
|
+
const expandedTicketId = ticketParam && _optionalChain([tickets, 'access', _78 => _78.find, 'call', _79 => _79((t) => t.external_id === ticketParam), 'optionalAccess', _80 => _80.id]) || null;
|
|
1731
1732
|
const prependOptimistic = _react.useCallback.call(void 0, (placeholder) => {
|
|
1732
1733
|
setOptimisticTickets((prev) => [placeholder, ...prev]);
|
|
1733
1734
|
}, []);
|
|
@@ -1755,7 +1756,7 @@ function HelpCenterListAuthed({
|
|
|
1755
1756
|
const toggleRow = _react.useCallback.call(void 0,
|
|
1756
1757
|
(id) => {
|
|
1757
1758
|
const t = tickets.find((x) => x.id === id);
|
|
1758
|
-
if (!_optionalChain([t, 'optionalAccess',
|
|
1759
|
+
if (!_optionalChain([t, 'optionalAccess', _81 => _81.external_id])) return;
|
|
1759
1760
|
setOpenTicket(t.external_id === ticketParam ? null : t.external_id);
|
|
1760
1761
|
},
|
|
1761
1762
|
[tickets, ticketParam, setOpenTicket]
|
|
@@ -1781,15 +1782,15 @@ function HelpCenterListAuthed({
|
|
|
1781
1782
|
] }),
|
|
1782
1783
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2QMBXGMQcjs.Button, { type: "button", variant: "accent", onClick: () => refetch(), children: "Retry" })
|
|
1783
1784
|
] }),
|
|
1784
|
-
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1785
|
+
!error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DevCardRowSkeletonList, {}) : !hasResults && isFetching ? (
|
|
1785
1786
|
// Bridge state — background refetch in flight and the
|
|
1786
1787
|
// optimistic placeholder was just removed by the mutation
|
|
1787
1788
|
// callback. Without this branch "No tickets yet" would flash
|
|
1788
1789
|
// for ~50ms between `removeOptimistic` and the server
|
|
1789
1790
|
// response landing.
|
|
1790
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1791
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DevCardRowSkeletonList, { rows: 1 })
|
|
1791
1792
|
) : !hasResults ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1792
|
-
|
|
1793
|
+
_chunkECHJO4NIcjs.ListEmptyState,
|
|
1793
1794
|
{
|
|
1794
1795
|
isFiltered: hasActiveFilters,
|
|
1795
1796
|
filtered: {
|
|
@@ -1820,11 +1821,11 @@ function HelpCenterListAuthed({
|
|
|
1820
1821
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full overflow-clip rounded-[6px] border border-ods-border bg-ods-card", children: merged.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1821
1822
|
HelpCenterCard,
|
|
1822
1823
|
{
|
|
1823
|
-
id:
|
|
1824
|
+
id: _chunk3C4U4UW6cjs.devSectionAnchorId.call(void 0, "ticket", ticket.external_id),
|
|
1824
1825
|
ticket,
|
|
1825
1826
|
expanded: expandedTicketId === ticket.id,
|
|
1826
1827
|
onToggle: toggleRow,
|
|
1827
|
-
busy:
|
|
1828
|
+
busy: _chunkWSRMYHIVcjs.isOptimistic.call(void 0, ticket) ? false : actions.isRowBusy(ticket.id),
|
|
1828
1829
|
supportSystemDown,
|
|
1829
1830
|
onSendMessage: actions.sendMessage,
|
|
1830
1831
|
onClose: actions.closeTicket,
|
|
@@ -1838,7 +1839,7 @@ function HelpCenterListAuthed({
|
|
|
1838
1839
|
) }),
|
|
1839
1840
|
!error && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5E6JHOGXcjs.UnifiedPagination, { currentPage: page, totalPages })
|
|
1840
1841
|
] });
|
|
1841
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1842
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DevSectionPage, { sectionKey: "tickets", backButton, title, shell, preControls: form, children: body });
|
|
1842
1843
|
}
|
|
1843
1844
|
|
|
1844
1845
|
|
|
@@ -5150,7 +5150,7 @@ function ProxyCredentialsForm({ description, saved }) {
|
|
|
5150
5150
|
|
|
5151
5151
|
// src/components/chat/index.ts
|
|
5152
5152
|
var LoadedEmbeddableChat = _react.lazy.call(void 0,
|
|
5153
|
-
() => Promise.resolve().then(() => _interopRequireWildcard(require("./embeddable-chat-
|
|
5153
|
+
() => Promise.resolve().then(() => _interopRequireWildcard(require("./embeddable-chat-CHHWPGAY.cjs"))).then((module) => ({ default: module.EmbeddableChat }))
|
|
5154
5154
|
);
|
|
5155
5155
|
var EmbeddableChat = _react.forwardRef.call(void 0, (props, ref) => {
|
|
5156
5156
|
_react.useEffect.call(void 0, () => _chunkQTYSYEHKcjs.holdAskAiOpens.call(void 0, ), []);
|