@box/threaded-annotations 1.94.11 → 1.95.1

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.
Files changed (44) hide show
  1. package/dist/chunks/text-message.module.js +14 -0
  2. package/dist/esm/lib/components/v2/text-message/constants.js +2 -0
  3. package/dist/esm/lib/components/v2/text-message/messages.js +4 -0
  4. package/dist/esm/lib/components/v2/text-message/subcomponents/message-footer.js +62 -2
  5. package/dist/esm/lib/components/v2/text-message/subcomponents/message-renderer.js +47 -59
  6. package/dist/esm/lib/components/v2/text-message/subcomponents/truncate-document.js +113 -0
  7. package/dist/esm/lib/components/v2/text-message/subcomponents/url-segments.js +38 -0
  8. package/dist/esm/lib/components/v2/text-message/text-message.js +2 -1
  9. package/dist/i18n/bn-IN.js +1 -0
  10. package/dist/i18n/da-DK.js +1 -0
  11. package/dist/i18n/de-DE.js +1 -0
  12. package/dist/i18n/en-AU.js +1 -0
  13. package/dist/i18n/en-CA.js +1 -0
  14. package/dist/i18n/en-GB.js +1 -0
  15. package/dist/i18n/en-US.js +1 -0
  16. package/dist/i18n/en-US.properties +2 -0
  17. package/dist/i18n/en-x-pseudo.js +1 -0
  18. package/dist/i18n/es-419.js +1 -0
  19. package/dist/i18n/es-ES.js +1 -0
  20. package/dist/i18n/fi-FI.js +1 -0
  21. package/dist/i18n/fr-CA.js +1 -0
  22. package/dist/i18n/fr-FR.js +1 -0
  23. package/dist/i18n/hi-IN.js +1 -0
  24. package/dist/i18n/it-IT.js +1 -0
  25. package/dist/i18n/ja-JP.js +1 -0
  26. package/dist/i18n/json/src/lib/components/v2/text-message/messages.json +1 -1
  27. package/dist/i18n/ko-KR.js +1 -0
  28. package/dist/i18n/nb-NO.js +1 -0
  29. package/dist/i18n/nl-NL.js +1 -0
  30. package/dist/i18n/pl-PL.js +1 -0
  31. package/dist/i18n/pt-BR.js +1 -0
  32. package/dist/i18n/ru-RU.js +1 -0
  33. package/dist/i18n/sv-SE.js +1 -0
  34. package/dist/i18n/tr-TR.js +1 -0
  35. package/dist/i18n/zh-CN.js +1 -0
  36. package/dist/i18n/zh-TW.js +1 -0
  37. package/dist/styles/text-message2.css +1 -0
  38. package/dist/types/lib/components/v2/text-message/constants.d.ts +1 -0
  39. package/dist/types/lib/components/v2/text-message/messages.d.ts +5 -0
  40. package/dist/types/lib/components/v2/text-message/subcomponents/truncate-document.d.ts +3 -0
  41. package/dist/types/lib/components/v2/text-message/subcomponents/url-segments.d.ts +7 -0
  42. package/package.json +12 -12
  43. package/dist/chunks/message-footer.js +0 -72
  44. 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 };
