@epam/ai-dial-chat-shared 1.3.0-dev.37 → 1.3.0-dev.371
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/components/ActionMenu/ActionMenu.d.ts +26 -0
- package/components/ActionMenu/ActionMenu.d.ts.map +1 -0
- package/components/ActionMenu/ActionMenu.js +50 -0
- package/components/ConfirmationDialog/ConfirmationDialog.d.ts +6 -1
- package/components/ConfirmationDialog/ConfirmationDialog.d.ts.map +1 -1
- package/components/ConfirmationDialog/ConfirmationDialog.js +11 -9
- package/components/ConfirmationIdentityCard/ConfirmationIdentityCard.module.scss.js +5 -4
- package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.js +2 -2
- package/components/ConfirmationIdentityRow/ConfirmationIdentityRow.module.scss.js +3 -2
- package/components/ConfirmationView/ConfirmationFooter.d.ts.map +1 -1
- package/components/ConfirmationView/ConfirmationFooter.js +25 -26
- package/components/ConfirmationView/ConfirmationView.d.ts +2 -0
- package/components/ConfirmationView/ConfirmationView.d.ts.map +1 -1
- package/components/ConfirmationView/ConfirmationView.js +12 -12
- package/components/ConfirmationView/ConfirmationView.module.scss.js +6 -5
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts +31 -0
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.d.ts.map +1 -0
- package/components/DeleteConfirmationDrawer/DeleteConfirmationDrawer.js +36 -0
- package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts +3 -0
- package/components/DeleteConfirmationView/DeleteConfirmationView.d.ts.map +1 -1
- package/components/DeleteConfirmationView/DeleteConfirmationView.js +36 -27
- package/components/DeleteConfirmationView/DeleteConfirmationView.module.scss.js +5 -4
- package/components/DeploymentIcon/DeploymentIcon.module.scss.js +3 -2
- package/components/EntityHeader/EntityHeader.js +1 -1
- package/components/InitialsAvatar/InitialsAvatar.d.ts +3 -0
- package/components/InitialsAvatar/InitialsAvatar.d.ts.map +1 -1
- package/components/InitialsAvatar/InitialsAvatar.js +4 -3
- package/components/ItemHeader/ItemHeader.d.ts +5 -1
- package/components/ItemHeader/ItemHeader.d.ts.map +1 -1
- package/components/ItemHeader/ItemHeader.js +4 -1
- package/components/ItemHeader/ItemHeader.module.scss.js +5 -4
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts +6 -2
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.js +58 -58
- package/components/MarkdownRenderer/CodeBlock/CodeBlock.module.scss.js +9 -8
- package/components/MarkdownRenderer/CodeBlock/syntax-theme.d.ts.map +1 -1
- package/components/MarkdownRenderer/MDMessageViewer.d.ts +6 -2
- package/components/MarkdownRenderer/MDMessageViewer.d.ts.map +1 -1
- package/components/MarkdownRenderer/MDMessageViewer.js +14 -12
- package/components/MarkdownRenderer/MarkdownRenderer.d.ts +8 -0
- package/components/MarkdownRenderer/MarkdownRenderer.d.ts.map +1 -1
- package/components/MarkdownRenderer/MarkdownRenderer.js +146 -136
- package/components/MarkdownRenderer/MarkdownRenderer.module.scss.js +9 -8
- package/components/MarkdownRenderer/Math/MarkdownMathBlock.js +1 -1
- package/components/MarkdownRenderer/Math/MarkdownMathBlock.module.scss.js +5 -4
- package/components/MarkdownRenderer/PlainTextRenderer.js +1 -1
- package/components/MarkdownRenderer/Table/MarkdownTable.d.ts +4 -0
- package/components/MarkdownRenderer/Table/MarkdownTable.d.ts.map +1 -1
- package/components/MarkdownRenderer/Table/MarkdownTable.js +68 -63
- package/components/MarkdownRenderer/Table/MarkdownTable.module.scss.js +15 -13
- package/components/MarkdownRenderer/Table/TableHeader.module.scss.js +3 -2
- package/components/MarkdownRenderer/markdown-whitespace.js +2 -6
- package/components/NewVersionAlert/NewVersionAlert.d.ts +27 -0
- package/components/NewVersionAlert/NewVersionAlert.d.ts.map +1 -0
- package/components/NewVersionAlert/NewVersionAlert.js +28 -0
- package/components/NewVersionAlert/NewVersionAlert.module.scss.js +4 -0
- package/components/NotificationStack/NotificationStack.d.ts +48 -0
- package/components/NotificationStack/NotificationStack.d.ts.map +1 -0
- package/components/NotificationStack/NotificationStack.js +111 -0
- package/components/PanelEmptyState/PanelEmptyState.d.ts +12 -2
- package/components/PanelEmptyState/PanelEmptyState.d.ts.map +1 -1
- package/components/PanelEmptyState/PanelEmptyState.js +19 -9
- package/components/PanelEmptyState/PanelEmptyState.module.scss.js +6 -2
- package/components/ResourceSummary/ResourceSummary.module.scss.js +5 -4
- package/components/TextRefinementField/TextRefinementField.d.ts +4 -2
- package/components/TextRefinementField/TextRefinementField.d.ts.map +1 -1
- package/components/TextRefinementField/TextRefinementField.js +84 -55
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts +22 -0
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.d.ts.map +1 -0
- package/components/UnsavedChangesProvider/UnsavedChangesProvider.js +57 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts +44 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.d.ts.map +1 -0
- package/components/UnsavedChangesProvider/unsaved-changes-context.js +13 -0
- package/constants/breakpoint.d.ts +6 -0
- package/constants/breakpoint.d.ts.map +1 -1
- package/constants/breakpoint.js +2 -2
- package/conversation-transfer/conversation-transfer-queue.d.ts +16 -0
- package/conversation-transfer/conversation-transfer-queue.d.ts.map +1 -0
- package/conversation-transfer/conversation-transfer-queue.js +24 -0
- package/entry-points/markdown.d.ts +1 -0
- package/entry-points/markdown.d.ts.map +1 -1
- package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts +15 -0
- package/file-manager/DialFileManagerShell/DialFileManagerShell.d.ts.map +1 -1
- package/file-manager/DialFileManagerShell/DialFileManagerShell.js +330 -266
- package/file-manager/DialFileManagerShell/DialFileManagerShell.module.scss.js +8 -0
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts +7 -0
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.d.ts.map +1 -1
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.js +85 -80
- package/file-manager/FileManagerAttachModal/FileManagerAttachModal.module.scss.js +7 -0
- package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts +5 -0
- package/file-manager/OperationLoaderModal/OperationLoaderModal.d.ts.map +1 -1
- package/file-manager/OperationLoaderModal/OperationLoaderModal.js +25 -20
- package/file-manager/OperationLoaderModal/OperationLoaderModal.module.scss.js +4 -0
- package/file-manager/file-manager-controller.d.ts +11 -3
- package/file-manager/file-manager-controller.d.ts.map +1 -1
- package/file-manager/index.d.ts +1 -0
- package/file-manager/index.d.ts.map +1 -1
- package/file-manager/labels.d.ts +23 -2
- package/file-manager/labels.d.ts.map +1 -1
- package/file-manager/shell-styles.d.ts +37 -0
- package/file-manager/shell-styles.d.ts.map +1 -0
- package/file-manager/upload-batch.d.ts +46 -0
- package/file-manager/upload-batch.d.ts.map +1 -1
- package/file-manager/upload-batch.js +6 -2
- package/file-manager/upload-queue.d.ts +44 -4
- package/file-manager/upload-queue.d.ts.map +1 -1
- package/file-manager/upload-queue.js +45 -13
- package/file-manager.js +4 -4
- package/hooks/useAvailableHeightCap.js +1 -1
- package/hooks/useControlErrorAssociation.d.ts +3 -0
- package/hooks/useControlErrorAssociation.d.ts.map +1 -0
- package/hooks/useControlErrorAssociation.js +12 -0
- package/hooks/useIsMobile.js +1 -1
- package/hooks/useIsPhone.d.ts +3 -0
- package/hooks/useIsPhone.d.ts.map +1 -0
- package/hooks/useIsPhone.js +13 -0
- package/hooks/useIsTablet.d.ts +3 -0
- package/hooks/useIsTablet.d.ts.map +1 -0
- package/hooks/useIsTablet.js +13 -0
- package/hooks/useIsTextClipped.d.ts +26 -0
- package/hooks/useIsTextClipped.d.ts.map +1 -0
- package/hooks/useIsTextClipped.js +25 -0
- package/hooks/useIsVerticallyClamped.d.ts +16 -0
- package/hooks/useIsVerticallyClamped.d.ts.map +1 -0
- package/hooks/useIsVerticallyClamped.js +20 -0
- package/hooks/useTextRefinement.d.ts +1 -1
- package/hooks/useTextRefinement.d.ts.map +1 -1
- package/hooks/useTextRefinement.js +4 -4
- package/hooks/useUnsavedChangesGuard.js +1 -5
- package/hooks/useUnsavedChangesLeaveConfirmation.d.ts +12 -0
- package/hooks/useUnsavedChangesLeaveConfirmation.d.ts.map +1 -0
- package/hooks/useUnsavedChangesLeaveConfirmation.js +22 -0
- package/hooks/useUnsavedChangesLeaveGuard.d.ts +24 -0
- package/hooks/useUnsavedChangesLeaveGuard.d.ts.map +1 -0
- package/hooks/useUnsavedChangesLeaveGuard.js +24 -0
- package/index.css +3 -2
- package/index.d.ts +17 -0
- package/index.d.ts.map +1 -1
- package/index.js +93 -76
- package/markdown.js +3 -2
- package/models/auth.d.ts +2 -0
- package/models/auth.d.ts.map +1 -1
- package/models/chat.d.ts +2 -0
- package/models/chat.d.ts.map +1 -1
- package/models/conversation-classification.d.ts +5 -0
- package/models/conversation-classification.d.ts.map +1 -1
- package/models/conversation-classification.js +3 -1
- package/models/inline-segment.d.ts +11 -0
- package/models/inline-segment.d.ts.map +1 -0
- package/models/text-refinement.d.ts +6 -2
- package/models/text-refinement.d.ts.map +1 -1
- package/package.json +10 -17
- package/utils/base64-json.d.ts +14 -0
- package/utils/base64-json.d.ts.map +1 -0
- package/utils/base64-json.js +4 -0
- package/utils/dom.d.ts +8 -0
- package/utils/dom.d.ts.map +1 -0
- package/utils/dom.js +10 -0
- package/utils/format-price.js +10 -10
- package/utils/inline-segments.d.ts +38 -0
- package/utils/inline-segments.d.ts.map +1 -0
- package/utils/inline-segments.js +53 -0
- package/utils/latex.d.ts +4 -3
- package/utils/latex.d.ts.map +1 -1
- package/utils/latex.js +47 -41
- package/utils/markdown-html.d.ts +14 -0
- package/utils/markdown-html.d.ts.map +1 -0
- package/utils/markdown-html.js +11 -0
- package/utils/message-attachment-to-display.js +1 -1
- package/utils/mime-type.js +1 -1
- package/utils/prompt-variables.js +5 -9
- package/utils/syntax-highlighting.js +8 -8
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
//#region src/file-manager/upload-batch.ts
|
|
2
2
|
var e = /* @__PURE__ */ function(e) {
|
|
3
3
|
return e.Queued = "queued", e.Uploading = "uploading", e.Completed = "completed", e.Failed = "failed", e.Cancelled = "cancelled", e;
|
|
4
|
-
}({}), t =
|
|
4
|
+
}({}), t = /* @__PURE__ */ function(e) {
|
|
5
|
+
return e.Conflict = "conflict", e.TooLarge = "tooLarge", e.Forbidden = "forbidden", e.Unavailable = "unavailable", e.Network = "network", e.Unknown = "unknown", e;
|
|
6
|
+
}({}), n = /* @__PURE__ */ function(e) {
|
|
7
|
+
return e.Downloading = "downloading", e.Completed = "completed", e.Failed = "failed", e.Cancelled = "cancelled", e;
|
|
8
|
+
}({}), r = (e) => e?.files.some((e) => e.status === "downloading") ?? !1, i = (e) => e?.files.some((e) => e.status === "queued" || e.status === "uploading") ?? !1;
|
|
5
9
|
//#endregion
|
|
6
|
-
export { e as FileUploadStatus,
|
|
10
|
+
export { n as FileDownloadStatus, t as FileUploadFailureReason, e as FileUploadStatus, r as isDownloadInProgress, i as isUploadInProgress };
|
|
@@ -1,5 +1,45 @@
|
|
|
1
|
-
import { TransferQueueItem } from '@epam/ai-dial-ui-kit';
|
|
2
|
-
import { FileUploadEntry } from './upload-batch';
|
|
3
|
-
/** Maps upload entries onto the UI kit's `TransferQueue` rows. */
|
|
4
|
-
export declare const toUploadQueueItems: (files: FileUploadEntry[]) => TransferQueueItem[];
|
|
1
|
+
import { TransferQueueItem, TransferQueueLabels } from '@epam/ai-dial-ui-kit';
|
|
2
|
+
import { FileDownloadBatchState, FileUploadBatchState, FileUploadEntry, FileUploadFailureReason } from './upload-batch';
|
|
3
|
+
/** Maps upload entries onto the UI kit's `TransferQueue` rows; a failed row's `message` is the host text for its reason, when there is one. */
|
|
4
|
+
export declare const toUploadQueueItems: (files: FileUploadEntry[], failureMessages?: Partial<Record<FileUploadFailureReason, string>>) => TransferQueueItem[];
|
|
5
|
+
/** Kind of a transfer-queue row, carried as its id prefix so cancel routes to the right batch. */
|
|
6
|
+
export declare enum TransferQueueRowKind {
|
|
7
|
+
Upload = "upload",
|
|
8
|
+
Download = "download"
|
|
9
|
+
}
|
|
10
|
+
/** Builds the id of a transfer-queue row from its kind and its batch entry id. */
|
|
11
|
+
export declare const toTransferQueueRowId: (kind: TransferQueueRowKind, entryId: string) => string;
|
|
12
|
+
/** Splits a transfer-queue row id back into its kind and batch entry id; `undefined` for an id of neither kind. */
|
|
13
|
+
export declare const parseTransferQueueRowId: (rowId: string) => {
|
|
14
|
+
kind: TransferQueueRowKind;
|
|
15
|
+
entryId: string;
|
|
16
|
+
} | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Maps the upload and download batches onto one UI kit `TransferQueue`:
|
|
19
|
+
* upload rows first, then download rows, each id prefixed by its kind.
|
|
20
|
+
*/
|
|
21
|
+
export declare const toTransferQueueItems: (uploadBatch: FileUploadBatchState | null, downloadBatch: FileDownloadBatchState | null, failureMessages?: Partial<Record<FileUploadFailureReason, string>>) => TransferQueueItem[];
|
|
22
|
+
/** Row wording for a download row, as `DialFileManagerShellLabels.downloadQueueLabels` carries it. */
|
|
23
|
+
type DownloadRowLabels = Partial<Pick<TransferQueueLabels, 'cancelItemAriaLabel' | 'itemProgressAriaLabel' | 'queueProgressAriaLabel'>>;
|
|
24
|
+
/** Inputs of {@link buildTransferQueueLabels}. */
|
|
25
|
+
interface TransferQueueLabelSources {
|
|
26
|
+
/** The upload queue's labels, used for every upload row and as the base. */
|
|
27
|
+
uploadLabels?: Partial<TransferQueueLabels>;
|
|
28
|
+
/** Download-row wording; without it the queue keeps the upload labels. */
|
|
29
|
+
downloadLabels?: DownloadRowLabels;
|
|
30
|
+
/** Name of the aggregate bar while both kinds run. */
|
|
31
|
+
mixedProgressLabel?: string;
|
|
32
|
+
/** File names of the upload rows. */
|
|
33
|
+
uploadNames: ReadonlySet<string>;
|
|
34
|
+
/** File names of the download rows. */
|
|
35
|
+
downloadNames: ReadonlySet<string>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The queue's labels with each row's cancel and progress names worded for its
|
|
39
|
+
* own kind (uploading / downloading), since the kit labels a whole queue
|
|
40
|
+
* rather than a row. A name present in both kinds keeps the upload wording.
|
|
41
|
+
* The aggregate bar is named for downloads, uploads, or both.
|
|
42
|
+
*/
|
|
43
|
+
export declare const buildTransferQueueLabels: ({ uploadLabels, downloadLabels, mixedProgressLabel, uploadNames, downloadNames, }: TransferQueueLabelSources) => Partial<TransferQueueLabels> | undefined;
|
|
44
|
+
export {};
|
|
5
45
|
//# sourceMappingURL=upload-queue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-queue.d.ts","sourceRoot":"","sources":["../../src/file-manager/upload-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"upload-queue.d.ts","sourceRoot":"","sources":["../../src/file-manager/upload-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,KAAK,sBAAsB,EAG3B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAexB,+IAA+I;AAC/I,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EAAE,EACxB,kBAAkB,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,KACjE,iBAAiB,EAWf,CAAC;AAYN,kGAAkG;AAClG,oBAAY,oBAAoB;IAC9B,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,GAC/B,MAAM,oBAAoB,EAC1B,SAAS,MAAM,KACd,MAA8B,CAAC;AAElC,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,GAClC,OAAO,MAAM,KACZ;IAAE,IAAI,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,SAUpD,CAAC;AAgBF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,aAAa,oBAAoB,GAAG,IAAI,EACxC,eAAe,sBAAsB,GAAG,IAAI,EAC5C,kBAAkB,OAAO,CAAC,MAAM,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,KACjE,iBAAiB,EAUnB,CAAC;AAEF,sGAAsG;AACtG,KAAK,iBAAiB,GAAG,OAAO,CAC9B,IAAI,CACF,mBAAmB,EACnB,qBAAqB,GAAG,uBAAuB,GAAG,wBAAwB,CAC3E,CACF,CAAC;AAEF,kDAAkD;AAClD,UAAU,yBAAyB;IACjC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5C,0EAA0E;IAC1E,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,sDAAsD;IACtD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qCAAqC;IACrC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,uCAAuC;IACvC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACpC;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,mFAMtC,yBAAyB,KAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,SAoC7D,CAAC"}
|
|
@@ -1,17 +1,49 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TransferQueueItemStatus as
|
|
1
|
+
import { FileDownloadStatus as e, FileUploadStatus as t } from "./upload-batch.js";
|
|
2
|
+
import { TransferQueueItemStatus as n } from "@epam/ai-dial-ui-kit";
|
|
3
3
|
//#region src/file-manager/upload-queue.ts
|
|
4
|
-
var
|
|
5
|
-
[
|
|
6
|
-
[
|
|
7
|
-
[
|
|
8
|
-
[
|
|
9
|
-
[
|
|
10
|
-
},
|
|
4
|
+
var r = {
|
|
5
|
+
[t.Queued]: n.InProgress,
|
|
6
|
+
[t.Uploading]: n.InProgress,
|
|
7
|
+
[t.Completed]: n.Success,
|
|
8
|
+
[t.Failed]: n.Failed,
|
|
9
|
+
[t.Cancelled]: n.Canceled
|
|
10
|
+
}, i = (e, n) => e.map((e) => ({
|
|
11
11
|
id: e.id,
|
|
12
12
|
name: e.name,
|
|
13
|
-
status:
|
|
14
|
-
percent: e.percent
|
|
15
|
-
|
|
13
|
+
status: r[e.status],
|
|
14
|
+
percent: e.percent,
|
|
15
|
+
message: e.status === t.Failed && e.failureReason != null ? n?.[e.failureReason] : void 0
|
|
16
|
+
})), a = {
|
|
17
|
+
[e.Downloading]: n.InProgress,
|
|
18
|
+
[e.Completed]: n.Success,
|
|
19
|
+
[e.Failed]: n.Failed,
|
|
20
|
+
[e.Cancelled]: n.Canceled
|
|
21
|
+
}, o = /* @__PURE__ */ function(e) {
|
|
22
|
+
return e.Upload = "upload", e.Download = "download", e;
|
|
23
|
+
}({}), s = (e, t) => `${e}:${t}`, c = (e) => {
|
|
24
|
+
let t = e.indexOf(":"), n = e.slice(0, t);
|
|
25
|
+
if (n === "upload" || n === "download") return {
|
|
26
|
+
kind: n,
|
|
27
|
+
entryId: e.slice(t + 1)
|
|
28
|
+
};
|
|
29
|
+
}, l = (t, n) => ({
|
|
30
|
+
id: s("download", t.id),
|
|
31
|
+
name: t.name,
|
|
32
|
+
status: a[t.status],
|
|
33
|
+
percent: t.percent,
|
|
34
|
+
message: t.status === e.Failed && t.failureReason != null ? n?.[t.failureReason] : void 0
|
|
35
|
+
}), u = (e, t, n) => [...i(e?.files ?? [], n).map((e) => ({
|
|
36
|
+
...e,
|
|
37
|
+
id: s("upload", e.id)
|
|
38
|
+
})), ...(t?.files ?? []).map((e) => l(e, n))], d = ({ uploadLabels: e, downloadLabels: t, mixedProgressLabel: n, uploadNames: r, downloadNames: i }) => {
|
|
39
|
+
if (!t || i.size === 0) return e;
|
|
40
|
+
let a = (e) => i.has(e) && !r.has(e), o = (e, t) => e && t ? (n) => a(n) ? t(n) : e(n) : e ?? t, s = r.size === 0 ? t.queueProgressAriaLabel ?? e?.queueProgressAriaLabel : n ?? e?.queueProgressAriaLabel, c = o(e?.cancelItemAriaLabel, t.cancelItemAriaLabel), l = o(e?.itemProgressAriaLabel, t.itemProgressAriaLabel);
|
|
41
|
+
return {
|
|
42
|
+
...e,
|
|
43
|
+
...c ? { cancelItemAriaLabel: c } : {},
|
|
44
|
+
...l ? { itemProgressAriaLabel: l } : {},
|
|
45
|
+
...s ? { queueProgressAriaLabel: s } : {}
|
|
46
|
+
};
|
|
47
|
+
};
|
|
16
48
|
//#endregion
|
|
17
|
-
export {
|
|
49
|
+
export { o as TransferQueueRowKind, d as buildTransferQueueLabels, c as parseTransferQueueRowId, u as toTransferQueueItems, s as toTransferQueueRowId, i as toUploadQueueItems };
|
package/file-manager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { DialFileManagerShell as
|
|
3
|
-
import { FileManagerAttachModal as
|
|
4
|
-
export {
|
|
1
|
+
import { TransferQueueRowKind as e, buildTransferQueueLabels as t, parseTransferQueueRowId as n, toTransferQueueItems as r, toTransferQueueRowId as i, toUploadQueueItems as a } from "./file-manager/upload-queue.js";
|
|
2
|
+
import { DialFileManagerShell as o } from "./file-manager/DialFileManagerShell/DialFileManagerShell.js";
|
|
3
|
+
import { FileManagerAttachModal as s } from "./file-manager/FileManagerAttachModal/FileManagerAttachModal.js";
|
|
4
|
+
export { o as DialFileManagerShell, s as FileManagerAttachModal, e as TransferQueueRowKind, t as buildTransferQueueLabels, n as parseTransferQueueRowId, r as toTransferQueueItems, i as toTransferQueueRowId, a as toUploadQueueItems };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { RESIZABLE_FIELD_MAX_HEIGHT_CSS_VARIABLE as e } from "../constants/resizable-fields.js";
|
|
2
2
|
import { useCallback as t, useLayoutEffect as n, useRef as r } from "react";
|
|
3
3
|
//#region src/hooks/useAvailableHeightCap.ts
|
|
4
|
-
var i = 16, a = 200, o = new Set([
|
|
4
|
+
var i = 16, a = 200, o = /* @__PURE__ */ new Set([
|
|
5
5
|
"auto",
|
|
6
6
|
"scroll",
|
|
7
7
|
"overlay"
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/** Adds `errorId` to the `aria-describedby` of the element `getControl` returns and sets `aria-invalid` while `hasError` is true. */
|
|
2
|
+
export declare const useControlErrorAssociation: (getControl: () => Element | null, errorId: string, hasError: boolean) => void;
|
|
3
|
+
//# sourceMappingURL=useControlErrorAssociation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControlErrorAssociation.d.ts","sourceRoot":"","sources":["../../src/hooks/useControlErrorAssociation.ts"],"names":[],"mappings":"AASA,qIAAqI;AACrI,eAAO,MAAM,0BAA0B,GACrC,YAAY,MAAM,OAAO,GAAG,IAAI,EAChC,SAAS,MAAM,EACf,UAAU,OAAO,KAChB,IAqBF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useLayoutEffect as e } from "react";
|
|
2
|
+
//#region src/hooks/useControlErrorAssociation.ts
|
|
3
|
+
var t = (t, n, r) => {
|
|
4
|
+
e(() => {
|
|
5
|
+
let e = t();
|
|
6
|
+
if (!e) return;
|
|
7
|
+
let i = (e.getAttribute("aria-describedby") ?? "").split(/\s+/).filter((e) => e !== "" && e !== n);
|
|
8
|
+
r ? (i.push(n), e.setAttribute("aria-invalid", "true")) : e.removeAttribute("aria-invalid"), i.length > 0 ? e.setAttribute("aria-describedby", i.join(" ")) : e.removeAttribute("aria-describedby");
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
export { t as useControlErrorAssociation };
|
package/hooks/useIsMobile.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MOBILE_MEDIA_QUERY as e } from "../constants/breakpoint.js";
|
|
2
2
|
import { useEffect as t, useState as n } from "react";
|
|
3
3
|
//#region src/hooks/useIsMobile.ts
|
|
4
|
-
var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia(
|
|
4
|
+
var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(max-width: 1279px)").matches, i = () => {
|
|
5
5
|
let [i, a] = n(r);
|
|
6
6
|
return t(() => {
|
|
7
7
|
if (typeof window > "u" || typeof window.matchMedia != "function") return;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsPhone.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsPhone.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,eAAO,MAAM,UAAU,QAAO,OAiB7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PHONE_MEDIA_QUERY as e } from "../constants/breakpoint.js";
|
|
2
|
+
import { useEffect as t, useState as n } from "react";
|
|
3
|
+
//#region src/hooks/useIsPhone.ts
|
|
4
|
+
var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(width < 768px)").matches, i = () => {
|
|
5
|
+
let [i, a] = n(r);
|
|
6
|
+
return t(() => {
|
|
7
|
+
if (typeof window > "u" || typeof window.matchMedia != "function") return;
|
|
8
|
+
let t = window.matchMedia(e), n = () => a(t.matches);
|
|
9
|
+
return n(), t.addEventListener("change", n), () => t.removeEventListener("change", n);
|
|
10
|
+
}, []), i;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { i as useIsPhone };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsTablet.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsTablet.ts"],"names":[],"mappings":"AAQA,qFAAqF;AACrF,eAAO,MAAM,WAAW,QAAO,OAiB9B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TABLET_MEDIA_QUERY as e } from "../constants/breakpoint.js";
|
|
2
|
+
import { useEffect as t, useState as n } from "react";
|
|
3
|
+
//#region src/hooks/useIsTablet.ts
|
|
4
|
+
var r = () => typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(768px <= width < 1280px)").matches, i = () => {
|
|
5
|
+
let [i, a] = n(r);
|
|
6
|
+
return t(() => {
|
|
7
|
+
if (typeof window > "u" || typeof window.matchMedia != "function") return;
|
|
8
|
+
let t = window.matchMedia(e), n = () => a(t.matches);
|
|
9
|
+
return n(), t.addEventListener("change", n), () => t.removeEventListener("change", n);
|
|
10
|
+
}, []), i;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { i as useIsTablet };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/** Return value of `useIsTextClipped`. */
|
|
3
|
+
export interface UseIsTextClippedResult<TElement extends HTMLElement> {
|
|
4
|
+
/** Ref attached to the element whose text may be clipped. */
|
|
5
|
+
ref: RefObject<TElement | null>;
|
|
6
|
+
/** Whether the element's text overflows its box horizontally. */
|
|
7
|
+
isClipped: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Reports whether an element's text overflows horizontally, so a caller can
|
|
11
|
+
* offer a way to reveal the hidden part only when something is actually
|
|
12
|
+
* hidden.
|
|
13
|
+
*
|
|
14
|
+
* `isMeasuring` exists because the answer is only meaningful while the element
|
|
15
|
+
* is in its clipped state: once the caller lets the text wrap, nothing
|
|
16
|
+
* overflows any more, and re-measuring there would retract the very control
|
|
17
|
+
* the reader just used. The last measurement taken while clipped is kept
|
|
18
|
+
* instead.
|
|
19
|
+
*
|
|
20
|
+
* @param isMeasuring - Whether the element is currently in its clipped state.
|
|
21
|
+
* @param contentKey - Text whose change should force a re-measure. A
|
|
22
|
+
* ResizeObserver does not fire for it: clipped text keeps the same box when
|
|
23
|
+
* its content grows.
|
|
24
|
+
*/
|
|
25
|
+
export declare const useIsTextClipped: <TElement extends HTMLElement>(isMeasuring: boolean, contentKey: string) => UseIsTextClippedResult<TElement>;
|
|
26
|
+
//# sourceMappingURL=useIsTextClipped.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsTextClipped.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsTextClipped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAOvC,0CAA0C;AAC1C,MAAM,WAAW,sBAAsB,CAAC,QAAQ,SAAS,WAAW;IAClE,6DAA6D;IAC7D,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChC,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,WAAW,EAC3D,aAAa,OAAO,EACpB,YAAY,MAAM,KACjB,sBAAsB,CAAC,QAAQ,CA8BjC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useCallback as e, useLayoutEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/hooks/useIsTextClipped.ts
|
|
3
|
+
var i = 1, a = (a, o) => {
|
|
4
|
+
let s = n(null), [c, l] = r(!1), u = e(() => {
|
|
5
|
+
let e = s.current;
|
|
6
|
+
e && l(e.scrollWidth - e.clientWidth > i);
|
|
7
|
+
}, []);
|
|
8
|
+
return t(() => {
|
|
9
|
+
if (!a) return;
|
|
10
|
+
u();
|
|
11
|
+
let e = s.current;
|
|
12
|
+
if (!e || typeof ResizeObserver > "u") return;
|
|
13
|
+
let t = new ResizeObserver(u);
|
|
14
|
+
return t.observe(e), () => t.disconnect();
|
|
15
|
+
}, [
|
|
16
|
+
a,
|
|
17
|
+
o,
|
|
18
|
+
u
|
|
19
|
+
]), {
|
|
20
|
+
ref: s,
|
|
21
|
+
isClipped: c
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { a as useIsTextClipped };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/** Return value of `useIsVerticallyClamped`. */
|
|
3
|
+
export interface UseIsVerticallyClampedResult<TElement extends HTMLElement> {
|
|
4
|
+
/** Ref attached to the clamped element whose overflow is measured. */
|
|
5
|
+
ref: RefObject<TElement | null>;
|
|
6
|
+
/** Whether the element, or one of its direct children, is taller inside than its visible box. */
|
|
7
|
+
isClamped: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Tracks whether a `line-clamp-*` (or any `overflow: hidden`) element hides
|
|
11
|
+
* part of its content, so a caller can reveal the rest — e.g. in a tooltip —
|
|
12
|
+
* only when something is actually cut off. Re-measures on every resize of the
|
|
13
|
+
* element and whenever `content` changes.
|
|
14
|
+
*/
|
|
15
|
+
export declare const useIsVerticallyClamped: <TElement extends HTMLElement>(content: unknown) => UseIsVerticallyClampedResult<TElement>;
|
|
16
|
+
//# sourceMappingURL=useIsVerticallyClamped.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsVerticallyClamped.d.ts","sourceRoot":"","sources":["../../src/hooks/useIsVerticallyClamped.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,gDAAgD;AAChD,MAAM,WAAW,4BAA4B,CAAC,QAAQ,SAAS,WAAW;IACxE,sEAAsE;IACtE,GAAG,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAChC,iGAAiG;IACjG,SAAS,EAAE,OAAO,CAAC;CACpB;AAKD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,SAAS,WAAW,EACjE,SAAS,OAAO,KACf,4BAA4B,CAAC,QAAQ,CAiCvC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useCallback as e, useLayoutEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/hooks/useIsVerticallyClamped.ts
|
|
3
|
+
var i = 1, a = (e) => e.scrollHeight - e.clientHeight > i, o = (i) => {
|
|
4
|
+
let o = n(null), [s, c] = r(!1), l = e(() => {
|
|
5
|
+
let e = o.current;
|
|
6
|
+
e && c(a(e) || Array.from(e.children).some(a));
|
|
7
|
+
}, []);
|
|
8
|
+
return t(() => {
|
|
9
|
+
l();
|
|
10
|
+
let e = o.current;
|
|
11
|
+
if (!e || typeof ResizeObserver > "u") return;
|
|
12
|
+
let t = new ResizeObserver(l);
|
|
13
|
+
return t.observe(e), () => t.disconnect();
|
|
14
|
+
}, [l, i]), {
|
|
15
|
+
ref: o,
|
|
16
|
+
isClamped: s
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { o as useIsVerticallyClamped };
|
|
@@ -32,7 +32,7 @@ export interface TextRefinementResult {
|
|
|
32
32
|
canRefine: boolean;
|
|
33
33
|
/** Whether an original baseline can be restored. */
|
|
34
34
|
canUndo: boolean;
|
|
35
|
-
/** Refines the latest committed value; duplicate activation is ignored. */
|
|
35
|
+
/** Refines the latest committed value, or the Undo baseline when one exists; duplicate activation is ignored. */
|
|
36
36
|
refine: () => Promise<void>;
|
|
37
37
|
/** Restores the baseline from before the first successful refinement. */
|
|
38
38
|
undo: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTextRefinement.d.ts","sourceRoot":"","sources":["../../src/hooks/useTextRefinement.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,6CAA6C;AAC7C,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"useTextRefinement.d.ts","sourceRoot":"","sources":["../../src/hooks/useTextRefinement.ts"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,6CAA6C;AAC7C,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,qEAAqE;AACrE,MAAM,WAAW,wBAAwB;IACvC,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,mEAAmE;IACnE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,gDAAgD;AAChD,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,EAAE,mBAAmB,CAAC;IAC3B,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,iHAAiH;IACjH,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,yEAAyE;IACzE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,GAC5B,SAAS,wBAAwB,KAChC,oBAiJF,CAAC"}
|
|
@@ -29,11 +29,11 @@ var i = /* @__PURE__ */ function(e) {
|
|
|
29
29
|
if (!u.current || !e.onRefine || e.disabled || !e.value.trim() || t.controller || t.expected !== void 0) return;
|
|
30
30
|
let n = new AbortController();
|
|
31
31
|
t.controller = n;
|
|
32
|
-
let r = ++t.generation, i = e.value, a = () => u.current && r === t.generation && !n.signal.aborted && l.current.value === i;
|
|
32
|
+
let r = ++t.generation, i = e.value, a = t.baseline ?? i, s = () => u.current && r === t.generation && !n.signal.aborted && l.current.value === i;
|
|
33
33
|
o("pending");
|
|
34
34
|
try {
|
|
35
|
-
let r = await e.onRefine(
|
|
36
|
-
if (!
|
|
35
|
+
let r = await e.onRefine(a, n.signal);
|
|
36
|
+
if (!s()) return;
|
|
37
37
|
if (typeof r != "string" || !r.trim()) throw Error("Empty refinement");
|
|
38
38
|
if (r === i) {
|
|
39
39
|
o("unchanged");
|
|
@@ -41,7 +41,7 @@ var i = /* @__PURE__ */ function(e) {
|
|
|
41
41
|
}
|
|
42
42
|
t.baseline ??= i, t.expected = r, c(!0), o("success"), l.current.onChange(r);
|
|
43
43
|
} catch (e) {
|
|
44
|
-
if (!
|
|
44
|
+
if (!s()) return;
|
|
45
45
|
typeof e == "object" && e && "name" in e && e.name === "AbortError" ? o("idle") : o("error");
|
|
46
46
|
} finally {
|
|
47
47
|
r === t.generation && (t.controller = void 0);
|
|
@@ -10,11 +10,7 @@ var i = (i) => {
|
|
|
10
10
|
return window.addEventListener("beforeunload", e), () => window.removeEventListener("beforeunload", e);
|
|
11
11
|
}, [i]), {
|
|
12
12
|
guard: e((e) => {
|
|
13
|
-
|
|
14
|
-
e();
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
s.current = e, o(!0);
|
|
13
|
+
i ? (s.current = e, o(!0)) : e();
|
|
18
14
|
}, [i]),
|
|
19
15
|
isConfirmOpen: a,
|
|
20
16
|
confirm: e(() => {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Options of {@link useUnsavedChangesLeaveConfirmation}. */
|
|
2
|
+
export interface UnsavedChangesLeaveConfirmationOptions {
|
|
3
|
+
/** Whether a transition is currently held by the host's blocker. */
|
|
4
|
+
isBlocked: boolean;
|
|
5
|
+
/** Lets the held transition continue; runs on Discard changes. */
|
|
6
|
+
onDiscard: () => void;
|
|
7
|
+
/** Drops the held transition; runs on Keep editing or any dismissal. */
|
|
8
|
+
onKeep: () => void;
|
|
9
|
+
}
|
|
10
|
+
/** Opens the `UnsavedChangesProvider` dialog while a transition is blocked, and closes it unanswered once the transition is gone or the caller unmounts. */
|
|
11
|
+
export declare const useUnsavedChangesLeaveConfirmation: ({ isBlocked, onDiscard, onKeep, }: UnsavedChangesLeaveConfirmationOptions) => void;
|
|
12
|
+
//# sourceMappingURL=useUnsavedChangesLeaveConfirmation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUnsavedChangesLeaveConfirmation.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnsavedChangesLeaveConfirmation.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,MAAM,WAAW,sCAAsC;IACrD,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,kEAAkE;IAClE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,wEAAwE;IACxE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,4JAA4J;AAC5J,eAAO,MAAM,kCAAkC,GAAI,mCAIhD,sCAAsC,KAAG,IAyB3C,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useUnsavedChangesInternal as e } from "../components/UnsavedChangesProvider/unsaved-changes-context.js";
|
|
2
|
+
import { useEffect as t, useLayoutEffect as n, useRef as r } from "react";
|
|
3
|
+
//#region src/hooks/useUnsavedChangesLeaveConfirmation.ts
|
|
4
|
+
var i = ({ isBlocked: i, onDiscard: a, onKeep: o }) => {
|
|
5
|
+
let { open: s } = e(), c = r({
|
|
6
|
+
onDiscard: a,
|
|
7
|
+
onKeep: o
|
|
8
|
+
});
|
|
9
|
+
n(() => {
|
|
10
|
+
c.current = {
|
|
11
|
+
onDiscard: a,
|
|
12
|
+
onKeep: o
|
|
13
|
+
};
|
|
14
|
+
}, [a, o]), t(() => {
|
|
15
|
+
if (i) return s({
|
|
16
|
+
onDiscard: () => c.current.onDiscard(),
|
|
17
|
+
onKeep: () => c.current.onKeep()
|
|
18
|
+
});
|
|
19
|
+
}, [i, s]);
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { i as useUnsavedChangesLeaveConfirmation };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** Options of {@link useUnsavedChangesLeaveGuard}. */
|
|
2
|
+
export interface UnsavedChangesLeaveGuardOptions {
|
|
3
|
+
/** Whether the form currently holds edits that leaving would discard. */
|
|
4
|
+
isDirty: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Result of {@link useUnsavedChangesLeaveGuard}. */
|
|
7
|
+
export interface UnsavedChangesLeaveGuardResult {
|
|
8
|
+
/**
|
|
9
|
+
* Returns whether a transition must be blocked: `isLeaving` (the host's own
|
|
10
|
+
* "this transition leaves the form" decision) while the form is dirty,
|
|
11
|
+
* unless `allowNextNavigation` armed a bypass, which this call consumes.
|
|
12
|
+
* Stable across renders and reads the latest `isDirty`.
|
|
13
|
+
*/
|
|
14
|
+
shouldBlockLeave: (isLeaving: boolean) => boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Lets exactly one following transition through unblocked. Call it right
|
|
17
|
+
* before the form's own post-save exit, while `isDirty` may still be `true`
|
|
18
|
+
* because the clean state has not re-rendered yet.
|
|
19
|
+
*/
|
|
20
|
+
allowNextNavigation: () => void;
|
|
21
|
+
}
|
|
22
|
+
/** Registers the form's dirty state with `UnsavedChangesProvider`, warns before the page unloads while dirty, and returns a router-agnostic block predicate with a one-shot bypass. */
|
|
23
|
+
export declare const useUnsavedChangesLeaveGuard: ({ isDirty, }: UnsavedChangesLeaveGuardOptions) => UnsavedChangesLeaveGuardResult;
|
|
24
|
+
//# sourceMappingURL=useUnsavedChangesLeaveGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUnsavedChangesLeaveGuard.d.ts","sourceRoot":"","sources":["../../src/hooks/useUnsavedChangesLeaveGuard.ts"],"names":[],"mappings":"AAGA,sDAAsD;AACtD,MAAM,WAAW,+BAA+B;IAC9C,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qDAAqD;AACrD,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,gBAAgB,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC;IAClD;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC;AAED,uLAAuL;AACvL,eAAO,MAAM,2BAA2B,GAAI,cAEzC,+BAA+B,KAAG,8BAuCpC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { useUnsavedChangesInternal as e } from "../components/UnsavedChangesProvider/unsaved-changes-context.js";
|
|
2
|
+
import { useCallback as t, useEffect as n, useLayoutEffect as r, useRef as i } from "react";
|
|
3
|
+
//#region src/hooks/useUnsavedChangesLeaveGuard.ts
|
|
4
|
+
var a = ({ isDirty: a }) => {
|
|
5
|
+
let { register: o, unloadAllowedRef: s } = e(), c = i(a), l = i(!1);
|
|
6
|
+
r(() => {
|
|
7
|
+
c.current = a;
|
|
8
|
+
}, [a]), n(() => o(a), [o, a]);
|
|
9
|
+
let u = t((e) => l.current ? (l.current = !1, !1) : c.current && e, []);
|
|
10
|
+
return n(() => {
|
|
11
|
+
if (!a) return;
|
|
12
|
+
let e = (e) => {
|
|
13
|
+
s.current || e.preventDefault();
|
|
14
|
+
};
|
|
15
|
+
return window.addEventListener("beforeunload", e), () => window.removeEventListener("beforeunload", e);
|
|
16
|
+
}, [a, s]), {
|
|
17
|
+
shouldBlockLeave: u,
|
|
18
|
+
allowNextNavigation: t(() => {
|
|
19
|
+
l.current = !0;
|
|
20
|
+
}, [])
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { a as useUnsavedChangesLeaveGuard };
|
package/index.css
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
.
|
|
2
|
-
/*$vite$:1
|
|
1
|
+
._text_89yo1_1{color:var(--olm-text,var(--text-secondary,#57647a))}._surface_t5bi8_1{background:var(--dfms-surface,var(--bg-layer-base,#f5f7fa))}._tree_t5bi8_5{border-color:var(--dfms-tree-border,var(--stroke-tertiary,#e0e6f0));background:var(--dfms-tree-bg,var(--bg-layer-raised,#fcfcfc));box-shadow:4px 0 8px 0 var(--dfms-tree-shadow,#2764d91a);clip-path:inset(0 -12px 0 0)}[dir=rtl] ._tree_t5bi8_5{box-shadow:-4px 0 8px 0 var(--dfms-tree-shadow,#2764d91a);clip-path:inset(0 0 0 -12px)}._overlay_t5bi8_20{background:var(--dfms-overlay-backdrop,var(--bg-backdrop,#161b2d4d))}._popup_1d7g5_2{box-shadow:0 8px 32px 0 var(--fmam-shadow,#00000029);background:var(--fmam-bg,var(--bg-layer-raised,#fcfcfc))!important}._title_1d7g5_8{color:var(--fmam-title,var(--text-primary,#161b2d))}._agentIconBadge_147d2_1{background:var(--di-icon-bg,var(--bg-entity-icon,var(--bg-layer-sunken,#eef1f7)))}._label_1qwvo_1{color:var(--pes-label-color,var(--text-primary,#161b2d))}._description_1qwvo_5{color:var(--pes-description-color,var(--text-secondary,#57647a))}._icon_18yqy_1{color:var(--nva-icon,var(--text-accent,#1d4ed8))}._title_11w3i_1{color:var(--ih-title-color,var(--text-primary,#161b2d))}._count_11w3i_5{color:var(--ih-count-color,var(--text-secondary,#57647a))}._row_1csuq_1{border-color:var(--rs-border,var(--stroke-tertiary,#e0e6f0));background:var(--rs-bg,var(--bg-layer-sunken,#eef1f7))}._versionTag_1csuq_7{border-color:var(--rs-version-tag-border,var(--stroke-tertiary,#e0e6f0))!important;background:var(--rs-version-tag-bg,var(--bg-control-accent-alpha,#2764d90f))!important;color:var(--rs-version-tag-text,var(--text-accent,#1d4ed8))!important}._info_pkxew_1{--rs-bg:var(--bg-info,#e1eaf9)}._danger_pkxew_5{--rs-bg:var(--bg-control-error-alpha-active,#f7646433);--rs-border:var(--stroke-error-alpha,#ae2f2f73)}._typeLabel_17nhs_1{color:var(--cir-type-label-text,var(--text-secondary,#57647a))}._message_1iqfi_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._consequences_1iqfi_5{color:var(--cfm-consequence-text,var(--text-secondary,#57647a))}._footer_1iqfi_9{border-block-start:1px solid var(--cfm-footer-border,var(--stroke-tertiary,#e0e6f0))}._names_g31v4_1{color:var(--cfm-message-text,var(--text-primary,#161b2d))}._more_g31v4_5{color:var(--cfm-consequence-text,var(--text-secondary,#57647a))}._tableHeader_1qvg8_1{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._container_sqe5k_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._containerLight_sqe5k_6{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc))}._header_sqe5k_10{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-code-block-border,var(--stroke-secondary,#d1dbea))}._languageLabel_sqe5k_15{color:var(--cm-code-block-language,var(--text-secondary,#57647a))}._copiedIcon_sqe5k_19{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_sqe5k_23 .token.table,._scrollContainer_sqe5k_23 .token.table-header-row,._scrollContainer_sqe5k_23 .token.table-line,._scrollContainer_sqe5k_23 .token.table-data-rows{display:inline}._scrollContainer_sqe5k_23{scrollbar-width:thin;scrollbar-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_sqe5k_23::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_sqe5k_23::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_sqe5k_23::-webkit-scrollbar-thumb{background-color:var(--cm-code-block-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableContainer_82t2b_1{background:var(--cm-code-block-bg,var(--bg-layer-raised,#fcfcfc));border-color:var(--cm-markdown-border,var(--cm-code-block-border,var(--stroke-secondary,#d1dbea)))}._tableContainerLight_82t2b_6{background:var(--cm-code-block-bg,var(--bg-layer-base,#f5f7fa))}._actions_82t2b_10{border-color:var(--cm-table-actions-border,var(--stroke-tertiary,#e0e6f0));background:var(--cm-table-actions-bg,var(--bg-layer-raised,#fcfcfc))}._copiedIcon_82t2b_15{color:var(--cm-code-block-copied,var(--text-success,#007274))}._scrollContainer_82t2b_19{scrollbar-width:thin;scrollbar-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_82t2b_19::-webkit-scrollbar{width:4px;height:4px}._scrollContainer_82t2b_19::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_82t2b_19::-webkit-scrollbar-thumb{background-color:var(--cm-table-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._tableHeaderCell_82t2b_35{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc));height:3rem;color:var(--cm-table-header-text,var(--text-secondary,#57647a))}._sectionRow_82t2b_42 td{background:var(--cm-code-block-header-bg,var(--bg-layer-raised,#fcfcfc))}._rowDivider_82t2b_46{border-block-end:.5px solid var(--cm-table-row-divider,var(--stroke-tertiary,#e0e6f0))}tbody ._row_82t2b_46:hover td{background:var(--cm-table-row-hover-bg,var(--bg-control-accent-alpha-hover,#2764d924))}._tableScrollFadeEnd_82t2b_56{-webkit-mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}[dir=rtl] ._tableScrollFadeEnd_82t2b_56{-webkit-mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to left, var(--cm-table-fade,var(--stroke-black,#161b2d)) 0, var(--cm-table-fade,var(--stroke-black,#161b2d)) calc(100% - 1rem), transparent 100%)}._tableScrollFadeStart_82t2b_64{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}[dir=rtl] ._tableScrollFadeStart_82t2b_64{-webkit-mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%);mask-image:linear-gradient(to left, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 100%)}._tableScrollFadeBoth_82t2b_72{-webkit-mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%);mask-image:linear-gradient(to right, transparent 0, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) 1rem, var(--cm-table-fade,var(--stroke-focus-black,#161b2d)) calc(100% - 1rem), transparent 100%)}@keyframes _cm-shimmer_1ql91_1{0%{background-position:200%}to{background-position:-200%}}._thinking_1ql91_9{background:linear-gradient(270deg, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 0%, var(--cm-thinking-secondary,var(--text-secondary,#57647a)) 40%, var(--cm-thinking-inverted,var(--text-primary,#161b2d)) 80%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2s linear infinite _cm-shimmer_1ql91_1}._h6_1ql91_18{color:var(--cm-h6-text,var(--text-secondary,#57647a))}._codeInline_1ql91_22{background:var(--cm-code-inline-bg,var(--bg-layer-raised,#fcfcfc));color:var(--cm-code-inline-text,var(--text-primary,#161b2d))}._secondaryBorder_1ql91_27{border-color:var(--cm-markdown-border,var(--stroke-secondary,#d1dbea))}._blockquote_1ql91_31{border-color:var(--cm-blockquote-border,var(--stroke-primary,#57647a));color:var(--cm-blockquote-text,var(--text-secondary,#57647a))}._link_1ql91_36{color:var(--cm-link-text,var(--text-accent,#1d4ed8))}._link_1ql91_36:focus-visible{outline-color:var(--cm-link-focus,var(--stroke-focus,#161b2d))}._scrollContainer_n2oom_1{scrollbar-width:thin;scrollbar-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a)) transparent}._scrollContainer_n2oom_1::-webkit-scrollbar{height:4px}._scrollContainer_n2oom_1::-webkit-scrollbar-track{background-color:#0000}._scrollContainer_n2oom_1::-webkit-scrollbar-thumb{background-color:var(--cm-math-scrollbar,var(--stroke-primary,#57647a));border-radius:4px}._scrollContainer_n2oom_1:focus-visible{outline:1px solid var(--cm-math-focus,var(--stroke-focus,#161b2d));outline-offset:2px}._mathContent_n2oom_24{width:max-content;min-width:100%;display:block}
|
|
2
|
+
/*$vite$:1*//*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
3
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-space-y-reverse:0;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-e-0{inset-inline-end:0}.inset-e-2{inset-inline-end:.5rem}.inset-e-4{inset-inline-end:1rem}.top-0{top:0}.top-2{top:.5rem}.top-\[-6px\]{top:-6px}.bottom-4{bottom:1rem}.bottom-\[calc\(1\.5rem\+env\(safe-area-inset-bottom\)\)\]{bottom:calc(1.5rem + env(safe-area-inset-bottom))}.z-1{z-index:1}.z-2{z-index:2}.z-10{z-index:10}.z-51{z-index:51}.z-52{z-index:52}.z-70{z-index:70}.mx-0\.5{margin-inline:.125rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.ms-auto{margin-inline-start:auto}.me-1\.5{margin-inline-end:.375rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-full{width:100%;height:100%}.h-0{height:0}.h-\[24px\]{height:24px}.h-\[min\(900px\,100dvh\)\]\!{height:min(900px,100dvh)!important}.h-fit\!{height:fit-content!important}.h-full{height:100%}.max-h-\[30vh\]{max-height:30vh}.max-h-\[50vh\]{max-height:50vh}.max-h-\[60vh\]{max-height:60vh}.max-h-\[344px\]{max-height:344px}.max-h-\[calc\(100dvh-3rem\)\]{max-height:calc(100dvh - 3rem)}.max-h-full\!{max-height:100%!important}.min-h-0{min-height:0}.min-h-10{min-height:2.5rem}.w-\[360px\]{width:360px}.w-\[400px\]\!{width:400px!important}.w-full{width:100%}.w-max{width:max-content}.max-w-96{max-width:24rem}.max-w-\[30\%\]{max-width:30%}.max-w-\[45\%\]{max-width:45%}.max-w-\[1600px\]\!{max-width:1600px!important}.max-w-\[min\(600px\,100\%\)\]{max-width:min(600px,100%)}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.resize{resize:both}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem * var(--tw-space-y-reverse));margin-block-end:calc(.25rem * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:.75rem}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.rounded{border-radius:4px}.rounded-\[14px\]{border-radius:14px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-xl{border-radius:.75rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.bg-layer-raised{background-color:var(--bg-layer-raised,#fcfcfc)}.bg-layer-sunken{background-color:var(--bg-layer-sunken,#eef1f7)}.object-contain{object-fit:contain}.p-0{padding:0}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-1\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.py-0{padding-block:0}.py-0\.5{padding-block:.125rem}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-2\.5{padding-block:.625rem}.py-4{padding-block:1rem}.py-\[7px\]{padding-block:7px}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-\[2em\]{padding-inline-start:2em}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pb-0{padding-bottom:0}.pb-4{padding-bottom:1rem}.text-center{text-align:center}.text-end{text-align:end}.text-start{text-align:start}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.\[text-wrap\:balance\]{text-wrap:balance}.\[text-wrap\:pretty\]{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.wrap-anywhere{overflow-wrap:anywhere}.wrap-break-word{overflow-wrap:break-word}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.decoration-current\/60{text-decoration-color:currentColor}@supports (color:color-mix(in lab, red, red)){.decoration-current\/60{-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);-webkit-text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent);text-decoration-color:color-mix(in oklab, currentcolor 60%, transparent)}}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-chat-button{--tw-shadow:0 2px 12px 0 var(--tw-shadow-color,var(--shadow-xs-1,#2764d933)), 0 2px 6px 0 var(--tw-shadow-color,var(--shadow-xs-2,#161b2d08));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 0 8px 1px var(--tw-shadow-color,var(--shadow-xs-1,#2764d933));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,cubic-bezier(.4, 0, .2, 1));transition-duration:var(--tw-duration,.15s)}@media (hover:hover){.group-hover\/table\:opacity-100:is(:where(.group\/table):hover *){opacity:1}}.first\:mt-0:first-child{margin-top:0}.last\:mb-0:last-child{margin-bottom:0}.focus-within\:opacity-100:focus-within{opacity:1}@media (hover:hover){.hover\:decoration-current:hover{text-decoration-color:currentColor}}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.rtl\:flex-row-reverse:where(:dir(rtl),[dir=rtl],[dir=rtl] *){flex-direction:row-reverse}.rtl\:justify-start:where(:dir(rtl),[dir=rtl],[dir=rtl] *){justify-content:flex-start}@media (max-width:1279px){.mobile\:h-full\!{height:100%!important}.mobile\:max-w-full\!{max-width:100%!important}.mobile\:flex-1{flex:1}.mobile\:rounded-none{border-radius:0}.mobile\:p-0{padding:0}}@media (min-width:1280px){.desktop\:inset-s-auto{inset-inline-start:auto}.desktop\:me-6{margin-inline-end:1.5rem}.desktop\:w-\[min\(600px\,calc\(100vw-3rem\)\)\]{width:min(600px,100vw - 3rem)}.desktop\:w-auto{width:auto}.desktop\:items-end{align-items:flex-end}.desktop\:p-4{padding:1rem}.desktop\:px-0{padding-inline:0}.desktop\:px-6{padding-inline:1.5rem}}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:\!h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){height:var(--resizable-field-max-height,70vh)!important}.\[\&_\.w-md-editor\:not\(\.w-md-editor-fullscreen\)\]\:max-h-\[var\(--resizable-field-max-height\,70vh\)\] .w-md-editor:not(.w-md-editor-fullscreen){max-height:var(--resizable-field-max-height,70vh)}.\[\&_\.wmde-markdown_ul\]\:list-disc .wmde-markdown ul{list-style-type:disc}.\[\&_\.wmde-markdown_ul_ul\]\:list-\[circle\] .wmde-markdown ul ul{list-style-type:circle}.\[\&_\.wmde-markdown_ul_ul_ul\]\:list-\[square\] .wmde-markdown ul ul ul{list-style-type:square}.\[\&_\.wmde-markdown\>ol\]\:list-decimal .wmde-markdown>ol{list-style-type:decimal}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
|