@autobe/ui 0.19.1 → 0.20.0
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/lib/AutoBeChatUploadSendButton.d.ts +15 -0
- package/lib/AutoBeChatUploadSendButton.js +38 -0
- package/lib/AutoBeChatUploadSendButton.js.map +1 -0
- package/lib/AutoBeFileUploadBox.d.ts +10 -0
- package/lib/AutoBeFileUploadBox.js +68 -0
- package/lib/AutoBeFileUploadBox.js.map +1 -0
- package/lib/AutoBeVoiceRecoderButton.d.ts +11 -0
- package/lib/AutoBeVoiceRecoderButton.js +58 -0
- package/lib/AutoBeVoiceRecoderButton.js.map +1 -0
- package/lib/events/AutoBeCompleteEventMovie.d.ts +7 -0
- package/lib/events/AutoBeCompleteEventMovie.js +210 -0
- package/lib/events/AutoBeCompleteEventMovie.js.map +1 -0
- package/lib/events/AutoBeProgressEventMovie.js +2 -61
- package/lib/events/AutoBeProgressEventMovie.js.map +1 -1
- package/lib/events/AutoBeScenarioEventMovie.js +2 -44
- package/lib/events/AutoBeScenarioEventMovie.js.map +1 -1
- package/lib/events/AutoBeValidateEventMovie.d.ts +6 -0
- package/lib/events/AutoBeValidateEventMovie.js +115 -0
- package/lib/events/AutoBeValidateEventMovie.js.map +1 -0
- package/lib/events/common/CollapsibleEventGroup.d.ts +28 -0
- package/lib/events/common/CollapsibleEventGroup.js +89 -0
- package/lib/events/common/CollapsibleEventGroup.js.map +1 -0
- package/lib/events/common/EventCard.d.ts +13 -0
- package/lib/events/common/EventCard.js +43 -0
- package/lib/events/common/EventCard.js.map +1 -0
- package/lib/events/common/EventContent.d.ts +11 -0
- package/lib/events/common/EventContent.js +14 -0
- package/lib/events/common/EventContent.js.map +1 -0
- package/lib/events/common/EventHeader.d.ts +15 -0
- package/lib/events/common/EventHeader.js +41 -0
- package/lib/events/common/EventHeader.js.map +1 -0
- package/lib/events/common/EventIcon.d.ts +11 -0
- package/lib/events/common/EventIcon.js +50 -0
- package/lib/events/common/EventIcon.js.map +1 -0
- package/lib/events/common/ProgressBar.d.ts +14 -0
- package/lib/events/common/ProgressBar.js +33 -0
- package/lib/events/common/ProgressBar.js.map +1 -0
- package/lib/events/common/index.d.ts +6 -0
- package/lib/events/common/index.js +16 -0
- package/lib/events/common/index.js.map +1 -0
- package/lib/events/groups/ValidateEventGroup.d.ts +12 -0
- package/lib/events/groups/ValidateEventGroup.js +78 -0
- package/lib/events/groups/ValidateEventGroup.js.map +1 -0
- package/lib/events/groups/index.d.ts +1 -0
- package/lib/events/groups/index.js +6 -0
- package/lib/events/groups/index.js.map +1 -0
- package/lib/events/index.d.ts +5 -0
- package/lib/events/index.js +25 -1
- package/lib/events/index.js.map +1 -1
- package/lib/events/utils/eventGrouper.d.ts +20 -0
- package/lib/events/utils/eventGrouper.js +74 -0
- package/lib/events/utils/eventGrouper.js.map +1 -0
- package/lib/events/utils/index.d.ts +1 -0
- package/lib/events/utils/index.js +6 -0
- package/lib/events/utils/index.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +7 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/AutoBeFileUploader.d.ts +28 -0
- package/lib/utils/AutoBeFileUploader.js +237 -0
- package/lib/utils/AutoBeFileUploader.js.map +1 -0
- package/lib/utils/AutoBeVoiceRecorder.d.ts +7 -0
- package/lib/utils/AutoBeVoiceRecorder.js +94 -0
- package/lib/utils/AutoBeVoiceRecorder.js.map +1 -0
- package/lib/utils/index.d.ts +3 -0
- package/lib/utils/index.js +20 -0
- package/lib/utils/index.js.map +1 -0
- package/package.json +17 -2
- package/src/AutoBeChatUploadSendButton.tsx +66 -0
- package/src/AutoBeFileUploadBox.tsx +124 -0
- package/src/AutoBeVoiceRecoderButton.tsx +100 -0
- package/src/events/AutoBeCompleteEventMovie.tsx +402 -0
- package/src/events/AutoBeProgressEventMovie.tsx +12 -125
- package/src/events/AutoBeScenarioEventMovie.tsx +5 -93
- package/src/events/AutoBeValidateEventMovie.tsx +326 -0
- package/src/events/README.md +169 -0
- package/src/events/common/CollapsibleEventGroup.tsx +220 -0
- package/src/events/common/EventCard.tsx +61 -0
- package/src/events/common/EventContent.tsx +31 -0
- package/src/events/common/EventHeader.tsx +85 -0
- package/src/events/common/EventIcon.tsx +82 -0
- package/src/events/common/ProgressBar.tsx +63 -0
- package/src/events/common/index.ts +13 -0
- package/src/events/groups/ValidateEventGroup.tsx +150 -0
- package/src/events/groups/index.ts +4 -0
- package/src/events/index.ts +14 -0
- package/src/events/utils/eventGrouper.tsx +118 -0
- package/src/events/utils/index.ts +1 -0
- package/src/index.ts +6 -0
- package/src/utils/AutoBeFileUploader.ts +279 -0
- package/src/utils/AutoBeVoiceRecorder.ts +95 -0
- package/src/utils/index.ts +3 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidateEventGroup = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const AutoBeValidateEventMovie_1 = require("../AutoBeValidateEventMovie");
|
|
6
|
+
const CollapsibleEventGroup_1 = require("../common/CollapsibleEventGroup");
|
|
7
|
+
/**
|
|
8
|
+
* Specialized group component for validation events Shows validation summary
|
|
9
|
+
* and error statistics
|
|
10
|
+
*/
|
|
11
|
+
const ValidateEventGroup = (props) => {
|
|
12
|
+
const { events, defaultCollapsed = true } = props;
|
|
13
|
+
if (events.length === 0) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
// Calculate validation statistics
|
|
17
|
+
const errorEvents = events.filter((event) => {
|
|
18
|
+
switch (event.type) {
|
|
19
|
+
case "prismaValidate":
|
|
20
|
+
case "realizeValidate":
|
|
21
|
+
case "prismaInsufficient":
|
|
22
|
+
return true;
|
|
23
|
+
case "testValidate":
|
|
24
|
+
case "realizeAuthorizationValidate":
|
|
25
|
+
return event.result.type !== "success";
|
|
26
|
+
case "interfaceOperationsReview":
|
|
27
|
+
case "interfaceComplement":
|
|
28
|
+
return false;
|
|
29
|
+
default:
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}).length;
|
|
33
|
+
const successEvents = events.length - errorEvents;
|
|
34
|
+
const eventTypes = Array.from(new Set(events.map((e) => e.type)));
|
|
35
|
+
const renderSummary = (events) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: ["Validation and review events from various components", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("strong", { children: "Success Rate:" }), " ", events.length > 0
|
|
36
|
+
? Math.round((successEvents / events.length) * 100)
|
|
37
|
+
: 0, "%", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("strong", { children: "Successful:" }), " ", successEvents, " events", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("strong", { children: "Failed/Issues:" }), " ", errorEvents, " events", (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("strong", { children: "Event Types:" }), " ", eventTypes.join(", "), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
38
|
+
display: "flex",
|
|
39
|
+
gap: "0.5rem",
|
|
40
|
+
alignItems: "center",
|
|
41
|
+
}, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
|
|
42
|
+
display: "flex",
|
|
43
|
+
alignItems: "center",
|
|
44
|
+
gap: "0.25rem",
|
|
45
|
+
}, children: [(0, jsx_runtime_1.jsx)("div", { style: {
|
|
46
|
+
width: "12px",
|
|
47
|
+
height: "12px",
|
|
48
|
+
backgroundColor: "#4caf50",
|
|
49
|
+
borderRadius: "2px",
|
|
50
|
+
} }), (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: "0.75rem" }, children: ["Success: ", successEvents] })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
|
|
51
|
+
display: "flex",
|
|
52
|
+
alignItems: "center",
|
|
53
|
+
gap: "0.25rem",
|
|
54
|
+
}, children: [(0, jsx_runtime_1.jsx)("div", { style: {
|
|
55
|
+
width: "12px",
|
|
56
|
+
height: "12px",
|
|
57
|
+
backgroundColor: "#ef4444",
|
|
58
|
+
borderRadius: "2px",
|
|
59
|
+
} }), (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: "0.75rem" }, children: ["Issues: ", errorEvents] })] })] })] }));
|
|
60
|
+
const getGroupIconType = () => {
|
|
61
|
+
if (errorEvents === 0)
|
|
62
|
+
return "success"; // All successful
|
|
63
|
+
if (successEvents === 0)
|
|
64
|
+
return "error"; // All failed
|
|
65
|
+
return "warning"; // Mixed results
|
|
66
|
+
};
|
|
67
|
+
const getGroupVariant = () => {
|
|
68
|
+
if (errorEvents === 0)
|
|
69
|
+
return "success"; // All successful
|
|
70
|
+
if (successEvents === 0)
|
|
71
|
+
return "error"; // All failed
|
|
72
|
+
return "warning"; // Mixed results
|
|
73
|
+
};
|
|
74
|
+
return ((0, jsx_runtime_1.jsx)(CollapsibleEventGroup_1.CollapsibleEventGroup, { events: events, title: "Validation Events", iconType: getGroupIconType(), variant: getGroupVariant(), getTimestamp: (event) => event.created_at, renderEvent: (event) => (0, jsx_runtime_1.jsx)(AutoBeValidateEventMovie_1.AutoBeValidateEventMovie, { event: event }), renderSummary: renderSummary, defaultCollapsed: defaultCollapsed, description: "Validation and review events" }));
|
|
75
|
+
};
|
|
76
|
+
exports.ValidateEventGroup = ValidateEventGroup;
|
|
77
|
+
exports.default = exports.ValidateEventGroup;
|
|
78
|
+
//# sourceMappingURL=ValidateEventGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ValidateEventGroup.js","sourceRoot":"","sources":["../../../src/events/groups/ValidateEventGroup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ValidateEventGroup, type IValidateEventGroupProps, } from "./ValidateEventGroup";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidateEventGroup = void 0;
|
|
4
|
+
var ValidateEventGroup_1 = require("./ValidateEventGroup");
|
|
5
|
+
Object.defineProperty(exports, "ValidateEventGroup", { enumerable: true, get: function () { return ValidateEventGroup_1.ValidateEventGroup; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/groups/index.ts"],"names":[],"mappings":";;;AAAA,2DAG8B;AAF5B,wHAAA,kBAAkB,OAAA"}
|
package/lib/events/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
export { default as AutoBeStartEventMovie } from "./AutoBeStartEventMovie";
|
|
2
2
|
export { default as AutoBeScenarioEventMovie } from "./AutoBeScenarioEventMovie";
|
|
3
3
|
export { default as AutoBeProgressEventMovie } from "./AutoBeProgressEventMovie";
|
|
4
|
+
export { default as AutoBeValidateEventMovie } from "./AutoBeValidateEventMovie";
|
|
5
|
+
export { default as AutoBeCompleteEventMovie, type IAutoBeCompleteEventMovieProps, } from "./AutoBeCompleteEventMovie";
|
|
6
|
+
export * from "./common";
|
|
7
|
+
export * from "./groups";
|
|
8
|
+
export * from "./utils";
|
package/lib/events/index.js
CHANGED
|
@@ -1,13 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
18
|
};
|
|
5
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.AutoBeProgressEventMovie = exports.AutoBeScenarioEventMovie = exports.AutoBeStartEventMovie = void 0;
|
|
20
|
+
exports.AutoBeCompleteEventMovie = exports.AutoBeValidateEventMovie = exports.AutoBeProgressEventMovie = exports.AutoBeScenarioEventMovie = exports.AutoBeStartEventMovie = void 0;
|
|
7
21
|
var AutoBeStartEventMovie_1 = require("./AutoBeStartEventMovie");
|
|
8
22
|
Object.defineProperty(exports, "AutoBeStartEventMovie", { enumerable: true, get: function () { return __importDefault(AutoBeStartEventMovie_1).default; } });
|
|
9
23
|
var AutoBeScenarioEventMovie_1 = require("./AutoBeScenarioEventMovie");
|
|
10
24
|
Object.defineProperty(exports, "AutoBeScenarioEventMovie", { enumerable: true, get: function () { return __importDefault(AutoBeScenarioEventMovie_1).default; } });
|
|
11
25
|
var AutoBeProgressEventMovie_1 = require("./AutoBeProgressEventMovie");
|
|
12
26
|
Object.defineProperty(exports, "AutoBeProgressEventMovie", { enumerable: true, get: function () { return __importDefault(AutoBeProgressEventMovie_1).default; } });
|
|
27
|
+
var AutoBeValidateEventMovie_1 = require("./AutoBeValidateEventMovie");
|
|
28
|
+
Object.defineProperty(exports, "AutoBeValidateEventMovie", { enumerable: true, get: function () { return __importDefault(AutoBeValidateEventMovie_1).default; } });
|
|
29
|
+
var AutoBeCompleteEventMovie_1 = require("./AutoBeCompleteEventMovie");
|
|
30
|
+
Object.defineProperty(exports, "AutoBeCompleteEventMovie", { enumerable: true, get: function () { return __importDefault(AutoBeCompleteEventMovie_1).default; } });
|
|
31
|
+
// Common components
|
|
32
|
+
__exportStar(require("./common"), exports);
|
|
33
|
+
// Event groups
|
|
34
|
+
__exportStar(require("./groups"), exports);
|
|
35
|
+
// Utilities
|
|
36
|
+
__exportStar(require("./utils"), exports);
|
|
13
37
|
//# sourceMappingURL=index.js.map
|
package/lib/events/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AACzC,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAC5C,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAC5C,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAC5C,uEAGoC;AAFlC,qJAAA,OAAO,OAA4B;AAIrC,oBAAoB;AACpB,2CAAyB;AAEzB,eAAe;AACf,2CAAyB;AAEzB,YAAY;AACZ,0CAAwB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AutoBeEvent } from "@autobe/interface";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
/** Configuration for event grouping */
|
|
4
|
+
export interface IEventGrouperConfig {
|
|
5
|
+
/** Minimum number of events to form a group (default: 2) */
|
|
6
|
+
minGroupSize?: number;
|
|
7
|
+
/** Whether groups should be collapsed by default (default: true) */
|
|
8
|
+
defaultCollapsed?: boolean;
|
|
9
|
+
/** Whether to group events at all (default: true) */
|
|
10
|
+
enableGrouping?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Groups events by type and renders appropriate group components
|
|
14
|
+
*
|
|
15
|
+
* @param events Array of AutoBe events to group
|
|
16
|
+
* @param config Configuration options for grouping
|
|
17
|
+
* @returns Array of ReactNode components (grouped or individual)
|
|
18
|
+
*/
|
|
19
|
+
export declare function groupEvents(events: AutoBeEvent[], config?: IEventGrouperConfig): ReactNode[];
|
|
20
|
+
export default groupEvents;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupEvents = groupEvents;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const groups_1 = require("../groups");
|
|
6
|
+
/**
|
|
7
|
+
* Groups events by type and renders appropriate group components
|
|
8
|
+
*
|
|
9
|
+
* @param events Array of AutoBe events to group
|
|
10
|
+
* @param config Configuration options for grouping
|
|
11
|
+
* @returns Array of ReactNode components (grouped or individual)
|
|
12
|
+
*/
|
|
13
|
+
function groupEvents(events, config = {}) {
|
|
14
|
+
const { minGroupSize = 2, defaultCollapsed = true, enableGrouping = true, } = config;
|
|
15
|
+
if (!enableGrouping) {
|
|
16
|
+
// Return individual event components without grouping
|
|
17
|
+
return events.map((event, index) => ((0, jsx_runtime_1.jsx)("div", { children: renderIndividualEvent(event) }, `${event.type}-${index}`)));
|
|
18
|
+
}
|
|
19
|
+
// Group events by category
|
|
20
|
+
const groupedEvents = groupEventsByCategory(events);
|
|
21
|
+
const components = [];
|
|
22
|
+
// Validation Events
|
|
23
|
+
if (groupedEvents.validate.length >= minGroupSize) {
|
|
24
|
+
components.push((0, jsx_runtime_1.jsx)(groups_1.ValidateEventGroup, { events: groupedEvents.validate, defaultCollapsed: defaultCollapsed }, "validate-group"));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
groupedEvents.validate.forEach((event, index) => {
|
|
28
|
+
components.push((0, jsx_runtime_1.jsx)("div", { children: renderIndividualEvent(event) }, `validate-${index}`));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// All other events (ungrouped)
|
|
32
|
+
groupedEvents.other.forEach((event, index) => {
|
|
33
|
+
components.push((0, jsx_runtime_1.jsx)("div", { children: renderIndividualEvent(event) }, `other-${index}`));
|
|
34
|
+
});
|
|
35
|
+
return components;
|
|
36
|
+
}
|
|
37
|
+
/** Groups events by their category */
|
|
38
|
+
function groupEventsByCategory(events) {
|
|
39
|
+
const grouped = {
|
|
40
|
+
validate: [],
|
|
41
|
+
other: [],
|
|
42
|
+
};
|
|
43
|
+
events.forEach((event) => {
|
|
44
|
+
switch (event.type) {
|
|
45
|
+
// Validation events
|
|
46
|
+
case "prismaValidate":
|
|
47
|
+
case "testValidate":
|
|
48
|
+
case "realizeValidate":
|
|
49
|
+
case "realizeAuthorizationValidate":
|
|
50
|
+
case "prismaInsufficient":
|
|
51
|
+
case "interfaceComplement":
|
|
52
|
+
case "interfaceOperationsReview":
|
|
53
|
+
grouped.validate.push(event);
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
grouped.other.push(event);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return grouped;
|
|
61
|
+
}
|
|
62
|
+
/** Renders individual event components based on event type */
|
|
63
|
+
function renderIndividualEvent(event) {
|
|
64
|
+
// This would import and use the actual event components
|
|
65
|
+
// For now, returning a placeholder
|
|
66
|
+
return ((0, jsx_runtime_1.jsxs)("div", { style: {
|
|
67
|
+
padding: "1rem",
|
|
68
|
+
border: "1px solid #e2e8f0",
|
|
69
|
+
borderRadius: "0.5rem",
|
|
70
|
+
marginBottom: "0.5rem",
|
|
71
|
+
}, children: [(0, jsx_runtime_1.jsx)("strong", { children: event.type }), " - ", event.created_at] }));
|
|
72
|
+
}
|
|
73
|
+
exports.default = groupEvents;
|
|
74
|
+
//# sourceMappingURL=eventGrouper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventGrouper.js","sourceRoot":"","sources":["../../../src/events/utils/eventGrouper.tsx"],"names":[],"mappings":";;AAsBA,kCA8CC;;AAjED,sCAA+C;AAY/C;;;;;;GAMG;AACH,SAAgB,WAAW,CACzB,MAAqB,EACrB,SAA8B,EAAE;IAEhC,MAAM,EACJ,YAAY,GAAG,CAAC,EAChB,gBAAgB,GAAG,IAAI,EACvB,cAAc,GAAG,IAAI,GACtB,GAAG,MAAM,CAAC;IAEX,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,sDAAsD;QACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,0CAAqC,qBAAqB,CAAC,KAAK,CAAC,IAAvD,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,CAAsC,CACzE,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B;IAC3B,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,UAAU,GAAgB,EAAE,CAAC;IAEnC,oBAAoB;IACpB,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;QAClD,UAAU,CAAC,IAAI,CACb,uBAAC,2BAAkB,IAEjB,MAAM,EAAE,aAAa,CAAC,QAAQ,EAC9B,gBAAgB,EAAE,gBAAgB,IAF9B,gBAAgB,CAGpB,CACH,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC9C,UAAU,CAAC,IAAI,CACb,0CAAgC,qBAAqB,CAAC,KAAK,CAAC,IAAlD,YAAY,KAAK,EAAE,CAAsC,CACpE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IAC/B,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3C,UAAU,CAAC,IAAI,CACb,0CAA6B,qBAAqB,CAAC,KAAK,CAAC,IAA/C,SAAS,KAAK,EAAE,CAAsC,CACjE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,sCAAsC;AACtC,SAAS,qBAAqB,CAAC,MAAqB;IAClD,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,EAAW;QACrB,KAAK,EAAE,EAAmB;KAC3B,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,oBAAoB;YACpB,KAAK,gBAAgB,CAAC;YACtB,KAAK,cAAc,CAAC;YACpB,KAAK,iBAAiB,CAAC;YACvB,KAAK,8BAA8B,CAAC;YACpC,KAAK,oBAAoB,CAAC;YAC1B,KAAK,qBAAqB,CAAC;YAC3B,KAAK,2BAA2B;gBAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC7B,MAAM;YAER;gBACE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8DAA8D;AAC9D,SAAS,qBAAqB,CAAC,KAAkB;IAC/C,wDAAwD;IACxD,mCAAmC;IACnC,OAAO,CACL,iCACE,KAAK,EAAE;YACL,OAAO,EAAE,MAAM;YACf,MAAM,EAAE,mBAAmB;YAC3B,YAAY,EAAE,QAAQ;YACtB,YAAY,EAAE,QAAQ;SACvB,aAED,6CAAS,KAAK,CAAC,IAAI,GAAU,SAAI,KAAK,CAAC,UAAU,IAC7C,CACP,CAAC;AACJ,CAAC;AAED,kBAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { groupEvents, type IEventGrouperConfig } from "./eventGrouper";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.groupEvents = void 0;
|
|
4
|
+
var eventGrouper_1 = require("./eventGrouper");
|
|
5
|
+
Object.defineProperty(exports, "groupEvents", { enumerable: true, get: function () { return eventGrouper_1.groupEvents; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/events/utils/index.ts"],"names":[],"mappings":";;;AAAA,+CAAuE;AAA9D,2GAAA,WAAW,OAAA"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from "./events";
|
|
2
2
|
export { default as AutoBeAssistantMessageMovie } from "./AutoBeAssistantMessageMovie";
|
|
3
3
|
export { default as AutoBeUserMessageMovie } from "./AutoBeUserMessageMovie";
|
|
4
|
+
export { default as AutoBeFileUploadBox, type AutoBeFileUploadBox as IAutoBeFileUploadBox, } from "./AutoBeFileUploadBox";
|
|
4
5
|
export { default as ChatBubble } from "./common/ChatBubble";
|
|
6
|
+
export { AutoBeChatUploadSendButton } from "./AutoBeChatUploadSendButton";
|
|
5
7
|
export type { IChatBubbleProps, IContentRendererProps, } from "./common/ChatBubble";
|
|
8
|
+
export { AutoBeVoiceRecoderButton } from "./AutoBeVoiceRecoderButton";
|
package/lib/index.js
CHANGED
|
@@ -17,12 +17,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.ChatBubble = exports.AutoBeUserMessageMovie = exports.AutoBeAssistantMessageMovie = void 0;
|
|
20
|
+
exports.AutoBeVoiceRecoderButton = exports.AutoBeChatUploadSendButton = exports.ChatBubble = exports.AutoBeFileUploadBox = exports.AutoBeUserMessageMovie = exports.AutoBeAssistantMessageMovie = void 0;
|
|
21
21
|
__exportStar(require("./events"), exports);
|
|
22
22
|
var AutoBeAssistantMessageMovie_1 = require("./AutoBeAssistantMessageMovie");
|
|
23
23
|
Object.defineProperty(exports, "AutoBeAssistantMessageMovie", { enumerable: true, get: function () { return __importDefault(AutoBeAssistantMessageMovie_1).default; } });
|
|
24
24
|
var AutoBeUserMessageMovie_1 = require("./AutoBeUserMessageMovie");
|
|
25
25
|
Object.defineProperty(exports, "AutoBeUserMessageMovie", { enumerable: true, get: function () { return __importDefault(AutoBeUserMessageMovie_1).default; } });
|
|
26
|
+
var AutoBeFileUploadBox_1 = require("./AutoBeFileUploadBox");
|
|
27
|
+
Object.defineProperty(exports, "AutoBeFileUploadBox", { enumerable: true, get: function () { return __importDefault(AutoBeFileUploadBox_1).default; } });
|
|
26
28
|
var ChatBubble_1 = require("./common/ChatBubble");
|
|
27
29
|
Object.defineProperty(exports, "ChatBubble", { enumerable: true, get: function () { return __importDefault(ChatBubble_1).default; } });
|
|
30
|
+
var AutoBeChatUploadSendButton_1 = require("./AutoBeChatUploadSendButton");
|
|
31
|
+
Object.defineProperty(exports, "AutoBeChatUploadSendButton", { enumerable: true, get: function () { return AutoBeChatUploadSendButton_1.AutoBeChatUploadSendButton; } });
|
|
32
|
+
var AutoBeVoiceRecoderButton_1 = require("./AutoBeVoiceRecoderButton");
|
|
33
|
+
Object.defineProperty(exports, "AutoBeVoiceRecoderButton", { enumerable: true, get: function () { return AutoBeVoiceRecoderButton_1.AutoBeVoiceRecoderButton; } });
|
|
28
34
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6EAAuF;AAA9E,2JAAA,OAAO,OAA+B;AAC/C,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAC1C,kDAA4D;AAAnD,yHAAA,OAAO,OAAc"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6EAAuF;AAA9E,2JAAA,OAAO,OAA+B;AAC/C,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAC1C,6DAG+B;AAF7B,2IAAA,OAAO,OAAuB;AAGhC,kDAA4D;AAAnD,yHAAA,OAAO,OAAc;AAC9B,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AAKnC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AutoBeUserMessageAudioContent, AutoBeUserMessageFileContent, AutoBeUserMessageImageContent } from "@autobe/interface";
|
|
2
|
+
export declare namespace AutoBeFileUploader {
|
|
3
|
+
interface IConfig {
|
|
4
|
+
supportAudio?: boolean;
|
|
5
|
+
file?: (file: File) => Promise<{
|
|
6
|
+
id: string;
|
|
7
|
+
}>;
|
|
8
|
+
image?: (file: File) => Promise<{
|
|
9
|
+
url: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export const isValidFileExtension: (filename: string, supportAudio: boolean, hasFileUploadAPI: boolean) => boolean;
|
|
13
|
+
export const getAcceptAttribute: (supportAudio?: boolean, hasFileUploadAPI?: boolean) => string;
|
|
14
|
+
export const getMimeType: (filename: string) => string;
|
|
15
|
+
export const compose: (config: IConfig, file: File) => Promise<{
|
|
16
|
+
file: File;
|
|
17
|
+
content: AutoBeUserMessageImageContent;
|
|
18
|
+
} | {
|
|
19
|
+
file: File;
|
|
20
|
+
content: AutoBeUserMessageAudioContent;
|
|
21
|
+
} | {
|
|
22
|
+
file: File;
|
|
23
|
+
content: AutoBeUserMessageFileContent;
|
|
24
|
+
}>;
|
|
25
|
+
export const convertToBase64: (file: File) => Promise<string>;
|
|
26
|
+
export const readAsText: (file: File) => Promise<string>;
|
|
27
|
+
export {};
|
|
28
|
+
}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AutoBeFileUploader = void 0;
|
|
13
|
+
var AutoBeFileUploader;
|
|
14
|
+
(function (AutoBeFileUploader) {
|
|
15
|
+
AutoBeFileUploader.isValidFileExtension = (filename, supportAudio, hasFileUploadAPI) => {
|
|
16
|
+
const extension = filename
|
|
17
|
+
.toLowerCase()
|
|
18
|
+
.substring(filename.lastIndexOf("."));
|
|
19
|
+
const format = FORMATS[extension];
|
|
20
|
+
if (format === undefined)
|
|
21
|
+
return false;
|
|
22
|
+
else if (!supportAudio && format.category === "audio")
|
|
23
|
+
return false;
|
|
24
|
+
// Without file upload API, only support images, audio (if enabled), and PDF
|
|
25
|
+
if (!hasFileUploadAPI) {
|
|
26
|
+
if (format.category === "document")
|
|
27
|
+
return extension === ".pdf";
|
|
28
|
+
else if (format.category === "video")
|
|
29
|
+
return false;
|
|
30
|
+
const allowedCategories = ["image"];
|
|
31
|
+
if (supportAudio)
|
|
32
|
+
allowedCategories.push("audio");
|
|
33
|
+
return allowedCategories.includes(format.category);
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
};
|
|
37
|
+
AutoBeFileUploader.getAcceptAttribute = (supportAudio = false, hasFileUploadAPI = false) => {
|
|
38
|
+
const acceptParts = Object.values(FORMATS)
|
|
39
|
+
.filter((format) => {
|
|
40
|
+
// Audio filter
|
|
41
|
+
if (!supportAudio && format.category === "audio")
|
|
42
|
+
return false;
|
|
43
|
+
// Without file upload API, only allow images, audio (if enabled), and PDF
|
|
44
|
+
if (!hasFileUploadAPI) {
|
|
45
|
+
if (format.category === "image")
|
|
46
|
+
return true;
|
|
47
|
+
if (format.category === "audio" && supportAudio)
|
|
48
|
+
return true;
|
|
49
|
+
if (format.category === "document" && format.extension === ".pdf")
|
|
50
|
+
return true;
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
})
|
|
55
|
+
.map((format) => format.extension);
|
|
56
|
+
return acceptParts.join(",");
|
|
57
|
+
};
|
|
58
|
+
AutoBeFileUploader.getMimeType = (filename) => {
|
|
59
|
+
const extension = filename
|
|
60
|
+
.toLowerCase()
|
|
61
|
+
.substring(filename.lastIndexOf("."));
|
|
62
|
+
const format = FORMATS[extension];
|
|
63
|
+
return (format === null || format === void 0 ? void 0 : format.mimeType) || "application/octet-stream";
|
|
64
|
+
};
|
|
65
|
+
AutoBeFileUploader.compose = (config, file) => __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
var _a;
|
|
67
|
+
// Validate file extension first
|
|
68
|
+
if (!AutoBeFileUploader.isValidFileExtension(file.name, (_a = config.supportAudio) !== null && _a !== void 0 ? _a : false, !!config.file))
|
|
69
|
+
throw new Error(`Unsupported file format: ${file.name}. ${!config.file ? "Only images, PDF, and audio files (if enabled) are supported without file upload API." : ""}`);
|
|
70
|
+
// Check for image files
|
|
71
|
+
const extension = file.name
|
|
72
|
+
.toLowerCase()
|
|
73
|
+
.substring(file.name.lastIndexOf("."));
|
|
74
|
+
const format = FORMATS[extension];
|
|
75
|
+
if ((format === null || format === void 0 ? void 0 : format.category) === "image")
|
|
76
|
+
return {
|
|
77
|
+
file,
|
|
78
|
+
content: yield composeImageContent(config, file),
|
|
79
|
+
};
|
|
80
|
+
else if (config.supportAudio &&
|
|
81
|
+
(format === null || format === void 0 ? void 0 : format.category) === "audio" &&
|
|
82
|
+
AUDIO_MIME_VARIANTS.includes(file.type))
|
|
83
|
+
return {
|
|
84
|
+
file,
|
|
85
|
+
content: yield composeAudioContent(file),
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
file,
|
|
89
|
+
content: yield composeFileContent(config, file),
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
AutoBeFileUploader.convertToBase64 = (file) => new Promise((resolve, reject) => {
|
|
93
|
+
const reader = new FileReader();
|
|
94
|
+
reader.onload = () => {
|
|
95
|
+
let data = reader.result;
|
|
96
|
+
// If browser couldn't determine MIME type properly, replace with correct one
|
|
97
|
+
if (data.startsWith("data:application/octet-stream") ||
|
|
98
|
+
data.startsWith("data:;")) {
|
|
99
|
+
const mimeType = AutoBeFileUploader.getMimeType(file.name);
|
|
100
|
+
data = data.replace(/^data:[^;]*/, `data:${mimeType}`);
|
|
101
|
+
}
|
|
102
|
+
resolve(data);
|
|
103
|
+
};
|
|
104
|
+
reader.onerror = reject;
|
|
105
|
+
reader.readAsDataURL(file);
|
|
106
|
+
});
|
|
107
|
+
AutoBeFileUploader.readAsText = (file) => new Promise((resolve, reject) => {
|
|
108
|
+
const reader = new FileReader();
|
|
109
|
+
reader.onload = () => {
|
|
110
|
+
const text = reader.result;
|
|
111
|
+
// Convert text to base64
|
|
112
|
+
const base64 = btoa(unescape(encodeURIComponent(text)));
|
|
113
|
+
resolve(base64);
|
|
114
|
+
};
|
|
115
|
+
reader.onerror = reject;
|
|
116
|
+
reader.readAsText(file);
|
|
117
|
+
});
|
|
118
|
+
const composeImageContent = (config, file) => __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
return ({
|
|
120
|
+
type: "image",
|
|
121
|
+
image: config.image
|
|
122
|
+
? {
|
|
123
|
+
type: "url",
|
|
124
|
+
url: yield config.image(file).then((res) => res.url),
|
|
125
|
+
}
|
|
126
|
+
: {
|
|
127
|
+
type: "base64",
|
|
128
|
+
data: yield AutoBeFileUploader.convertToBase64(file),
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
const composeAudioContent = (file) => __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
return ({
|
|
134
|
+
type: "audio",
|
|
135
|
+
data: (yield AutoBeFileUploader.convertToBase64(file)).split(",")[1],
|
|
136
|
+
format: file.type.includes("wav") ? "wav" : "mp3",
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
const composeFileContent = (config, file) => __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
// Get MIME type for the file
|
|
141
|
+
const mimeType = AutoBeFileUploader.getMimeType(file.name);
|
|
142
|
+
// If file upload API is available, use it
|
|
143
|
+
if (config.file) {
|
|
144
|
+
return {
|
|
145
|
+
type: "file",
|
|
146
|
+
file: {
|
|
147
|
+
type: "id",
|
|
148
|
+
id: yield config.file(file).then((res) => res.id),
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// If MIME type starts with text/, read as text and encode to base64 without data URL
|
|
153
|
+
if (mimeType.startsWith("text/")) {
|
|
154
|
+
return {
|
|
155
|
+
type: "file",
|
|
156
|
+
file: {
|
|
157
|
+
type: "base64",
|
|
158
|
+
name: file.name,
|
|
159
|
+
data: yield AutoBeFileUploader.readAsText(file),
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// For other files, use data URL format
|
|
164
|
+
return {
|
|
165
|
+
type: "file",
|
|
166
|
+
file: {
|
|
167
|
+
type: "base64",
|
|
168
|
+
name: file.name,
|
|
169
|
+
data: yield AutoBeFileUploader.convertToBase64(file),
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
});
|
|
173
|
+
})(AutoBeFileUploader || (exports.AutoBeFileUploader = AutoBeFileUploader = {}));
|
|
174
|
+
const FORMATS = {
|
|
175
|
+
// Images
|
|
176
|
+
".png": { extension: ".png", mimeType: "image/png", category: "image" },
|
|
177
|
+
".jpg": { extension: ".jpg", mimeType: "image/jpeg", category: "image" },
|
|
178
|
+
".jpeg": { extension: ".jpeg", mimeType: "image/jpeg", category: "image" },
|
|
179
|
+
".gif": { extension: ".gif", mimeType: "image/gif", category: "image" },
|
|
180
|
+
".webp": { extension: ".webp", mimeType: "image/webp", category: "image" },
|
|
181
|
+
// Audio
|
|
182
|
+
".mp3": { extension: ".mp3", mimeType: "audio/mpeg", category: "audio" },
|
|
183
|
+
".wav": { extension: ".wav", mimeType: "audio/wav", category: "audio" },
|
|
184
|
+
// Video
|
|
185
|
+
".mp4": { extension: ".mp4", mimeType: "video/mp4", category: "video" },
|
|
186
|
+
".mpeg": { extension: ".mpeg", mimeType: "video/mpeg", category: "video" },
|
|
187
|
+
".mov": { extension: ".mov", mimeType: "video/quicktime", category: "video" },
|
|
188
|
+
".avi": { extension: ".avi", mimeType: "video/x-msvideo", category: "video" },
|
|
189
|
+
".webm": { extension: ".webm", mimeType: "video/webm", category: "video" },
|
|
190
|
+
".flv": { extension: ".flv", mimeType: "video/x-flv", category: "video" },
|
|
191
|
+
".mkv": {
|
|
192
|
+
extension: ".mkv",
|
|
193
|
+
mimeType: "video/x-matroska",
|
|
194
|
+
category: "video",
|
|
195
|
+
},
|
|
196
|
+
".wmv": { extension: ".wmv", mimeType: "video/x-ms-wmv", category: "video" },
|
|
197
|
+
// Documents
|
|
198
|
+
".pdf": {
|
|
199
|
+
extension: ".pdf",
|
|
200
|
+
mimeType: "application/pdf",
|
|
201
|
+
category: "document",
|
|
202
|
+
},
|
|
203
|
+
".txt": { extension: ".txt", mimeType: "text/plain", category: "document" },
|
|
204
|
+
".md": { extension: ".md", mimeType: "text/plain", category: "document" },
|
|
205
|
+
".docx": {
|
|
206
|
+
extension: ".docx",
|
|
207
|
+
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
208
|
+
category: "document",
|
|
209
|
+
},
|
|
210
|
+
".html": { extension: ".html", mimeType: "text/html", category: "document" },
|
|
211
|
+
".json": {
|
|
212
|
+
extension: ".json",
|
|
213
|
+
mimeType: "application/json",
|
|
214
|
+
category: "document",
|
|
215
|
+
},
|
|
216
|
+
".csv": { extension: ".csv", mimeType: "text/csv", category: "document" },
|
|
217
|
+
".xml": {
|
|
218
|
+
extension: ".xml",
|
|
219
|
+
mimeType: "application/xml",
|
|
220
|
+
category: "document",
|
|
221
|
+
},
|
|
222
|
+
".rtf": {
|
|
223
|
+
extension: ".rtf",
|
|
224
|
+
mimeType: "application/rtf",
|
|
225
|
+
category: "document",
|
|
226
|
+
},
|
|
227
|
+
};
|
|
228
|
+
// Alternative MIME types for audio files that browsers might use
|
|
229
|
+
const AUDIO_MIME_VARIANTS = [
|
|
230
|
+
"audio/mpeg",
|
|
231
|
+
"audio/mp3",
|
|
232
|
+
"audio/wav",
|
|
233
|
+
"audio/x-wav",
|
|
234
|
+
"audio/wave",
|
|
235
|
+
"audio/x-wave",
|
|
236
|
+
];
|
|
237
|
+
//# sourceMappingURL=AutoBeFileUploader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoBeFileUploader.js","sourceRoot":"","sources":["../../src/utils/AutoBeFileUploader.ts"],"names":[],"mappings":"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"}
|