@box/activity-feed 1.15.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/LICENSE +379 -0
- package/README.md +57 -0
- package/dist/chunks/AssigneeList.js +125 -0
- package/dist/chunks/TaskDueDate.js +44 -0
- package/dist/chunks/TaskItemFooter.js +77 -0
- package/dist/chunks/TaskMessage.js +86 -0
- package/dist/chunks/TaskState.js +83 -0
- package/dist/chunks/activity-feed-list.js +21 -0
- package/dist/chunks/activity-feed.js +46 -0
- package/dist/chunks/app-activity-item.js +75 -0
- package/dist/chunks/editor.js +14 -0
- package/dist/chunks/empty-state.js +22 -0
- package/dist/chunks/header.js +63 -0
- package/dist/chunks/mock-collaboration-props.js +19379 -0
- package/dist/chunks/scroll.js +6 -0
- package/dist/chunks/task-button.js +44 -0
- package/dist/chunks/task-delete-confirmation-popover.js +50 -0
- package/dist/chunks/task-options-menu.js +58 -0
- package/dist/chunks/types.js +8 -0
- package/dist/chunks/version-item.module.js +10 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/lib/activity-feed.js +6 -0
- package/dist/esm/lib/components/activity-feed-list/activity-feed-list.js +2 -0
- package/dist/esm/lib/components/activity-feed-list/index.js +2 -0
- package/dist/esm/lib/components/app-activity-item/app-activity-item.js +2 -0
- package/dist/esm/lib/components/app-activity-item/index.js +2 -0
- package/dist/esm/lib/components/app-activity-item/messages.js +6 -0
- package/dist/esm/lib/components/editor/editor.js +2 -0
- package/dist/esm/lib/components/editor/index.js +2 -0
- package/dist/esm/lib/components/empty-state/empty-state.js +2 -0
- package/dist/esm/lib/components/empty-state/index.js +2 -0
- package/dist/esm/lib/components/empty-state/messages.js +12 -0
- package/dist/esm/lib/components/header/header-filter-options.js +30 -0
- package/dist/esm/lib/components/header/header.js +2 -0
- package/dist/esm/lib/components/header/messages.js +44 -0
- package/dist/esm/lib/components/header/task-button/index.js +2 -0
- package/dist/esm/lib/components/header/task-button/messages.js +24 -0
- package/dist/esm/lib/components/header/task-button/task-button.js +2 -0
- package/dist/esm/lib/components/task-item/TaskItem.js +81 -0
- package/dist/esm/lib/components/task-item/TaskItemFooter.js +2 -0
- package/dist/esm/lib/components/task-item/components/assignee-list/AssigneeList.js +2 -0
- package/dist/esm/lib/components/task-item/components/assignee-list/index.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-due-date/TaskDueDate.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-due-date/index.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-message/MessageRenderer.js +21 -0
- package/dist/esm/lib/components/task-item/components/task-message/TaskMessage.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-message/index.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-message/messages.js +24 -0
- package/dist/esm/lib/components/task-item/components/task-message/task-delete-confirmation-popover.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-message/task-options-menu.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-state/TaskState.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-state/index.js +2 -0
- package/dist/esm/lib/components/task-item/components/task-state/messages.js +20 -0
- package/dist/esm/lib/components/task-item/index.js +6 -0
- package/dist/esm/lib/components/task-item/messages.js +76 -0
- package/dist/esm/lib/components/task-item/utils/task-item-helpers.js +22 -0
- package/dist/esm/lib/components/user-avatar/getInitials.js +5 -0
- package/dist/esm/lib/components/user-avatar/index.js +2 -0
- package/dist/esm/lib/components/user-avatar/user-avatar.js +22 -0
- package/dist/esm/lib/components/version-item/delete-version-item/delete-version-item.js +41 -0
- package/dist/esm/lib/components/version-item/delete-version-item/index.js +2 -0
- package/dist/esm/lib/components/version-item/divider-version-item/divider-version-item.js +20 -0
- package/dist/esm/lib/components/version-item/divider-version-item/index.js +2 -0
- package/dist/esm/lib/components/version-item/index.js +2 -0
- package/dist/esm/lib/components/version-item/messages.js +36 -0
- package/dist/esm/lib/components/version-item/version-item.js +52 -0
- package/dist/esm/lib/scroll/create-activity-feed-scroll.js +18 -0
- package/dist/esm/lib/scroll/index.js +4 -0
- package/dist/esm/lib/scroll/use-activity-feed-scroll.js +7 -0
- package/dist/esm/lib/test-utils/mocks/index.js +6 -0
- package/dist/esm/lib/test-utils/mocks/mock-collaboration-props.js +2 -0
- package/dist/esm/lib/test-utils/mocks/mock-feed-items.js +187 -0
- package/dist/esm/lib/test-utils/mocks/mock-mention-context.js +7 -0
- package/dist/esm/lib/test-utils/mocks/mock-user-selector-props.js +9 -0
- package/dist/esm/lib/test-utils/mocks/mock-users.js +86 -0
- package/dist/esm/lib/types/ActivityItem.js +0 -0
- package/dist/esm/lib/types/common.js +0 -0
- package/dist/esm/lib/types/index.js +0 -0
- package/dist/i18n/bn-IN.js +55 -0
- package/dist/i18n/bn-IN.properties +106 -0
- package/dist/i18n/da-DK.js +55 -0
- package/dist/i18n/da-DK.properties +106 -0
- package/dist/i18n/de-DE.js +55 -0
- package/dist/i18n/de-DE.properties +106 -0
- package/dist/i18n/en-AU.js +55 -0
- package/dist/i18n/en-AU.properties +106 -0
- package/dist/i18n/en-CA.js +55 -0
- package/dist/i18n/en-CA.properties +106 -0
- package/dist/i18n/en-GB.js +55 -0
- package/dist/i18n/en-GB.properties +106 -0
- package/dist/i18n/en-US.js +55 -0
- package/dist/i18n/en-US.properties +106 -0
- package/dist/i18n/en-x-pseudo.js +55 -0
- package/dist/i18n/en-x-pseudo.properties +106 -0
- package/dist/i18n/es-419.js +55 -0
- package/dist/i18n/es-419.properties +106 -0
- package/dist/i18n/es-ES.js +55 -0
- package/dist/i18n/es-ES.properties +106 -0
- package/dist/i18n/fi-FI.js +55 -0
- package/dist/i18n/fi-FI.properties +106 -0
- package/dist/i18n/fr-CA.js +55 -0
- package/dist/i18n/fr-CA.properties +106 -0
- package/dist/i18n/fr-FR.js +55 -0
- package/dist/i18n/fr-FR.properties +106 -0
- package/dist/i18n/hi-IN.js +55 -0
- package/dist/i18n/hi-IN.properties +106 -0
- package/dist/i18n/it-IT.js +55 -0
- package/dist/i18n/it-IT.properties +106 -0
- package/dist/i18n/ja-JP.js +55 -0
- package/dist/i18n/ja-JP.properties +106 -0
- package/dist/i18n/json/src/lib/components/app-activity-item/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/empty-state/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/header/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/header/task-button/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/task-item/components/task-message/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/task-item/components/task-state/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/task-item/messages.json +1 -0
- package/dist/i18n/json/src/lib/components/version-item/messages.json +1 -0
- package/dist/i18n/ko-KR.js +55 -0
- package/dist/i18n/ko-KR.properties +106 -0
- package/dist/i18n/nb-NO.js +55 -0
- package/dist/i18n/nb-NO.properties +106 -0
- package/dist/i18n/nl-NL.js +55 -0
- package/dist/i18n/nl-NL.properties +106 -0
- package/dist/i18n/pl-PL.js +55 -0
- package/dist/i18n/pl-PL.properties +106 -0
- package/dist/i18n/pt-BR.js +55 -0
- package/dist/i18n/pt-BR.properties +106 -0
- package/dist/i18n/ru-RU.js +55 -0
- package/dist/i18n/ru-RU.properties +106 -0
- package/dist/i18n/sv-SE.js +55 -0
- package/dist/i18n/sv-SE.properties +106 -0
- package/dist/i18n/tr-TR.js +55 -0
- package/dist/i18n/tr-TR.properties +106 -0
- package/dist/i18n/zh-CN.js +55 -0
- package/dist/i18n/zh-CN.properties +106 -0
- package/dist/i18n/zh-TW.js +55 -0
- package/dist/i18n/zh-TW.properties +106 -0
- package/dist/styles/AssigneeList.css +1 -0
- package/dist/styles/TaskDueDate.css +1 -0
- package/dist/styles/TaskItemFooter.css +1 -0
- package/dist/styles/TaskMessage.css +1 -0
- package/dist/styles/TaskState.css +1 -0
- package/dist/styles/activity-feed-list.css +1 -0
- package/dist/styles/activity-feed.css +1 -0
- package/dist/styles/app-activity-item.css +1 -0
- package/dist/styles/editor.css +1 -0
- package/dist/styles/empty-state.css +1 -0
- package/dist/styles/header.css +1 -0
- package/dist/styles/task-button.css +1 -0
- package/dist/styles/task-delete-confirmation-popover.css +1 -0
- package/dist/styles/task-options-menu.css +1 -0
- package/dist/styles/version-item.css +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/lib/activity-feed.d.ts +62 -0
- package/dist/types/lib/components/activity-feed-list/activity-feed-list.d.ts +7 -0
- package/dist/types/lib/components/activity-feed-list/index.d.ts +1 -0
- package/dist/types/lib/components/app-activity-item/app-activity-item.d.ts +13 -0
- package/dist/types/lib/components/app-activity-item/index.d.ts +1 -0
- package/dist/types/lib/components/app-activity-item/messages.d.ts +7 -0
- package/dist/types/lib/components/editor/editor.d.ts +3 -0
- package/dist/types/lib/components/editor/index.d.ts +1 -0
- package/dist/types/lib/components/empty-state/empty-state.d.ts +1 -0
- package/dist/types/lib/components/empty-state/index.d.ts +1 -0
- package/dist/types/lib/components/empty-state/messages.d.ts +12 -0
- package/dist/types/lib/components/header/header-filter-options.d.ts +16 -0
- package/dist/types/lib/components/header/header.d.ts +49 -0
- package/dist/types/lib/components/header/messages.d.ts +52 -0
- package/dist/types/lib/components/header/stories/shared.d.ts +13 -0
- package/dist/types/lib/components/header/task-button/index.d.ts +1 -0
- package/dist/types/lib/components/header/task-button/messages.d.ts +27 -0
- package/dist/types/lib/components/header/task-button/task-button.d.ts +8 -0
- package/dist/types/lib/components/task-item/TaskItem.d.ts +3 -0
- package/dist/types/lib/components/task-item/TaskItemFooter.d.ts +19 -0
- package/dist/types/lib/components/task-item/components/assignee-list/AssigneeList.d.ts +11 -0
- package/dist/types/lib/components/task-item/components/assignee-list/index.d.ts +1 -0
- package/dist/types/lib/components/task-item/components/task-due-date/TaskDueDate.d.ts +5 -0
- package/dist/types/lib/components/task-item/components/task-due-date/index.d.ts +1 -0
- package/dist/types/lib/components/task-item/components/task-message/MessageRenderer.d.ts +6 -0
- package/dist/types/lib/components/task-item/components/task-message/TaskMessage.d.ts +16 -0
- package/dist/types/lib/components/task-item/components/task-message/index.d.ts +3 -0
- package/dist/types/lib/components/task-item/components/task-message/messages.d.ts +28 -0
- package/dist/types/lib/components/task-item/components/task-message/task-delete-confirmation-popover.d.ts +11 -0
- package/dist/types/lib/components/task-item/components/task-message/task-options-menu.d.ts +13 -0
- package/dist/types/lib/components/task-item/components/task-message/types.d.ts +19 -0
- package/dist/types/lib/components/task-item/components/task-state/TaskState.d.ts +28 -0
- package/dist/types/lib/components/task-item/components/task-state/index.d.ts +2 -0
- package/dist/types/lib/components/task-item/components/task-state/messages.d.ts +23 -0
- package/dist/types/lib/components/task-item/index.d.ts +12 -0
- package/dist/types/lib/components/task-item/messages.d.ts +93 -0
- package/dist/types/lib/components/task-item/types.d.ts +106 -0
- package/dist/types/lib/components/task-item/utils/task-item-helpers.d.ts +4 -0
- package/dist/types/lib/components/user-avatar/getInitials.d.ts +1 -0
- package/dist/types/lib/components/user-avatar/index.d.ts +1 -0
- package/dist/types/lib/components/user-avatar/user-avatar.d.ts +11 -0
- package/dist/types/lib/components/version-item/delete-version-item/delete-version-item.d.ts +8 -0
- package/dist/types/lib/components/version-item/delete-version-item/index.d.ts +1 -0
- package/dist/types/lib/components/version-item/divider-version-item/divider-version-item.d.ts +5 -0
- package/dist/types/lib/components/version-item/divider-version-item/index.d.ts +1 -0
- package/dist/types/lib/components/version-item/index.d.ts +1 -0
- package/dist/types/lib/components/version-item/messages.d.ts +42 -0
- package/dist/types/lib/components/version-item/version-item.d.ts +23 -0
- package/dist/types/lib/scroll/create-activity-feed-scroll.d.ts +2 -0
- package/dist/types/lib/scroll/index.d.ts +4 -0
- package/dist/types/lib/scroll/types.d.ts +10 -0
- package/dist/types/lib/scroll/use-activity-feed-scroll.d.ts +6 -0
- package/dist/types/lib/stories/map-activity-item.d.ts +18 -0
- package/dist/types/lib/stories/shared.d.ts +15 -0
- package/dist/types/lib/test-utils/button-utils.d.ts +14 -0
- package/dist/types/lib/test-utils/index.d.ts +1 -0
- package/dist/types/lib/test-utils/mocks/index.d.ts +5 -0
- package/dist/types/lib/test-utils/mocks/mock-collaboration-props.d.ts +9 -0
- package/dist/types/lib/test-utils/mocks/mock-feed-items.d.ts +20 -0
- package/dist/types/lib/test-utils/mocks/mock-mention-context.d.ts +2 -0
- package/dist/types/lib/test-utils/mocks/mock-user-selector-props.d.ts +2 -0
- package/dist/types/lib/test-utils/mocks/mock-users.d.ts +55 -0
- package/dist/types/lib/test-utils/text-utils.d.ts +3 -0
- package/dist/types/lib/types/ActivityItem.d.ts +145 -0
- package/dist/types/lib/types/common.d.ts +82 -0
- package/dist/types/lib/types/index.d.ts +3 -0
- package/package.json +56 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { defineMessages as e } from "react-intl";
|
|
2
|
+
var t = e({
|
|
3
|
+
taskLabel: {
|
|
4
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskLabel",
|
|
5
|
+
defaultMessage: "Task"
|
|
6
|
+
},
|
|
7
|
+
approvalTaskLabel: {
|
|
8
|
+
id: "groupSharedFeatures.activityFeed.taskCard.approvalTaskLabel",
|
|
9
|
+
defaultMessage: "Approval Task"
|
|
10
|
+
},
|
|
11
|
+
taskEditMenuItem: {
|
|
12
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskEditMenuItem",
|
|
13
|
+
defaultMessage: "Modify task"
|
|
14
|
+
},
|
|
15
|
+
taskDeleteMenuItem: {
|
|
16
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskDeleteMenuItem",
|
|
17
|
+
defaultMessage: "Delete task"
|
|
18
|
+
},
|
|
19
|
+
taskCompleteAction: {
|
|
20
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskCompleteAction",
|
|
21
|
+
defaultMessage: "Mark as Complete"
|
|
22
|
+
},
|
|
23
|
+
taskApproveAction: {
|
|
24
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskApproveAction",
|
|
25
|
+
defaultMessage: "Approve"
|
|
26
|
+
},
|
|
27
|
+
taskRejectAction: {
|
|
28
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskRejectAction",
|
|
29
|
+
defaultMessage: "Reject"
|
|
30
|
+
},
|
|
31
|
+
taskViewDetailsAction: {
|
|
32
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskViewDetailsAction",
|
|
33
|
+
defaultMessage: "View Task Details"
|
|
34
|
+
},
|
|
35
|
+
taskDueDateLabel: {
|
|
36
|
+
id: "groupSharedFeatures.activityFeed.taskCard.taskDueDateLabel",
|
|
37
|
+
defaultMessage: "Due {monthDay} {time}"
|
|
38
|
+
},
|
|
39
|
+
assigneeRowStatusCompleted: {
|
|
40
|
+
id: "groupSharedFeatures.activityFeed.taskCard.assigneeRowStatusCompleted",
|
|
41
|
+
defaultMessage: "Completed"
|
|
42
|
+
},
|
|
43
|
+
assigneeRowStatusApproved: {
|
|
44
|
+
id: "groupSharedFeatures.activityFeed.taskCard.assigneeRowStatusApproved",
|
|
45
|
+
defaultMessage: "Approved"
|
|
46
|
+
},
|
|
47
|
+
assigneeRowStatusRejected: {
|
|
48
|
+
id: "groupSharedFeatures.activityFeed.taskCard.assigneeRowStatusRejected",
|
|
49
|
+
defaultMessage: "Rejected"
|
|
50
|
+
},
|
|
51
|
+
showMoreAssignees: {
|
|
52
|
+
id: "groupSharedFeatures.activityFeed.taskCard.showMoreAssignees",
|
|
53
|
+
defaultMessage: "Show {count} More"
|
|
54
|
+
},
|
|
55
|
+
showMoreAssigneesApproximate: {
|
|
56
|
+
id: "groupSharedFeatures.activityFeed.taskCard.showMoreAssigneesApproximate",
|
|
57
|
+
defaultMessage: "Show {count}+ More"
|
|
58
|
+
},
|
|
59
|
+
showMore: {
|
|
60
|
+
id: "groupSharedFeatures.activityFeed.taskCard.showMore",
|
|
61
|
+
defaultMessage: "Show More"
|
|
62
|
+
},
|
|
63
|
+
showLessAssignees: {
|
|
64
|
+
id: "groupSharedFeatures.activityFeed.taskCard.showLessAssignees",
|
|
65
|
+
defaultMessage: "Show Less"
|
|
66
|
+
},
|
|
67
|
+
loadingAssignees: {
|
|
68
|
+
id: "groupSharedFeatures.activityFeed.taskCard.loadingAssignees",
|
|
69
|
+
defaultMessage: "Loading..."
|
|
70
|
+
},
|
|
71
|
+
loadAssigneesError: {
|
|
72
|
+
id: "groupSharedFeatures.activityFeed.taskCard.loadAssigneesError",
|
|
73
|
+
defaultMessage: "Failed to load assignees. Try again."
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
export { t as default };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
var e = (e) => e ? {
|
|
2
|
+
type: "doc",
|
|
3
|
+
content: e.split("\n").map((e) => ({
|
|
4
|
+
type: "paragraph",
|
|
5
|
+
content: e ? [{
|
|
6
|
+
type: "text",
|
|
7
|
+
text: e
|
|
8
|
+
}] : []
|
|
9
|
+
}))
|
|
10
|
+
} : {
|
|
11
|
+
type: "doc",
|
|
12
|
+
content: [{
|
|
13
|
+
type: "paragraph",
|
|
14
|
+
content: []
|
|
15
|
+
}]
|
|
16
|
+
}, t = (e, t) => ({
|
|
17
|
+
avatarUrl: t?.(e.id) ?? e.avatarUrl,
|
|
18
|
+
email: e.email ?? "",
|
|
19
|
+
id: e.id,
|
|
20
|
+
name: e.name
|
|
21
|
+
});
|
|
22
|
+
export { t as taskAuthorToTaskMessageAuthor, e as taskDescriptionToDocument };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { getInitials as e } from "./getInitials.js";
|
|
2
|
+
import { Avatar as t, IconBadge as n } from "@box/blueprint-web";
|
|
3
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
4
|
+
function i({ user: i, size: a = "small" }) {
|
|
5
|
+
let { name: o, isExternal: s, id: c, avatarUrl: l } = i, u = l ?? "", d = e(o), f = /* @__PURE__ */ r(t, {
|
|
6
|
+
alt: o,
|
|
7
|
+
colorIndex: parseInt(c, 10) || 0,
|
|
8
|
+
size: a,
|
|
9
|
+
src: u,
|
|
10
|
+
text: d
|
|
11
|
+
}), p;
|
|
12
|
+
return p = a === "large" ? "medium" : a === "xsmall" ? "small" : a, s ? /* @__PURE__ */ r(n, {
|
|
13
|
+
offset: {
|
|
14
|
+
right: -4,
|
|
15
|
+
bottom: -2
|
|
16
|
+
},
|
|
17
|
+
size: p,
|
|
18
|
+
variant: "collaborator-external",
|
|
19
|
+
children: f
|
|
20
|
+
}) : f;
|
|
21
|
+
}
|
|
22
|
+
export { i as UserAvatar };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { t as e } from "../../../../../chunks/version-item.module.js";
|
|
2
|
+
import { messages as t } from "../messages.js";
|
|
3
|
+
import { Avatar as n, Text as r } from "@box/blueprint-web";
|
|
4
|
+
import { useIntl as i } from "react-intl";
|
|
5
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
+
import { ReadableTime as s } from "@box/readable-time";
|
|
7
|
+
var c = ({ authorName: c, avatarUrl: l, createdAt: u, id: d, versionNumber: f }) => {
|
|
8
|
+
let { formatMessage: p } = i(), m = parseInt(d, 10), h = Number.isNaN(m) ? 0 : m % 10, g = u ? t.versionDeleted : t.versionDeletedNoTimestamp, _ = {
|
|
9
|
+
authorName: /* @__PURE__ */ a(r, {
|
|
10
|
+
as: "span",
|
|
11
|
+
color: "textOnLightSecondary",
|
|
12
|
+
variant: "bodyDefaultSemibold",
|
|
13
|
+
children: c
|
|
14
|
+
}),
|
|
15
|
+
versionNumber: f
|
|
16
|
+
};
|
|
17
|
+
return u && (_.timestamp = /* @__PURE__ */ a(s, {
|
|
18
|
+
textProps: {
|
|
19
|
+
as: "span",
|
|
20
|
+
color: "textOnLightSecondary",
|
|
21
|
+
variant: "bodyDefault"
|
|
22
|
+
},
|
|
23
|
+
timestamp: u
|
|
24
|
+
})), /* @__PURE__ */ o("div", {
|
|
25
|
+
className: e.deleteItem,
|
|
26
|
+
children: [/* @__PURE__ */ a(n, {
|
|
27
|
+
alt: c ?? "",
|
|
28
|
+
colorIndex: h,
|
|
29
|
+
size: "small",
|
|
30
|
+
src: l ?? "",
|
|
31
|
+
text: c?.charAt(0) ?? ""
|
|
32
|
+
}), /* @__PURE__ */ a(r, {
|
|
33
|
+
as: "span",
|
|
34
|
+
className: e.deleteMessage,
|
|
35
|
+
color: "textOnLightSecondary",
|
|
36
|
+
variant: "bodyDefault",
|
|
37
|
+
children: p(g, _)
|
|
38
|
+
})]
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
export { c as DeleteVersionItem };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { t as e } from "../../../../../chunks/version-item.module.js";
|
|
2
|
+
import { Text as t } from "@box/blueprint-web";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
var i = ({ children: i }) => /* @__PURE__ */ r("div", {
|
|
5
|
+
className: e.versionItem,
|
|
6
|
+
children: [
|
|
7
|
+
/* @__PURE__ */ n("div", { className: e.line }),
|
|
8
|
+
/* @__PURE__ */ n("div", {
|
|
9
|
+
className: e.content,
|
|
10
|
+
children: /* @__PURE__ */ n(t, {
|
|
11
|
+
as: "span",
|
|
12
|
+
color: "textOnLightSecondary",
|
|
13
|
+
variant: "bodyDefaultSemibold",
|
|
14
|
+
children: i
|
|
15
|
+
})
|
|
16
|
+
}),
|
|
17
|
+
/* @__PURE__ */ n("div", { className: e.line })
|
|
18
|
+
]
|
|
19
|
+
});
|
|
20
|
+
export { i as DividerVersionItem };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { defineMessages as e } from "react-intl";
|
|
2
|
+
var t = e({
|
|
3
|
+
appPromoted: {
|
|
4
|
+
id: "groupSharedFeatures.activityFeed.versionItem.appPromoted",
|
|
5
|
+
defaultMessage: "{appName} Promoted: <badge>V{versionNumber}</badge>"
|
|
6
|
+
},
|
|
7
|
+
appRestored: {
|
|
8
|
+
id: "groupSharedFeatures.activityFeed.versionItem.appRestored",
|
|
9
|
+
defaultMessage: "{appName} Restored: <badge>V{versionNumber}</badge>"
|
|
10
|
+
},
|
|
11
|
+
appUploaded: {
|
|
12
|
+
id: "groupSharedFeatures.activityFeed.versionItem.appUploaded",
|
|
13
|
+
defaultMessage: "{appName} Uploaded: <badge>V{versionNumber}</badge>"
|
|
14
|
+
},
|
|
15
|
+
versionDeleted: {
|
|
16
|
+
id: "groupSharedFeatures.activityFeed.versionItem.versionDeleted",
|
|
17
|
+
defaultMessage: "{authorName} deleted V{versionNumber} · {timestamp}"
|
|
18
|
+
},
|
|
19
|
+
versionDeletedNoTimestamp: {
|
|
20
|
+
id: "groupSharedFeatures.activityFeed.versionItem.versionDeletedNoTimestamp",
|
|
21
|
+
defaultMessage: "{authorName} deleted V{versionNumber}"
|
|
22
|
+
},
|
|
23
|
+
versionPromoted: {
|
|
24
|
+
id: "groupSharedFeatures.activityFeed.versionItem.versionPromoted",
|
|
25
|
+
defaultMessage: "Version Promoted: <badge>V{versionNumber}</badge>"
|
|
26
|
+
},
|
|
27
|
+
versionRestored: {
|
|
28
|
+
id: "groupSharedFeatures.activityFeed.versionItem.versionRestored",
|
|
29
|
+
defaultMessage: "Version Restored: <badge>V{versionNumber}</badge>"
|
|
30
|
+
},
|
|
31
|
+
versionUploaded: {
|
|
32
|
+
id: "groupSharedFeatures.activityFeed.versionItem.versionUploaded",
|
|
33
|
+
defaultMessage: "Version Uploaded: <badge>V{versionNumber}</badge>"
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
export { t as messages };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { t as e } from "../../../../chunks/version-item.module.js";
|
|
2
|
+
import { messages as t } from "./messages.js";
|
|
3
|
+
import { DeleteVersionItem as n } from "./delete-version-item/delete-version-item.js";
|
|
4
|
+
import { DividerVersionItem as r } from "./divider-version-item/divider-version-item.js";
|
|
5
|
+
import { Text as i } from "@box/blueprint-web";
|
|
6
|
+
import { FormattedMessage as a } from "react-intl";
|
|
7
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
8
|
+
var s = {
|
|
9
|
+
promote: t.versionPromoted,
|
|
10
|
+
restore: t.versionRestored,
|
|
11
|
+
upload: t.versionUploaded
|
|
12
|
+
}, c = {
|
|
13
|
+
promote: t.appPromoted,
|
|
14
|
+
restore: t.appRestored,
|
|
15
|
+
upload: t.appUploaded
|
|
16
|
+
}, l = ({ actionType: t = "upload", appName: l, authorName: u, avatarUrl: d, createdAt: f, id: p, onVersionClick: m, versionNumber: h }) => {
|
|
17
|
+
if (t === "delete") return /* @__PURE__ */ o(n, {
|
|
18
|
+
authorName: u,
|
|
19
|
+
avatarUrl: d,
|
|
20
|
+
createdAt: f,
|
|
21
|
+
id: p,
|
|
22
|
+
versionNumber: h
|
|
23
|
+
});
|
|
24
|
+
let g = () => {
|
|
25
|
+
m?.({
|
|
26
|
+
id: p,
|
|
27
|
+
versionNumber: h
|
|
28
|
+
});
|
|
29
|
+
}, _ = l ? c[t] : s[t];
|
|
30
|
+
if (!_) return null;
|
|
31
|
+
let v = (t) => m ? /* @__PURE__ */ o("button", {
|
|
32
|
+
className: e.badgeButton,
|
|
33
|
+
onClick: g,
|
|
34
|
+
type: "button",
|
|
35
|
+
children: t
|
|
36
|
+
}) : /* @__PURE__ */ o(i, {
|
|
37
|
+
as: "span",
|
|
38
|
+
className: e.badge,
|
|
39
|
+
color: "textOnLightSecondary",
|
|
40
|
+
variant: "labelBold",
|
|
41
|
+
children: t
|
|
42
|
+
});
|
|
43
|
+
return /* @__PURE__ */ o(r, { children: /* @__PURE__ */ o(a, {
|
|
44
|
+
..._,
|
|
45
|
+
values: {
|
|
46
|
+
appName: l,
|
|
47
|
+
badge: v,
|
|
48
|
+
versionNumber: h
|
|
49
|
+
}
|
|
50
|
+
}) });
|
|
51
|
+
};
|
|
52
|
+
export { l as VersionItem };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function e() {
|
|
2
|
+
let e = null, t = (t) => {
|
|
3
|
+
e = t;
|
|
4
|
+
}, n = { scrollTo: (t) => {
|
|
5
|
+
let n = e?.querySelector(`[data-activity-id="${CSS.escape(t)}"]`);
|
|
6
|
+
return n ? (n.scrollIntoView({
|
|
7
|
+
behavior: "smooth",
|
|
8
|
+
block: "nearest"
|
|
9
|
+
}), !0) : !1;
|
|
10
|
+
} };
|
|
11
|
+
return Object.defineProperty(n, "attachContainer", {
|
|
12
|
+
configurable: !0,
|
|
13
|
+
enumerable: !1,
|
|
14
|
+
value: t,
|
|
15
|
+
writable: !0
|
|
16
|
+
}), n;
|
|
17
|
+
}
|
|
18
|
+
export { e as createActivityFeedScroll };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createActivityFeedScroll as e } from "./create-activity-feed-scroll.js";
|
|
2
|
+
import { t } from "../../../chunks/scroll.js";
|
|
3
|
+
import { useActivityFeedScroll as n } from "./use-activity-feed-scroll.js";
|
|
4
|
+
export { e as createActivityFeedScroll, t as isAttachableActivityFeedScrollHandle, n as useActivityFeedScroll };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { t as e } from "../../../../chunks/mock-collaboration-props.js";
|
|
2
|
+
import { MOCK_ANNOTATION_THREAD as t, MOCK_APP_ACTIVITY_SHARED as n, MOCK_APP_ACTIVITY_WORKFLOW as r, MOCK_COMMENT_THREAD as i, MOCK_FEED_ITEMS as a, MOCK_RESOLVED_COMMENT_THREAD as o, MOCK_TASK_APPROVED as s, MOCK_TASK_IN_PROGRESS as c, MOCK_VERSION_RESTORED as l, MOCK_VERSION_UPLOADED as u } from "./mock-feed-items.js";
|
|
3
|
+
import { createMockMentionContext as d } from "./mock-mention-context.js";
|
|
4
|
+
import { MOCK_USERS as f, MOCK_USER_SELECTOR_USERS as p } from "./mock-users.js";
|
|
5
|
+
import { createDefaultUserSelectorProps as m } from "./mock-user-selector-props.js";
|
|
6
|
+
export { t as MOCK_ANNOTATION_THREAD, n as MOCK_APP_ACTIVITY_SHARED, r as MOCK_APP_ACTIVITY_WORKFLOW, i as MOCK_COMMENT_THREAD, a as MOCK_FEED_ITEMS, o as MOCK_RESOLVED_COMMENT_THREAD, s as MOCK_TASK_APPROVED, c as MOCK_TASK_IN_PROGRESS, f as MOCK_USERS, p as MOCK_USER_SELECTOR_USERS, l as MOCK_VERSION_RESTORED, u as MOCK_VERSION_UPLOADED, m as createDefaultUserSelectorProps, e as createMockCollaborationPopoverProps, d as createMockMentionContext };
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
var e = 60 * 1e3, t = 60 * e, n = 24 * t, r = 17096544e5, i = (e) => ({
|
|
2
|
+
content: [{
|
|
3
|
+
content: [{
|
|
4
|
+
text: e,
|
|
5
|
+
type: "text"
|
|
6
|
+
}],
|
|
7
|
+
type: "paragraph"
|
|
8
|
+
}],
|
|
9
|
+
type: "doc"
|
|
10
|
+
}), a = {
|
|
11
|
+
activityType: "comment",
|
|
12
|
+
author: {
|
|
13
|
+
avatarUrl: "https://cdn01.boxcdn.net/app-assets/aistudio/discover/avatars/lperry-avatar.png",
|
|
14
|
+
id: "101",
|
|
15
|
+
name: "Liam Perry"
|
|
16
|
+
},
|
|
17
|
+
body: i("Can we tighten the copy in the header? \"Comments\" feels generic."),
|
|
18
|
+
createdAt: r - 2 * t,
|
|
19
|
+
id: "comment-root",
|
|
20
|
+
permissions: {
|
|
21
|
+
canDelete: !0,
|
|
22
|
+
canEdit: !0,
|
|
23
|
+
canReply: !0,
|
|
24
|
+
canResolve: !0
|
|
25
|
+
},
|
|
26
|
+
replies: [{
|
|
27
|
+
activityType: "comment",
|
|
28
|
+
author: {
|
|
29
|
+
avatarUrl: "https://cdn01.boxcdn.net/app-assets/aistudio/discover/avatars/msyu-avatar.png",
|
|
30
|
+
id: "102",
|
|
31
|
+
name: "Mia Syu"
|
|
32
|
+
},
|
|
33
|
+
body: i("Agreed — proposed copy: \"Activity\"?"),
|
|
34
|
+
createdAt: r - 1 * t,
|
|
35
|
+
id: "comment-reply-1",
|
|
36
|
+
permissions: {
|
|
37
|
+
canDelete: !0,
|
|
38
|
+
canEdit: !0,
|
|
39
|
+
canReply: !0,
|
|
40
|
+
canResolve: !1
|
|
41
|
+
},
|
|
42
|
+
replies: []
|
|
43
|
+
}],
|
|
44
|
+
status: "open"
|
|
45
|
+
}, o = {
|
|
46
|
+
activityType: "comment",
|
|
47
|
+
author: {
|
|
48
|
+
id: "103",
|
|
49
|
+
name: "Bilal Khan"
|
|
50
|
+
},
|
|
51
|
+
body: i("Resolved last week — dropped the deprecated icon."),
|
|
52
|
+
createdAt: r - 7 * n,
|
|
53
|
+
id: "comment-resolved",
|
|
54
|
+
modifiedAt: r - 6 * n,
|
|
55
|
+
permissions: {
|
|
56
|
+
canDelete: !1,
|
|
57
|
+
canEdit: !1,
|
|
58
|
+
canReply: !1,
|
|
59
|
+
canResolve: !0
|
|
60
|
+
},
|
|
61
|
+
replies: [],
|
|
62
|
+
status: "resolved"
|
|
63
|
+
}, s = {
|
|
64
|
+
activityType: "annotation",
|
|
65
|
+
annotationTarget: {
|
|
66
|
+
page: 3,
|
|
67
|
+
type: "point"
|
|
68
|
+
},
|
|
69
|
+
author: {
|
|
70
|
+
id: "104",
|
|
71
|
+
name: "Priya Iyer"
|
|
72
|
+
},
|
|
73
|
+
body: i("Add a callout here pointing to the diagram."),
|
|
74
|
+
createdAt: r - 30 * e,
|
|
75
|
+
id: "annotation-1",
|
|
76
|
+
permissions: {
|
|
77
|
+
canDelete: !0,
|
|
78
|
+
canEdit: !0,
|
|
79
|
+
canReply: !0,
|
|
80
|
+
canResolve: !0
|
|
81
|
+
},
|
|
82
|
+
replies: [],
|
|
83
|
+
status: "open"
|
|
84
|
+
}, c = {
|
|
85
|
+
activityType: "task",
|
|
86
|
+
assignees: [{
|
|
87
|
+
avatarUrl: "https://cdn01.boxcdn.net/app-assets/aistudio/discover/avatars/bkus-avatar.png",
|
|
88
|
+
id: "999",
|
|
89
|
+
name: "You",
|
|
90
|
+
status: "NOT_STARTED"
|
|
91
|
+
}, {
|
|
92
|
+
id: "888",
|
|
93
|
+
isExternal: !0,
|
|
94
|
+
name: "External reviewer",
|
|
95
|
+
status: "NOT_STARTED"
|
|
96
|
+
}],
|
|
97
|
+
author: {
|
|
98
|
+
id: "203",
|
|
99
|
+
name: "Morgan Patel"
|
|
100
|
+
},
|
|
101
|
+
completionRule: "ALL_ASSIGNEES",
|
|
102
|
+
createdAt: r - 4 * t,
|
|
103
|
+
description: "Review the redlines and confirm whether the new contract clauses are acceptable.",
|
|
104
|
+
dueAt: r + 3 * n,
|
|
105
|
+
id: "task-in-progress",
|
|
106
|
+
name: "Review final contract",
|
|
107
|
+
permissions: {
|
|
108
|
+
canDelete: !0,
|
|
109
|
+
canUpdate: !0
|
|
110
|
+
},
|
|
111
|
+
status: "IN_PROGRESS"
|
|
112
|
+
}, l = {
|
|
113
|
+
activityType: "task",
|
|
114
|
+
assignees: [{
|
|
115
|
+
id: "999",
|
|
116
|
+
name: "You",
|
|
117
|
+
status: "APPROVED",
|
|
118
|
+
completedAt: r - 1 * n
|
|
119
|
+
}],
|
|
120
|
+
author: {
|
|
121
|
+
id: "204",
|
|
122
|
+
name: "Jamal Davis"
|
|
123
|
+
},
|
|
124
|
+
completionRule: "ANY_ASSIGNEE",
|
|
125
|
+
createdAt: r - 5 * n,
|
|
126
|
+
description: "Sign off on the v3 launch checklist.",
|
|
127
|
+
id: "task-approved",
|
|
128
|
+
name: "Approve launch checklist",
|
|
129
|
+
permissions: {
|
|
130
|
+
canDelete: !1,
|
|
131
|
+
canUpdate: !1
|
|
132
|
+
},
|
|
133
|
+
status: "APPROVED"
|
|
134
|
+
}, u = {
|
|
135
|
+
activityType: "app_activity",
|
|
136
|
+
appIconUrl: "https://cdn01.boxcdn.net/app-assets/preview/box-social.jpeg",
|
|
137
|
+
appName: "Box for Slack",
|
|
138
|
+
author: {
|
|
139
|
+
id: "301",
|
|
140
|
+
name: "Box for Slack"
|
|
141
|
+
},
|
|
142
|
+
createdAt: r - 6 * t,
|
|
143
|
+
id: "app-activity-shared",
|
|
144
|
+
renderedText: "shared this file in <a href=\"https://www.box.com\" data-resin-target=\"app_activity_external\" data-resin-action=\"click\">#design-reviews</a>"
|
|
145
|
+
}, d = {
|
|
146
|
+
activityType: "app_activity",
|
|
147
|
+
appIconUrl: "https://cdn01.boxcdn.net/app-assets/preview/box-social.jpeg",
|
|
148
|
+
appName: "Box Relay",
|
|
149
|
+
author: {
|
|
150
|
+
id: "302",
|
|
151
|
+
name: "Box Relay"
|
|
152
|
+
},
|
|
153
|
+
createdAt: r - 8 * t,
|
|
154
|
+
id: "app-activity-workflow",
|
|
155
|
+
renderedText: "completed workflow step \"Review and Approve\""
|
|
156
|
+
}, f = {
|
|
157
|
+
actionType: "upload",
|
|
158
|
+
activityType: "version",
|
|
159
|
+
author: {
|
|
160
|
+
id: "401",
|
|
161
|
+
name: "Priya Kumar"
|
|
162
|
+
},
|
|
163
|
+
createdAt: r - 12 * t,
|
|
164
|
+
id: "version-uploaded",
|
|
165
|
+
versionNumber: 28
|
|
166
|
+
}, p = {
|
|
167
|
+
actionType: "restore",
|
|
168
|
+
activityType: "version",
|
|
169
|
+
author: {
|
|
170
|
+
id: "402",
|
|
171
|
+
name: "Alex Rivera"
|
|
172
|
+
},
|
|
173
|
+
createdAt: r - 2 * n,
|
|
174
|
+
id: "version-restored",
|
|
175
|
+
versionNumber: 24
|
|
176
|
+
}, m = [
|
|
177
|
+
s,
|
|
178
|
+
a,
|
|
179
|
+
c,
|
|
180
|
+
f,
|
|
181
|
+
u,
|
|
182
|
+
l,
|
|
183
|
+
p,
|
|
184
|
+
o,
|
|
185
|
+
d
|
|
186
|
+
];
|
|
187
|
+
export { s as MOCK_ANNOTATION_THREAD, u as MOCK_APP_ACTIVITY_SHARED, d as MOCK_APP_ACTIVITY_WORKFLOW, a as MOCK_COMMENT_THREAD, m as MOCK_FEED_ITEMS, o as MOCK_RESOLVED_COMMENT_THREAD, l as MOCK_TASK_APPROVED, c as MOCK_TASK_IN_PROGRESS, p as MOCK_VERSION_RESTORED, f as MOCK_VERSION_UPLOADED };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MOCK_USER_SELECTOR_USERS as e } from "./mock-users.js";
|
|
2
|
+
var t = (t = e) => async (e) => (await new Promise((e) => setTimeout(e, 100)), t.filter((t) => t.name.toLowerCase().includes(e.toLowerCase()) || t.email.toLowerCase().includes(e.toLowerCase())).slice(0, 5)), n = () => async () => (await new Promise((e) => setTimeout(e, 50)), {}), r = () => ({
|
|
3
|
+
fetchUsers: t(),
|
|
4
|
+
fetchAvatarUrls: n(),
|
|
5
|
+
allowEmptyQuery: !0,
|
|
6
|
+
ariaRoleDescription: "User selector for mentions",
|
|
7
|
+
loadingAriaLabel: "Loading users..."
|
|
8
|
+
});
|
|
9
|
+
export { r as createDefaultUserSelectorProps };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
var e = {
|
|
2
|
+
LIAM_FOSTER: {
|
|
3
|
+
avatarUrl: "/img/avatar.svg",
|
|
4
|
+
email: "liam.foster@example.com",
|
|
5
|
+
id: 1,
|
|
6
|
+
name: "Liam Foster",
|
|
7
|
+
value: "Liam Foster",
|
|
8
|
+
isExternalUser: !1
|
|
9
|
+
},
|
|
10
|
+
SARAH_CHEN: {
|
|
11
|
+
email: "sarah.chen@example.com",
|
|
12
|
+
id: 2,
|
|
13
|
+
name: "Sarah Chen",
|
|
14
|
+
value: "Sarah Chen",
|
|
15
|
+
isExternalUser: !0
|
|
16
|
+
},
|
|
17
|
+
ALEX_RODRIGUEZ: {
|
|
18
|
+
email: "alex.rodriguez@example.com",
|
|
19
|
+
id: 3,
|
|
20
|
+
name: "Alex Rodriguez",
|
|
21
|
+
value: "Alex Rodriguez",
|
|
22
|
+
isExternalUser: !1
|
|
23
|
+
},
|
|
24
|
+
EMMA_WILSON: {
|
|
25
|
+
avatarUrl: "/img/avatar.svg",
|
|
26
|
+
email: "emma.wilson@external.com",
|
|
27
|
+
id: 4,
|
|
28
|
+
name: "Emma Wilson",
|
|
29
|
+
value: "Emma Wilson",
|
|
30
|
+
isExternalUser: !0
|
|
31
|
+
},
|
|
32
|
+
DAVID_THOMPSON: {
|
|
33
|
+
email: "david.thompson@example.com",
|
|
34
|
+
id: 12312312,
|
|
35
|
+
name: "David Thompson",
|
|
36
|
+
value: "David Thompson",
|
|
37
|
+
isExternalUser: !1
|
|
38
|
+
},
|
|
39
|
+
TEST_USER: {
|
|
40
|
+
id: 1213123,
|
|
41
|
+
name: "Test User",
|
|
42
|
+
email: "test@box.com",
|
|
43
|
+
isExternalUser: !1,
|
|
44
|
+
value: "Test User"
|
|
45
|
+
},
|
|
46
|
+
CURRENT_USER: {
|
|
47
|
+
email: "you@example.com",
|
|
48
|
+
id: 999,
|
|
49
|
+
name: "Test User",
|
|
50
|
+
value: "Test User",
|
|
51
|
+
isExternalUser: !1
|
|
52
|
+
}
|
|
53
|
+
}, t = [
|
|
54
|
+
{
|
|
55
|
+
email: "abc@box.com",
|
|
56
|
+
id: 12312312,
|
|
57
|
+
name: "A",
|
|
58
|
+
value: "A"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
email: "def@box.com",
|
|
62
|
+
id: 2324432,
|
|
63
|
+
name: "B",
|
|
64
|
+
value: "B"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
email: "test@email.com",
|
|
68
|
+
id: 343242323,
|
|
69
|
+
name: "Test User",
|
|
70
|
+
value: "Test User"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
email: "bartholomew@box.com",
|
|
74
|
+
id: 41231423,
|
|
75
|
+
name: "Bartholomew Constantine",
|
|
76
|
+
value: "Bartholomew Constantine"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
email: "lorem@box.com",
|
|
80
|
+
id: 5123123123,
|
|
81
|
+
name: "Lorem ipsum dolor sitamet",
|
|
82
|
+
value: "Lorem ipsum dolor sitamet",
|
|
83
|
+
isExternalUser: !0
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
export { e as MOCK_USERS, t as MOCK_USER_SELECTOR_USERS };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|