@box/threaded-annotations 1.95.2 → 1.96.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 (68) hide show
  1. package/dist/chunks/annotation-badge.js +15 -14
  2. package/dist/chunks/message-editor2.module.js +26 -24
  3. package/dist/chunks/timestamp-toggle.js +36 -0
  4. package/dist/esm/lib/components/v2/message-editor/message-editor.js +77 -69
  5. package/dist/esm/lib/components/v2/message-editor/messages.js +4 -0
  6. package/dist/esm/lib/components/v2/message-editor/subcomponents/timestamp-toggle.js +2 -0
  7. package/dist/i18n/bn-IN.js +1 -0
  8. package/dist/i18n/bn-IN.properties +4 -0
  9. package/dist/i18n/da-DK.js +1 -0
  10. package/dist/i18n/da-DK.properties +4 -0
  11. package/dist/i18n/de-DE.js +1 -0
  12. package/dist/i18n/de-DE.properties +4 -0
  13. package/dist/i18n/en-AU.js +1 -0
  14. package/dist/i18n/en-AU.properties +4 -0
  15. package/dist/i18n/en-CA.js +1 -0
  16. package/dist/i18n/en-CA.properties +4 -0
  17. package/dist/i18n/en-GB.js +1 -0
  18. package/dist/i18n/en-GB.properties +4 -0
  19. package/dist/i18n/en-US.js +1 -0
  20. package/dist/i18n/en-US.properties +2 -0
  21. package/dist/i18n/en-x-pseudo.js +2 -1
  22. package/dist/i18n/en-x-pseudo.properties +4 -0
  23. package/dist/i18n/es-419.js +1 -0
  24. package/dist/i18n/es-419.properties +4 -0
  25. package/dist/i18n/es-ES.js +1 -0
  26. package/dist/i18n/es-ES.properties +4 -0
  27. package/dist/i18n/fi-FI.js +1 -0
  28. package/dist/i18n/fi-FI.properties +4 -0
  29. package/dist/i18n/fr-CA.js +1 -0
  30. package/dist/i18n/fr-CA.properties +4 -0
  31. package/dist/i18n/fr-FR.js +1 -0
  32. package/dist/i18n/fr-FR.properties +4 -0
  33. package/dist/i18n/hi-IN.js +1 -0
  34. package/dist/i18n/hi-IN.properties +4 -0
  35. package/dist/i18n/it-IT.js +1 -0
  36. package/dist/i18n/it-IT.properties +4 -0
  37. package/dist/i18n/ja-JP.js +1 -0
  38. package/dist/i18n/ja-JP.properties +4 -0
  39. package/dist/i18n/json/src/lib/components/v2/message-editor/messages.json +1 -1
  40. package/dist/i18n/ko-KR.js +1 -0
  41. package/dist/i18n/ko-KR.properties +4 -0
  42. package/dist/i18n/nb-NO.js +1 -0
  43. package/dist/i18n/nb-NO.properties +4 -0
  44. package/dist/i18n/nl-NL.js +1 -0
  45. package/dist/i18n/nl-NL.properties +4 -0
  46. package/dist/i18n/pl-PL.js +1 -0
  47. package/dist/i18n/pl-PL.properties +4 -0
  48. package/dist/i18n/pt-BR.js +1 -0
  49. package/dist/i18n/pt-BR.properties +4 -0
  50. package/dist/i18n/ru-RU.js +1 -0
  51. package/dist/i18n/ru-RU.properties +4 -0
  52. package/dist/i18n/sv-SE.js +1 -0
  53. package/dist/i18n/sv-SE.properties +4 -0
  54. package/dist/i18n/tr-TR.js +1 -0
  55. package/dist/i18n/tr-TR.properties +4 -0
  56. package/dist/i18n/zh-CN.js +1 -0
  57. package/dist/i18n/zh-CN.properties +4 -0
  58. package/dist/i18n/zh-TW.js +1 -0
  59. package/dist/i18n/zh-TW.properties +4 -0
  60. package/dist/styles/message-editor2.css +1 -1
  61. package/dist/styles/timestamp-toggle.css +1 -0
  62. package/dist/types/index.d.ts +1 -0
  63. package/dist/types/lib/components/v2/message-editor/message-editor.types.d.ts +15 -0
  64. package/dist/types/lib/components/v2/message-editor/messages.d.ts +5 -0
  65. package/dist/types/lib/components/v2/message-editor/stories/shared.d.ts +1 -1
  66. package/dist/types/lib/components/v2/message-editor/subcomponents/timestamp-toggle.d.ts +9 -0
  67. package/dist/types/lib/v2/test-utils/test-selectors.d.ts +1 -0
  68. package/package.json +11 -11