@@ -0,0 +1,2 @@
1
+ var e = 450;
2
+ export { e as COMMENT_TRUNCATION_THRESHOLD };
@@ -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 { t as e } from "../../../../../../chunks/message-footer.js";
2
- export { e as MessageFooter };
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 { Link as n, Text as r } from "@box/blueprint-web";
4
- import { useIntl as i } from "react-intl";
5
- import { jsx as a } from "react/jsx-runtime";
6
- var o = /((?:(?:ht|f)tps?:\/\/)[\w.-]+(?::\d+)?(?:\/[\w\-.~+/#?&%=:[\]@!$'()*;,]*)?)/gi, s = /[.,;:!?]/, c = {
7
- ")": "(",
8
- "]": "["
9
- }, l = (e) => {
10
- let t = e[e.length - 1];
11
- if (s.test(t)) return !0;
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__ */ a(e, {
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
- }, p = (e) => {
20
+ }, m = (e) => {
48
21
  e.currentTarget.closest("[data-thread-expandable]") && e.preventDefault();
49
- }, m = ({ node: e, index: i, paragraphIndex: o, intl: s }) => {
50
- let c = `text-${e.text.substring(0, 20)}-${o}-${i}`, l = d(e.text);
51
- return /* @__PURE__ */ a(r, {
52
- "aria-label": s.formatMessage(t.textMessageAriaLabel),
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__ */ a(n, {
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: p,
34
+ onClick: m,
62
35
  children: e.value
63
36
  }, `${c}-segment-${t}`) : e.value)
64
37
  }, c);
65
- }, h = ({ content: e, paragraphIndex: t, intl: n }) => e.map((e, r) => {
38
+ }, g = ({ content: e, paragraphIndex: t, intl: n }) => e.map((e, r) => {
66
39
  switch (e.type) {
67
- case "mention": return f({
40
+ case "mention": return p({
68
41
  node: e,
69
42
  index: r,
70
43
  paragraphIndex: t
71
44
  });
72
- case "text": return m({
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
- }), g = ({ paragraph: e, index: t, intl: n }) => {
81
- let i = e.content || [], o = `paragraph-${t}`;
82
- return /* @__PURE__ */ a(r, {
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 ? h({
58
+ children: [i.length > 0 ? g({
86
59
  content: i,
87
60
  paragraphIndex: t,
88
61
  intl: n
89
- }) : /* @__PURE__ */ a("br", {})
90
- }, o);
91
- }, _ = ({ messageObject: e }) => {
92
- let t = i(), { content: n } = e;
93
- return !n && n.length === 0 ? null : n.map((e, n) => g({
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: n,
96
- intl: t
82
+ index: t,
83
+ intl: r,
84
+ inlineSuffix: t === h ? g : null
97
85
  }));
98
86
  };
99
- export { _ as MessageRenderer };
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 { n as o, t as s } from "../../../../../chunks/message-footer.js";
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";
@@ -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": "উত্তর বোতাম",
@@ -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",
@@ -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“",
@@ -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",
@@ -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",
@@ -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",
@@ -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
@@ -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": "⟦萬萬萬 ŔèΡĺý вµţťòи 國國國⟧",
@@ -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",
@@ -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",
@@ -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",
@@ -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",
@@ -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",
@@ -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": "उत्तर दें बटन",
@@ -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",
@@ -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"}]
@@ -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": "답글 버튼",
@@ -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",
@@ -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",
@@ -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",
@@ -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",
@@ -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": "Кнопка ответа",
@@ -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",
@@ -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",
@@ -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": "回复按钮",
@@ -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;
@@ -19,6 +19,11 @@ declare const messages: {
19
19
  description: string;
20
20
  id: string;
21
21
  };
22
+ seeMore: {
23
+ defaultMessage: string;
24
+ description: string;
25
+ id: string;
26
+ };
22
27
  textMessageAriaLabel: {
23
28
  defaultMessage: string;
24
29
  description: string;
@@ -0,0 +1,3 @@
1
+ import { DocumentNode } from '../../../../v2/types';
2
+ export declare const getDocumentLength: (document: DocumentNode) => number;
3
+ export declare const truncateDocument: (document: DocumentNode, threshold: number) => DocumentNode;
@@ -0,0 +1,7 @@
1
+ export declare const URL_REGEX: RegExp;
2
+ export declare const trimTrailingChars: (url: string) => string;
3
+ export type TextSegment = {
4
+ type: 'text' | 'url';
5
+ value: string;
6
+ };
7
+ export declare const splitTextIntoSegments: (text: string) => TextSegment[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/threaded-annotations",
3
- "version": "1.94.11",
3
+ "version": "1.95.1",
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.0",
20
- "@box/blueprint-web-assets": "^4.121.8",
21
- "@box/collaboration-popover": "^1.63.9",
22
- "@box/readable-time": "^1.42.9",
23
- "@box/user-selector": "^1.77.9",
19
+ "@box/blueprint-web": "^15.5.2",
20
+ "@box/blueprint-web-assets": "^4.123.0",
21
+ "@box/collaboration-popover": "^1.63.11",
22
+ "@box/readable-time": "^1.42.11",
23
+ "@box/user-selector": "^1.77.11",
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.0",
31
- "@box/blueprint-web-assets": "^4.121.8",
32
- "@box/eslint-plugin-blueprint": "1.2.4",
33
- "@box/readable-time": "^1.42.9",
34
- "@box/storybook-utils": "^0.20.8",
35
- "@box/user-selector": "^1.77.9",
30
+ "@box/blueprint-web": "^15.5.2",
31
+ "@box/blueprint-web-assets": "^4.123.0",
32
+ "@box/eslint-plugin-blueprint": "1.2.5",
33
+ "@box/readable-time": "^1.42.11",
34
+ "@box/storybook-utils": "^0.20.10",
35
+ "@box/user-selector": "^1.77.11",
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}}