@box/threaded-annotations 1.94.10 → 1.95.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/dist/chunks/text-message.module.js +14 -0
- package/dist/esm/lib/components/v2/message-editor/editor-extensions/custom-mention/useMentionState.js +17 -14
- package/dist/esm/lib/components/v2/message-editor/message-editor.js +110 -94
- package/dist/esm/lib/components/v2/text-message/constants.js +2 -0
- package/dist/esm/lib/components/v2/text-message/messages.js +4 -0
- package/dist/esm/lib/components/v2/text-message/subcomponents/message-footer.js +62 -2
- package/dist/esm/lib/components/v2/text-message/subcomponents/message-renderer.js +47 -59
- package/dist/esm/lib/components/v2/text-message/subcomponents/truncate-document.js +113 -0
- package/dist/esm/lib/components/v2/text-message/subcomponents/url-segments.js +38 -0
- package/dist/esm/lib/components/v2/text-message/text-message.js +2 -1
- package/dist/i18n/bn-IN.js +1 -0
- package/dist/i18n/da-DK.js +1 -0
- package/dist/i18n/de-DE.js +1 -0
- package/dist/i18n/en-AU.js +1 -0
- package/dist/i18n/en-CA.js +1 -0
- package/dist/i18n/en-GB.js +1 -0
- package/dist/i18n/en-US.js +1 -0
- package/dist/i18n/en-US.properties +2 -0
- package/dist/i18n/en-x-pseudo.js +1 -0
- package/dist/i18n/es-419.js +1 -0
- package/dist/i18n/es-ES.js +1 -0
- package/dist/i18n/fi-FI.js +1 -0
- package/dist/i18n/fr-CA.js +1 -0
- package/dist/i18n/fr-FR.js +1 -0
- package/dist/i18n/hi-IN.js +1 -0
- package/dist/i18n/it-IT.js +1 -0
- package/dist/i18n/ja-JP.js +1 -0
- package/dist/i18n/json/src/lib/components/v2/text-message/messages.json +1 -1
- package/dist/i18n/ko-KR.js +1 -0
- package/dist/i18n/nb-NO.js +1 -0
- package/dist/i18n/nl-NL.js +1 -0
- package/dist/i18n/pl-PL.js +1 -0
- package/dist/i18n/pt-BR.js +1 -0
- package/dist/i18n/ru-RU.js +1 -0
- package/dist/i18n/sv-SE.js +1 -0
- package/dist/i18n/tr-TR.js +1 -0
- package/dist/i18n/zh-CN.js +1 -0
- package/dist/i18n/zh-TW.js +1 -0
- package/dist/styles/text-message2.css +1 -0
- package/dist/types/lib/components/v2/message-editor/editor-extensions/custom-mention/useMentionState.d.ts +1 -0
- package/dist/types/lib/components/v2/text-message/constants.d.ts +1 -0
- package/dist/types/lib/components/v2/text-message/messages.d.ts +5 -0
- package/dist/types/lib/components/v2/text-message/subcomponents/truncate-document.d.ts +3 -0
- package/dist/types/lib/components/v2/text-message/subcomponents/url-segments.d.ts +7 -0
- package/package.json +12 -12
- package/dist/chunks/message-footer.js +0 -72
- package/dist/styles/message-footer.css +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import '../styles/text-message2.css';var e = {
|
|
2
|
+
textMessage: "_textMessage_hmjtk_4",
|
|
3
|
+
contentWrapper: "_contentWrapper_hmjtk_13",
|
|
4
|
+
threadedIndicator: "_threadedIndicator_hmjtk_18",
|
|
5
|
+
threadedIndicatorHidden: "_threadedIndicatorHidden_hmjtk_34",
|
|
6
|
+
messageContent: "_messageContent_hmjtk_37",
|
|
7
|
+
inlineEditSlot: "_inlineEditSlot_hmjtk_44",
|
|
8
|
+
annotationBadgeWrapper: "_annotationBadgeWrapper_hmjtk_47",
|
|
9
|
+
messageFooter: "_messageFooter_hmjtk_56",
|
|
10
|
+
readableTimeWrapper: "_readableTimeWrapper_hmjtk_64",
|
|
11
|
+
replyButton: "_replyButton_hmjtk_68",
|
|
12
|
+
seeMoreButton: "_seeMoreButton_hmjtk_83"
|
|
13
|
+
};
|
|
14
|
+
export { e as t };
|
|
@@ -1,24 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
var
|
|
1
|
+
import { useCallback as e, useMemo as t, useState as n } from "react";
|
|
2
|
+
var r = /* @__PURE__ */ function(e) {
|
|
3
3
|
return e.ARROW_DOWN = "ArrowDown", e.ARROW_UP = "ArrowUp", e.ENTER = "Enter", e;
|
|
4
|
-
}({}),
|
|
5
|
-
let [
|
|
4
|
+
}({}), i = (i) => {
|
|
5
|
+
let [a, o] = n(!1), [s, c] = n(""), [l, u] = n(null);
|
|
6
6
|
return {
|
|
7
|
-
isActive:
|
|
8
|
-
query:
|
|
9
|
-
command:
|
|
10
|
-
suggestionCallbacks:
|
|
7
|
+
isActive: a,
|
|
8
|
+
query: s,
|
|
9
|
+
command: l,
|
|
10
|
+
suggestionCallbacks: t(() => ({
|
|
11
11
|
onSuggestionStart: (e) => {
|
|
12
|
-
|
|
12
|
+
o(!0), c(e.query), u(() => e.command);
|
|
13
13
|
},
|
|
14
14
|
onSuggestionUpdate: (e) => {
|
|
15
|
-
|
|
15
|
+
o(!0), c(e.query), u(() => e.command);
|
|
16
16
|
},
|
|
17
|
-
onSuggestionKeyDown: (e) =>
|
|
17
|
+
onSuggestionKeyDown: (e) => i.current ? e.event.key === r.ARROW_DOWN ? (i.current.selectNext(), !0) : e.event.key === r.ARROW_UP ? (i.current.selectPrevious(), !0) : e.event.key === r.ENTER ? (i.current.selectItem(), !0) : !1 : !1,
|
|
18
18
|
onSuggestionExit: () => {
|
|
19
|
-
|
|
19
|
+
o(!1);
|
|
20
20
|
}
|
|
21
|
-
}), [
|
|
21
|
+
}), [i]),
|
|
22
|
+
close: e(() => {
|
|
23
|
+
o(!1), c(""), u(null);
|
|
24
|
+
}, [])
|
|
22
25
|
};
|
|
23
26
|
};
|
|
24
|
-
export {
|
|
27
|
+
export { r as KeyEvents, i as useMentionState };
|
|
@@ -2,161 +2,177 @@ import { THREADED_ANNOTATIONS_PORTAL as e } from "../../../v2/constants.js";
|
|
|
2
2
|
import { useMentionContext as t } from "../../mention-component/mention-context.js";
|
|
3
3
|
import { CustomMention as n } from "./editor-extensions/custom-mention/custom-mention.js";
|
|
4
4
|
import { createSuggestionOptions as r } from "./editor-extensions/custom-mention/custom-mention-suggestions.js";
|
|
5
|
-
import { MENTION_PLUGIN_KEY as i, normalizeMentionPastedText as a, normalizeMentionTextInput as
|
|
6
|
-
import { useMentionState as
|
|
7
|
-
import { CustomParagraph as
|
|
8
|
-
import { useCharacterLimit as
|
|
9
|
-
import { useEditorContainerState as
|
|
10
|
-
import { useMentionUserSelection as
|
|
11
|
-
import { MessageEditorProvider as
|
|
12
|
-
import
|
|
13
|
-
import { t as
|
|
14
|
-
import { CharacterLimitCounter as
|
|
15
|
-
import { EditButtons as
|
|
16
|
-
import { ErrorMessage as
|
|
17
|
-
import { PostButton as
|
|
18
|
-
import { MessageEditorVariant as
|
|
19
|
-
import { VisuallyHidden as
|
|
20
|
-
import
|
|
21
|
-
import { useEffect as
|
|
22
|
-
import { useIntl as
|
|
23
|
-
import { Fragment as
|
|
24
|
-
import { UserSelectorHeadless as
|
|
25
|
-
import { EditorContent as
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
var E = (
|
|
30
|
-
let { disableComponent: E = !1, initialContent: D, isFirstAnnotation: O = !1, isReply:
|
|
5
|
+
import { MENTION_PLUGIN_KEY as i, normalizeMentionPastedText as a, normalizeMentionTextInput as ee } from "./editor-extensions/custom-mention/mention-trigger-normalization.js";
|
|
6
|
+
import { useMentionState as o } from "./editor-extensions/custom-mention/useMentionState.js";
|
|
7
|
+
import { CustomParagraph as te } from "./editor-extensions/custom-paragraph.js";
|
|
8
|
+
import { useCharacterLimit as ne } from "./hooks/useCharacterLimit.js";
|
|
9
|
+
import { useEditorContainerState as re } from "./hooks/useEditorContainerState.js";
|
|
10
|
+
import { useMentionUserSelection as ie } from "./hooks/useMentionUserSelection.js";
|
|
11
|
+
import { MessageEditorProvider as s, useMessageEditorContext as ae } from "./message-editor-context.js";
|
|
12
|
+
import c from "./messages.js";
|
|
13
|
+
import { t as l } from "../../../../../chunks/message-editor2.module.js";
|
|
14
|
+
import { CharacterLimitCounter as u } from "./subcomponents/character-limit-counter.js";
|
|
15
|
+
import { EditButtons as d } from "./subcomponents/edit-buttons.js";
|
|
16
|
+
import { ErrorMessage as f } from "./subcomponents/error-message.js";
|
|
17
|
+
import { PostButton as p } from "./subcomponents/post-button.js";
|
|
18
|
+
import { MessageEditorVariant as m } from "./message-editor.types.js";
|
|
19
|
+
import { VisuallyHidden as oe } from "@box/blueprint-web";
|
|
20
|
+
import h from "clsx";
|
|
21
|
+
import { useEffect as g, useMemo as se, useRef as _ } from "react";
|
|
22
|
+
import { useIntl as v } from "react-intl";
|
|
23
|
+
import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
|
|
24
|
+
import { UserSelectorHeadless as S } from "@box/user-selector";
|
|
25
|
+
import { EditorContent as C, useEditor as w } from "@tiptap/react";
|
|
26
|
+
import T from "@tiptap/extension-document";
|
|
27
|
+
import ce from "@tiptap/extension-text";
|
|
28
|
+
import le from "@tiptap/extension-placeholder";
|
|
29
|
+
var E = (s) => {
|
|
30
|
+
let { disableComponent: E = !1, initialContent: D, isFirstAnnotation: O = !1, isReply: ue = !1, maxCharacterCount: k, userSelectorProps: A } = s, j = _(null), M = _(null), N = _(null), P = v(), { errorMessage: F, isLoading: I } = ae(), { close: L, isActive: R, query: z, command: B, suggestionCallbacks: V } = o(j), { closeAllPopovers: H } = t(), U = P.formatMessage(ue ? c.placeholderReply : c.placeholderAddComment), W = s.variant === m.EDIT_MESSAGE, G = w({
|
|
31
31
|
extensions: [
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
T,
|
|
33
|
+
te,
|
|
34
|
+
le.configure({
|
|
35
35
|
placeholder: U,
|
|
36
36
|
showOnlyWhenEditable: !1
|
|
37
37
|
}),
|
|
38
|
-
|
|
38
|
+
ce,
|
|
39
39
|
n.configure({ suggestion: r(i, "@", V) })
|
|
40
40
|
],
|
|
41
41
|
autofocus: !0,
|
|
42
42
|
content: D,
|
|
43
43
|
editorProps: {
|
|
44
|
-
attributes: { class:
|
|
45
|
-
handleTextInput:
|
|
44
|
+
attributes: { class: l.editor },
|
|
45
|
+
handleTextInput: ee,
|
|
46
46
|
transformPastedText: a
|
|
47
47
|
},
|
|
48
48
|
onCreate: ({ editor: e }) => {
|
|
49
|
-
|
|
49
|
+
N.current = e.view.dom, e.commands.focus("end");
|
|
50
50
|
},
|
|
51
51
|
onUpdate: () => {
|
|
52
52
|
H?.();
|
|
53
53
|
}
|
|
54
|
-
}, [U]), { onUserSelected:
|
|
54
|
+
}, [U]), { onUserSelected: de } = ie(se(() => B && G && !G.isDestroyed ? {
|
|
55
55
|
command: B,
|
|
56
56
|
editor: G
|
|
57
|
-
} : null, [B, G])), { exceedsSingleLine:
|
|
58
|
-
|
|
57
|
+
} : null, [B, G])), { exceedsSingleLine: fe, hasScroll: K, isAtBottom: q } = re(M, G), J = ne(G, D, k), Y = W || !O || O && fe, pe = !G || G?.isEmpty, X = E || I, Z = (J?.excess ?? 0) > 0, Q = pe || X || Z, $ = J && J.excess > 0 && Y;
|
|
58
|
+
g(() => {
|
|
59
59
|
G && G.setEditable(!X);
|
|
60
|
-
}, [G, X]),
|
|
61
|
-
if (!Z || !
|
|
60
|
+
}, [G, X]), g(() => {
|
|
61
|
+
if (!Z || !M.current || !D) return;
|
|
62
62
|
let e = 0, t = requestAnimationFrame(() => {
|
|
63
63
|
e = requestAnimationFrame(() => {
|
|
64
|
-
|
|
64
|
+
M.current?.scrollTo({ top: M.current.scrollHeight });
|
|
65
65
|
});
|
|
66
66
|
});
|
|
67
67
|
return () => {
|
|
68
68
|
cancelAnimationFrame(t), cancelAnimationFrame(e);
|
|
69
69
|
};
|
|
70
|
-
}, [Z]),
|
|
70
|
+
}, [Z]), g(() => {
|
|
71
71
|
!G || D === void 0 || queueMicrotask(() => {
|
|
72
72
|
G.commands.setContent(D ?? "", !1), G.commands.focus("end");
|
|
73
73
|
});
|
|
74
|
-
}, [D])
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
}, [D]), g(() => {
|
|
75
|
+
if (!R) return;
|
|
76
|
+
let t = `[${Object.keys(e)[0]}]`, n = (e) => {
|
|
77
|
+
if (M.current?.contains(e)) return !0;
|
|
78
|
+
let n = document.querySelectorAll(t);
|
|
79
|
+
for (let t of n) if (t.contains(e)) return !0;
|
|
80
|
+
return !1;
|
|
81
|
+
}, r = (e) => {
|
|
82
|
+
let t = e.target;
|
|
83
|
+
!t || n(t) || L();
|
|
84
|
+
}, i = requestAnimationFrame(() => {
|
|
85
|
+
document.addEventListener("mousedown", r), document.addEventListener("focusin", r);
|
|
86
|
+
});
|
|
87
|
+
return () => {
|
|
88
|
+
cancelAnimationFrame(i), document.removeEventListener("mousedown", r), document.removeEventListener("focusin", r);
|
|
89
|
+
};
|
|
90
|
+
}, [L, R]);
|
|
91
|
+
let me = /* @__PURE__ */ b("div", { className: l.anchorElement });
|
|
92
|
+
return /* @__PURE__ */ b("div", {
|
|
77
93
|
"data-no-expand": !0,
|
|
78
|
-
className:
|
|
79
|
-
children: /* @__PURE__ */
|
|
80
|
-
className:
|
|
81
|
-
[
|
|
82
|
-
[
|
|
83
|
-
[
|
|
84
|
-
[
|
|
85
|
-
[
|
|
94
|
+
className: l.messageEditorWrapper,
|
|
95
|
+
children: /* @__PURE__ */ x("div", {
|
|
96
|
+
className: h(l.messageEditor, {
|
|
97
|
+
[l.editorHasScroll]: K,
|
|
98
|
+
[l.editorEditMode]: W,
|
|
99
|
+
[l.editorError]: F || Z,
|
|
100
|
+
[l.editorFirstAnnotation]: !W && O,
|
|
101
|
+
[l.editorCharacterLimitExceeded]: Z
|
|
86
102
|
}),
|
|
87
|
-
children: [/* @__PURE__ */
|
|
88
|
-
className:
|
|
89
|
-
children: [/* @__PURE__ */
|
|
90
|
-
ref:
|
|
91
|
-
className:
|
|
92
|
-
"aria-label":
|
|
93
|
-
children: [/* @__PURE__ */
|
|
94
|
-
"aria-label":
|
|
103
|
+
children: [/* @__PURE__ */ x("div", {
|
|
104
|
+
className: h(l.editorViewport, { [l.editorFullWidth]: Y }),
|
|
105
|
+
children: [/* @__PURE__ */ x("div", {
|
|
106
|
+
ref: M,
|
|
107
|
+
className: l.editorContainer,
|
|
108
|
+
"aria-label": P.formatMessage(c.scrollContainerAriaLabel),
|
|
109
|
+
children: [/* @__PURE__ */ b(C, {
|
|
110
|
+
"aria-label": P.formatMessage(c.editorContentAriaLabel),
|
|
95
111
|
editor: G
|
|
96
|
-
}), /* @__PURE__ */ S
|
|
97
|
-
ref:
|
|
98
|
-
inputElementRef:
|
|
99
|
-
onSelectedUserChange:
|
|
112
|
+
}), /* @__PURE__ */ b(S, {
|
|
113
|
+
ref: j,
|
|
114
|
+
inputElementRef: N,
|
|
115
|
+
onSelectedUserChange: de,
|
|
100
116
|
open: R,
|
|
101
|
-
rootElement:
|
|
117
|
+
rootElement: me,
|
|
102
118
|
value: z,
|
|
103
|
-
...
|
|
119
|
+
...A,
|
|
104
120
|
popoverContentContainerProps: {
|
|
105
|
-
...
|
|
121
|
+
...A.popoverContentContainerProps,
|
|
106
122
|
...e,
|
|
107
123
|
avoidCollisions: !0
|
|
108
124
|
}
|
|
109
125
|
})]
|
|
110
|
-
}), K && /* @__PURE__ */
|
|
111
|
-
className:
|
|
126
|
+
}), K && /* @__PURE__ */ b("div", {
|
|
127
|
+
className: h(l.editorFade, { [l.editorFadeHidden]: q }),
|
|
112
128
|
"aria-hidden": "true"
|
|
113
129
|
})]
|
|
114
|
-
}), /* @__PURE__ */
|
|
115
|
-
className:
|
|
116
|
-
children: /* @__PURE__ */
|
|
117
|
-
className:
|
|
118
|
-
[
|
|
119
|
-
[
|
|
130
|
+
}), /* @__PURE__ */ b("div", {
|
|
131
|
+
className: h(l.actionsWrapper),
|
|
132
|
+
children: /* @__PURE__ */ x("div", {
|
|
133
|
+
className: h(l.actionsWrapperInner, {
|
|
134
|
+
[l.scrolledToBottom]: q,
|
|
135
|
+
[l.characterLimitExceeded]: Z
|
|
120
136
|
}),
|
|
121
137
|
children: [
|
|
122
|
-
|
|
123
|
-
J && J.excess > 0 && !Y && /* @__PURE__ */
|
|
138
|
+
F && /* @__PURE__ */ b(f, { errorMessage: F }),
|
|
139
|
+
J && J.excess > 0 && !Y && /* @__PURE__ */ b(oe, {
|
|
124
140
|
role: "alert",
|
|
125
|
-
children:
|
|
141
|
+
children: P.formatMessage(c.characterLimitExceeded, { excess: J.excess })
|
|
126
142
|
}),
|
|
127
|
-
W ? /* @__PURE__ */
|
|
128
|
-
className:
|
|
129
|
-
children: [$ && /* @__PURE__ */
|
|
143
|
+
W ? /* @__PURE__ */ x("div", {
|
|
144
|
+
className: l.editActionsColumn,
|
|
145
|
+
children: [$ && /* @__PURE__ */ b(u, {
|
|
130
146
|
count: J.count,
|
|
131
147
|
excess: J.excess,
|
|
132
148
|
maxCount: J.maxCount
|
|
133
|
-
}), /* @__PURE__ */
|
|
134
|
-
className:
|
|
135
|
-
children: /* @__PURE__ */
|
|
149
|
+
}), /* @__PURE__ */ b("div", {
|
|
150
|
+
className: l.editActionsRow,
|
|
151
|
+
children: /* @__PURE__ */ b(d, {
|
|
136
152
|
disabled: Q,
|
|
137
153
|
getEditorJsonContent: () => G?.getJSON(),
|
|
138
|
-
onCancel:
|
|
139
|
-
onEditSuccess:
|
|
140
|
-
onSave:
|
|
141
|
-
onSaveError:
|
|
154
|
+
onCancel: s.onEditCancel,
|
|
155
|
+
onEditSuccess: s.onEditSuccess,
|
|
156
|
+
onSave: s.onSave,
|
|
157
|
+
onSaveError: s.onSaveError
|
|
142
158
|
})
|
|
143
159
|
})]
|
|
144
|
-
}) : /* @__PURE__ */
|
|
160
|
+
}) : /* @__PURE__ */ x(y, { children: [$ && /* @__PURE__ */ b(u, {
|
|
145
161
|
count: J.count,
|
|
146
162
|
excess: J.excess,
|
|
147
163
|
maxCount: J.maxCount
|
|
148
|
-
}), /* @__PURE__ */
|
|
164
|
+
}), /* @__PURE__ */ b(p, {
|
|
149
165
|
cleanEditor: () => G?.commands.setContent(""),
|
|
150
166
|
disabled: Q,
|
|
151
167
|
getEditorJsonContent: () => G?.getJSON(),
|
|
152
|
-
onPost:
|
|
153
|
-
onPostError:
|
|
154
|
-
onPostSuccess:
|
|
168
|
+
onPost: s.onPost,
|
|
169
|
+
onPostError: s.onPostError,
|
|
170
|
+
onPostSuccess: s.onPostSuccess
|
|
155
171
|
})] })
|
|
156
172
|
]
|
|
157
173
|
})
|
|
158
174
|
})]
|
|
159
175
|
})
|
|
160
176
|
});
|
|
161
|
-
}, D = (e) => /* @__PURE__ */
|
|
162
|
-
export { D as MessageEditor,
|
|
177
|
+
}, D = (e) => /* @__PURE__ */ b(s, { children: /* @__PURE__ */ b(E, { ...e }) });
|
|
178
|
+
export { D as MessageEditor, m as MessageEditorVariant };
|
|
@@ -16,6 +16,10 @@ var t = e({
|
|
|
16
16
|
id: "groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel",
|
|
17
17
|
defaultMessage: "Reply button"
|
|
18
18
|
},
|
|
19
|
+
seeMore: {
|
|
20
|
+
id: "groupSharedFeatures.threadedAnnotations.seeMore",
|
|
21
|
+
defaultMessage: "See More"
|
|
22
|
+
},
|
|
19
23
|
textMessageAriaLabel: {
|
|
20
24
|
id: "groupSharedFeatures.threadedAnnotations.textMessageAriaLabel",
|
|
21
25
|
defaultMessage: "Message text"
|
|
@@ -1,2 +1,62 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import e from "../messages.js";
|
|
2
|
+
import { t } from "../../../../../../chunks/text-message.module.js";
|
|
3
|
+
import { Button as n, Focusable as r, Text as i, Tooltip as a } from "@box/blueprint-web";
|
|
4
|
+
import { useIntl as o } from "react-intl";
|
|
5
|
+
import { getReadableTime as s } from "@box/readable-time";
|
|
6
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
+
var u = ({ createdAt: u, onReply: d, updatedAt: f }) => {
|
|
8
|
+
let p = o();
|
|
9
|
+
return /* @__PURE__ */ l("div", {
|
|
10
|
+
className: t.messageFooter,
|
|
11
|
+
children: [
|
|
12
|
+
/* @__PURE__ */ c(a, {
|
|
13
|
+
content: s({
|
|
14
|
+
alwaysShowTime: !0,
|
|
15
|
+
intl: p,
|
|
16
|
+
relativeThreshold: 0,
|
|
17
|
+
timestamp: u
|
|
18
|
+
}),
|
|
19
|
+
children: /* @__PURE__ */ c(r, {
|
|
20
|
+
className: t.readableTimeWrapper,
|
|
21
|
+
"data-no-expand": !0,
|
|
22
|
+
children: /* @__PURE__ */ c(i, {
|
|
23
|
+
as: "span",
|
|
24
|
+
color: "textOnLightSecondary",
|
|
25
|
+
variant: "bodySmall",
|
|
26
|
+
children: s({
|
|
27
|
+
intl: p,
|
|
28
|
+
timestamp: u
|
|
29
|
+
})
|
|
30
|
+
})
|
|
31
|
+
})
|
|
32
|
+
}),
|
|
33
|
+
f !== void 0 && /* @__PURE__ */ c(a, {
|
|
34
|
+
content: s({
|
|
35
|
+
alwaysShowTime: !0,
|
|
36
|
+
intl: p,
|
|
37
|
+
relativeThreshold: 0,
|
|
38
|
+
timestamp: f
|
|
39
|
+
}),
|
|
40
|
+
children: /* @__PURE__ */ c(r, {
|
|
41
|
+
"data-no-expand": !0,
|
|
42
|
+
children: /* @__PURE__ */ c(i, {
|
|
43
|
+
as: "span",
|
|
44
|
+
color: "textOnLightSecondary",
|
|
45
|
+
variant: "bodySmall",
|
|
46
|
+
children: p.formatMessage(e.edited)
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
}),
|
|
50
|
+
d && /* @__PURE__ */ c(n, {
|
|
51
|
+
"aria-label": p.formatMessage(e.replyButtonAriaLabel),
|
|
52
|
+
className: t.replyButton,
|
|
53
|
+
"data-no-expand": !0,
|
|
54
|
+
size: "x-small",
|
|
55
|
+
variant: "quaternary",
|
|
56
|
+
onClick: d,
|
|
57
|
+
children: p.formatMessage(e.reply)
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
export { u as MessageFooter };
|
|
@@ -1,75 +1,48 @@
|
|
|
1
1
|
import { t as e } from "../../../../../../chunks/mention-component.js";
|
|
2
2
|
import t from "../messages.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
let n = c[t];
|
|
13
|
-
if (n) {
|
|
14
|
-
let r = e.split(n).length - 1;
|
|
15
|
-
return e.split(t).length - 1 > r;
|
|
16
|
-
}
|
|
17
|
-
return !1;
|
|
18
|
-
}, u = (e) => {
|
|
19
|
-
let t = e;
|
|
20
|
-
for (; t.length > 0 && l(t);) t = t.slice(0, -1);
|
|
21
|
-
return t;
|
|
22
|
-
}, d = (e) => {
|
|
23
|
-
let t = Array.from(e.matchAll(o)).filter((e) => e.index !== void 0), n = [], r = 0;
|
|
24
|
-
for (let i of t) {
|
|
25
|
-
let t = i.index, a = i[0], o = u(a), s = t + o.length;
|
|
26
|
-
t > r && n.push({
|
|
27
|
-
type: "text",
|
|
28
|
-
value: e.slice(r, t)
|
|
29
|
-
}), n.push({
|
|
30
|
-
type: "url",
|
|
31
|
-
value: o
|
|
32
|
-
}), r = s;
|
|
33
|
-
}
|
|
34
|
-
return r < e.length && n.push({
|
|
35
|
-
type: "text",
|
|
36
|
-
value: e.slice(r)
|
|
37
|
-
}), n;
|
|
38
|
-
}, f = ({ node: t, index: n, paragraphIndex: r }) => {
|
|
3
|
+
import { t as n } from "../../../../../../chunks/text-message.module.js";
|
|
4
|
+
import "../constants.js";
|
|
5
|
+
import { splitTextIntoSegments as r } from "./url-segments.js";
|
|
6
|
+
import { getDocumentLength as i, truncateDocument as a } from "./truncate-document.js";
|
|
7
|
+
import { Link as o, Text as s, TextButton as c } from "@box/blueprint-web";
|
|
8
|
+
import { useState as l } from "react";
|
|
9
|
+
import { useIntl as u } from "react-intl";
|
|
10
|
+
import { jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
11
|
+
var p = ({ node: t, index: n, paragraphIndex: r }) => {
|
|
39
12
|
let i = `mention-${t.attrs.mentionedUserId}-${r}-${n}`;
|
|
40
|
-
return /* @__PURE__ */
|
|
13
|
+
return /* @__PURE__ */ d(e, {
|
|
41
14
|
authorId: t.attrs.authorId,
|
|
42
15
|
mentionedUserEmail: t.attrs.mentionedUserEmail,
|
|
43
16
|
mentionedUserId: t.attrs.mentionedUserId,
|
|
44
17
|
mentionedUserName: t.attrs.mentionedUserName,
|
|
45
18
|
mentionId: t.attrs.mentionId
|
|
46
19
|
}, i);
|
|
47
|
-
},
|
|
20
|
+
}, m = (e) => {
|
|
48
21
|
e.currentTarget.closest("[data-thread-expandable]") && e.preventDefault();
|
|
49
|
-
},
|
|
50
|
-
let c = `text-${e.text.substring(0, 20)}-${
|
|
51
|
-
return /* @__PURE__ */
|
|
52
|
-
"aria-label":
|
|
22
|
+
}, h = ({ node: e, index: n, paragraphIndex: i, intl: a }) => {
|
|
23
|
+
let c = `text-${e.text.substring(0, 20)}-${i}-${n}`, l = r(e.text);
|
|
24
|
+
return /* @__PURE__ */ d(s, {
|
|
25
|
+
"aria-label": a.formatMessage(t.textMessageAriaLabel),
|
|
53
26
|
as: "span",
|
|
54
27
|
color: "textOnLightDefault",
|
|
55
28
|
variant: "bodyDefault",
|
|
56
|
-
children: l.map((e, t) => e.type === "url" ? /* @__PURE__ */
|
|
29
|
+
children: l.map((e, t) => e.type === "url" ? /* @__PURE__ */ d(o, {
|
|
57
30
|
href: e.value,
|
|
58
31
|
inheritFont: !0,
|
|
59
32
|
rel: "noopener noreferrer",
|
|
60
33
|
target: "_blank",
|
|
61
|
-
onClick:
|
|
34
|
+
onClick: m,
|
|
62
35
|
children: e.value
|
|
63
36
|
}, `${c}-segment-${t}`) : e.value)
|
|
64
37
|
}, c);
|
|
65
|
-
},
|
|
38
|
+
}, g = ({ content: e, paragraphIndex: t, intl: n }) => e.map((e, r) => {
|
|
66
39
|
switch (e.type) {
|
|
67
|
-
case "mention": return
|
|
40
|
+
case "mention": return p({
|
|
68
41
|
node: e,
|
|
69
42
|
index: r,
|
|
70
43
|
paragraphIndex: t
|
|
71
44
|
});
|
|
72
|
-
case "text": return
|
|
45
|
+
case "text": return h({
|
|
73
46
|
node: e,
|
|
74
47
|
index: r,
|
|
75
48
|
paragraphIndex: t,
|
|
@@ -77,23 +50,38 @@ var o = /((?:(?:ht|f)tps?:\/\/)[\w.-]+(?::\d+)?(?:\/[\w\-.~+/#?&%=:[\]@!$'()*;,]
|
|
|
77
50
|
});
|
|
78
51
|
default: return [];
|
|
79
52
|
}
|
|
80
|
-
}),
|
|
81
|
-
let i = e.content || [],
|
|
82
|
-
return /* @__PURE__ */
|
|
53
|
+
}), _ = ({ paragraph: e, index: t, intl: n, inlineSuffix: r }) => {
|
|
54
|
+
let i = e.content || [], a = `paragraph-${t}`;
|
|
55
|
+
return /* @__PURE__ */ f(s, {
|
|
83
56
|
as: "p",
|
|
84
57
|
variant: "bodyDefault",
|
|
85
|
-
children: i.length > 0 ?
|
|
58
|
+
children: [i.length > 0 ? g({
|
|
86
59
|
content: i,
|
|
87
60
|
paragraphIndex: t,
|
|
88
61
|
intl: n
|
|
89
|
-
}) : /* @__PURE__ */
|
|
90
|
-
},
|
|
91
|
-
},
|
|
92
|
-
let
|
|
93
|
-
|
|
62
|
+
}) : /* @__PURE__ */ d("br", {}), r]
|
|
63
|
+
}, a);
|
|
64
|
+
}, v = ({ messageObject: e }) => {
|
|
65
|
+
let r = u(), [o, s] = l(!1);
|
|
66
|
+
if (!e.content || e.content.length === 0) return null;
|
|
67
|
+
let f = i(e), p = !o && f > 450, m = p ? a(e, 450) : e, h = m.content.length - 1;
|
|
68
|
+
for (let e = m.content.length - 1; e >= 0; --e) if ((m.content[e].content?.length ?? 0) > 0) {
|
|
69
|
+
h = e;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
let g = p ? /* @__PURE__ */ d(c, {
|
|
73
|
+
className: n.seeMoreButton,
|
|
74
|
+
color: "textOnLightLink",
|
|
75
|
+
"data-no-expand": !0,
|
|
76
|
+
onClick: () => s(!0),
|
|
77
|
+
variant: "bodyDefaultBold",
|
|
78
|
+
children: r.formatMessage(t.seeMore)
|
|
79
|
+
}) : null;
|
|
80
|
+
return m.content.map((e, t) => _({
|
|
94
81
|
paragraph: e,
|
|
95
|
-
index:
|
|
96
|
-
intl:
|
|
82
|
+
index: t,
|
|
83
|
+
intl: r,
|
|
84
|
+
inlineSuffix: t === h ? g : null
|
|
97
85
|
}));
|
|
98
86
|
};
|
|
99
|
-
export {
|
|
87
|
+
export { v as MessageRenderer };
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { splitTextIntoSegments as e } from "./url-segments.js";
|
|
2
|
+
var t = "…", n = (e) => `@${e.attrs.mentionedUserName}`.length, r = (e) => {
|
|
3
|
+
let t = 0;
|
|
4
|
+
for (let r of e.content) for (let e of r.content || []) e.type === "text" ? t += e.text.length : e.type === "mention" && (t += n(e));
|
|
5
|
+
return t;
|
|
6
|
+
}, i = (t) => {
|
|
7
|
+
let n = [];
|
|
8
|
+
return t.content.forEach((t, r) => {
|
|
9
|
+
r > 0 && n.push({
|
|
10
|
+
kind: "paragraph-break",
|
|
11
|
+
sourceParagraph: t
|
|
12
|
+
});
|
|
13
|
+
for (let r of t.content || []) if (r.type === "mention") n.push({
|
|
14
|
+
kind: "mention",
|
|
15
|
+
node: r
|
|
16
|
+
});
|
|
17
|
+
else if (r.type === "text") for (let t of e(r.text)) n.push({
|
|
18
|
+
kind: t.type,
|
|
19
|
+
value: t.value,
|
|
20
|
+
sourceNode: r
|
|
21
|
+
});
|
|
22
|
+
}), n;
|
|
23
|
+
}, a = (e, t) => {
|
|
24
|
+
let r = [], i = [], a = t, o = (e) => {
|
|
25
|
+
r.push(...i, e), i.length = 0;
|
|
26
|
+
};
|
|
27
|
+
for (let t of e) if (t.kind === "paragraph-break") i.push(t);
|
|
28
|
+
else if (a <= 0) return {
|
|
29
|
+
collected: r,
|
|
30
|
+
truncated: !0
|
|
31
|
+
};
|
|
32
|
+
else if (t.kind === "mention") {
|
|
33
|
+
let e = n(t.node);
|
|
34
|
+
if (e > a) return {
|
|
35
|
+
collected: r,
|
|
36
|
+
truncated: !0
|
|
37
|
+
};
|
|
38
|
+
o(t), a -= e;
|
|
39
|
+
} else if (t.kind === "url") {
|
|
40
|
+
if (t.value.length > a) return {
|
|
41
|
+
collected: r,
|
|
42
|
+
truncated: !0
|
|
43
|
+
};
|
|
44
|
+
o(t), a -= t.value.length;
|
|
45
|
+
} else if (t.value.length <= a) o(t), a -= t.value.length;
|
|
46
|
+
else return o({
|
|
47
|
+
...t,
|
|
48
|
+
value: t.value.slice(0, a)
|
|
49
|
+
}), {
|
|
50
|
+
collected: r,
|
|
51
|
+
truncated: !0
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
collected: r,
|
|
55
|
+
truncated: !1
|
|
56
|
+
};
|
|
57
|
+
}, o = (e, t) => {
|
|
58
|
+
let n = [], r = [], i = t, a = null, o = () => {
|
|
59
|
+
n.push({
|
|
60
|
+
...i,
|
|
61
|
+
content: r
|
|
62
|
+
}), r = [], a = null;
|
|
63
|
+
};
|
|
64
|
+
for (let t of e) if (t.kind === "paragraph-break") o(), i = t.sourceParagraph;
|
|
65
|
+
else if (t.kind === "mention") r.push(t.node), a = null;
|
|
66
|
+
else if (a === t.sourceNode) {
|
|
67
|
+
let e = r[r.length - 1];
|
|
68
|
+
r[r.length - 1] = {
|
|
69
|
+
...e,
|
|
70
|
+
text: e.text + t.value
|
|
71
|
+
};
|
|
72
|
+
} else r.push({
|
|
73
|
+
...t.sourceNode,
|
|
74
|
+
text: t.value
|
|
75
|
+
}), a = t.sourceNode;
|
|
76
|
+
return o(), n;
|
|
77
|
+
}, s = (e) => {
|
|
78
|
+
let n = -1;
|
|
79
|
+
for (let t = e.length - 1; t >= 0; --t) if ((e[t].content?.length ?? 0) > 0) {
|
|
80
|
+
n = t;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
if (n === -1) return [...e, {
|
|
84
|
+
type: "paragraph",
|
|
85
|
+
content: [{
|
|
86
|
+
type: "text",
|
|
87
|
+
text: t
|
|
88
|
+
}]
|
|
89
|
+
}];
|
|
90
|
+
let r = e[n].content || [], i = r[r.length - 1], a;
|
|
91
|
+
if (i?.type === "text") {
|
|
92
|
+
if (i.text.endsWith(t)) return e;
|
|
93
|
+
a = [...r.slice(0, -1), {
|
|
94
|
+
...i,
|
|
95
|
+
text: `${i.text}${t}`
|
|
96
|
+
}];
|
|
97
|
+
} else a = [...r, {
|
|
98
|
+
type: "text",
|
|
99
|
+
text: t
|
|
100
|
+
}];
|
|
101
|
+
return e.map((e, t) => t === n ? {
|
|
102
|
+
...e,
|
|
103
|
+
content: a
|
|
104
|
+
} : e);
|
|
105
|
+
}, c = (e, t) => {
|
|
106
|
+
if (e.content.length === 0) return e;
|
|
107
|
+
let { collected: n, truncated: r } = a(i(e), t), c = o(n, e.content[0]), l = r ? s(c) : c;
|
|
108
|
+
return {
|
|
109
|
+
...e,
|
|
110
|
+
content: l
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
export { r as getDocumentLength, c as truncateDocument };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
var e = /((?:(?:ht|f)tps?:\/\/)[\w.-]+(?::\d+)?(?:\/[\w\-.~+/#?&%=:[\]@!$'()*;,]*)?)/gi, t = /[.,;:!?。、!?;:,،؛؟]/, n = {
|
|
2
|
+
")": "(",
|
|
3
|
+
"]": "[",
|
|
4
|
+
")": "(",
|
|
5
|
+
"】": "【",
|
|
6
|
+
"」": "「",
|
|
7
|
+
"』": "『"
|
|
8
|
+
}, r = (e) => {
|
|
9
|
+
let r = e[e.length - 1];
|
|
10
|
+
if (t.test(r)) return !0;
|
|
11
|
+
let i = n[r];
|
|
12
|
+
if (i) {
|
|
13
|
+
let t = e.split(i).length - 1;
|
|
14
|
+
return e.split(r).length - 1 > t;
|
|
15
|
+
}
|
|
16
|
+
return !1;
|
|
17
|
+
}, i = (e) => {
|
|
18
|
+
let t = e;
|
|
19
|
+
for (; t.length > 0 && r(t);) t = t.slice(0, -1);
|
|
20
|
+
return t;
|
|
21
|
+
}, a = (t) => {
|
|
22
|
+
let n = Array.from(t.matchAll(e)).filter((e) => e.index !== void 0), r = [], a = 0;
|
|
23
|
+
for (let e of n) {
|
|
24
|
+
let n = e.index, o = i(e[0]), s = n + o.length;
|
|
25
|
+
n > a && r.push({
|
|
26
|
+
type: "text",
|
|
27
|
+
value: t.slice(a, n)
|
|
28
|
+
}), r.push({
|
|
29
|
+
type: "url",
|
|
30
|
+
value: o
|
|
31
|
+
}), a = s;
|
|
32
|
+
}
|
|
33
|
+
return a < t.length && r.push({
|
|
34
|
+
type: "text",
|
|
35
|
+
value: t.slice(a)
|
|
36
|
+
}), r;
|
|
37
|
+
};
|
|
38
|
+
export { e as URL_REGEX, a as splitTextIntoSegments, i as trimTrailingChars };
|
|
@@ -4,7 +4,8 @@ import { useThreadedAnnotationsContext as n } from "../../../v2/threaded-annotat
|
|
|
4
4
|
import { t as r } from "../../../../../chunks/annotation-badge.js";
|
|
5
5
|
import { MessageHeader as i } from "../message-header/message-header.js";
|
|
6
6
|
import a from "./messages.js";
|
|
7
|
-
import {
|
|
7
|
+
import { t as o } from "../../../../../chunks/text-message.module.js";
|
|
8
|
+
import { MessageFooter as s } from "./subcomponents/message-footer.js";
|
|
8
9
|
import { MessageRenderer as c } from "./subcomponents/message-renderer.js";
|
|
9
10
|
import l from "clsx";
|
|
10
11
|
import { useIntl as u } from "react-intl";
|
package/dist/i18n/bn-IN.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "উত্তর বোতাম",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "সমাধান করুন",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "রেজোলিউশন স্ট্যাটাস মেসেজ",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{#টি জবাব দেখান} other{আরও #টি জবাব দেখান}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "উত্তর বোতাম",
|
package/dist/i18n/da-DK.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Svar-knap",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Løs",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Meddelelse om løsningsstatus",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# mere svar} other{# flere svar}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Vis # svar} other{Vis # flere svar}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Svar-knap",
|
package/dist/i18n/de-DE.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Schaltfläche „Antworten“",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Auflösen",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Statusmeldung zur Problemlösung",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# weitere Antwort} other{# weitere Antworten}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{# Antwort anzeigen} other{# weitere Antworten anzeigen}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Schaltfläche „Antworten“",
|
package/dist/i18n/en-AU.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Reply button",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolve",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Resolution status message",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Show # reply} other{Show # more replies}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Reply button",
|
package/dist/i18n/en-CA.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Reply button",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolve",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Resolution status message",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count, plural, one {# more reply} other {# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number, plural, one {Show # reply} other {Show # more replies}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Reply button",
|
package/dist/i18n/en-GB.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Reply button",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolve",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Resolution status message",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Show # reply} other{Show # more replies}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Reply button",
|
package/dist/i18n/en-US.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Reply button",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolve",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Resolution status message",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count, plural, one {# more reply} other {# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number, plural, one {Show # reply} other {Show # more replies}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Reply button",
|
|
@@ -74,6 +74,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Reply button
|
|
|
74
74
|
groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Resolve
|
|
75
75
|
# Aria label for the resolution status message container
|
|
76
76
|
groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Resolution status message
|
|
77
|
+
# Button to expand a long comment that has been truncated
|
|
78
|
+
groupSharedFeatures.threadedAnnotations.seeMore = See More
|
|
77
79
|
# Button text to show more replies with count
|
|
78
80
|
groupSharedFeatures.threadedAnnotations.showMoreReplies = {count, plural, one {# more reply} other {# more replies}}
|
|
79
81
|
# Button text to show replies with count
|
package/dist/i18n/en-x-pseudo.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "⟦萬萬萬 ŔèΡĺý вµţťòи 國國國⟧",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "⟦萬萬 Ŕèśòĺνé 國國⟧",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "⟦萬萬萬萬萬萬萬 Ŕèśòĺµţìóи ŝťàŧùş méѕšáĝê 國國國國國國國⟧",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "⟦萬萬萬萬萬萬萬萬萬萬萬 {count, plural, one {# mòŕè ŗéΡĺý} other {# мóřê яëРļìēś}} 國國國國國國國國國國國⟧",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬 {number, plural, one {Śĥòŵ # ŕèΡĺý} other {Ŝħóω # môŗé řêРļìëś}} 國國國國國國國國國國國國國⟧",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "⟦萬萬萬 ŔèΡĺý вµţťòи 國國國⟧",
|
package/dist/i18n/es-419.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Botón Responder",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolver",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Mensaje de estado de resolución",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# respuesta más} other{# respuestas más}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Mostrar # respuesta} many{Mostrar # respuestas más} other{Mostrar # respuestas más}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Botón Responder",
|
package/dist/i18n/es-ES.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Botón Responder",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolver",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Mensaje de estado de resolución",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# respuesta más} other{# respuestas más}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Mostrar # respuesta} many{Mostrar # respuestas más} other{Mostrar # respuestas más}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Botón Responder",
|
package/dist/i18n/fi-FI.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Vastaa-painike",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Ratkaise",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Ratkaisun tilaviesti",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Näytä # vastaus} other{Näytä # vastausta}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Vastaa-painike",
|
package/dist/i18n/fr-CA.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Bouton Répondre",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Résoudre",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Message de statut de résolution",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# réponse de plus} other{# réponses de plus}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Montrer # réponse} many{Montrer # de réponse en plus} other{Montrer # de réponse en plus}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Bouton Répondre",
|
package/dist/i18n/fr-FR.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Bouton Répondre",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Résoudre",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Message de statut de résolution",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# réponse de plus} other{# réponses de plus}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Montrer # réponse} many{Montrer # de réponse en plus} other{Montrer # de réponse en plus}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Bouton Répondre",
|
package/dist/i18n/hi-IN.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "उत्तर दें बटन",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "हल करें",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "रिज़ॉल्यूशन स्टेटस मैसेज",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# और जवाब} other{# और जवाब}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{# उत्तर दिखाएं} other{और # उत्तर दिखाएं}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "उत्तर दें बटन",
|
package/dist/i18n/it-IT.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Pulsante Rispondi",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Risolvi",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Messaggio sullo stato della risoluzione",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Mostra # risposta} many{Mostra altre # risposte} other{Mostra altre # risposte}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Pulsante Rispondi",
|
package/dist/i18n/ja-JP.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "[返信] ボタン",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "対応済み",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "対応済みステータスのメッセージ",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{さらに#件の返信を表示} other{さらに#件の返信を表示}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{#件の返信を表示} other{さらに#件の返信を表示}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "返信ボタン",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"id":"groupSharedFeatures.threadedAnnotations.annotationMessageAriaLabel","description":"Aria label for annotation message container","defaultMessage":"Annotation message"},{"id":"groupSharedFeatures.threadedAnnotations.edited","description":"Indicator shown next to the timestamp when a message has been edited","defaultMessage":"(Edited)"},{"id":"groupSharedFeatures.threadedAnnotations.reply","description":"Reply button text to start composing a reply","defaultMessage":"Reply"},{"id":"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel","description":"Aria label for the reply button that opens the message editor","defaultMessage":"Reply button"},{"id":"groupSharedFeatures.threadedAnnotations.textMessageAriaLabel","description":"Aria label for message text content","defaultMessage":"Message text"}]
|
|
1
|
+
[{"id":"groupSharedFeatures.threadedAnnotations.annotationMessageAriaLabel","description":"Aria label for annotation message container","defaultMessage":"Annotation message"},{"id":"groupSharedFeatures.threadedAnnotations.edited","description":"Indicator shown next to the timestamp when a message has been edited","defaultMessage":"(Edited)"},{"id":"groupSharedFeatures.threadedAnnotations.reply","description":"Reply button text to start composing a reply","defaultMessage":"Reply"},{"id":"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel","description":"Aria label for the reply button that opens the message editor","defaultMessage":"Reply button"},{"id":"groupSharedFeatures.threadedAnnotations.seeMore","description":"Button to expand a long comment that has been truncated","defaultMessage":"See More"},{"id":"groupSharedFeatures.threadedAnnotations.textMessageAriaLabel","description":"Aria label for message text content","defaultMessage":"Message text"}]
|
package/dist/i18n/ko-KR.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "답글 버튼",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "해결",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "해결 상태 메시지",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{답글 #개 더 보기} other{답글 #개 더 보기}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{답글 #개 보기} other{답글 #개 보기}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "답글 버튼",
|
package/dist/i18n/nb-NO.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Svar-knapp",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Løs",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Melding om løsningsstatus",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# more replies}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Vis # svar} other{Vis # flere svar}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Svar-knapp",
|
package/dist/i18n/nl-NL.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Knop Beantwoorden",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Oplossen",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Statusbericht oplossing",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{nog # reactie} other{nog # reacties}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{# antwoord tonen} other{Nog # antwoorden tonen}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Knop Beantwoorden",
|
package/dist/i18n/pl-PL.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Przycisk odpowiedzi",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Rozwiąż",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Wiadomość o statusie rozwiązania",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# dodatkowa odpowiedź} other{# dodatkowej odpowiedzi} few{# dodatkowe odpowiedzi} many{# dodatkowych odpowiedzi}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Pokaż # odpowiedź} few{Pokaż # odpowiedzi} many{Pokaż # odpowiedzi} other{Pokaż # odpowiedzi}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Przycisk odpowiedzi",
|
package/dist/i18n/pt-BR.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Botão Responder",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Resolver",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Mensagem de status de resolução",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# mais resposta} other{# mais respostas}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Mostrar # resposta} other{Mostras mais # respostas} many{Mostras mais # respostas}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Botão Responder",
|
package/dist/i18n/ru-RU.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Кнопка ответа",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Решено",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Сообщение о статусе решения",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{еще # ответ } other{еще # ответа(-ов)}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Показать # ответ} few{Показать еще # ответа} many{Показать еще # ответов} other{Показать еще # ответа}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Кнопка ответа",
|
package/dist/i18n/sv-SE.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Knappen Svara",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Löst",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Meddelande om lösningsstatus",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# svar till} other{# svar till}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{Visa # svar} other{Visa ytterligare # svar}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Knappen Svara",
|
package/dist/i18n/tr-TR.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "Yanıtla düğmesi",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "Çözün",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "Çözüm durumu mesajı",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# yanıt daha} other{# yanıt daha}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{# yanıt göster} other{# yanıt daha göster}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "Yanıtla düğmesi",
|
package/dist/i18n/zh-CN.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "回复按钮",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "解决",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "解决状态消息",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,other{另外 # 个回复}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{显示 # 条回复} other{显示更多 # 条回复}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "回复按钮",
|
package/dist/i18n/zh-TW.js
CHANGED
|
@@ -37,6 +37,7 @@ export default {
|
|
|
37
37
|
"groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "回覆按鈕",
|
|
38
38
|
"groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "解決",
|
|
39
39
|
"groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "解決狀態訊息",
|
|
40
|
+
"groupSharedFeatures.threadedAnnotations.seeMore": "See More",
|
|
40
41
|
"groupSharedFeatures.threadedAnnotations.showMoreReplies": "{count,plural,one{# more reply} other{# 更多回覆}}",
|
|
41
42
|
"groupSharedFeatures.threadedAnnotations.showReplies": "{number,plural,one{顯示 # 則回覆} other{再顯示 # 則回覆}}",
|
|
42
43
|
"groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "回覆按鈕",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._textMessage_hmjtk_4{flex-direction:column;flex:1;width:100%;height:100%;display:flex;position:relative;overflow:visible}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13{gap:var(--space-2);margin-top:.125rem;display:flex}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._threadedIndicator_hmjtk_18{width:var(--space-7);flex-shrink:0;position:relative}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._threadedIndicator_hmjtk_18:after{content:"";left:50%;top:var(--space-05);bottom:var(--space-05);width:var(--border-2);background-color:var(--border-divider-border);border-radius:var(--radius-1);position:absolute;transform:translate(-50%)}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._threadedIndicatorHidden_hmjtk_34:after{visibility:hidden}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._messageContent_hmjtk_37{overflow-wrap:break-word;flex-direction:column;flex:1;min-width:0;display:flex}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._messageContent_hmjtk_37 ._inlineEditSlot_hmjtk_44{margin-top:var(--space-2)}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._messageContent_hmjtk_37 ._annotationBadgeWrapper_hmjtk_47{min-width:0;max-width:100%;padding-bottom:var(--space-1);flex-direction:column;align-items:flex-start;display:flex;overflow:hidden}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._messageFooter_hmjtk_56{align-items:center;gap:var(--space-1);padding-bottom:var(--space-2);margin-top:var(--space-1);flex-direction:row;display:flex}._textMessage_hmjtk_4 ._contentWrapper_hmjtk_13 ._messageFooter_hmjtk_56 ._readableTimeWrapper_hmjtk_64{cursor:auto}._replyButton_hmjtk_68{padding-top:var(--space-05);padding-bottom:var(--space-05);opacity:0;transition:opacity .1s}[data-message-wrapper]:hover ._replyButton_hmjtk_68,[data-message-wrapper]:focus-within ._replyButton_hmjtk_68{opacity:1}@media (pointer:coarse),(hover:none){._replyButton_hmjtk_68{opacity:1}}._seeMoreButton_hmjtk_83{margin-inline-start:var(--bp-space-010)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const COMMENT_TRUNCATION_THRESHOLD = 450;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/threaded-annotations",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.95.0",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@tanstack/react-virtual": "^3.10.8",
|
|
@@ -16,23 +16,23 @@
|
|
|
16
16
|
"uuid": "^9.0.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@box/blueprint-web": "^15.5.
|
|
20
|
-
"@box/blueprint-web-assets": "^4.
|
|
21
|
-
"@box/collaboration-popover": "^1.63.
|
|
22
|
-
"@box/readable-time": "^1.42.
|
|
23
|
-
"@box/user-selector": "^1.77.
|
|
19
|
+
"@box/blueprint-web": "^15.5.1",
|
|
20
|
+
"@box/blueprint-web-assets": "^4.122.0",
|
|
21
|
+
"@box/collaboration-popover": "^1.63.10",
|
|
22
|
+
"@box/readable-time": "^1.42.10",
|
|
23
|
+
"@box/user-selector": "^1.77.10",
|
|
24
24
|
"clsx": "^1.2.1",
|
|
25
25
|
"react": "^18.0.0",
|
|
26
26
|
"react-dom": "^18.0.0",
|
|
27
27
|
"react-intl": "^6.4.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@box/blueprint-web": "^15.5.
|
|
31
|
-
"@box/blueprint-web-assets": "^4.
|
|
32
|
-
"@box/eslint-plugin-blueprint": "1.2.
|
|
33
|
-
"@box/readable-time": "^1.42.
|
|
34
|
-
"@box/storybook-utils": "^0.20.
|
|
35
|
-
"@box/user-selector": "^1.77.
|
|
30
|
+
"@box/blueprint-web": "^15.5.1",
|
|
31
|
+
"@box/blueprint-web-assets": "^4.122.0",
|
|
32
|
+
"@box/eslint-plugin-blueprint": "1.2.5",
|
|
33
|
+
"@box/readable-time": "^1.42.10",
|
|
34
|
+
"@box/storybook-utils": "^0.20.9",
|
|
35
|
+
"@box/user-selector": "^1.77.10",
|
|
36
36
|
"react": "^18.0.0",
|
|
37
37
|
"react-dom": "^18.0.0"
|
|
38
38
|
},
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import e from "../esm/lib/components/v2/text-message/messages.js";
|
|
2
|
-
import { Button as t, Focusable as n, Text as r, Tooltip as i } from "@box/blueprint-web";
|
|
3
|
-
import { useIntl as a } from "react-intl";
|
|
4
|
-
import { getReadableTime as o } from "@box/readable-time";
|
|
5
|
-
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
6
|
-
import '../styles/message-footer.css';var l = {
|
|
7
|
-
textMessage: "_textMessage_25h97_4",
|
|
8
|
-
contentWrapper: "_contentWrapper_25h97_13",
|
|
9
|
-
threadedIndicator: "_threadedIndicator_25h97_18",
|
|
10
|
-
threadedIndicatorHidden: "_threadedIndicatorHidden_25h97_34",
|
|
11
|
-
messageContent: "_messageContent_25h97_37",
|
|
12
|
-
inlineEditSlot: "_inlineEditSlot_25h97_44",
|
|
13
|
-
annotationBadgeWrapper: "_annotationBadgeWrapper_25h97_47",
|
|
14
|
-
messageFooter: "_messageFooter_25h97_56",
|
|
15
|
-
readableTimeWrapper: "_readableTimeWrapper_25h97_64",
|
|
16
|
-
replyButton: "_replyButton_25h97_68"
|
|
17
|
-
}, u = ({ createdAt: u, onReply: d, updatedAt: f }) => {
|
|
18
|
-
let p = a();
|
|
19
|
-
return /* @__PURE__ */ c("div", {
|
|
20
|
-
className: l.messageFooter,
|
|
21
|
-
children: [
|
|
22
|
-
/* @__PURE__ */ s(i, {
|
|
23
|
-
content: o({
|
|
24
|
-
alwaysShowTime: !0,
|
|
25
|
-
intl: p,
|
|
26
|
-
relativeThreshold: 0,
|
|
27
|
-
timestamp: u
|
|
28
|
-
}),
|
|
29
|
-
children: /* @__PURE__ */ s(n, {
|
|
30
|
-
className: l.readableTimeWrapper,
|
|
31
|
-
"data-no-expand": !0,
|
|
32
|
-
children: /* @__PURE__ */ s(r, {
|
|
33
|
-
as: "span",
|
|
34
|
-
color: "textOnLightSecondary",
|
|
35
|
-
variant: "bodySmall",
|
|
36
|
-
children: o({
|
|
37
|
-
intl: p,
|
|
38
|
-
timestamp: u
|
|
39
|
-
})
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
}),
|
|
43
|
-
f !== void 0 && /* @__PURE__ */ s(i, {
|
|
44
|
-
content: o({
|
|
45
|
-
alwaysShowTime: !0,
|
|
46
|
-
intl: p,
|
|
47
|
-
relativeThreshold: 0,
|
|
48
|
-
timestamp: f
|
|
49
|
-
}),
|
|
50
|
-
children: /* @__PURE__ */ s(n, {
|
|
51
|
-
"data-no-expand": !0,
|
|
52
|
-
children: /* @__PURE__ */ s(r, {
|
|
53
|
-
as: "span",
|
|
54
|
-
color: "textOnLightSecondary",
|
|
55
|
-
variant: "bodySmall",
|
|
56
|
-
children: p.formatMessage(e.edited)
|
|
57
|
-
})
|
|
58
|
-
})
|
|
59
|
-
}),
|
|
60
|
-
d && /* @__PURE__ */ s(t, {
|
|
61
|
-
"aria-label": p.formatMessage(e.replyButtonAriaLabel),
|
|
62
|
-
className: l.replyButton,
|
|
63
|
-
"data-no-expand": !0,
|
|
64
|
-
size: "x-small",
|
|
65
|
-
variant: "quaternary",
|
|
66
|
-
onClick: d,
|
|
67
|
-
children: p.formatMessage(e.reply)
|
|
68
|
-
})
|
|
69
|
-
]
|
|
70
|
-
});
|
|
71
|
-
};
|
|
72
|
-
export { l as n, u as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._textMessage_25h97_4{flex-direction:column;flex:1;width:100%;height:100%;display:flex;position:relative;overflow:visible}._textMessage_25h97_4 ._contentWrapper_25h97_13{gap:var(--space-2);margin-top:.125rem;display:flex}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._threadedIndicator_25h97_18{width:var(--space-7);flex-shrink:0;position:relative}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._threadedIndicator_25h97_18:after{content:"";left:50%;top:var(--space-05);bottom:var(--space-05);width:var(--border-2);background-color:var(--border-divider-border);border-radius:var(--radius-1);position:absolute;transform:translate(-50%)}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._threadedIndicatorHidden_25h97_34:after{visibility:hidden}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._messageContent_25h97_37{overflow-wrap:break-word;flex-direction:column;flex:1;min-width:0;display:flex}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._messageContent_25h97_37 ._inlineEditSlot_25h97_44{margin-top:var(--space-2)}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._messageContent_25h97_37 ._annotationBadgeWrapper_25h97_47{min-width:0;max-width:100%;padding-bottom:var(--space-1);flex-direction:column;align-items:flex-start;display:flex;overflow:hidden}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._messageFooter_25h97_56{align-items:center;gap:var(--space-1);padding-bottom:var(--space-2);margin-top:var(--space-1);flex-direction:row;display:flex}._textMessage_25h97_4 ._contentWrapper_25h97_13 ._messageFooter_25h97_56 ._readableTimeWrapper_25h97_64{cursor:auto}._replyButton_25h97_68{padding-top:var(--space-05);padding-bottom:var(--space-05);opacity:0;transition:opacity .1s}[data-message-wrapper]:hover ._replyButton_25h97_68,[data-message-wrapper]:focus-within ._replyButton_25h97_68{opacity:1}@media (pointer:coarse),(hover:none){._replyButton_25h97_68{opacity:1}}
|