@@ -5,7 +5,8 @@ import o from "clsx";
5
5
  import { useIntl as s } from "react-intl";
6
6
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
7
  import { DashedSquareBubble as u, PencilScribble as d, TextHighlight as f } from "@box/blueprint-web-assets/icons/Medium";
8
- import '../styles/annotation-badge.css';var p = {
8
+ import { Play as p } from "@box/blueprint-web-assets/icons/MediumFilled";
9
+ import '../styles/annotation-badge.css';var m = {
9
10
  annotationBadge: "_annotationBadge_wsfss_1",
10
11
  annotationIcon: "_annotationIcon_wsfss_16",
11
12
  highlightText: "_highlightText_wsfss_22",
@@ -13,22 +14,22 @@ import '../styles/annotation-badge.css';var p = {
13
14
  disabled: "_disabled_wsfss_42",
14
15
  focusableWrapper: "_focusableWrapper_wsfss_47",
15
16
  tooltipContent: "_tooltipContent_wsfss_53"
16
- }, m = {
17
+ }, h = {
17
18
  [e.Drawing]: d,
18
- [e.Frame]: null,
19
+ [e.Frame]: p,
19
20
  [e.Highlight]: f,
20
21
  [e.Point]: d,
21
22
  [e.Region]: u
22
- }, h = ({ annotationTarget: u, onClick: d, originalContentDeleted: f }) => {
23
- let { formatMessage: h } = s(), g = m[u.type], _ = f ? "textOnLightSecondary" : "textOnLightLink", v = /* @__PURE__ */ l(n, {
24
- className: o(p.annotationBadge, f && p.disabled),
23
+ }, g = ({ annotationTarget: u, onClick: d, originalContentDeleted: f }) => {
24
+ let { formatMessage: p } = s(), g = h[u.type], _ = f ? "textOnLightSecondary" : "textOnLightLink", v = /* @__PURE__ */ l(n, {
25
+ className: o(m.annotationBadge, f && m.disabled),
25
26
  "data-testid": "annotation-badge",
26
27
  "data-no-expand": !0,
27
28
  disabled: f,
28
29
  onClick: f ? void 0 : d,
29
30
  children: [g && /* @__PURE__ */ c(i, {
30
31
  as: "span",
31
- className: p.annotationIcon,
32
+ className: m.annotationIcon,
32
33
  color: _,
33
34
  children: /* @__PURE__ */ c(g, {
34
35
  color: "currentColor",
@@ -37,27 +38,27 @@ import '../styles/annotation-badge.css';var p = {
37
38
  })
38
39
  }), u.type === e.Highlight && u.highlightedText ? /* @__PURE__ */ c(i, {
39
40
  as: "span",
40
- className: p.highlightText,
41
+ className: m.highlightText,
41
42
  color: _,
42
43
  variant: "bodySmallSemibold",
43
44
  children: u.highlightedText
44
45
  }) : /* @__PURE__ */ c(i, {
45
46
  as: "span",
46
- className: p.annotationLabel,
47
+ className: m.annotationLabel,
47
48
  color: _,
48
49
  variant: "bodyDefaultSemibold",
49
- children: u.type === e.Frame ? u.timestamp : h(t.annotationPage, { number: u.page })
50
+ children: u.type === e.Frame ? u.timestamp : p(t.annotationPage, { number: u.page })
50
51
  })]
51
52
  });
52
53
  return f ? /* @__PURE__ */ c(a, {
53
- className: p.tooltipContent,
54
- content: h(t.originalContentDeleted),
54
+ className: m.tooltipContent,
55
+ content: p(t.originalContentDeleted),
55
56
  side: "top",
56
57
  children: /* @__PURE__ */ c(r, {
57
- className: p.focusableWrapper,
58
+ className: m.focusableWrapper,
58
59
  "data-no-expand": !0,
59
60
  children: v
60
61
  })
61
62
  }) : v;
62
63
  };
63
- export { h as t };
64
+ export { g as t };
@@ -1,27 +1,29 @@
1
1
  import '../styles/message-editor2.css';var e = {
2
- messageEditorWrapper: "_messageEditorWrapper_sbwz4_4",
3
- editActionsColumn: "_editActionsColumn_sbwz4_9",
4
- editActionsRow: "_editActionsRow_sbwz4_16",
5
- characterLimitCounter: "_characterLimitCounter_sbwz4_22",
6
- characterLimitCounterExceeded: "_characterLimitCounterExceeded_sbwz4_25",
7
- messageEditor: "_messageEditor_sbwz4_4",
8
- editorEditMode: "_editorEditMode_sbwz4_43",
9
- editorFirstAnnotation: "_editorFirstAnnotation_sbwz4_50",
10
- editorError: "_editorError_sbwz4_50",
11
- editorViewport: "_editorViewport_sbwz4_58",
12
- editorContainer: "_editorContainer_sbwz4_64",
13
- editor: "_editor_sbwz4_43",
14
- editorFade: "_editorFade_sbwz4_110",
15
- editorFadeHidden: "_editorFadeHidden_sbwz4_121",
16
- editorFullWidth: "_editorFullWidth_sbwz4_124",
17
- actionsWrapper: "_actionsWrapper_sbwz4_128",
18
- actionsWrapperInner: "_actionsWrapperInner_sbwz4_138",
19
- errorMessage: "_errorMessage_sbwz4_145",
20
- errorText: "_errorText_sbwz4_154",
21
- editorHasScroll: "_editorHasScroll_sbwz4_163",
22
- editorCharacterLimitExceeded: "_editorCharacterLimitExceeded_sbwz4_174",
23
- characterLimitExceeded: "_characterLimitExceeded_sbwz4_196",
24
- scrolledToBottom: "_scrolledToBottom_sbwz4_199",
25
- anchorElement: "_anchorElement_sbwz4_203"
2
+ messageEditorWrapper: "_messageEditorWrapper_15t7h_4",
3
+ editActionsColumn: "_editActionsColumn_15t7h_9",
4
+ editActionsRow: "_editActionsRow_15t7h_16",
5
+ characterLimitCounter: "_characterLimitCounter_15t7h_22",
6
+ characterLimitCounterExceeded: "_characterLimitCounterExceeded_15t7h_25",
7
+ messageEditor: "_messageEditor_15t7h_4",
8
+ editorEditMode: "_editorEditMode_15t7h_43",
9
+ editorFirstAnnotation: "_editorFirstAnnotation_15t7h_50",
10
+ editorError: "_editorError_15t7h_50",
11
+ editorViewport: "_editorViewport_15t7h_58",
12
+ editorContainer: "_editorContainer_15t7h_64",
13
+ editor: "_editor_15t7h_43",
14
+ editorFade: "_editorFade_15t7h_110",
15
+ editorFadeHidden: "_editorFadeHidden_15t7h_121",
16
+ editorFullWidth: "_editorFullWidth_15t7h_124",
17
+ actionsWrapper: "_actionsWrapper_15t7h_128",
18
+ actionsWrapperInner: "_actionsWrapperInner_15t7h_138",
19
+ timestampToggle: "_timestampToggle_15t7h_145",
20
+ errorMessage: "_errorMessage_15t7h_148",
21
+ errorText: "_errorText_15t7h_157",
22
+ editorHasScroll: "_editorHasScroll_15t7h_166",
23
+ editorCharacterLimitExceeded: "_editorCharacterLimitExceeded_15t7h_177",
24
+ characterLimitExceeded: "_characterLimitExceeded_15t7h_199",
25
+ scrolledToBottom: "_scrolledToBottom_15t7h_202",
26
+ anchorElement: "_anchorElement_15t7h_206",
27
+ withTimestampToggle: "_withTimestampToggle_15t7h_215"
26
28
  };
27
29
  export { e as t };
@@ -0,0 +1,36 @@
1
+ import e from "../esm/lib/components/v2/message-editor/messages.js";
2
+ import { Checkbox as t, Text as n } from "@box/blueprint-web";
3
+ import r from "clsx";
4
+ import { useCallback as i } from "react";
5
+ import { useIntl as a } from "react-intl";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ import { Play as c } from "@box/blueprint-web-assets/icons/MediumFilled";
8
+ import '../styles/timestamp-toggle.css';var l = {
9
+ timestampToggle: "_timestampToggle_11uz9_1",
10
+ timestampToggleDisabled: "_timestampToggleDisabled_11uz9_8",
11
+ label: "_label_11uz9_20"
12
+ }, u = ({ className: u, disabled: d, formattedTimestamp: f, isPressed: p, onChange: m }) => {
13
+ let h = a(), g = i((e) => {
14
+ m(e === !0);
15
+ }, [m]), _ = /* @__PURE__ */ s(n, {
16
+ as: "span",
17
+ className: l.label,
18
+ color: "textOnLightSecondary",
19
+ variant: "bodyDefaultSemibold",
20
+ children: [/* @__PURE__ */ o(c, {
21
+ color: "currentColor",
22
+ height: 16,
23
+ width: 16
24
+ }), f]
25
+ });
26
+ return /* @__PURE__ */ o(t.Item, {
27
+ "aria-label": h.formatMessage(e.timestampToggleLabel),
28
+ checked: p,
29
+ className: r(l.timestampToggle, { [l.timestampToggleDisabled]: d }, u),
30
+ disabled: d,
31
+ label: _,
32
+ onCheckedChange: g,
33
+ value: "video-timestamp"
34
+ });
35
+ };
36
+ export { u as t };
@@ -15,140 +15,148 @@ import { CharacterLimitCounter as u } from "./subcomponents/character-limit-coun
15
15
  import { EditButtons as d } from "./subcomponents/edit-buttons.js";
16
16
  import { ErrorMessage as f } from "./subcomponents/error-message.js";
17
17
  import { PostButton as p } from "./subcomponents/post-button.js";
18
- import { MessageEditorVariant as m } from "./message-editor.types.js";
18
+ import { t as m } from "../../../../../chunks/timestamp-toggle.js";
19
+ import { MessageEditorVariant as h } from "./message-editor.types.js";
19
20
  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";
21
+ import g from "clsx";
22
+ import { useEffect as _, useMemo as se, useRef as v } from "react";
23
+ import { useIntl as y } from "react-intl";
24
+ import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
25
+ import { UserSelectorHeadless as C } from "@box/user-selector";
26
+ import { EditorContent as w, useEditor as T } from "@tiptap/react";
27
+ import E from "@tiptap/extension-document";
27
28
  import ce from "@tiptap/extension-text";
28
29
  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({
30
+ var D = (s) => {
31
+ let { disableComponent: D = !1, initialContent: O, isFirstAnnotation: k = !1, isReply: ue = !1, maxCharacterCount: A, userSelectorProps: j, videoTimestamp: M } = s, N = v(null), P = v(null), F = v(null), I = y(), { errorMessage: L, isLoading: R } = ae(), { close: z, isActive: B, query: V, command: H, suggestionCallbacks: de } = o(N), { closeAllPopovers: fe } = t(), U = I.formatMessage(ue ? c.placeholderReply : c.placeholderAddComment), W = s.variant === h.EDIT_MESSAGE, G = T({
31
32
  extensions: [
32
- T,
33
+ E,
33
34
  te,
34
35
  le.configure({
35
36
  placeholder: U,
36
37
  showOnlyWhenEditable: !1
37
38
  }),
38
39
  ce,
39
- n.configure({ suggestion: r(i, "@", V) })
40
+ n.configure({ suggestion: r(i, "@", de) })
40
41
  ],
41
42
  autofocus: !0,
42
- content: D,
43
+ content: O,
43
44
  editorProps: {
44
45
  attributes: { class: l.editor },
45
46
  handleTextInput: ee,
46
47
  transformPastedText: a
47
48
  },
48
49
  onCreate: ({ editor: e }) => {
49
- N.current = e.view.dom, e.commands.focus("end");
50
+ F.current = e.view.dom, e.commands.focus("end");
50
51
  },
51
52
  onUpdate: () => {
52
- H?.();
53
+ fe?.();
53
54
  }
54
- }, [U]), { onUserSelected: de } = ie(se(() => B && G && !G.isDestroyed ? {
55
- command: B,
55
+ }, [U]), { onUserSelected: pe } = ie(se(() => H && G && !G.isDestroyed ? {
56
+ command: H,
56
57
  editor: G
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(() => {
58
+ } : null, [H, G])), { exceedsSingleLine: me, hasScroll: K, isAtBottom: q } = re(P, G), J = ne(G, O, A), Y = W || !k || k && me, he = !G || G?.isEmpty, X = D || R, Z = (J?.excess ?? 0) > 0, Q = he || X || Z, $ = J && J.excess > 0 && Y;
59
+ _(() => {
59
60
  G && G.setEditable(!X);
60
- }, [G, X]), g(() => {
61
- if (!Z || !M.current || !D) return;
61
+ }, [G, X]), _(() => {
62
+ if (!Z || !P.current || !O) return;
62
63
  let e = 0, t = requestAnimationFrame(() => {
63
64
  e = requestAnimationFrame(() => {
64
- M.current?.scrollTo({ top: M.current.scrollHeight });
65
+ P.current?.scrollTo({ top: P.current.scrollHeight });
65
66
  });
66
67
  });
67
68
  return () => {
68
69
  cancelAnimationFrame(t), cancelAnimationFrame(e);
69
70
  };
70
- }, [Z]), g(() => {
71
- !G || D === void 0 || queueMicrotask(() => {
72
- G.commands.setContent(D ?? "", !1), G.commands.focus("end");
71
+ }, [Z]), _(() => {
72
+ !G || O === void 0 || queueMicrotask(() => {
73
+ G.commands.setContent(O ?? "", !1), G.commands.focus("end");
73
74
  });
74
- }, [D]), g(() => {
75
- if (!R) return;
75
+ }, [O]), _(() => {
76
+ if (!B) return;
76
77
  let t = `[${Object.keys(e)[0]}]`, n = (e) => {
77
- if (M.current?.contains(e)) return !0;
78
+ if (P.current?.contains(e)) return !0;
78
79
  let n = document.querySelectorAll(t);
79
80
  for (let t of n) if (t.contains(e)) return !0;
80
81
  return !1;
81
82
  }, r = (e) => {
82
83
  let t = e.target;
83
- !t || n(t) || L();
84
+ !t || n(t) || z();
84
85
  }, i = requestAnimationFrame(() => {
85
86
  document.addEventListener("mousedown", r), document.addEventListener("focusin", r);
86
87
  });
87
88
  return () => {
88
89
  cancelAnimationFrame(i), document.removeEventListener("mousedown", r), document.removeEventListener("focusin", r);
89
90
  };
90
- }, [L, R]);
91
- let me = /* @__PURE__ */ b("div", { className: l.anchorElement });
92
- return /* @__PURE__ */ b("div", {
91
+ }, [z, B]);
92
+ let ge = /* @__PURE__ */ x("div", { className: l.anchorElement });
93
+ return /* @__PURE__ */ x("div", {
93
94
  "data-no-expand": !0,
94
95
  className: l.messageEditorWrapper,
95
- children: /* @__PURE__ */ x("div", {
96
- className: h(l.messageEditor, {
96
+ children: /* @__PURE__ */ S("div", {
97
+ className: g(l.messageEditor, {
97
98
  [l.editorHasScroll]: K,
98
99
  [l.editorEditMode]: W,
99
- [l.editorError]: F || Z,
100
- [l.editorFirstAnnotation]: !W && O,
100
+ [l.editorError]: L || Z,
101
+ [l.editorFirstAnnotation]: !W && k,
101
102
  [l.editorCharacterLimitExceeded]: Z
102
103
  }),
103
- children: [/* @__PURE__ */ x("div", {
104
- className: h(l.editorViewport, { [l.editorFullWidth]: Y }),
105
- children: [/* @__PURE__ */ x("div", {
106
- ref: M,
104
+ children: [/* @__PURE__ */ S("div", {
105
+ className: g(l.editorViewport, { [l.editorFullWidth]: Y }),
106
+ children: [/* @__PURE__ */ S("div", {
107
+ ref: P,
107
108
  className: l.editorContainer,
108
- "aria-label": P.formatMessage(c.scrollContainerAriaLabel),
109
- children: [/* @__PURE__ */ b(C, {
110
- "aria-label": P.formatMessage(c.editorContentAriaLabel),
109
+ "aria-label": I.formatMessage(c.scrollContainerAriaLabel),
110
+ children: [/* @__PURE__ */ x(w, {
111
+ "aria-label": I.formatMessage(c.editorContentAriaLabel),
111
112
  editor: G
112
- }), /* @__PURE__ */ b(S, {
113
- ref: j,
114
- inputElementRef: N,
115
- onSelectedUserChange: de,
116
- open: R,
117
- rootElement: me,
118
- value: z,
119
- ...A,
113
+ }), /* @__PURE__ */ x(C, {
114
+ ref: N,
115
+ inputElementRef: F,
116
+ onSelectedUserChange: pe,
117
+ open: B,
118
+ rootElement: ge,
119
+ value: V,
120
+ ...j,
120
121
  popoverContentContainerProps: {
121
- ...A.popoverContentContainerProps,
122
+ ...j.popoverContentContainerProps,
122
123
  ...e,
123
124
  avoidCollisions: !0
124
125
  }
125
126
  })]
126
- }), K && /* @__PURE__ */ b("div", {
127
- className: h(l.editorFade, { [l.editorFadeHidden]: q }),
127
+ }), K && /* @__PURE__ */ x("div", {
128
+ className: g(l.editorFade, { [l.editorFadeHidden]: q }),
128
129
  "aria-hidden": "true"
129
130
  })]
130
- }), /* @__PURE__ */ b("div", {
131
- className: h(l.actionsWrapper),
132
- children: /* @__PURE__ */ x("div", {
133
- className: h(l.actionsWrapperInner, {
131
+ }), /* @__PURE__ */ x("div", {
132
+ className: g(l.actionsWrapper, { [l.withTimestampToggle]: !!M }),
133
+ children: /* @__PURE__ */ S("div", {
134
+ className: g(l.actionsWrapperInner, {
134
135
  [l.scrolledToBottom]: q,
135
136
  [l.characterLimitExceeded]: Z
136
137
  }),
137
138
  children: [
138
- F && /* @__PURE__ */ b(f, { errorMessage: F }),
139
- J && J.excess > 0 && !Y && /* @__PURE__ */ b(oe, {
139
+ L && /* @__PURE__ */ x(f, { errorMessage: L }),
140
+ J && J.excess > 0 && !Y && /* @__PURE__ */ x(oe, {
140
141
  role: "alert",
141
- children: P.formatMessage(c.characterLimitExceeded, { excess: J.excess })
142
+ children: I.formatMessage(c.characterLimitExceeded, { excess: J.excess })
142
143
  }),
143
- W ? /* @__PURE__ */ x("div", {
144
+ M && /* @__PURE__ */ x(m, {
145
+ className: l.timestampToggle,
146
+ disabled: X,
147
+ formattedTimestamp: M.formattedTimestamp,
148
+ isPressed: M.isPressed,
149
+ onChange: M.onPressedChange
150
+ }),
151
+ W ? /* @__PURE__ */ S("div", {
144
152
  className: l.editActionsColumn,
145
- children: [$ && /* @__PURE__ */ b(u, {
153
+ children: [$ && /* @__PURE__ */ x(u, {
146
154
  count: J.count,
147
155
  excess: J.excess,
148
156
  maxCount: J.maxCount
149
- }), /* @__PURE__ */ b("div", {
157
+ }), /* @__PURE__ */ x("div", {
150
158
  className: l.editActionsRow,
151
- children: /* @__PURE__ */ b(d, {
159
+ children: /* @__PURE__ */ x(d, {
152
160
  disabled: Q,
153
161
  getEditorJsonContent: () => G?.getJSON(),
154
162
  onCancel: s.onEditCancel,
@@ -157,11 +165,11 @@ var E = (s) => {
157
165
  onSaveError: s.onSaveError
158
166
  })
159
167
  })]
160
- }) : /* @__PURE__ */ x(y, { children: [$ && /* @__PURE__ */ b(u, {
168
+ }) : /* @__PURE__ */ S(b, { children: [$ && /* @__PURE__ */ x(u, {
161
169
  count: J.count,
162
170
  excess: J.excess,
163
171
  maxCount: J.maxCount
164
- }), /* @__PURE__ */ b(p, {
172
+ }), /* @__PURE__ */ x(p, {
165
173
  cleanEditor: () => G?.commands.setContent(""),
166
174
  disabled: Q,
167
175
  getEditorJsonContent: () => G?.getJSON(),
@@ -174,5 +182,5 @@ var E = (s) => {
174
182
  })]
175
183
  })
176
184
  });
177
- }, D = (e) => /* @__PURE__ */ b(s, { children: /* @__PURE__ */ b(E, { ...e }) });
178
- export { D as MessageEditor, m as MessageEditorVariant };
185
+ }, O = (e) => /* @__PURE__ */ x(s, { children: /* @__PURE__ */ x(D, { ...e }) });
186
+ export { O as MessageEditor, h as MessageEditorVariant };
@@ -43,6 +43,10 @@ var t = e({
43
43
  scrollContainerAriaLabel: {
44
44
  id: "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel",
45
45
  defaultMessage: "Message editor scroll container"
46
+ },
47
+ timestampToggleLabel: {
48
+ id: "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel",
49
+ defaultMessage: "Comment with timestamp"
46
50
  }
47
51
  });
48
52
  export { t as default };
@@ -0,0 +1,2 @@
1
+ import { t as e } from "../../../../../../chunks/timestamp-toggle.js";
2
+ export { e as TimestampToggle };
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "সংরক্ষণ করুন",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "সংরক্ষণ হচ্ছে...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "মেসেজ এডিটর স্ক্রল কন্টেইনার",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "আরও বিকল্প বোতাম",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "মূল কন্টেন্ট মুছে ফেলা হয়েছে",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "উত্তর দিন",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = সংরক্ষ
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = সংরক্ষণ হচ্ছে...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = মেসেজ এডিটর স্ক্রল কন্টেইনার
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = আরও বিকল্প বোতাম
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = উত্তর
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = সমাধান করুন
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = রেজোলিউশন স্ট্যাটাস মেসেজ
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count,plural,one{# more reply} other{# more replies}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Gem",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Gemmer...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Rulleområde i meddelelseseditor",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "'Flere valgmuligheder'-knap",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Oprindeligt indhold blev slettet",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Svar",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Gem
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Gemmer...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Rulleområde i meddelelseseditor
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = 'Flere valgmuligheder'-knap
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Svar-knap
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Løs
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Meddelelse om løsningsstatus
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count,plural,one{# mere svar} other{# flere svar}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Speichern",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Wird gespeichert …",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Scrollcontainer für den Nachrichten-Bearbeiter",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "Schaltfläche „Weitere Optionen“",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Der ursprüngliche Inhalt wurde gelöscht",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Antworten",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Speichern
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Wird gespeichert …
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Scrollcontainer für den Nachrichten-Bearbeiter
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = Schaltfläche „Weitere Optionen“
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Schaltfläche „
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Auflösen
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Statusmeldung zur Problemlösung
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count,plural,one{# weitere Antwort} other{# weitere Antworten}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Save",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Saving...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Message editor scroll container",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "More options button",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Original content was deleted",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Reply",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Save
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Saving...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Message editor scroll container
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = More options button
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Reply button
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Resolve
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Resolution status message
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count,plural,one{# more reply} other{# more replies}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Save",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Saving...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Message editor scroll container",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "More options button",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Original content was deleted",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Reply",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Save
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Saving...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Message editor scroll container
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = More options button
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Reply button
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Resolve
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Resolution status message
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count, plural, one {# more reply} other {# more replies}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Save",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Saving...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Message editor scroll container",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "More options button",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Original content was deleted",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Reply",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Save
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Saving...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Message editor scroll container
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = More options button
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -74,6 +76,8 @@ groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel = Reply button
74
76
  groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel = Resolve
75
77
  # Aria label for the resolution status message container
76
78
  groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel = Resolution status message
79
+ # Button to expand a long comment that has been truncated
80
+ groupSharedFeatures.threadedAnnotations.seeMore = See More
77
81
  # Button text to show more replies with count
78
82
  groupSharedFeatures.threadedAnnotations.showMoreReplies = {count,plural,one{# more reply} other{# more replies}}
79
83
  # Button text to show replies with count
@@ -31,6 +31,7 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "Save",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "Saving...",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "Message editor scroll container",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "Comment with timestamp",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "More options button",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "Original content was deleted",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "Reply",
@@ -62,6 +62,8 @@ groupSharedFeatures.threadedAnnotations.messageEditor.save = Save
62
62
  groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading = Saving...
63
63
  # Aria label for the scrollable message editor content container
64
64
  groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel = Message editor scroll container
65
+ # Label for the toggle that attaches the current video playback timestamp to a comment
66
+ groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel = Comment with timestamp
65
67
  # Aria label for more options button in annotation message
66
68
  groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel = More options button
67
69
  # Tooltip shown when the annotation badge refers to deleted content
@@ -31,13 +31,14 @@ export default {
31
31
  "groupSharedFeatures.threadedAnnotations.messageEditor.save": "⟦萬 Śàνè 國⟧",
32
32
  "groupSharedFeatures.threadedAnnotations.messageEditor.saveLoading": "⟦萬萬 Śàνìиĝ... 國國⟧",
33
33
  "groupSharedFeatures.threadedAnnotations.messageEditor.scrollContainerAriaLabel": "⟦萬萬萬萬萬萬萬萬萬 Μèśŝàĝé êďìţòŕ ş¢ŗóĺļ çôиťáíйëř 國國國國國國國國國⟧",
34
+ "groupSharedFeatures.threadedAnnotations.messageEditor.timestampToggleLabel": "⟦萬萬萬萬萬萬 Çòmмèиţ ŵìťĥ ŧíméśτàмΡ 國國國國國國⟧",
34
35
  "groupSharedFeatures.threadedAnnotations.moreOptionsAriaLabel": "⟦萬萬萬萬萬 Μòŕè óΡţìôиś вµťŧõй 國國國國國⟧",
35
36
  "groupSharedFeatures.threadedAnnotations.originalContentDeleted": "⟦萬萬萬萬萬萬萬萬 Òŕìĝíиàĺ ¢òйţèлť ŵáś ďéļêŧëđ 國國國國國國國國⟧",
36
37
  "groupSharedFeatures.threadedAnnotations.reply": "⟦萬 ŔèΡĺý 國⟧",
37
38
  "groupSharedFeatures.threadedAnnotations.replyButtonAriaLabel": "⟦萬萬萬 ŔèΡĺý вµţťòи 國國國⟧",
38
39
  "groupSharedFeatures.threadedAnnotations.resolveButtonAriaLabel": "⟦萬萬 Ŕèśòĺνé 國國⟧",
39
40
  "groupSharedFeatures.threadedAnnotations.resolvedStateAriaLabel": "⟦萬萬萬萬萬萬萬 Ŕèśòĺµţìóи ŝťàŧùş méѕšáĝê 國國國國國國國⟧",
40
- "groupSharedFeatures.threadedAnnotations.seeMore": "See More",
41
+ "groupSharedFeatures.threadedAnnotations.seeMore": "⟦萬萬 Śèé Μòŕê 國國⟧",
41
42
  "groupSharedFeatures.threadedAnnotations.showMoreReplies": "⟦萬萬萬萬萬萬萬萬萬萬萬 {count, plural, one {# mòŕè ŗéΡĺý} other {# мóřê яëРļìēś}} 國國國國國國國國國國國⟧",
42
43
  "groupSharedFeatures.threadedAnnotations.showReplies": "⟦萬萬萬萬萬萬萬萬萬萬萬萬萬 {number, plural, one {Śĥòŵ # ŕèΡĺý} other {Ŝħóω # môŗé řêРļìëś}} 國國國國國國國國國國國國國⟧",
43
44
  "groupSharedFeatures.threadedAnnotations.showRepliesButtonAriaLabel": "⟦萬萬萬 ŔèΡĺý вµţťòи 國國國⟧",