@epam/ai-dial-attachment-input 1.2.0-dev.3 → 1.2.0-dev.300
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/AttachmentCard/Attachments/Actions.d.ts.map +1 -1
- package/components/AttachmentCard/Attachments/File.d.ts.map +1 -1
- package/components/AttachmentCard/Attachments/Image.d.ts.map +1 -1
- package/components/AttachmentGroup/AttachmentGroup.d.ts.map +1 -1
- package/components/AttachmentTray/AttachmentTray.d.ts.map +1 -1
- package/components/FileDndOverlay/FileDndOverlay.d.ts.map +1 -1
- package/constants/public-class-names.d.ts +17 -0
- package/constants/public-class-names.d.ts.map +1 -0
- package/index.css +2 -2
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +286 -271
- package/models/attachment-card.d.ts +5 -5
- package/models/attachment-card.d.ts.map +1 -1
- package/models/attachment-file-row.d.ts +5 -1
- package/models/attachment-file-row.d.ts.map +1 -1
- package/models/attachment-group.d.ts +2 -0
- package/models/attachment-group.d.ts.map +1 -1
- package/models/attachment-tray.d.ts +8 -3
- package/models/attachment-tray.d.ts.map +1 -1
- package/package.json +3 -3
- package/utils/attachment.d.ts +5 -2
- package/utils/attachment.d.ts.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Actions.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Actions.tsx"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAmB,MAAM,OAAO,CAAC;AAI5D,UAAU,WAAW;IACnB,wCAAwC;IACxC,IAAI,EAAE,SAAS,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,kDAAkD;IAClD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAgCD,uCAAuC;AACvC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CActD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAaxD,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAatD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/File.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"File.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/File.tsx"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,EAAE,EAMR,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAoB/E,2HAA2H;AAC3H,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA4QlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAElB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../../../../src/components/AttachmentCard/Attachments/Image.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAElB,MAAM,2BAA2B,CAAC;AAQnC,OAAO,EACL,aAAa,EACb,KAAK,EAAE,EAIR,MAAM,OAAO,CAAC;AAOf,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAKzC,UAAU,oBAAoB;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,0EAA0E;AAC1E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6IpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentGroup.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentGroup/AttachmentGroup.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAO1E,kIAAkI;AAClI,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"AttachmentGroup.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentGroup/AttachmentGroup.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAO1E,kIAAkI;AAClI,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA2IpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentTray.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentTray/AttachmentTray.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AttachmentTray.d.ts","sourceRoot":"","sources":["../../../src/components/AttachmentTray/AttachmentTray.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAEhC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAGxE,gHAAgH;AAChH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAwDlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileDndOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/FileDndOverlay/FileDndOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"FileDndOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/FileDndOverlay/FileDndOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAa,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAGzE,uGAAuG;AACvG,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA4ElD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const ATTACHMENT_INPUT_CLASS: {
|
|
2
|
+
/** The tray's `role="list"` root. */
|
|
3
|
+
readonly tray: "dial-ai-attachment-tray";
|
|
4
|
+
/** Each `role="listitem"` wrapper inside the tray. */
|
|
5
|
+
readonly trayItem: "dial-ai-attachment-tray-item";
|
|
6
|
+
/** The square tile element, for both image and non-previewable attachments. */
|
|
7
|
+
readonly tile: "dial-ai-attachment-tile";
|
|
8
|
+
/** The tile when selected, additive to `tile`. */
|
|
9
|
+
readonly tileSelected: "dial-ai-attachment-tile-selected";
|
|
10
|
+
/** The tile's filename element. */
|
|
11
|
+
readonly tileName: "dial-ai-attachment-tile-name";
|
|
12
|
+
/** The tile's type and size row. */
|
|
13
|
+
readonly tileType: "dial-ai-attachment-tile-type";
|
|
14
|
+
/** Every corner action button: download, retry, open-link, remove. */
|
|
15
|
+
readonly tileAction: "dial-ai-attachment-tile-action";
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=public-class-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-class-names.d.ts","sourceRoot":"","sources":["../../src/constants/public-class-names.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;IACjC,qCAAqC;;IAErC,sDAAsD;;IAEtD,+EAA+E;;IAE/E,kDAAkD;;IAElD,mCAAmC;;IAEnC,oCAAoC;;IAEpC,sEAAsE;;CAE9D,CAAC"}
|
package/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.
|
|
2
|
-
/*$vite$:1
|
|
1
|
+
._tile_1tdbq_12{box-sizing:border-box;background:var(--ai-tile-bg,var(--bg-layer-raised,#fcfcfc));border-style:solid;border-color:var(--ai-tile-border,var(--stroke-secondary,#d1dbea))}._tile_1tdbq_12._hovered_1tdbq_18:hover{background:var(--ai-tile-bg-hover,var(--bg-control-neutral-hover-muted,#e0e6f0));border-color:var(--ai-tile-border-hover,var(--ai-tile-border,var(--stroke-secondary,#d1dbea)))}._tile_1tdbq_12:focus-visible{outline-color:var(--ai-tile-focus-outline,var(--stroke-focus,#161b2d))}._selected_1tdbq_28{background:var(--ai-tile-bg-selected,var(--bg-control-accent-alpha,#2764d90f));border-color:var(--ai-tile-border-selected,var(--stroke-accent-alpha,#2764d933))}._tileError_1tdbq_33{background:var(--ai-tile-bg-error,var(--bg-error,#f3d6d8));border-color:var(--ai-tile-border-error,var(--stroke-error,#ae2f2f))}._nameText_1tdbq_38{color:var(--ai-tile-name-text,var(--text-primary,#161b2d))}._typeText_1tdbq_42{color:var(--ai-tile-type-text,var(--text-secondary,#57647a))}._retryIcon_1tdbq_46{color:var(--ai-tile-error-text,var(--text-error,#ae2f2f))}._track_1tdbq_50{background:var(--ai-tile-progress-track,var(--bg-backdrop,#161b2d4d))}._actionButton_1tdbq_56{background:var(--ai-tile-hover-icon-bg,var(--bg-control-neutral-hover-muted,#e0e6f0))}._imageActionButton_1tdbq_60{background:var(--ai-tile-hover-icon-bg,var(--bg-layer-base,#f5f7fa));color:var(--ai-tile-hover-icon-color,var(--text-secondary,#57647a))}._headerIcon_1dmgi_1,._headerLabel_1dmgi_2{color:var(--ai-group-text,var(--text-secondary,#57647a))}._overlay_mzpdp_1{background:var(--ai-fd-bg,var(--bg-backdrop,#161b2d4d))}._icon_mzpdp_5{color:var(--ai-fd-icon,var(--text-accent,#1d4ed8))}._deniedIcon_mzpdp_9{color:var(--ai-fd-denied-icon,var(--text-error,#ae2f2f))}
|
|
2
|
+
/*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.end-1{inset-inline-end:.25rem}.start-\[-1px\]{inset-inline-start:-1px}.top-1{top:.25rem}.top-\[-1px\]{top:-1px}.z-10{z-index:10}.z-\[9999\]{z-index:9999}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.line-clamp-2{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.size-\[84px\]{height:84px;width:84px}.size-full{width:100%}.h-full,.size-full{height:100%}.w-full{width:100%}.min-w-0{min-width:0}.max-w-\[420px\]{max-width:420px}.max-w-\[492px\]{max-width:492px}.flex-1{flex:1 1 0%}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.grid-cols-\[repeat\(5\2c 83px\)\]{grid-template-columns:repeat(5,83px)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:4px}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1\.5{padding:.375rem}.pe-11{padding-inline-end:2.75rem}.pe-5{padding-inline-end:1.25rem}.text-center{text-align:center}.opacity-0{opacity:0}.opacity-100{opacity:1}.outline{outline-style:solid;outline-width:1px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-200{transition-duration:.2s}.focus-within\:outline:focus-within{outline-style:solid;outline-width:1px}.focus-within\:outline-1:focus-within{outline-width:1px}.focus-within\:outline-offset-1:focus-within{outline-offset:1px}.focus-visible\:opacity-100:focus-visible{opacity:1}.group\/attachment-tile:focus-within .group-focus-within\/attachment-tile\:opacity-100{opacity:1}.group\/attachment-tile:hover .group-hover\/attachment-tile\:opacity-100{opacity:1}
|
package/index.d.ts
CHANGED
|
@@ -11,5 +11,6 @@ export { useClipboardPaste, type UseClipboardPasteLabels, } from './hooks/useCli
|
|
|
11
11
|
export { useLazyImageLoad, LazyImageLoadStatus, } from './hooks/useLazyImageLoad';
|
|
12
12
|
export { generateAttachmentId, getAttachmentCardState, getExtFromContentType, getAttachmentIcon, getNameWithoutExtension, mimeTypesToExtensionLabels, isMimeTypeAllowed, } from './utils/attachment';
|
|
13
13
|
export { ATTACHMENT_COLLAPSE_THRESHOLD } from './constants/attachment-group';
|
|
14
|
+
export { ATTACHMENT_INPUT_CLASS } from './constants/public-class-names';
|
|
14
15
|
export { MAX_UPLOADS_PER_MINUTE } from './constants/upload';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,GAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,102 +1,99 @@
|
|
|
1
|
-
import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, RequestStatus as r, buildCssVars as i,
|
|
2
|
-
import { useCallback as
|
|
3
|
-
import { IconClipboard as
|
|
4
|
-
import { DIAL_ICON_SIZE as U, DIAL_KIT_ICON_STROKE as W, ElementSize as
|
|
5
|
-
import { Fragment as
|
|
1
|
+
import { AttachmentErrorReason as e, AttachmentType as t, MIME_TYPE_EXT_MAP as n, RequestStatus as r, buildCssVars as i, getBaseMimeType as a, mergeClasses as o, normalizeMimeType as s } from "@epam/ai-dial-chat-shared";
|
|
2
|
+
import { useCallback as c, useEffect as l, useId as u, useMemo as d, useRef as f, useState as p } from "react";
|
|
3
|
+
import { IconClipboard as m, IconDownload as h, IconExternalLink as g, IconFile as _, IconFileDescription as v, IconFileTypeBmp as y, IconFileTypeCss as b, IconFileTypeCsv as x, IconFileTypeDoc as S, IconFileTypeDocx as C, IconFileTypeHtml as w, IconFileTypeJpg as T, IconFileTypeJs as E, IconFileTypeJsx as D, IconFileTypePdf as O, IconFileTypePhp as k, IconFileTypePng as A, IconFileTypePpt as j, IconFileTypeRs as M, IconFileTypeSql as N, IconFileTypeSvg as P, IconFileTypeTs as F, IconFileTypeTsx as I, IconFileTypeTxt as L, IconFileTypeVue as R, IconFileTypeXls as z, IconFileTypeXml as ee, IconFileTypeZip as te, IconFileX as ne, IconMusic as re, IconPaperclip as ie, IconPhoto as B, IconReload as V, IconTerminal2 as ae, IconVideo as H, IconX as oe } from "@tabler/icons-react";
|
|
4
|
+
import { DIAL_ICON_SIZE as U, DIAL_KIT_ICON_STROKE as W, ElementSize as G, GhostIconButton as se, Highlight as ce, Skeleton as le, SkeletonVariant as ue, Spinner as de, StaticIconButton as fe } from "@epam/ai-dial-ui-kit";
|
|
5
|
+
import { Fragment as pe, jsx as K, jsxs as q } from "react/jsx-runtime";
|
|
6
6
|
//#region src/utils/attachment.ts
|
|
7
|
-
var
|
|
7
|
+
var me = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, he = (e) => {
|
|
8
8
|
if (e == null) return "";
|
|
9
9
|
let t = e.lastIndexOf(".");
|
|
10
10
|
return t > 0 ? e.slice(0, t) : e;
|
|
11
|
-
},
|
|
11
|
+
}, ge = {
|
|
12
12
|
image: "Image files",
|
|
13
13
|
audio: "Audio files",
|
|
14
14
|
video: "Video files",
|
|
15
15
|
text: "Text files",
|
|
16
16
|
"*": "All files"
|
|
17
|
-
},
|
|
18
|
-
let r = e
|
|
17
|
+
}, _e = { "image/jpeg": "JPEG" }, ve = (e, t = ge) => e.map((e) => {
|
|
18
|
+
let r = a(e);
|
|
19
19
|
if (r.endsWith("/*")) {
|
|
20
20
|
let e = r.slice(0, -2);
|
|
21
21
|
return t[e] ?? `${e} files`;
|
|
22
22
|
}
|
|
23
|
-
let i =
|
|
24
|
-
if (
|
|
25
|
-
let
|
|
26
|
-
if (
|
|
27
|
-
let
|
|
28
|
-
return
|
|
29
|
-
}).join(", "),
|
|
30
|
-
if (t ===
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
23
|
+
let i = s(r), o = _e[i];
|
|
24
|
+
if (o) return o;
|
|
25
|
+
let c = n[i];
|
|
26
|
+
if (c) return c.toUpperCase();
|
|
27
|
+
let l = i.split("/")[1];
|
|
28
|
+
return l == null ? e.toUpperCase() : l.toUpperCase();
|
|
29
|
+
}).join(", "), ye = (e, t) => {
|
|
30
|
+
if (t.length === 0) return !1;
|
|
31
|
+
let n = a(e), r = s(n);
|
|
32
|
+
return t.some((e) => {
|
|
33
|
+
let t = a(e);
|
|
34
|
+
if (t === "*" || t === "*/*") return !0;
|
|
35
|
+
if (t.endsWith("/*")) {
|
|
36
|
+
let e = t.slice(0, -2);
|
|
37
|
+
return n.startsWith(`${e}/`) || r.startsWith(`${e}/`);
|
|
38
|
+
}
|
|
39
|
+
return r === s(t);
|
|
40
|
+
});
|
|
41
|
+
}, be = (e) => {
|
|
42
|
+
if (!e) return _;
|
|
43
|
+
let t = s(e);
|
|
44
|
+
if (t.startsWith("image/")) switch (t) {
|
|
45
|
+
case "image/jpeg": return T;
|
|
46
|
+
case "image/png": return A;
|
|
47
|
+
case "image/svg+xml": return P;
|
|
48
|
+
case "image/bmp": return y;
|
|
49
|
+
default: return B;
|
|
45
50
|
}
|
|
46
|
-
if (
|
|
47
|
-
if (
|
|
48
|
-
switch (
|
|
49
|
-
case "application/pdf": return
|
|
50
|
-
case "application/msword":
|
|
51
|
-
case "application/vnd.
|
|
52
|
-
case "application/vnd.
|
|
53
|
-
case "application/vnd.
|
|
54
|
-
case "application/vnd.
|
|
55
|
-
case "application/vnd.
|
|
56
|
-
case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return L;
|
|
51
|
+
if (t.startsWith("video/")) return H;
|
|
52
|
+
if (t.startsWith("audio/")) return re;
|
|
53
|
+
switch (t) {
|
|
54
|
+
case "application/pdf": return O;
|
|
55
|
+
case "application/msword": return S;
|
|
56
|
+
case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return C;
|
|
57
|
+
case "application/vnd.ms-powerpoint": return j;
|
|
58
|
+
case "application/vnd.openxmlformats-officedocument.presentationml.presentation": return j;
|
|
59
|
+
case "application/vnd.ms-excel": return z;
|
|
60
|
+
case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": return z;
|
|
57
61
|
case "application/zip":
|
|
58
|
-
case "application/
|
|
59
|
-
case "application/x-rar-compressed":
|
|
62
|
+
case "application/vnd.rar":
|
|
60
63
|
case "application/x-7z-compressed":
|
|
61
64
|
case "application/gzip":
|
|
62
|
-
case "application/x-tar": return
|
|
63
|
-
case "text/csv": return
|
|
64
|
-
case "text/plain": return
|
|
65
|
+
case "application/x-tar": return te;
|
|
66
|
+
case "text/csv": return x;
|
|
67
|
+
case "text/plain": return L;
|
|
65
68
|
case "text/html":
|
|
66
|
-
case "application/xhtml+xml": return
|
|
67
|
-
case "
|
|
68
|
-
case "application/
|
|
69
|
-
case "
|
|
70
|
-
case "text/
|
|
71
|
-
case "text/
|
|
72
|
-
case "
|
|
73
|
-
case "text/
|
|
74
|
-
case "
|
|
75
|
-
case "text/
|
|
76
|
-
case "text/
|
|
77
|
-
|
|
78
|
-
case "text/x-php":
|
|
79
|
-
case "application/x-php": return D;
|
|
80
|
-
case "text/x-rustsrc":
|
|
81
|
-
case "application/x-rust": return A;
|
|
82
|
-
case "text/x-vue": return I;
|
|
83
|
-
default: return h;
|
|
69
|
+
case "application/xhtml+xml": return w;
|
|
70
|
+
case "application/xml": return ee;
|
|
71
|
+
case "application/sql": return N;
|
|
72
|
+
case "text/javascript": return E;
|
|
73
|
+
case "text/jsx": return D;
|
|
74
|
+
case "text/typescript": return F;
|
|
75
|
+
case "text/tsx": return I;
|
|
76
|
+
case "text/css": return b;
|
|
77
|
+
case "text/x-php": return k;
|
|
78
|
+
case "text/x-rustsrc": return M;
|
|
79
|
+
case "text/x-vue": return R;
|
|
80
|
+
default: return _;
|
|
84
81
|
}
|
|
85
|
-
},
|
|
82
|
+
}, xe = (e) => {
|
|
86
83
|
let { type: n, contentType: r } = e;
|
|
87
|
-
return n === t.Prompt ?
|
|
88
|
-
},
|
|
89
|
-
let t = e
|
|
84
|
+
return n === t.Prompt ? ae : n === t.Pasted ? m : n === t.Image ? B : be(r ?? "");
|
|
85
|
+
}, Se = (e) => {
|
|
86
|
+
let t = s(e), r = n[t];
|
|
90
87
|
if (r) return r;
|
|
91
88
|
let i = t.split("/")[1];
|
|
92
89
|
if (i && !i.startsWith("vnd.") && !i.includes("+")) return i;
|
|
93
|
-
},
|
|
90
|
+
}, Ce = (e, n) => {
|
|
94
91
|
let { type: r, name: i, contentType: a } = e;
|
|
95
92
|
if (r === t.Prompt) return n.promptLabel ?? "Prompt";
|
|
96
93
|
if (r === t.Pasted) return n.pastedLabel ?? "Pasted";
|
|
97
94
|
if (r === t.Image) return n.imageLabel ?? "Image";
|
|
98
95
|
if (a) {
|
|
99
|
-
let e =
|
|
96
|
+
let e = Se(a);
|
|
100
97
|
if (e) return `.${e}`;
|
|
101
98
|
}
|
|
102
99
|
if (i == null) return "";
|
|
@@ -109,157 +106,168 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
109
106
|
isError: l,
|
|
110
107
|
isImage: u,
|
|
111
108
|
isLink: d,
|
|
112
|
-
BottomIcon: d ? null :
|
|
113
|
-
typeLabel: d ? null :
|
|
109
|
+
BottomIcon: d ? null : xe(e),
|
|
110
|
+
typeLabel: d ? null : Ce(e, n)
|
|
114
111
|
};
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
112
|
+
}, we = 5, Te = "flex size-[84px] items-center justify-center rounded-xl border", Y = {
|
|
113
|
+
tray: "dial-ai-attachment-tray",
|
|
114
|
+
trayItem: "dial-ai-attachment-tray-item",
|
|
115
|
+
tile: "dial-ai-attachment-tile",
|
|
116
|
+
tileSelected: "dial-ai-attachment-tile-selected",
|
|
117
|
+
tileName: "dial-ai-attachment-tile-name",
|
|
118
|
+
tileType: "dial-ai-attachment-tile-type",
|
|
119
|
+
tileAction: "dial-ai-attachment-tile-action"
|
|
120
|
+
}, X = {
|
|
121
|
+
tile: "_tile_1tdbq_12",
|
|
122
|
+
hovered: "_hovered_1tdbq_18",
|
|
123
|
+
selected: "_selected_1tdbq_28",
|
|
124
|
+
tileError: "_tileError_1tdbq_33",
|
|
125
|
+
nameText: "_nameText_1tdbq_38",
|
|
126
|
+
typeText: "_typeText_1tdbq_42",
|
|
127
|
+
retryIcon: "_retryIcon_1tdbq_46",
|
|
128
|
+
track: "_track_1tdbq_50",
|
|
129
|
+
actionButton: "_actionButton_1tdbq_56",
|
|
130
|
+
imageActionButton: "_imageActionButton_1tdbq_60"
|
|
131
|
+
}, Z = ({ ariaLabel: e, errorTitle: t, errorDescId: n, onClick: r, id: i, icon: a, className: s }) => /* @__PURE__ */ K(fe, {
|
|
132
|
+
icon: a,
|
|
133
|
+
size: G.Small,
|
|
134
|
+
className: o("opacity-0 focus-visible:opacity-100 group-focus-within/attachment-tile:opacity-100 group-hover/attachment-tile:opacity-100", X.actionButton, s, Y.tileAction),
|
|
130
135
|
"aria-label": e,
|
|
131
136
|
"aria-describedby": t ? n : void 0,
|
|
132
137
|
onClick: (e) => {
|
|
133
138
|
e.stopPropagation(), r(i);
|
|
134
139
|
}
|
|
135
|
-
}),
|
|
136
|
-
icon: /* @__PURE__ */
|
|
140
|
+
}), Ee = ({ ...e }) => /* @__PURE__ */ K(Z, {
|
|
141
|
+
icon: /* @__PURE__ */ K(V, {
|
|
137
142
|
size: U.SM,
|
|
138
143
|
"aria-hidden": !0,
|
|
139
144
|
stroke: W
|
|
140
145
|
}),
|
|
141
|
-
className:
|
|
146
|
+
className: X.retryIcon,
|
|
142
147
|
...e
|
|
143
|
-
}),
|
|
144
|
-
icon: /* @__PURE__ */
|
|
148
|
+
}), De = ({ ...e }) => /* @__PURE__ */ K(Z, {
|
|
149
|
+
icon: /* @__PURE__ */ K(h, {
|
|
145
150
|
size: U.SM,
|
|
146
151
|
"aria-hidden": !0,
|
|
147
152
|
stroke: W
|
|
148
153
|
}),
|
|
149
154
|
...e
|
|
150
|
-
}),
|
|
151
|
-
icon: /* @__PURE__ */
|
|
155
|
+
}), Oe = ({ ...e }) => /* @__PURE__ */ K(Z, {
|
|
156
|
+
icon: /* @__PURE__ */ K(g, {
|
|
152
157
|
size: U.SM,
|
|
153
158
|
"aria-hidden": !0,
|
|
154
159
|
stroke: W
|
|
155
160
|
}),
|
|
156
161
|
...e
|
|
157
|
-
}),
|
|
158
|
-
icon: /* @__PURE__ */
|
|
162
|
+
}), ke = ({ ...e }) => /* @__PURE__ */ K(Z, {
|
|
163
|
+
icon: /* @__PURE__ */ K(oe, {
|
|
159
164
|
size: U.SM,
|
|
160
165
|
"aria-hidden": !0,
|
|
161
166
|
stroke: W
|
|
162
167
|
}),
|
|
163
168
|
...e
|
|
164
|
-
}),
|
|
169
|
+
}), Ae = {
|
|
165
170
|
[e.Network]: "Upload failed · network error",
|
|
166
|
-
[e.UnsupportedType]: "Upload failed · unsupported file type"
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
+
[e.UnsupportedType]: "Upload failed · unsupported file type",
|
|
172
|
+
[e.FileTooLarge]: "Upload failed · file too large"
|
|
173
|
+
}, je = ({ attachment: t, searchQuery: n = "", onClick: i, onRetry: a, labels: s, styles: l, onDownload: f, isPasted: p, isLink: m, cssVars: h, onExpand: g, isExpandable: _, onRemove: v, isSelected: y }) => {
|
|
174
|
+
let { clickLabel: b = "Download attachment", expandLabel: x = "Expand pasted text", downloadLabel: S = "Download attachment", retryLabel: C = "Retry upload", removeLabel: w = "Remove attachment", openInNewTabLabel: T = "Open in new tab", sizeLabel: E, uploadingLabel: D = "Uploading", errorReasonLabels: O, genericErrorLabel: k = "Upload failed" } = s ?? {}, { typography: A, className: j } = l ?? {}, { id: M, name: N, status: P, errorReason: F } = t, I = P === r.Loading, L = P === r.Error, R = u(), z = L ? F && (O?.[F] ?? Ae[F]) || k : "", { BottomIcon: ee, typeLabel: te } = J(t), ne = !L && !I && f && !m, re = L && !!a && F !== e.UnsupportedType && F !== e.FileTooLarge, ie = Number(!!ne) + Number(!!re) + Number(!!m) + Number(!!v), B = ie > 1 ? "pe-11" : ie === 1 ? "pe-5" : void 0, V = !!_ && g !== void 0, ae = V || i !== void 0, H = () => {
|
|
175
|
+
V ? g(M) : i?.(M);
|
|
176
|
+
}, oe = (e) => {
|
|
177
|
+
e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), H());
|
|
178
|
+
}, U = d(() => p ? N : he(N), [p, N]), W = c(() => {
|
|
171
179
|
window.open(t.referenceUrl, "_blank", "noopener,noreferrer");
|
|
172
|
-
}, [t]),
|
|
173
|
-
title:
|
|
174
|
-
className:
|
|
175
|
-
children: n ? /* @__PURE__ */
|
|
176
|
-
text:
|
|
180
|
+
}, [t]), G = o(Te, "group/attachment-tile relative flex-col justify-between items-start gap-1 overflow-hidden p-1.5", X.tile, !L && X.hovered, y && X.selected, L && X.tileError, Y.tile, y && Y.tileSelected), se = /* @__PURE__ */ K("div", {
|
|
181
|
+
title: U,
|
|
182
|
+
className: o(A?.nameClassName ?? "dial-caption-text", "line-clamp-2 w-full min-w-0 break-words", X.nameText, !L && B, Y.tileName),
|
|
183
|
+
children: n ? /* @__PURE__ */ K(ce, {
|
|
184
|
+
text: U,
|
|
177
185
|
query: n,
|
|
178
186
|
maxLines: 2
|
|
179
|
-
}) :
|
|
180
|
-
}),
|
|
181
|
-
className:
|
|
182
|
-
children: [/* @__PURE__ */
|
|
187
|
+
}) : U
|
|
188
|
+
}), le = ee && /* @__PURE__ */ q("div", {
|
|
189
|
+
className: o("flex w-full items-center gap-1", L && B, Y.tileType),
|
|
190
|
+
children: [/* @__PURE__ */ K(ee, {
|
|
183
191
|
size: 16,
|
|
184
|
-
className:
|
|
192
|
+
className: X.typeText,
|
|
185
193
|
"aria-hidden": !0
|
|
186
|
-
}), /* @__PURE__ */
|
|
187
|
-
className:
|
|
188
|
-
children:
|
|
194
|
+
}), /* @__PURE__ */ K("span", {
|
|
195
|
+
className: o(A?.metaClassName ?? "dial-caption-text", "min-w-0 flex-1 truncate", X.typeText),
|
|
196
|
+
children: E ? `${te} · ${E}` : te
|
|
189
197
|
})]
|
|
190
|
-
}),
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
198
|
+
}), ue = ae ? {
|
|
199
|
+
role: "button",
|
|
200
|
+
tabIndex: 0,
|
|
201
|
+
"aria-label": V ? x : b,
|
|
202
|
+
onClick: H,
|
|
203
|
+
onKeyDown: oe
|
|
204
|
+
} : {}, fe = /* @__PURE__ */ q(pe, { children: [
|
|
205
|
+
se,
|
|
206
|
+
le,
|
|
207
|
+
I && /* @__PURE__ */ K("div", {
|
|
196
208
|
role: "progressbar",
|
|
197
|
-
"aria-label":
|
|
198
|
-
className:
|
|
199
|
-
children: /* @__PURE__ */
|
|
209
|
+
"aria-label": D,
|
|
210
|
+
className: o("absolute start-[-1px] top-[-1px] flex size-full items-center justify-center rounded", X.track),
|
|
211
|
+
children: /* @__PURE__ */ K(de, { size: 32 })
|
|
200
212
|
}),
|
|
201
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ q("div", {
|
|
202
214
|
className: "absolute end-1 top-1 flex gap-1",
|
|
203
215
|
children: [
|
|
204
|
-
|
|
205
|
-
ariaLabel:
|
|
206
|
-
errorTitle:
|
|
207
|
-
errorDescId:
|
|
216
|
+
ne && /* @__PURE__ */ K(De, {
|
|
217
|
+
ariaLabel: S,
|
|
218
|
+
errorTitle: z,
|
|
219
|
+
errorDescId: R,
|
|
208
220
|
onClick: f,
|
|
209
|
-
id:
|
|
210
|
-
}),
|
|
211
|
-
z && /* @__PURE__ */ G(we, {
|
|
212
|
-
ariaLabel: x,
|
|
213
|
-
errorTitle: L,
|
|
214
|
-
errorDescId: I,
|
|
215
|
-
onClick: s,
|
|
216
|
-
id: A
|
|
221
|
+
id: M
|
|
217
222
|
}),
|
|
218
|
-
|
|
223
|
+
re && /* @__PURE__ */ K(Ee, {
|
|
219
224
|
ariaLabel: C,
|
|
220
|
-
errorTitle:
|
|
221
|
-
errorDescId:
|
|
222
|
-
onClick:
|
|
225
|
+
errorTitle: z,
|
|
226
|
+
errorDescId: R,
|
|
227
|
+
onClick: a,
|
|
228
|
+
id: M
|
|
223
229
|
}),
|
|
224
|
-
|
|
225
|
-
ariaLabel:
|
|
226
|
-
errorTitle:
|
|
227
|
-
errorDescId:
|
|
230
|
+
m && /* @__PURE__ */ K(Oe, {
|
|
231
|
+
ariaLabel: T,
|
|
232
|
+
errorTitle: z,
|
|
233
|
+
errorDescId: R,
|
|
234
|
+
onClick: W
|
|
235
|
+
}),
|
|
236
|
+
v && /* @__PURE__ */ K(ke, {
|
|
237
|
+
ariaLabel: w,
|
|
238
|
+
errorTitle: z,
|
|
239
|
+
errorDescId: R,
|
|
228
240
|
onClick: v,
|
|
229
|
-
id:
|
|
241
|
+
id: M
|
|
230
242
|
})
|
|
231
243
|
]
|
|
232
244
|
}),
|
|
233
|
-
|
|
234
|
-
id:
|
|
245
|
+
L && /* @__PURE__ */ K("span", {
|
|
246
|
+
id: R,
|
|
235
247
|
role: "status",
|
|
236
248
|
"aria-live": "polite",
|
|
237
249
|
className: "sr-only",
|
|
238
|
-
children:
|
|
250
|
+
children: z
|
|
239
251
|
})
|
|
240
252
|
] });
|
|
241
|
-
return /* @__PURE__ */
|
|
253
|
+
return /* @__PURE__ */ K("div", {
|
|
242
254
|
style: h,
|
|
243
|
-
className:
|
|
244
|
-
children: /* @__PURE__ */
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
"aria-label": b,
|
|
248
|
-
"aria-busy": P,
|
|
249
|
-
onClick: ae,
|
|
250
|
-
onKeyDown: ne,
|
|
255
|
+
className: o("inline-flex", j),
|
|
256
|
+
children: /* @__PURE__ */ K("div", {
|
|
257
|
+
...ue,
|
|
258
|
+
"aria-busy": I,
|
|
251
259
|
style: h,
|
|
252
|
-
className:
|
|
253
|
-
children:
|
|
260
|
+
className: o(G, ae && "cursor-pointer", "focus-within:outline focus-within:outline-1 focus-within:outline-offset-1"),
|
|
261
|
+
children: fe
|
|
254
262
|
})
|
|
255
263
|
});
|
|
256
|
-
},
|
|
264
|
+
}, Q = /* @__PURE__ */ function(e) {
|
|
257
265
|
return e.Idle = "idle", e.Loading = "loading", e.Loaded = "loaded", e.Error = "error", e;
|
|
258
|
-
}({}),
|
|
259
|
-
let n =
|
|
260
|
-
return
|
|
266
|
+
}({}), Me = ({ enabled: e, src: t }) => {
|
|
267
|
+
let n = f(null), [r, i] = p("idle");
|
|
268
|
+
return l(() => {
|
|
261
269
|
i(e && t ? "loading" : "idle");
|
|
262
|
-
}, [e, t]),
|
|
270
|
+
}, [e, t]), l(() => {
|
|
263
271
|
let r = n.current;
|
|
264
272
|
if (!r || !e || !t) return;
|
|
265
273
|
let a = () => i("loaded"), o = () => i("error");
|
|
@@ -270,66 +278,68 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
270
278
|
imageRef: n,
|
|
271
279
|
imageLoadStatus: r
|
|
272
280
|
};
|
|
273
|
-
},
|
|
274
|
-
let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment" } = i ?? {}, { className: g } =
|
|
281
|
+
}, Ne = ({ attachment: e, onExpand: n, onClick: r, labels: i, onRemove: a, cssVars: s, onDownload: c, styles: l, isSelected: u }) => {
|
|
282
|
+
let { clickLabel: f = "Open attachment", expandLabel: p = "Expand pasted text", removeLabel: m = "Remove attachment", downloadLabel: h = "Download attachment" } = i ?? {}, { className: g } = l ?? {}, { id: _, name: v } = e, y = e.previewUrl ?? e.url, b = e.type === t.Pasted && n !== void 0, { isLoading: x, isError: S, isImage: C } = d(() => J(e), [e]), w = r !== void 0 && !b && !x && !S, T = b || w, { imageRef: E, imageLoadStatus: D } = Me({
|
|
275
283
|
enabled: C,
|
|
276
284
|
src: y
|
|
277
|
-
}),
|
|
285
|
+
}), O = () => {
|
|
278
286
|
b && n ? n(_) : w && r && r(_);
|
|
279
|
-
}
|
|
280
|
-
return /* @__PURE__ */ G("div", {
|
|
281
|
-
className: a(Ce, "group/attachment-tile", w && "cursor-pointer", Y.tile, d && Y.selected, g),
|
|
282
|
-
onClick: D,
|
|
283
|
-
onKeyDown: (e) => {
|
|
284
|
-
e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), D());
|
|
285
|
-
},
|
|
286
|
-
tabIndex: 0,
|
|
287
|
+
}, k = T ? {
|
|
287
288
|
role: "button",
|
|
289
|
+
tabIndex: 0,
|
|
290
|
+
"aria-label": b ? p : f,
|
|
291
|
+
onClick: O,
|
|
292
|
+
onKeyDown: (e) => {
|
|
293
|
+
e.target === e.currentTarget && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), O());
|
|
294
|
+
}
|
|
295
|
+
} : {};
|
|
296
|
+
return /* @__PURE__ */ K("div", {
|
|
297
|
+
className: o(Te, "group/attachment-tile", T && "cursor-pointer", X.tile, u && X.selected, g, Y.tile, u && Y.tileSelected),
|
|
298
|
+
...k,
|
|
288
299
|
style: s,
|
|
289
|
-
|
|
290
|
-
children: /* @__PURE__ */ K("div", {
|
|
300
|
+
children: /* @__PURE__ */ q("div", {
|
|
291
301
|
className: "relative h-full w-full overflow-hidden",
|
|
292
302
|
children: [
|
|
293
|
-
/* @__PURE__ */
|
|
303
|
+
/* @__PURE__ */ q("div", {
|
|
294
304
|
className: "absolute end-1 top-1 z-10 flex gap-1",
|
|
295
|
-
children: [
|
|
305
|
+
children: [a && /* @__PURE__ */ K(ke, {
|
|
296
306
|
ariaLabel: m,
|
|
297
|
-
onClick:
|
|
307
|
+
onClick: a,
|
|
298
308
|
id: _,
|
|
299
|
-
className:
|
|
300
|
-
}), c && /* @__PURE__ */
|
|
309
|
+
className: X.imageActionButton
|
|
310
|
+
}), c && /* @__PURE__ */ K(De, {
|
|
301
311
|
ariaLabel: h,
|
|
302
312
|
onClick: c,
|
|
303
313
|
id: _,
|
|
304
|
-
className:
|
|
314
|
+
className: X.imageActionButton
|
|
305
315
|
})]
|
|
306
316
|
}),
|
|
307
|
-
|
|
308
|
-
variant:
|
|
317
|
+
D !== Q.Loaded && /* @__PURE__ */ K(le, {
|
|
318
|
+
variant: ue.Rectangular,
|
|
309
319
|
width: "100%",
|
|
310
320
|
height: "100%",
|
|
311
|
-
active:
|
|
312
|
-
overlay: /* @__PURE__ */
|
|
321
|
+
active: D === Q.Loading,
|
|
322
|
+
overlay: /* @__PURE__ */ K(B, {
|
|
313
323
|
size: U.LG,
|
|
314
|
-
className:
|
|
324
|
+
className: X.typeText,
|
|
315
325
|
"aria-hidden": !0,
|
|
316
326
|
stroke: W
|
|
317
327
|
}),
|
|
318
328
|
className: "absolute inset-0 rounded-xl"
|
|
319
329
|
}),
|
|
320
|
-
/* @__PURE__ */
|
|
321
|
-
ref:
|
|
330
|
+
/* @__PURE__ */ K("img", {
|
|
331
|
+
ref: E,
|
|
322
332
|
src: y,
|
|
323
333
|
alt: v,
|
|
324
334
|
loading: "lazy",
|
|
325
335
|
decoding: "async",
|
|
326
|
-
className:
|
|
336
|
+
className: o("h-full w-full rounded-xl object-cover transition-opacity duration-200", D === Q.Loaded ? "opacity-100" : "opacity-0")
|
|
327
337
|
})
|
|
328
338
|
]
|
|
329
339
|
})
|
|
330
340
|
});
|
|
331
|
-
},
|
|
332
|
-
let { colors: p } =
|
|
341
|
+
}, Pe = ({ attachment: e, searchQuery: n = "", onRemove: r, onRetry: a, onExpand: o, onClick: s, onDownload: c, labels: l, styles: u, isSelected: f }) => {
|
|
342
|
+
let { colors: p } = u ?? {}, m = e.type === t.Pasted, h = m && o !== void 0, g = i({
|
|
333
343
|
"--ai-tile-bg": p?.background,
|
|
334
344
|
"--ai-tile-border": p?.border,
|
|
335
345
|
"--ai-tile-bg-hover": p?.backgroundHover,
|
|
@@ -345,18 +355,18 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
345
355
|
"--ai-tile-hover-icon-bg": p?.hoverIconBackground,
|
|
346
356
|
"--ai-tile-hover-icon-color": p?.hoverIconColor,
|
|
347
357
|
"--ai-tile-progress-track": p?.trackBackground
|
|
348
|
-
}), { isImage: _, isLink: v } =
|
|
349
|
-
return _ ? /* @__PURE__ */
|
|
358
|
+
}), { isImage: _, isLink: v } = d(() => J(e), [e]);
|
|
359
|
+
return _ ? /* @__PURE__ */ K(Ne, {
|
|
350
360
|
attachment: e,
|
|
351
|
-
labels:
|
|
361
|
+
labels: l,
|
|
352
362
|
onClick: s,
|
|
353
363
|
onExpand: o,
|
|
354
|
-
styles:
|
|
364
|
+
styles: u,
|
|
355
365
|
onRemove: r,
|
|
356
366
|
cssVars: g,
|
|
357
367
|
onDownload: c,
|
|
358
368
|
isSelected: f
|
|
359
|
-
}) : /* @__PURE__ */
|
|
369
|
+
}) : /* @__PURE__ */ K(je, {
|
|
360
370
|
attachment: e,
|
|
361
371
|
searchQuery: n,
|
|
362
372
|
onClick: s,
|
|
@@ -365,22 +375,23 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
365
375
|
onDownload: c,
|
|
366
376
|
isLink: v,
|
|
367
377
|
isPasted: m,
|
|
368
|
-
styles:
|
|
369
|
-
labels:
|
|
378
|
+
styles: u,
|
|
379
|
+
labels: l,
|
|
370
380
|
onExpand: o,
|
|
371
381
|
cssVars: g,
|
|
372
382
|
isExpandable: h,
|
|
373
383
|
isSelected: f
|
|
374
384
|
});
|
|
375
|
-
},
|
|
376
|
-
let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d,
|
|
377
|
-
return e.length === 0 ? null : /* @__PURE__ */
|
|
385
|
+
}, Fe = ({ attachments: e, onRemove: t, onRetry: n, onExpand: r, onAttachmentClick: i, labels: a, styles: s }) => {
|
|
386
|
+
let { ariaLabel: c = "Attached files", removeLabel: l, retryLabel: u, clickLabel: d, expandLabel: f, uploadingLabel: p } = a ?? {}, { className: m, card: h } = s ?? {};
|
|
387
|
+
return e.length === 0 ? null : /* @__PURE__ */ K("div", {
|
|
378
388
|
role: "list",
|
|
379
389
|
"aria-label": c,
|
|
380
|
-
className:
|
|
381
|
-
children: e.map((e) => /* @__PURE__ */
|
|
390
|
+
className: o("flex w-full min-w-0 gap-2 overflow-x-auto", m, Y.tray),
|
|
391
|
+
children: e.map((e) => /* @__PURE__ */ K("div", {
|
|
382
392
|
role: "listitem",
|
|
383
|
-
|
|
393
|
+
className: Y.trayItem,
|
|
394
|
+
children: /* @__PURE__ */ K(Pe, {
|
|
384
395
|
attachment: e,
|
|
385
396
|
onRemove: t,
|
|
386
397
|
onRetry: n,
|
|
@@ -389,132 +400,136 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
389
400
|
removeLabel: l,
|
|
390
401
|
retryLabel: u,
|
|
391
402
|
clickLabel: d,
|
|
392
|
-
|
|
403
|
+
expandLabel: f,
|
|
404
|
+
uploadingLabel: p
|
|
393
405
|
},
|
|
406
|
+
styles: h,
|
|
394
407
|
onClick: i
|
|
395
408
|
})
|
|
396
409
|
}, e.id))
|
|
397
410
|
});
|
|
398
|
-
},
|
|
411
|
+
}, Ie = {
|
|
399
412
|
headerIcon: "_headerIcon_1dmgi_1",
|
|
400
413
|
headerLabel: "_headerLabel_1dmgi_2"
|
|
401
|
-
},
|
|
402
|
-
let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel:
|
|
414
|
+
}, Le = (e, t) => `${e} ${t}${e === 1 ? "" : "s"}`, Re = ({ attachments: e, onAttachmentClick: n, onDownloadAll: a, onRetry: s, labels: c, styles: l, selectedAttachmentId: u }) => {
|
|
415
|
+
let { ariaLabel: d = "Attachments", clickLabel: f = "Download attachment", downloadLabel: p = "Download attachment", retryLabel: m = "Retry upload", downloadAllLabel: g = "Download all", openInNewTabLabel: v, getHeaderLabel: y = (e) => Le(e, "attachment"), promptLabel: b, pastedLabel: x, imageLabel: S } = c ?? {}, { typography: C, colors: w, className: T } = l ?? {}, E = i({ "--ai-group-text": w?.text });
|
|
403
416
|
if (e.length === 0) return null;
|
|
404
|
-
let
|
|
417
|
+
let D = e.some((e) => e.type === t.Image), O = e.some((e) => e.type !== t.Image), k = D && O, A = e.length >= 5, j = k ? ie : D ? B : _, M = y(e.length), N = () => {
|
|
405
418
|
let t = e.filter((e) => e.status === r.Idle);
|
|
406
|
-
|
|
407
|
-
},
|
|
419
|
+
a ? a(t) : t.forEach((e) => n?.(e.id));
|
|
420
|
+
}, P = (t) => {
|
|
408
421
|
let n = e.find((e) => e.id === t);
|
|
409
|
-
n &&
|
|
422
|
+
n && a?.([n]);
|
|
410
423
|
};
|
|
411
|
-
return /* @__PURE__ */
|
|
424
|
+
return /* @__PURE__ */ q("div", {
|
|
412
425
|
role: "group",
|
|
413
426
|
"aria-label": d,
|
|
414
|
-
style:
|
|
415
|
-
className:
|
|
416
|
-
children: [/* @__PURE__ */
|
|
427
|
+
style: E,
|
|
428
|
+
className: o("flex flex-col gap-1", A ? "w-full min-w-0 max-w-[492px]" : "max-w-[420px]", Ie.container, T),
|
|
429
|
+
children: [/* @__PURE__ */ q("div", {
|
|
417
430
|
className: "flex items-center justify-between",
|
|
418
|
-
children: [/* @__PURE__ */
|
|
431
|
+
children: [/* @__PURE__ */ q("div", {
|
|
419
432
|
className: "flex items-center gap-1",
|
|
420
|
-
children: [/* @__PURE__ */
|
|
433
|
+
children: [/* @__PURE__ */ K(j, {
|
|
421
434
|
size: U.SM,
|
|
422
|
-
className:
|
|
435
|
+
className: o("shrink-0", Ie.headerIcon),
|
|
423
436
|
"aria-hidden": !0
|
|
424
|
-
}), /* @__PURE__ */
|
|
425
|
-
className:
|
|
426
|
-
children:
|
|
437
|
+
}), /* @__PURE__ */ K("span", {
|
|
438
|
+
className: o(C?.headerLabelClassName ?? "dial-tiny-semi-text", Ie.headerLabel),
|
|
439
|
+
children: M
|
|
427
440
|
})]
|
|
428
|
-
}), e.length >= 2 && (
|
|
429
|
-
icon: /* @__PURE__ */
|
|
441
|
+
}), e.length >= 2 && (a || n) && /* @__PURE__ */ K(se, {
|
|
442
|
+
icon: /* @__PURE__ */ K(h, {
|
|
430
443
|
size: U.SM,
|
|
431
444
|
"aria-hidden": !0,
|
|
432
445
|
stroke: W
|
|
433
446
|
}),
|
|
434
|
-
size:
|
|
447
|
+
size: G.Small,
|
|
435
448
|
"aria-label": g,
|
|
436
|
-
onClick:
|
|
449
|
+
onClick: N
|
|
437
450
|
})]
|
|
438
|
-
}), /* @__PURE__ */
|
|
451
|
+
}), /* @__PURE__ */ K("div", {
|
|
439
452
|
role: "list",
|
|
440
|
-
"aria-label":
|
|
441
|
-
className:
|
|
442
|
-
children: e.map((e, t) => /* @__PURE__ */
|
|
453
|
+
"aria-label": M,
|
|
454
|
+
className: o("gap-3", A ? "grid grid-cols-[repeat(5,83px)]" : "flex flex-wrap"),
|
|
455
|
+
children: e.map((e, t) => /* @__PURE__ */ K("div", {
|
|
443
456
|
role: "listitem",
|
|
444
|
-
children: /* @__PURE__ */
|
|
457
|
+
children: /* @__PURE__ */ K(Pe, {
|
|
445
458
|
attachment: e,
|
|
446
459
|
onClick: n,
|
|
447
|
-
onDownload:
|
|
460
|
+
onDownload: a ? P : void 0,
|
|
448
461
|
onRetry: s,
|
|
449
462
|
labels: {
|
|
450
463
|
clickLabel: f,
|
|
464
|
+
downloadLabel: p,
|
|
451
465
|
retryLabel: m,
|
|
452
|
-
promptLabel:
|
|
453
|
-
pastedLabel:
|
|
454
|
-
imageLabel:
|
|
455
|
-
openInNewTabLabel:
|
|
466
|
+
promptLabel: b,
|
|
467
|
+
pastedLabel: x,
|
|
468
|
+
imageLabel: S,
|
|
469
|
+
openInNewTabLabel: v
|
|
456
470
|
},
|
|
457
471
|
isSelected: e.id === u
|
|
458
472
|
})
|
|
459
473
|
}, `${e.id}-${t}`))
|
|
460
474
|
})]
|
|
461
475
|
});
|
|
462
|
-
},
|
|
476
|
+
}, ze = {
|
|
463
477
|
overlay: "_overlay_mzpdp_1",
|
|
464
478
|
icon: "_icon_mzpdp_5",
|
|
465
479
|
deniedIcon: "_deniedIcon_mzpdp_9"
|
|
466
|
-
},
|
|
467
|
-
let { title:
|
|
480
|
+
}, Be = ({ isVisible: e, isAttachmentsAllowed: t = !0, labels: n, styles: r }) => {
|
|
481
|
+
let { title: a, subtitle: s } = n ?? {}, { colors: c, typography: l } = r ?? {};
|
|
468
482
|
if (!e) return null;
|
|
469
483
|
let u = i({
|
|
470
484
|
"--ai-fd-bg": c?.background,
|
|
471
485
|
"--ai-fd-icon": c?.icon,
|
|
472
486
|
"--ai-fd-denied-icon": c?.deniedIcon
|
|
473
|
-
}), d =
|
|
487
|
+
}), d = a ?? (t ? "Attach files" : "No attachments allowed"), f = s ?? (t ? "Drop files here to attach them to message" : "Attachments can't be added to message"), p = t ? ze.icon : ze.deniedIcon, m = (e) => {
|
|
474
488
|
e.preventDefault();
|
|
475
|
-
}, h = t ?
|
|
476
|
-
return /* @__PURE__ */
|
|
489
|
+
}, h = t ? v : ne;
|
|
490
|
+
return /* @__PURE__ */ K("div", {
|
|
477
491
|
role: "status",
|
|
478
492
|
"aria-live": "polite",
|
|
479
|
-
className:
|
|
493
|
+
className: o("fixed inset-0 z-[9999] flex items-center justify-center backdrop-blur-sm", ze.overlay, t ? "pointer-events-none" : "pointer-events-auto cursor-not-allowed"),
|
|
480
494
|
onDragOver: t ? void 0 : m,
|
|
481
495
|
onDrop: t ? void 0 : m,
|
|
482
496
|
style: u,
|
|
483
|
-
children: /* @__PURE__ */
|
|
497
|
+
children: /* @__PURE__ */ q("div", {
|
|
484
498
|
className: "flex flex-col items-center text-center",
|
|
485
499
|
children: [
|
|
486
|
-
/* @__PURE__ */
|
|
500
|
+
/* @__PURE__ */ K(h, {
|
|
487
501
|
size: 100,
|
|
502
|
+
stroke: 1,
|
|
488
503
|
className: p,
|
|
489
504
|
"aria-hidden": !0
|
|
490
505
|
}),
|
|
491
|
-
/* @__PURE__ */
|
|
492
|
-
className:
|
|
506
|
+
/* @__PURE__ */ K("span", {
|
|
507
|
+
className: o("mt-5", l?.titleClassName ?? "dial-h3-text"),
|
|
493
508
|
children: d
|
|
494
509
|
}),
|
|
495
|
-
/* @__PURE__ */
|
|
496
|
-
className:
|
|
510
|
+
/* @__PURE__ */ K("span", {
|
|
511
|
+
className: o("mt-4", l?.subtitleClassName ?? "dial-small-text"),
|
|
497
512
|
children: f
|
|
498
513
|
})
|
|
499
514
|
]
|
|
500
515
|
})
|
|
501
516
|
});
|
|
502
|
-
}, $ = (e) => String(e).padStart(2, "0"),
|
|
517
|
+
}, $ = (e) => String(e).padStart(2, "0"), Ve = (e) => `${e.getFullYear()}-${$(e.getMonth() + 1)}-${$(e.getDate())} ${$(e.getHours())}-${$(e.getMinutes())}-${$(e.getSeconds())}`, He = (e, t, n) => {
|
|
503
518
|
let r = e.lastIndexOf("."), i = r > 0, a = i ? e.slice(0, r) : e, o = i ? e.slice(r) : "", s = n === 0 ? "" : ` (${n + 1})`;
|
|
504
|
-
return `${a} ${
|
|
505
|
-
},
|
|
506
|
-
let { screenshotName: a = "Screenshot.png", pastedTextName:
|
|
507
|
-
return { handlePaste:
|
|
519
|
+
return `${a} ${Ve(t)}${s}${o}`;
|
|
520
|
+
}, Ue = (e, n, i = {}) => {
|
|
521
|
+
let { screenshotName: a = "Screenshot.png", pastedTextName: o = "Pasted text" } = i;
|
|
522
|
+
return { handlePaste: c((i) => {
|
|
508
523
|
if (!i.clipboardData) return;
|
|
509
|
-
let
|
|
510
|
-
if (
|
|
511
|
-
let n = [],
|
|
512
|
-
for (let e of
|
|
524
|
+
let s = Array.from(i.clipboardData.items).filter((e) => e.kind === "file" && e.type.startsWith("image/")), c = i.clipboardData.getData("text/plain").length > 0;
|
|
525
|
+
if (s.length > 0 && !c) {
|
|
526
|
+
let n = [], o = /* @__PURE__ */ new Date();
|
|
527
|
+
for (let e of s) {
|
|
513
528
|
let i = e.getAsFile();
|
|
514
529
|
if (!i) continue;
|
|
515
|
-
let
|
|
516
|
-
id:
|
|
517
|
-
name:
|
|
530
|
+
let s = He(a, o, n.length), c = new File([i], s, { type: i.type }), l = {
|
|
531
|
+
id: me(),
|
|
532
|
+
name: s,
|
|
518
533
|
contentType: i.type,
|
|
519
534
|
file: c,
|
|
520
535
|
type: t.Image,
|
|
@@ -528,11 +543,11 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
528
543
|
}
|
|
529
544
|
let l = i.clipboardData.getData("text/plain");
|
|
530
545
|
if (l.length > n) {
|
|
531
|
-
let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) ||
|
|
532
|
-
id:
|
|
546
|
+
let n = l.trim(), a = (n.length > 80 ? `${n.slice(0, 80).trimEnd()}…` : n) || o, s = new File([l], a, { type: "text/plain" }), c = {
|
|
547
|
+
id: me(),
|
|
533
548
|
name: a,
|
|
534
549
|
contentType: "text/plain",
|
|
535
|
-
file:
|
|
550
|
+
file: s,
|
|
536
551
|
type: t.Pasted,
|
|
537
552
|
status: r.Idle
|
|
538
553
|
};
|
|
@@ -542,8 +557,8 @@ var q = () => `${Date.now()}-${Math.random().toString(36).slice(2)}`, pe = (e) =
|
|
|
542
557
|
e,
|
|
543
558
|
n,
|
|
544
559
|
a,
|
|
545
|
-
|
|
560
|
+
o
|
|
546
561
|
]) };
|
|
547
|
-
},
|
|
562
|
+
}, We = 100;
|
|
548
563
|
//#endregion
|
|
549
|
-
export {
|
|
564
|
+
export { we as ATTACHMENT_COLLAPSE_THRESHOLD, Y as ATTACHMENT_INPUT_CLASS, Pe as AttachmentCard, Re as AttachmentGroup, Fe as AttachmentTray, Be as FileDndOverlay, Q as LazyImageLoadStatus, We as MAX_UPLOADS_PER_MINUTE, me as generateAttachmentId, J as getAttachmentCardState, be as getAttachmentIcon, Se as getExtFromContentType, he as getNameWithoutExtension, ye as isMimeTypeAllowed, ve as mimeTypesToExtensionLabels, Ue as useClipboardPaste, Me as useLazyImageLoad };
|
|
@@ -79,15 +79,15 @@ export interface AttachmentCardLabels extends AttachmentTypeLabels {
|
|
|
79
79
|
removeLabel?: string;
|
|
80
80
|
/** Accessible label for the retry button (error state only). Defaults to `'Retry upload'`. */
|
|
81
81
|
retryLabel?: string;
|
|
82
|
-
/** Accessible
|
|
82
|
+
/** Accessible name of the card root when it is interactive via `onClick`. Defaults to `'Open attachment'` on an image tile and `'Download attachment'` on a file, link or pasted-text tile. Unused when the card has no `onClick`. */
|
|
83
83
|
clickLabel?: string;
|
|
84
|
-
/** Accessible
|
|
84
|
+
/** Accessible name of the card root when it is interactive via `onExpand` (pasted-text cards; takes precedence over `clickLabel`). Defaults to `'Expand pasted text'`. */
|
|
85
85
|
expandLabel?: string;
|
|
86
86
|
/** Accessible label for the loading spinner shown while the attachment is uploading. Defaults to `'Loading attachment'`. */
|
|
87
87
|
loadingLabel?: string;
|
|
88
88
|
/** Accessible label for the file card's in-progress upload progress bar. Defaults to `'Uploading'`. */
|
|
89
89
|
uploadingLabel?: string;
|
|
90
|
-
/** Accessible label for the download button. Defaults to `'Download attachment'`. */
|
|
90
|
+
/** Accessible label for the corner download button on image and file tiles (rendered when `onDownload` is given). Defaults to `'Download attachment'`. */
|
|
91
91
|
downloadLabel?: string;
|
|
92
92
|
/** Accessible label for the open-in-new-tab button. Defaults to `'Open in new tab'`. */
|
|
93
93
|
openInNewTabLabel?: string;
|
|
@@ -102,9 +102,9 @@ export interface AttachmentCardProps {
|
|
|
102
102
|
onRemove?: (id: string) => void;
|
|
103
103
|
/** Called when the user activates the retry button (error state only). */
|
|
104
104
|
onRetry?: (id: string) => void;
|
|
105
|
-
/** Called when the user clicks or activates a pasted-text card to expand its content back into the input. */
|
|
105
|
+
/** Called when the user clicks or keyboard-activates (Enter/Space) a pasted-text card to expand its content back into the input. Takes precedence over `onClick` on pasted-text cards. */
|
|
106
106
|
onExpand?: (id: string) => void;
|
|
107
|
-
/** Called when the user clicks or keyboard-activates the card. Receives the attachment `id`. */
|
|
107
|
+
/** Called when the user clicks or keyboard-activates (Enter/Space) the card. Receives the attachment `id`. When neither this nor an applicable `onExpand` is given, the card renders as a non-interactive element (no `role="button"`, no Tab stop). */
|
|
108
108
|
onClick?: (id: string) => void;
|
|
109
109
|
/** Localised accessible labels for the remove/retry actions, the interactive card root, and the non-extension attachment type names (prompt/pasted/image). */
|
|
110
110
|
labels?: AttachmentCardLabels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-card.d.ts","sourceRoot":"","sources":["../../src/models/attachment-card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,wGAAwG;AACxG,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8GAA8G;IAC9G,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,
|
|
1
|
+
{"version":3,"file":"attachment-card.d.ts","sourceRoot":"","sources":["../../src/models/attachment-card.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,wGAAwG;AACxG,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,SAAS,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,MAAM,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,sEAAsE;IACtE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,mFAAmF;IACnF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8GAA8G;IAC9G,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,8DAA8D;IAC9D,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sOAAsO;IACtO,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0KAA0K;IAC1K,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4HAA4H;IAC5H,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uGAAuG;IACvG,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0JAA0J;IAC1J,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,0LAA0L;IAC1L,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,wPAAwP;IACxP,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,8JAA8J;IAC9J,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,2DAA2D;IAC3D,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,wFAAwF;IACxF,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -3,8 +3,12 @@ import { CSSProperties } from 'react';
|
|
|
3
3
|
import { AttachmentTypeLabels } from './attachment-card';
|
|
4
4
|
/** Localised labels for the `FileAttachment` component. */
|
|
5
5
|
export interface FileAttachmentLabels extends AttachmentTypeLabels {
|
|
6
|
-
/** Accessible
|
|
6
|
+
/** Accessible name of the tile when it is interactive via `onClick`. Defaults to `'Download attachment'`. */
|
|
7
7
|
clickLabel?: string;
|
|
8
|
+
/** Accessible label for the corner download action. Kept separate from `clickLabel` so a tile that is both clickable and downloadable exposes two distinctly named buttons. Defaults to `'Download attachment'`. */
|
|
9
|
+
downloadLabel?: string;
|
|
10
|
+
/** Accessible name of a pasted-text tile when it is interactive via `onExpand`. Defaults to `'Expand pasted text'`. */
|
|
11
|
+
expandLabel?: string;
|
|
8
12
|
/** Accessible label for the retry action. Defaults to `'Retry upload'`. */
|
|
9
13
|
retryLabel?: string;
|
|
10
14
|
/** Accessible label for the remove action. Defaults to `'Remove attachment'`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-file-row.d.ts","sourceRoot":"","sources":["../../src/models/attachment-file-row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,
|
|
1
|
+
{"version":3,"file":"attachment-file-row.d.ts","sourceRoot":"","sources":["../../src/models/attachment-file-row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,6GAA6G;IAC7G,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oNAAoN;IACpN,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4GAA4G;IAC5G,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2KAA2K;IAC3K,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gJAAgJ;IAChJ,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IACnE,oIAAoI;IACpI,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,+DAA+D;AAC/D,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iHAAiH;IACjH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uDAAuD;IACvD,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,qIAAqI;IACrI,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,mCAAmC;IACnC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,iFAAiF;IACjF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,uHAAuH;IACvH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
|
@@ -6,6 +6,8 @@ export interface AttachmentGroupLabels extends AttachmentTypeLabels {
|
|
|
6
6
|
ariaLabel?: string;
|
|
7
7
|
/** Accessible label for each tile/row's click action. Defaults to `'Download attachment'`. */
|
|
8
8
|
clickLabel?: string;
|
|
9
|
+
/** Accessible label for each tile's own download button (rendered when `onDownloadAll` is given). Defaults to `'Download attachment'`. */
|
|
10
|
+
downloadLabel?: string;
|
|
9
11
|
/** Accessible label for each row's retry action. Defaults to `'Retry upload'`. */
|
|
10
12
|
retryLabel?: string;
|
|
11
13
|
/** Label for the "download all" header action, shown whenever the group has 2+ attachments. Defaults to `'Download all'`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/models/attachment-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6HAA6H;IAC7H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,iDAAiD;IACjD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAC3D,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gKAAgK;IAChK,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,kHAAkH;IAClH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
1
|
+
{"version":3,"file":"attachment-group.d.ts","sourceRoot":"","sources":["../../src/models/attachment-group.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,uEAAuE;AACvE,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0IAA0I;IAC1I,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kFAAkF;IAClF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6HAA6H;IAC7H,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gGAAgG;IAChG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,iDAAiD;IACjD,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yDAAyD;AACzD,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAC3D,oDAAoD;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,gKAAgK;IAChK,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qCAAqC;IACrC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,kHAAkH;IAClH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DisplayAttachment } from '@epam/ai-dial-chat-shared';
|
|
2
|
+
import { AttachmentCardStyles } from './attachment-card';
|
|
2
3
|
/** Localised accessible labels for the `AttachmentTray` component. */
|
|
3
4
|
export interface AttachmentTrayLabels {
|
|
4
5
|
/** Accessible label for the tray region. Defaults to `'Attached files'`. */
|
|
@@ -7,8 +8,10 @@ export interface AttachmentTrayLabels {
|
|
|
7
8
|
removeLabel?: string;
|
|
8
9
|
/** Accessible label for each card's retry button (error state only). */
|
|
9
10
|
retryLabel?: string;
|
|
10
|
-
/** Accessible
|
|
11
|
+
/** Accessible name forwarded to each card's root when it is interactive via `onAttachmentClick`. When omitted, the card's own default applies (`'Open attachment'` on image tiles, `'Download attachment'` on file, link and pasted-text tiles). */
|
|
11
12
|
clickLabel?: string;
|
|
13
|
+
/** Accessible name forwarded to each pasted-text card's root when it is interactive via `onExpand`. Defaults to `'Expand pasted text'`. */
|
|
14
|
+
expandLabel?: string;
|
|
12
15
|
/** Accessible label for each card's in-progress upload progress bar. Defaults to `'Uploading'`. */
|
|
13
16
|
uploadingLabel?: string;
|
|
14
17
|
}
|
|
@@ -16,6 +19,8 @@ export interface AttachmentTrayLabels {
|
|
|
16
19
|
export interface AttachmentTrayStyles {
|
|
17
20
|
/** Extra class name(s) merged onto the root element. */
|
|
18
21
|
className?: string;
|
|
22
|
+
/** Colors, typography, and shape forwarded to every card in the tray. */
|
|
23
|
+
card?: AttachmentCardStyles;
|
|
19
24
|
}
|
|
20
25
|
/** Props accepted by the `AttachmentTray` component. */
|
|
21
26
|
export interface AttachmentTrayProps {
|
|
@@ -25,9 +30,9 @@ export interface AttachmentTrayProps {
|
|
|
25
30
|
onRemove?: (id: string) => void;
|
|
26
31
|
/** Called when the user retries a failed attachment upload. */
|
|
27
32
|
onRetry?: (id: string) => void;
|
|
28
|
-
/** Called when the user clicks a pasted-text card to expand its content back into the input. */
|
|
33
|
+
/** Called when the user clicks or keyboard-activates a pasted-text card to expand its content back into the input. Takes precedence over `onAttachmentClick` on pasted-text cards. */
|
|
29
34
|
onExpand?: (id: string) => void;
|
|
30
|
-
/** Called when the user clicks or keyboard-activates an attachment card. Receives the
|
|
35
|
+
/** Called when the user clicks or keyboard-activates an attachment card. Receives the attachment `id`. When omitted, cards without an applicable `onExpand` are non-interactive. */
|
|
31
36
|
onAttachmentClick?: (id: string) => void;
|
|
32
37
|
/** Localised accessible labels for the tray region and each card's interactive elements. */
|
|
33
38
|
labels?: AttachmentTrayLabels;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-tray.d.ts","sourceRoot":"","sources":["../../src/models/attachment-tray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment-tray.d.ts","sourceRoot":"","sources":["../../src/models/attachment-tray.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oPAAoP;IACpP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2IAA2I;IAC3I,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,WAAW,EAAE,iBAAiB,EAAE,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,sLAAsL;IACtL,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,oLAAoL;IACpL,iBAAiB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,4FAA4F;IAC5F,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,oCAAoC;IACpC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-attachment-input",
|
|
3
3
|
"description": "File attachment input components with upload validation, drag-and-drop, and progress tracking",
|
|
4
|
-
"version": "1.2.0-dev.
|
|
4
|
+
"version": "1.2.0-dev.300",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"@tabler/icons-react": "^3.44.0"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@epam/ai-dial-chat-shared": "1.2.0-dev.
|
|
23
|
+
"@epam/ai-dial-chat-shared": "1.2.0-dev.300",
|
|
24
24
|
"react": "^19.2.8",
|
|
25
|
-
"@epam/ai-dial-ui-kit": "^0.
|
|
25
|
+
"@epam/ai-dial-ui-kit": "^0.15.0-dev.39"
|
|
26
26
|
},
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|
package/utils/attachment.d.ts
CHANGED
|
@@ -13,12 +13,15 @@ export declare const mimeTypesToExtensionLabels: (types: string[], wildcardLabel
|
|
|
13
13
|
* Matching rules:
|
|
14
14
|
* - Exact match: `'application/pdf'` allows `'application/pdf'`.
|
|
15
15
|
* - Wildcard prefix: `'image/*'` allows any `'image/...'` MIME type.
|
|
16
|
+
* - Alias match: both sides are canonicalized, so `'text/json'` allows
|
|
17
|
+
* `'application/json'` and vice versa.
|
|
18
|
+
* - Parameters and letter case are ignored on both sides.
|
|
16
19
|
*
|
|
17
20
|
* Returns `false` when `allowedTypes` is empty (no attachment types allowed).
|
|
18
21
|
*/
|
|
19
22
|
export declare const isMimeTypeAllowed: (mimeType: string, allowedTypes: string[]) => boolean;
|
|
20
|
-
/** Returns the Tabler icon component for a given MIME content type, or `IconFile` for unknown types. */
|
|
21
|
-
export declare const getAttachmentIcon: (
|
|
23
|
+
/** Returns the Tabler icon component for a given MIME content type, or `IconFile` for unknown types. Aliases resolve to their canonical type first. */
|
|
24
|
+
export declare const getAttachmentIcon: (rawContentType: string) => Icon;
|
|
22
25
|
/** Derives a bare file extension (no leading dot) from a MIME type, e.g. `'application/pdf'` -> `'pdf'`. */
|
|
23
26
|
export declare const getExtFromContentType: (contentType: string) => string | undefined;
|
|
24
27
|
/** Derives the display state (icons, labels, color classes) an AttachmentCard needs to render a given attachment. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/utils/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../src/utils/attachment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAgChD,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,QAAO,MACgB,CAAC;AAEzD,4GAA4G;AAC5G,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAItD,CAAC;AAcF,uHAAuH;AACvH,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,EAAE,EACf,iBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAwB,KAC5D,MAoBF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,cAAc,MAAM,EAAE,KACrB,OAsBF,CAAC;AAEF,uJAAuJ;AACvJ,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,MAAM,KAAG,IAkF1D,CAAC;AAUF,4GAA4G;AAC5G,eAAO,MAAM,qBAAqB,GAChC,aAAa,MAAM,KAClB,MAAM,GAAG,SAUX,CAAC;AA6BF,qHAAqH;AACrH,eAAO,MAAM,sBAAsB,GACjC,YAAY,iBAAiB,EAC7B,aAAY,oBAAyB,KACpC,mBAiBF,CAAC"}
|