@arbidocs/blocks 0.5.112 → 0.5.113

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 (111) hide show
  1. package/dist/{ConnectedCallDock-KUF6RX76.cjs → ConnectedCallDock-VCJ6Q7WE.cjs} +20 -20
  2. package/dist/{ConnectedCallDock-KUF6RX76.cjs.map → ConnectedCallDock-VCJ6Q7WE.cjs.map} +1 -1
  3. package/dist/{ConnectedCallRoom-ZKIYB2JG.cjs → ConnectedCallRoom-BUI3ILJD.cjs} +13 -13
  4. package/dist/{ConnectedCallRoom-ZKIYB2JG.cjs.map → ConnectedCallRoom-BUI3ILJD.cjs.map} +1 -1
  5. package/dist/{ConnectedNativeDocxComparison-S4RKDH2A.cjs → ConnectedNativeDocxComparison-JO2H4QIP.cjs} +17 -17
  6. package/dist/{ConnectedNativeDocxComparison-S4RKDH2A.cjs.map → ConnectedNativeDocxComparison-JO2H4QIP.cjs.map} +1 -1
  7. package/dist/{ConnectedProductionSetDialog-HX4HTQ3Z.cjs → ConnectedProductionSetDialog-BSPM4NQC.cjs} +4 -4
  8. package/dist/{ConnectedProductionSetDialog-HX4HTQ3Z.cjs.map → ConnectedProductionSetDialog-BSPM4NQC.cjs.map} +1 -1
  9. package/dist/{ConnectedStreamedWordArtifact-A2A7Z3TT.cjs → ConnectedStreamedWordArtifact-DMQEJFCA.cjs} +17 -17
  10. package/dist/{ConnectedStreamedWordArtifact-A2A7Z3TT.cjs.map → ConnectedStreamedWordArtifact-DMQEJFCA.cjs.map} +1 -1
  11. package/dist/{DocumentReviewCard-4A7NF474.cjs → DocumentReviewCard-UBE2DVAC.cjs} +18 -18
  12. package/dist/{DocumentReviewCard-4A7NF474.cjs.map → DocumentReviewCard-UBE2DVAC.cjs.map} +1 -1
  13. package/dist/{FilesViewerDialog-PKCBZXDG.cjs → FilesViewerDialog-EBYRA3ZZ.cjs} +42 -42
  14. package/dist/{FilesViewerDialog-PKCBZXDG.cjs.map → FilesViewerDialog-EBYRA3ZZ.cjs.map} +1 -1
  15. package/dist/{WorkspaceTableView-J3C6VH4T.cjs → WorkspaceTableView-BO2OJO7A.cjs} +10 -10
  16. package/dist/{WorkspaceTableView-J3C6VH4T.cjs.map → WorkspaceTableView-BO2OJO7A.cjs.map} +1 -1
  17. package/dist/agents/index.cjs +296 -296
  18. package/dist/{ai-OYTFPMXI.cjs → ai-EMNMGDAN.cjs} +24 -24
  19. package/dist/ai-EMNMGDAN.cjs.map +1 -0
  20. package/dist/calls/index.cjs +129 -129
  21. package/dist/chat/index.cjs +1 -1
  22. package/dist/{chunk-TP5PGWIO.cjs → chunk-4IOYQLKG.cjs} +3 -3
  23. package/dist/{chunk-TP5PGWIO.cjs.map → chunk-4IOYQLKG.cjs.map} +1 -1
  24. package/dist/{chunk-Q7DB5S7N.cjs → chunk-5VCID67B.cjs} +12 -12
  25. package/dist/{chunk-Q7DB5S7N.cjs.map → chunk-5VCID67B.cjs.map} +1 -1
  26. package/dist/{chunk-NTD7VSHO.cjs → chunk-6W4X4EFI.cjs} +3 -3
  27. package/dist/{chunk-NTD7VSHO.cjs.map → chunk-6W4X4EFI.cjs.map} +1 -1
  28. package/dist/{chunk-ZNZGYSVB.cjs → chunk-A4Z5CTLF.cjs} +36 -36
  29. package/dist/{chunk-ZNZGYSVB.cjs.map → chunk-A4Z5CTLF.cjs.map} +1 -1
  30. package/dist/{chunk-5UMKMUB5.cjs → chunk-AJVZYRAJ.cjs} +50 -50
  31. package/dist/{chunk-5UMKMUB5.cjs.map → chunk-AJVZYRAJ.cjs.map} +1 -1
  32. package/dist/{chunk-TXFZAA3R.cjs → chunk-BHTEKYWJ.cjs} +20 -20
  33. package/dist/{chunk-TXFZAA3R.cjs.map → chunk-BHTEKYWJ.cjs.map} +1 -1
  34. package/dist/{chunk-A4FGU6YC.cjs → chunk-DMNX556N.cjs} +8 -8
  35. package/dist/{chunk-A4FGU6YC.cjs.map → chunk-DMNX556N.cjs.map} +1 -1
  36. package/dist/{chunk-5RCCZYAE.cjs → chunk-DZWIVRYP.cjs} +27 -27
  37. package/dist/{chunk-5RCCZYAE.cjs.map → chunk-DZWIVRYP.cjs.map} +1 -1
  38. package/dist/{chunk-TDO5UWXF.cjs → chunk-E4BLRF2L.cjs} +5 -5
  39. package/dist/{chunk-TDO5UWXF.cjs.map → chunk-E4BLRF2L.cjs.map} +1 -1
  40. package/dist/{chunk-PJ762EO2.cjs → chunk-FGEBA3TL.cjs} +10 -10
  41. package/dist/{chunk-PJ762EO2.cjs.map → chunk-FGEBA3TL.cjs.map} +1 -1
  42. package/dist/{chunk-DZDARC3V.cjs → chunk-GGBNUDLK.cjs} +47 -47
  43. package/dist/{chunk-DZDARC3V.cjs.map → chunk-GGBNUDLK.cjs.map} +1 -1
  44. package/dist/{chunk-NOYQ23I7.cjs → chunk-GTTDJMWX.cjs} +3 -3
  45. package/dist/{chunk-NOYQ23I7.cjs.map → chunk-GTTDJMWX.cjs.map} +1 -1
  46. package/dist/{chunk-37JPFCCU.cjs → chunk-GVTKFVXH.cjs} +6 -6
  47. package/dist/{chunk-37JPFCCU.cjs.map → chunk-GVTKFVXH.cjs.map} +1 -1
  48. package/dist/{chunk-7OPOPYV6.cjs → chunk-H5OLHP2U.cjs} +3 -3
  49. package/dist/{chunk-7OPOPYV6.cjs.map → chunk-H5OLHP2U.cjs.map} +1 -1
  50. package/dist/{chunk-LTEXVRCH.cjs → chunk-IE677C4I.cjs} +3 -3
  51. package/dist/{chunk-LTEXVRCH.cjs.map → chunk-IE677C4I.cjs.map} +1 -1
  52. package/dist/{chunk-ZH7LDZJX.cjs → chunk-JDI7E4RI.cjs} +6 -6
  53. package/dist/{chunk-ZH7LDZJX.cjs.map → chunk-JDI7E4RI.cjs.map} +1 -1
  54. package/dist/{chunk-G5TRBLKF.cjs → chunk-KGGSBJMU.cjs} +4 -4
  55. package/dist/{chunk-G5TRBLKF.cjs.map → chunk-KGGSBJMU.cjs.map} +1 -1
  56. package/dist/{chunk-3NEI27QQ.cjs → chunk-KZKGZ7IG.cjs} +6 -6
  57. package/dist/{chunk-3NEI27QQ.cjs.map → chunk-KZKGZ7IG.cjs.map} +1 -1
  58. package/dist/{chunk-TOM2P3MA.cjs → chunk-L52N2LVE.cjs} +4 -4
  59. package/dist/{chunk-TOM2P3MA.cjs.map → chunk-L52N2LVE.cjs.map} +1 -1
  60. package/dist/{chunk-VDFYMVMP.cjs → chunk-LCNKKSN3.cjs} +4 -4
  61. package/dist/{chunk-VDFYMVMP.cjs.map → chunk-LCNKKSN3.cjs.map} +1 -1
  62. package/dist/{chunk-3Q5L7XVI.cjs → chunk-M2D4POJV.cjs} +3 -3
  63. package/dist/{chunk-3Q5L7XVI.cjs.map → chunk-M2D4POJV.cjs.map} +1 -1
  64. package/dist/{chunk-ZQLRWA3Y.cjs → chunk-MJHIBCF7.cjs} +3 -3
  65. package/dist/{chunk-ZQLRWA3Y.cjs.map → chunk-MJHIBCF7.cjs.map} +1 -1
  66. package/dist/{chunk-NNG34ONS.cjs → chunk-MQANCZOD.cjs} +53 -53
  67. package/dist/{chunk-NNG34ONS.cjs.map → chunk-MQANCZOD.cjs.map} +1 -1
  68. package/dist/{chunk-SRET7LYT.cjs → chunk-MY7Q3QE2.cjs} +4 -4
  69. package/dist/{chunk-SRET7LYT.cjs.map → chunk-MY7Q3QE2.cjs.map} +1 -1
  70. package/dist/{chunk-ZEQEIFZJ.cjs → chunk-ONZOVO2B.cjs} +18 -18
  71. package/dist/{chunk-ZEQEIFZJ.cjs.map → chunk-ONZOVO2B.cjs.map} +1 -1
  72. package/dist/{chunk-3GYOWDNM.cjs → chunk-OTG5T5Z5.cjs} +3 -3
  73. package/dist/{chunk-3GYOWDNM.cjs.map → chunk-OTG5T5Z5.cjs.map} +1 -1
  74. package/dist/{chunk-4QTQS4LS.cjs → chunk-OVKJ7OVZ.cjs} +5 -5
  75. package/dist/{chunk-4QTQS4LS.cjs.map → chunk-OVKJ7OVZ.cjs.map} +1 -1
  76. package/dist/{chunk-QVHP4R7T.cjs → chunk-OZWYCRRK.cjs} +11 -11
  77. package/dist/{chunk-QVHP4R7T.cjs.map → chunk-OZWYCRRK.cjs.map} +1 -1
  78. package/dist/{chunk-GTWEWDIZ.cjs → chunk-PIB7K7HI.cjs} +6 -6
  79. package/dist/{chunk-GTWEWDIZ.cjs.map → chunk-PIB7K7HI.cjs.map} +1 -1
  80. package/dist/{chunk-FJXJ43JO.cjs → chunk-R4TP3VS3.cjs} +68 -68
  81. package/dist/{chunk-FJXJ43JO.cjs.map → chunk-R4TP3VS3.cjs.map} +1 -1
  82. package/dist/{chunk-R7CJEIA5.cjs → chunk-WJP6ICDM.cjs} +4 -4
  83. package/dist/{chunk-R7CJEIA5.cjs.map → chunk-WJP6ICDM.cjs.map} +1 -1
  84. package/dist/{chunk-NJCK6V6U.cjs → chunk-XKDUPU7B.cjs} +4 -4
  85. package/dist/{chunk-NJCK6V6U.cjs.map → chunk-XKDUPU7B.cjs.map} +1 -1
  86. package/dist/{chunk-NMT4UZQM.cjs → chunk-Y45VRNSZ.cjs} +3 -3
  87. package/dist/{chunk-NMT4UZQM.cjs.map → chunk-Y45VRNSZ.cjs.map} +1 -1
  88. package/dist/{chunk-6UYTG2YG.cjs → chunk-YONJRX6N.cjs} +28 -28
  89. package/dist/{chunk-6UYTG2YG.cjs.map → chunk-YONJRX6N.cjs.map} +1 -1
  90. package/dist/{chunk-N6AZYEYL.cjs → chunk-ZZZ6AZDR.cjs} +4 -4
  91. package/dist/{chunk-N6AZYEYL.cjs.map → chunk-ZZZ6AZDR.cjs.map} +1 -1
  92. package/dist/connect/docx.cjs +20 -20
  93. package/dist/connect/index.cjs +1066 -1034
  94. package/dist/connect/index.cjs.map +1 -1
  95. package/dist/connect/viewer.cjs +31 -31
  96. package/dist/connection/report-problem/ReportProblemDialog.d.ts +2 -2
  97. package/dist/connection/report-problem/ReportProblemDialog.js +51 -19
  98. package/dist/connection/report-problem/ReportProblemDialog.js.map +2 -2
  99. package/dist/dashboards/index.cjs +1 -1
  100. package/dist/embed/index.cjs +41 -41
  101. package/dist/facts/index.cjs +43 -43
  102. package/dist/files/index.cjs +225 -225
  103. package/dist/index.cjs +1414 -1414
  104. package/dist/settings/index.cjs +148 -148
  105. package/dist/shell/index.cjs +90 -90
  106. package/dist/studio/index.cjs +27 -27
  107. package/dist/workflow-canvas/index.cjs +57 -57
  108. package/dist/workspaces/index.cjs +25 -25
  109. package/node_modules/@arbidocs/coedit/package.json +1 -1
  110. package/package.json +5 -5
  111. package/dist/ai-OYTFPMXI.cjs.map +0 -1
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkNNG34ONS_cjs = require('../chunk-NNG34ONS.cjs');
4
+ var chunkMQANCZOD_cjs = require('../chunk-MQANCZOD.cjs');
5
5
  require('../chunk-4CIVQWAX.cjs');
6
6
  var chunkBYN7UMC5_cjs = require('../chunk-BYN7UMC5.cjs');
7
- require('../chunk-G5TRBLKF.cjs');
7
+ require('../chunk-KGGSBJMU.cjs');
8
8
  require('../chunk-OKHKJ5ML.cjs');
9
- require('../chunk-ZNZGYSVB.cjs');
10
- require('../chunk-NJCK6V6U.cjs');
11
- require('../chunk-4QTQS4LS.cjs');
9
+ require('../chunk-A4Z5CTLF.cjs');
10
+ require('../chunk-XKDUPU7B.cjs');
11
+ require('../chunk-OVKJ7OVZ.cjs');
12
12
  require('../chunk-223D4727.cjs');
13
13
  require('../chunk-SNUBQMIS.cjs');
14
- require('../chunk-PJ762EO2.cjs');
14
+ require('../chunk-FGEBA3TL.cjs');
15
15
  require('../chunk-4ONPEVTP.cjs');
16
16
  require('../chunk-V3KLUWQQ.cjs');
17
17
  require('../chunk-ENUZ35NR.cjs');
18
- require('../chunk-3NEI27QQ.cjs');
18
+ require('../chunk-KZKGZ7IG.cjs');
19
19
  require('../chunk-YYPZOEED.cjs');
20
20
  require('../chunk-GNZAH6UI.cjs');
21
21
  require('../chunk-JH6JTI76.cjs');
@@ -24,68 +24,68 @@ require('../chunk-DTMBAFIL.cjs');
24
24
  require('../chunk-ZESMRGDV.cjs');
25
25
  require('../chunk-VCEX7COE.cjs');
26
26
  require('../chunk-34HQO4ZQ.cjs');
27
- require('../chunk-Q7DB5S7N.cjs');
27
+ require('../chunk-CT3SLXB7.cjs');
28
+ require('../chunk-5VCID67B.cjs');
28
29
  require('../chunk-MZZ3SBQL.cjs');
29
- require('../chunk-ZQLRWA3Y.cjs');
30
- require('../chunk-NOYQ23I7.cjs');
30
+ require('../chunk-MJHIBCF7.cjs');
31
+ require('../chunk-GTTDJMWX.cjs');
31
32
  require('../chunk-ZPPMAL5P.cjs');
32
33
  require('../chunk-ORELHENJ.cjs');
33
34
  require('../chunk-NWNVWO6L.cjs');
34
35
  require('../chunk-SK6HQ46Q.cjs');
35
36
  require('../chunk-MNIQDXM6.cjs');
36
37
  require('../chunk-Z3VNKPPH.cjs');
37
- require('../chunk-VLCY46K6.cjs');
38
+ require('../chunk-DEXUL3T6.cjs');
39
+ require('../chunk-6WMMZLEV.cjs');
40
+ require('../chunk-Z2XZ2D4N.cjs');
41
+ require('../chunk-YZSQ7F5K.cjs');
42
+ require('../chunk-MCXS6X37.cjs');
43
+ require('../chunk-KQF7POTG.cjs');
38
44
  require('../chunk-HM5L4SBC.cjs');
45
+ require('../chunk-75BNMCUX.cjs');
39
46
  require('../chunk-OEJQFPWO.cjs');
40
47
  require('../chunk-OYXWQTHF.cjs');
41
48
  require('../chunk-S237ORM3.cjs');
42
49
  require('../chunk-II2OEXHW.cjs');
43
- require('../chunk-R7CJEIA5.cjs');
50
+ require('../chunk-FX3K6LNZ.cjs');
51
+ require('../chunk-WJP6ICDM.cjs');
44
52
  require('../chunk-3YEXZX4H.cjs');
45
53
  require('../chunk-4PA6VCCR.cjs');
46
- require('../chunk-3Q5L7XVI.cjs');
54
+ require('../chunk-M2D4POJV.cjs');
47
55
  require('../chunk-AHDJXIUB.cjs');
48
56
  require('../chunk-RL2HI6NP.cjs');
49
57
  require('../chunk-6UZC4XVV.cjs');
50
58
  require('../chunk-YAPXIANR.cjs');
59
+ require('../chunk-QGVOT7E4.cjs');
60
+ require('../chunk-QRAQZTJE.cjs');
61
+ require('../chunk-UDSHVNU3.cjs');
51
62
  require('../chunk-ZFKWCGA5.cjs');
52
- require('../chunk-E7TE2WVT.cjs');
63
+ require('../chunk-IPSHAMO2.cjs');
53
64
  require('../chunk-EG7EJFUE.cjs');
54
65
  require('../chunk-VG24E4JJ.cjs');
55
66
  require('../chunk-U2FFG2B3.cjs');
56
67
  require('../chunk-KKYNTWDU.cjs');
57
68
  require('../chunk-M74FWYNL.cjs');
69
+ require('../chunk-VZOOGA47.cjs');
58
70
  require('../chunk-LQHXUSWZ.cjs');
59
71
  require('../chunk-6YOZKXV6.cjs');
60
72
  require('../chunk-3YZKDCWY.cjs');
61
73
  require('../chunk-SJSGSHIT.cjs');
62
- require('../chunk-ZW6FPIFC.cjs');
63
- require('../chunk-VZOOGA47.cjs');
64
- require('../chunk-CT3SLXB7.cjs');
65
- require('../chunk-DEXUL3T6.cjs');
66
- require('../chunk-6WMMZLEV.cjs');
67
- require('../chunk-Z2XZ2D4N.cjs');
68
- require('../chunk-YZSQ7F5K.cjs');
69
- require('../chunk-MCXS6X37.cjs');
70
- require('../chunk-KQF7POTG.cjs');
71
- require('../chunk-75BNMCUX.cjs');
72
- require('../chunk-FX3K6LNZ.cjs');
73
- require('../chunk-QGVOT7E4.cjs');
74
- require('../chunk-QRAQZTJE.cjs');
75
- require('../chunk-UDSHVNU3.cjs');
76
- require('../chunk-IPSHAMO2.cjs');
77
74
  require('../chunk-PPCATBOY.cjs');
75
+ require('../chunk-ZW6FPIFC.cjs');
78
76
  require('../chunk-U5T46QCS.cjs');
79
77
  require('../chunk-JDFBEGQO.cjs');
80
- require('../chunk-ULWRNGGE.cjs');
81
78
  require('../chunk-LJJJ6CYH.cjs');
79
+ require('../chunk-VLCY46K6.cjs');
80
+ require('../chunk-E7TE2WVT.cjs');
81
+ require('../chunk-ULWRNGGE.cjs');
82
82
  require('../chunk-PLIF5CUV.cjs');
83
83
 
84
84
 
85
85
 
86
86
  Object.defineProperty(exports, "ConnectedDocumentViewer", {
87
87
  enumerable: true,
88
- get: function () { return chunkNNG34ONS_cjs.ConnectedDocumentViewer; }
88
+ get: function () { return chunkMQANCZOD_cjs.ConnectedDocumentViewer; }
89
89
  });
90
90
  Object.defineProperty(exports, "ConnectedDocumentToolsProvider", {
91
91
  enumerable: true,
@@ -1,4 +1,4 @@
1
- /** Support form with optional, explicitly chosen and redacted screenshot evidence. */
1
+ /** Support form with optional screenshot evidence and redaction. */
2
2
  import React, { type ReactNode } from 'react';
3
3
  export interface ReportProblemOptions {
4
4
  /** @deprecated No image download is created. Retained for source compatibility. */
@@ -16,7 +16,7 @@ export interface ReportProblemOptions {
16
16
  }
17
17
  export interface ReportProblemDialogProps extends ReportProblemOptions {
18
18
  open: boolean;
19
- /** The full captured frame, to crop. Dropped once a crop is chosen. */
19
+ /** The captured frame. Dropped once a crop is chosen. */
20
20
  frame: Blob | null;
21
21
  /** The kept screenshot (the crop, or a picked file). */
22
22
  image: Blob | null;
@@ -37,6 +37,7 @@ function ReportProblemDialog({
37
37
  const [natural, setNatural] = useState(null);
38
38
  const [frameSize, setFrameSize] = useState(null);
39
39
  const [cropArea, setCropArea] = useState(null);
40
+ const [cropping, setCropping] = useState(false);
40
41
  const [busy, setBusy] = useState(false);
41
42
  const [failure, setFailure] = useState(null);
42
43
  const [ticketReference, setTicketReference] = useState(null);
@@ -44,28 +45,33 @@ function ReportProblemDialog({
44
45
  const [submissionId] = useState(() => crypto.randomUUID());
45
46
  const imgRef = useRef(null);
46
47
  const dragStart = useRef(null);
47
- const frameUrl = useMemo(() => frame ? URL.createObjectURL(frame) : null, [frame]);
48
- useEffect(() => () => void (frameUrl && URL.revokeObjectURL(frameUrl)), [frameUrl]);
49
- const imageUrl = useMemo(() => image ? URL.createObjectURL(image) : null, [image]);
48
+ const screenshot = image ?? frame;
49
+ const imageUrl = useMemo(
50
+ () => screenshot ? URL.createObjectURL(screenshot) : null,
51
+ [screenshot]
52
+ );
50
53
  useEffect(() => () => void (imageUrl && URL.revokeObjectURL(imageUrl)), [imageUrl]);
51
54
  useEffect(() => {
52
55
  setFrameSize(null);
53
- if (!frameUrl) return;
56
+ if (!imageUrl) return;
54
57
  const img = new Image();
55
58
  img.onload = () => setFrameSize({ width: img.naturalWidth, height: img.naturalHeight });
56
- img.src = frameUrl;
57
- }, [frameUrl]);
59
+ img.src = imageUrl;
60
+ }, [imageUrl]);
58
61
  useEffect(() => {
59
62
  setMarks([]);
60
63
  setDraft(null);
61
64
  setNatural(null);
62
- }, [image]);
65
+ setCropping(false);
66
+ setCropArea(null);
67
+ }, [screenshot]);
63
68
  const applyCrop = async () => {
64
- if (!frameUrl || !cropArea) return;
69
+ if (!imageUrl || !cropArea) return;
65
70
  setBusy(true);
66
71
  try {
67
- const { blob } = await cropImage(frameUrl, cropArea, { mimeType: "image/png" });
72
+ const { blob } = await cropImage(imageUrl, cropArea, { mimeType: "image/png" });
68
73
  onCropped(blob);
74
+ setCropping(false);
69
75
  } catch {
70
76
  notify("Couldn't crop the screenshot. Please try again.", "error");
71
77
  } finally {
@@ -82,8 +88,8 @@ function ReportProblemDialog({
82
88
  );
83
89
  };
84
90
  const renderImage = async () => {
85
- if (!image || !natural) return null;
86
- const bitmap = await createImageBitmap(image);
91
+ if (!screenshot || !natural) return null;
92
+ const bitmap = await createImageBitmap(screenshot);
87
93
  try {
88
94
  return await renderAnnotatedScreenshot(bitmap, marks, { happened: description, expected: "" });
89
95
  } finally {
@@ -95,8 +101,8 @@ function ReportProblemDialog({
95
101
  setBusy(true);
96
102
  setFailure(null);
97
103
  try {
98
- const rendered = image ? await renderImage() : null;
99
- if (image && !rendered) throw new Error("The screenshot is not ready. Please try again.");
104
+ const rendered = screenshot ? await renderImage() : null;
105
+ if (screenshot && !rendered) throw new Error("The screenshot is not ready. Please try again.");
100
106
  const receipt = await onSubmit({
101
107
  description: description.trim(),
102
108
  image: rendered ?? void 0,
@@ -121,16 +127,15 @@ function ReportProblemDialog({
121
127
  width: `${mark.w / natural.width * 100}%`,
122
128
  height: `${mark.h / natural.height * 100}%`
123
129
  } : void 0;
124
- const cropping = !!frameUrl;
125
130
  return /* @__PURE__ */ jsx(Dialog, { open, onOpenChange: (next) => !next && !busy && onClose(), children: /* @__PURE__ */ jsxs(
126
131
  DialogContent,
127
132
  {
128
- className: `flex max-h-[92vh] w-[96vw] flex-col gap-3 p-4 ${ticketId === null && (cropping || image) ? "max-w-[96vw] sm:max-w-[min(96vw,64rem)]" : "max-w-lg sm:max-w-lg"}`,
133
+ className: `flex max-h-[92vh] w-[96vw] flex-col gap-3 p-4 ${ticketId === null && screenshot ? "max-w-[96vw] sm:max-w-[min(96vw,64rem)]" : "max-w-lg sm:max-w-lg"}`,
129
134
  "data-testid": "report-problem-dialog",
130
135
  children: [
131
136
  /* @__PURE__ */ jsxs("div", { className: "pr-8", children: [
132
137
  /* @__PURE__ */ jsx(DialogTitle, { children: ticketId === null ? "Contact support" : "Support request sent" }),
133
- /* @__PURE__ */ jsx(DialogDescription, { children: ticketId !== null ? "We have received your request. Track updates in My requests." : cropping ? "Crop the screenshot to the part that shows the problem. Only the cropped part is kept." : image ? "Black out anything confidential before sending. Blacked-out areas are removed from the image." : "Tell us what you need help with. You can choose to add a screenshot." })
138
+ /* @__PURE__ */ jsx(DialogDescription, { children: ticketId !== null ? "We have received your request. Track updates in My requests." : cropping ? "Crop the screenshot to the part that shows the problem. Only the cropped part is kept." : screenshot ? "Black out anything confidential before sending. Blacked-out areas are removed from the image." : "Tell us what you need help with. You can choose to add a screenshot." })
134
139
  ] }),
135
140
  ticketId !== null && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4 rounded-md border border-border bg-muted p-4", children: [
136
141
  /* @__PURE__ */ jsxs("p", { className: "font-medium", "data-testid": "report-ticket-receipt", children: [
@@ -139,11 +144,11 @@ function ReportProblemDialog({
139
144
  ] }),
140
145
  /* @__PURE__ */ jsx(Button, { onClick: onClose, "data-testid": "report-receipt-close", children: "Close" })
141
146
  ] }),
142
- cropping ? /* @__PURE__ */ jsxs("div", { className: "grid gap-2", hidden: ticketId !== null, children: [
147
+ cropping && imageUrl ? /* @__PURE__ */ jsxs("div", { className: "grid gap-2", hidden: ticketId !== null, children: [
143
148
  /* @__PURE__ */ jsx(
144
149
  ImageCropper,
145
150
  {
146
- image: frameUrl,
151
+ image: imageUrl,
147
152
  aspect: frameSize ? frameSize.width / frameSize.height : window.innerWidth / window.innerHeight,
148
153
  maxZoom: 6,
149
154
  cropAreaClassName: "h-[50vh] min-h-64",
@@ -152,6 +157,15 @@ function ReportProblemDialog({
152
157
  frameSize ? "sized" : "unsized"
153
158
  ),
154
159
  /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap justify-end gap-2", children: [
160
+ /* @__PURE__ */ jsx(
161
+ Button,
162
+ {
163
+ variant: "ghost",
164
+ onClick: () => setCropping(false),
165
+ "data-testid": "report-cancel-crop",
166
+ children: "Cancel crop"
167
+ }
168
+ ),
155
169
  /* @__PURE__ */ jsxs(
156
170
  Button,
157
171
  {
@@ -240,6 +254,24 @@ function ReportProblemDialog({
240
254
  /* @__PURE__ */ jsx(EyeOff, { className: "size-4" }),
241
255
  " Drag over anything confidential to black it out."
242
256
  ] }),
257
+ /* @__PURE__ */ jsxs(
258
+ Button,
259
+ {
260
+ size: "sm",
261
+ variant: "ghost",
262
+ disabled: !!marks.length,
263
+ title: marks.length ? "Undo blacked-out areas before cropping" : void 0,
264
+ onClick: () => {
265
+ setCropArea(null);
266
+ setCropping(true);
267
+ },
268
+ "data-testid": "report-crop",
269
+ children: [
270
+ /* @__PURE__ */ jsx(Crop, { className: "mr-1 size-4" }),
271
+ " Crop"
272
+ ]
273
+ }
274
+ ),
243
275
  /* @__PURE__ */ jsxs(
244
276
  Button,
245
277
  {
@@ -322,7 +354,7 @@ function ReportProblemDialog({
322
354
  /* @__PURE__ */ jsx(
323
355
  Button,
324
356
  {
325
- disabled: !onSubmit || !description.trim() || busy || cropping || !!image && !natural,
357
+ disabled: !onSubmit || !description.trim() || busy || cropping || !!screenshot && !natural,
326
358
  onClick: () => void submit(),
327
359
  "data-testid": "report-send",
328
360
  children: busy ? "Sending\u2026" : "Send to support"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/connection/report-problem/ReportProblemDialog.tsx"],
4
- "sourcesContent": ["/** Support form with optional, explicitly chosen and redacted screenshot evidence. */\nimport React, { useEffect, useMemo, useRef, useState, type ReactNode } from 'react'\nimport { Camera, Crop, EyeOff, ImageUp, Trash2, Undo2 } from 'lucide-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogTitle,\n Textarea,\n} from '@arbidocs/react/ui'\nimport { ImageCropper, cropImage, type CropArea } from '@arbidocs/react'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { canCaptureScreen } from './screen-capture'\nimport {\n isMeaningfulRect,\n rectFromDrag,\n renderAnnotatedScreenshot,\n toImagePoint,\n type Mark,\n} from './screenshot-annotations'\n\nexport interface ReportProblemOptions {\n /** @deprecated No image download is created. Retained for source compatibility. */\n fileNamePrefix?: string\n onSubmit?: (report: {\n description: string\n image?: Blob\n idempotencyKey: string\n }) => Promise<{ ticket_id: number; reference?: string }>\n /** A line beside the actions: where reports go (the site's own words). Default: none. */\n footnote?: ReactNode\n}\n\nexport interface ReportProblemDialogProps extends ReportProblemOptions {\n open: boolean\n /** The full captured frame, to crop. Dropped once a crop is chosen. */\n frame: Blob | null\n /** The kept screenshot (the crop, or a picked file). */\n image: Blob | null\n onCropped: (crop: Blob) => void\n onImageChange: (image: Blob | null) => void\n onRetake: () => void\n onClose: () => void\n}\n\nexport function ReportProblemDialog({\n open,\n frame,\n image,\n onCropped,\n onImageChange,\n onRetake,\n onClose,\n onSubmit,\n footnote,\n}: ReportProblemDialogProps): React.ReactElement {\n const { notify } = useBlocksEnvironment()\n const [description, setDescription] = useState('')\n const [marks, setMarks] = useState<Mark[]>([])\n const [draft, setDraft] = useState<Mark | null>(null)\n const [natural, setNatural] = useState<{ width: number; height: number } | null>(null)\n const [frameSize, setFrameSize] = useState<{ width: number; height: number } | null>(null)\n const [cropArea, setCropArea] = useState<CropArea | null>(null)\n const [busy, setBusy] = useState(false)\n const [failure, setFailure] = useState<string | null>(null)\n const [ticketReference, setTicketReference] = useState<string | null>(null)\n const [ticketId, setTicketId] = useState<number | null>(null)\n const [submissionId] = useState(() => crypto.randomUUID())\n const imgRef = useRef<HTMLImageElement>(null)\n const dragStart = useRef<{ x: number; y: number } | null>(null)\n\n const frameUrl = useMemo(() => (frame ? URL.createObjectURL(frame) : null), [frame])\n useEffect(() => () => void (frameUrl && URL.revokeObjectURL(frameUrl)), [frameUrl])\n const imageUrl = useMemo(() => (image ? URL.createObjectURL(image) : null), [image])\n useEffect(() => () => void (imageUrl && URL.revokeObjectURL(imageUrl)), [imageUrl])\n\n // The frame's size picks the \"Screen\" crop shape.\n useEffect(() => {\n setFrameSize(null)\n if (!frameUrl) return\n const img = new Image()\n img.onload = () => setFrameSize({ width: img.naturalWidth, height: img.naturalHeight })\n img.src = frameUrl\n }, [frameUrl])\n\n // A new screenshot starts new marks; closing starts a new report.\n useEffect(() => {\n setMarks([])\n setDraft(null)\n setNatural(null)\n }, [image])\n\n const applyCrop = async () => {\n if (!frameUrl || !cropArea) return\n setBusy(true)\n try {\n const { blob } = await cropImage(frameUrl, cropArea, { mimeType: 'image/png' })\n onCropped(blob)\n } catch {\n notify(\"Couldn't crop the screenshot. Please try again.\", 'error')\n } finally {\n setBusy(false)\n }\n }\n\n const pointFrom = (event: React.PointerEvent) => {\n const img = imgRef.current\n if (!img || !natural) return null\n return toImagePoint(\n { x: event.clientX, y: event.clientY },\n img.getBoundingClientRect(),\n natural\n )\n }\n\n const renderImage = async (): Promise<Blob | null> => {\n if (!image || !natural) return null\n const bitmap = await createImageBitmap(image)\n try {\n return await renderAnnotatedScreenshot(bitmap, marks, { happened: description, expected: '' })\n } finally {\n bitmap.close()\n }\n }\n\n const submit = async () => {\n if (!onSubmit || !description.trim()) return\n setBusy(true)\n setFailure(null)\n try {\n const rendered = image ? await renderImage() : null\n if (image && !rendered) throw new Error('The screenshot is not ready. Please try again.')\n const receipt = await onSubmit({\n description: description.trim(),\n image: rendered ?? undefined,\n idempotencyKey: submissionId,\n })\n setTicketId(receipt.ticket_id)\n setTicketReference(\n receipt.reference &&\n /^[a-z0-9-]+-[0-9]+$/.test(receipt.reference) &&\n receipt.reference.endsWith(`-${receipt.ticket_id}`)\n ? receipt.reference\n : null\n )\n } catch (error) {\n setFailure(\n error instanceof Error ? error.message : 'Could not send your request. Please try again.'\n )\n } finally {\n setBusy(false)\n }\n }\n\n const shown = draft ? [...marks, draft] : marks\n const percent = (mark: Mark) =>\n natural\n ? {\n left: `${(mark.x / natural.width) * 100}%`,\n top: `${(mark.y / natural.height) * 100}%`,\n width: `${(mark.w / natural.width) * 100}%`,\n height: `${(mark.h / natural.height) * 100}%`,\n }\n : undefined\n const cropping = !!frameUrl\n\n return (\n <Dialog open={open} onOpenChange={(next) => !next && !busy && onClose()}>\n <DialogContent\n className={`flex max-h-[92vh] w-[96vw] flex-col gap-3 p-4 ${ticketId === null && (cropping || image) ? 'max-w-[96vw] sm:max-w-[min(96vw,64rem)]' : 'max-w-lg sm:max-w-lg'}`}\n data-testid=\"report-problem-dialog\"\n >\n <div className=\"pr-8\">\n <DialogTitle>\n {ticketId === null ? 'Contact support' : 'Support request sent'}\n </DialogTitle>\n <DialogDescription>\n {ticketId !== null\n ? 'We have received your request. Track updates in My requests.'\n : cropping\n ? 'Crop the screenshot to the part that shows the problem. Only the cropped part is kept.'\n : image\n ? 'Black out anything confidential before sending. Blacked-out areas are removed from the image.'\n : 'Tell us what you need help with. You can choose to add a screenshot.'}\n </DialogDescription>\n </div>\n\n {ticketId !== null && (\n <div className=\"flex items-center justify-between gap-4 rounded-md border border-border bg-muted p-4\">\n <p className=\"font-medium\" data-testid=\"report-ticket-receipt\">\n Ticket number: {ticketReference ?? `#${ticketId}`}\n </p>\n <Button onClick={onClose} data-testid=\"report-receipt-close\">\n Close\n </Button>\n </div>\n )}\n\n {cropping ? (\n <div className=\"grid gap-2\" hidden={ticketId !== null}>\n <ImageCropper\n key={frameSize ? 'sized' : 'unsized'}\n image={frameUrl}\n aspect={\n frameSize\n ? frameSize.width / frameSize.height\n : window.innerWidth / window.innerHeight\n }\n maxZoom={6}\n cropAreaClassName=\"h-[50vh] min-h-64\"\n onCropComplete={(area) => setCropArea(area)}\n />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button\n variant=\"ghost\"\n onClick={() => onImageChange(null)}\n data-testid=\"report-remove-screenshot\"\n >\n <Trash2 className=\"mr-1 size-4\" /> Remove screenshot\n </Button>\n <Button variant=\"ghost\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Retake\n </Button>\n <Button\n disabled={!cropArea || busy}\n onClick={() => void applyCrop()}\n data-testid=\"report-use-crop\"\n >\n <Crop className=\"mr-1 size-4\" /> Use this crop\n </Button>\n </div>\n </div>\n ) : imageUrl ? (\n <div className=\"grid gap-2\" hidden={ticketId !== null}>\n <div className=\"flex min-h-0 justify-center overflow-hidden rounded-md bg-muted p-2\">\n <div className=\"relative max-w-full\">\n <img\n ref={imgRef}\n src={imageUrl}\n alt=\"Screenshot of the problem\"\n className=\"block max-h-[45vh] max-w-full select-none object-contain\"\n draggable={false}\n onLoad={(event) =>\n setNatural({\n width: event.currentTarget.naturalWidth,\n height: event.currentTarget.naturalHeight,\n })\n }\n data-testid=\"report-screenshot\"\n />\n <div\n className=\"absolute inset-0 cursor-crosshair touch-none\"\n onPointerDown={(event) => {\n const point = pointFrom(event)\n if (!point) return\n event.currentTarget.setPointerCapture?.(event.pointerId)\n dragStart.current = point\n setDraft({ kind: 'redact', ...point, w: 0, h: 0 })\n }}\n onPointerMove={(event) => {\n const point = pointFrom(event)\n if (dragStart.current && point && natural)\n setDraft({\n kind: 'redact',\n ...rectFromDrag(dragStart.current, point, natural),\n })\n }}\n onPointerUp={() => {\n if (draft && isMeaningfulRect(draft)) setMarks((m) => [...m, draft])\n dragStart.current = null\n setDraft(null)\n }}\n data-testid=\"report-draw-surface\"\n >\n {shown.map((mark, i) => (\n <div\n key={i}\n className=\"pointer-events-none absolute bg-black\"\n style={percent(mark)}\n data-testid=\"report-mark-redact\"\n />\n ))}\n </div>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-2 text-sm\">\n <span className=\"mr-auto flex items-center gap-1 text-muted-foreground\">\n <EyeOff className=\"size-4\" /> Drag over anything confidential to black it out.\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!marks.length}\n onClick={() => setMarks((m) => m.slice(0, -1))}\n data-testid=\"report-undo\"\n >\n <Undo2 className=\"mr-1 size-4\" /> Undo\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onImageChange(null)}\n data-testid=\"report-remove-screenshot\"\n >\n <Trash2 className=\"mr-1 size-4\" /> Remove\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Retake\n </Button>\n </div>\n </div>\n ) : (\n <div\n className=\"flex flex-wrap items-center gap-3 rounded-md border border-dashed border-border p-3 text-sm\"\n hidden={ticketId !== null}\n >\n <span className=\"text-muted-foreground\">No screenshot attached.</span>\n {canCaptureScreen() ? (\n <Button size=\"sm\" variant=\"outline\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Take a screenshot\n </Button>\n ) : (\n <label className=\"inline-flex cursor-pointer items-center gap-1 font-medium text-primary\">\n <ImageUp className=\"size-4\" /> Choose a screenshot\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"sr-only\"\n onChange={(event) => {\n const file = event.target.files?.[0]\n if (file) onImageChange(file)\n }}\n data-testid=\"report-choose-image\"\n />\n </label>\n )}\n </div>\n )}\n\n <label className=\"grid gap-1 text-sm\" hidden={ticketId !== null}>\n <span className=\"font-medium\">What went wrong?</span>\n <Textarea\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n rows={3}\n placeholder=\"What did you do, and what happened instead?\"\n data-testid=\"report-description\"\n />\n </label>\n\n {failure && (\n <p role=\"alert\" className=\"text-sm text-destructive\" hidden={ticketId !== null}>\n {failure}\n </p>\n )}\n <div className=\"flex flex-wrap items-center justify-end gap-2\" hidden={ticketId !== null}>\n <span className=\"mr-auto text-xs text-muted-foreground\">{footnote}</span>\n <Button variant=\"ghost\" onClick={onClose} disabled={busy}>\n Cancel\n </Button>\n <Button\n disabled={!onSubmit || !description.trim() || busy || cropping || (!!image && !natural)}\n onClick={() => void submit()}\n data-testid=\"report-send\"\n >\n {busy ? 'Sending\u2026' : 'Send to support'}\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/** Support form with optional screenshot evidence and redaction. */\nimport React, { useEffect, useMemo, useRef, useState, type ReactNode } from 'react'\nimport { Camera, Crop, EyeOff, ImageUp, Trash2, Undo2 } from 'lucide-react'\nimport {\n Button,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogTitle,\n Textarea,\n} from '@arbidocs/react/ui'\nimport { ImageCropper, cropImage, type CropArea } from '@arbidocs/react'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { canCaptureScreen } from './screen-capture'\nimport {\n isMeaningfulRect,\n rectFromDrag,\n renderAnnotatedScreenshot,\n toImagePoint,\n type Mark,\n} from './screenshot-annotations'\n\nexport interface ReportProblemOptions {\n /** @deprecated No image download is created. Retained for source compatibility. */\n fileNamePrefix?: string\n onSubmit?: (report: {\n description: string\n image?: Blob\n idempotencyKey: string\n }) => Promise<{ ticket_id: number; reference?: string }>\n /** A line beside the actions: where reports go (the site's own words). Default: none. */\n footnote?: ReactNode\n}\n\nexport interface ReportProblemDialogProps extends ReportProblemOptions {\n open: boolean\n /** The captured frame. Dropped once a crop is chosen. */\n frame: Blob | null\n /** The kept screenshot (the crop, or a picked file). */\n image: Blob | null\n onCropped: (crop: Blob) => void\n onImageChange: (image: Blob | null) => void\n onRetake: () => void\n onClose: () => void\n}\n\nexport function ReportProblemDialog({\n open,\n frame,\n image,\n onCropped,\n onImageChange,\n onRetake,\n onClose,\n onSubmit,\n footnote,\n}: ReportProblemDialogProps): React.ReactElement {\n const { notify } = useBlocksEnvironment()\n const [description, setDescription] = useState('')\n const [marks, setMarks] = useState<Mark[]>([])\n const [draft, setDraft] = useState<Mark | null>(null)\n const [natural, setNatural] = useState<{ width: number; height: number } | null>(null)\n const [frameSize, setFrameSize] = useState<{ width: number; height: number } | null>(null)\n const [cropArea, setCropArea] = useState<CropArea | null>(null)\n const [cropping, setCropping] = useState(false)\n const [busy, setBusy] = useState(false)\n const [failure, setFailure] = useState<string | null>(null)\n const [ticketReference, setTicketReference] = useState<string | null>(null)\n const [ticketId, setTicketId] = useState<number | null>(null)\n const [submissionId] = useState(() => crypto.randomUUID())\n const imgRef = useRef<HTMLImageElement>(null)\n const dragStart = useRef<{ x: number; y: number } | null>(null)\n\n const screenshot = image ?? frame\n const imageUrl = useMemo(\n () => (screenshot ? URL.createObjectURL(screenshot) : null),\n [screenshot]\n )\n useEffect(() => () => void (imageUrl && URL.revokeObjectURL(imageUrl)), [imageUrl])\n\n // The frame's size picks the \"Screen\" crop shape.\n useEffect(() => {\n setFrameSize(null)\n if (!imageUrl) return\n const img = new Image()\n img.onload = () => setFrameSize({ width: img.naturalWidth, height: img.naturalHeight })\n img.src = imageUrl\n }, [imageUrl])\n\n // A new screenshot starts new marks; closing starts a new report.\n useEffect(() => {\n setMarks([])\n setDraft(null)\n setNatural(null)\n setCropping(false)\n setCropArea(null)\n }, [screenshot])\n\n const applyCrop = async () => {\n if (!imageUrl || !cropArea) return\n setBusy(true)\n try {\n const { blob } = await cropImage(imageUrl, cropArea, { mimeType: 'image/png' })\n onCropped(blob)\n setCropping(false)\n } catch {\n notify(\"Couldn't crop the screenshot. Please try again.\", 'error')\n } finally {\n setBusy(false)\n }\n }\n\n const pointFrom = (event: React.PointerEvent) => {\n const img = imgRef.current\n if (!img || !natural) return null\n return toImagePoint(\n { x: event.clientX, y: event.clientY },\n img.getBoundingClientRect(),\n natural\n )\n }\n\n const renderImage = async (): Promise<Blob | null> => {\n if (!screenshot || !natural) return null\n const bitmap = await createImageBitmap(screenshot)\n try {\n return await renderAnnotatedScreenshot(bitmap, marks, { happened: description, expected: '' })\n } finally {\n bitmap.close()\n }\n }\n\n const submit = async () => {\n if (!onSubmit || !description.trim()) return\n setBusy(true)\n setFailure(null)\n try {\n const rendered = screenshot ? await renderImage() : null\n if (screenshot && !rendered) throw new Error('The screenshot is not ready. Please try again.')\n const receipt = await onSubmit({\n description: description.trim(),\n image: rendered ?? undefined,\n idempotencyKey: submissionId,\n })\n setTicketId(receipt.ticket_id)\n setTicketReference(\n receipt.reference &&\n /^[a-z0-9-]+-[0-9]+$/.test(receipt.reference) &&\n receipt.reference.endsWith(`-${receipt.ticket_id}`)\n ? receipt.reference\n : null\n )\n } catch (error) {\n setFailure(\n error instanceof Error ? error.message : 'Could not send your request. Please try again.'\n )\n } finally {\n setBusy(false)\n }\n }\n\n const shown = draft ? [...marks, draft] : marks\n const percent = (mark: Mark) =>\n natural\n ? {\n left: `${(mark.x / natural.width) * 100}%`,\n top: `${(mark.y / natural.height) * 100}%`,\n width: `${(mark.w / natural.width) * 100}%`,\n height: `${(mark.h / natural.height) * 100}%`,\n }\n : undefined\n\n return (\n <Dialog open={open} onOpenChange={(next) => !next && !busy && onClose()}>\n <DialogContent\n className={`flex max-h-[92vh] w-[96vw] flex-col gap-3 p-4 ${ticketId === null && screenshot ? 'max-w-[96vw] sm:max-w-[min(96vw,64rem)]' : 'max-w-lg sm:max-w-lg'}`}\n data-testid=\"report-problem-dialog\"\n >\n <div className=\"pr-8\">\n <DialogTitle>\n {ticketId === null ? 'Contact support' : 'Support request sent'}\n </DialogTitle>\n <DialogDescription>\n {ticketId !== null\n ? 'We have received your request. Track updates in My requests.'\n : cropping\n ? 'Crop the screenshot to the part that shows the problem. Only the cropped part is kept.'\n : screenshot\n ? 'Black out anything confidential before sending. Blacked-out areas are removed from the image.'\n : 'Tell us what you need help with. You can choose to add a screenshot.'}\n </DialogDescription>\n </div>\n\n {ticketId !== null && (\n <div className=\"flex items-center justify-between gap-4 rounded-md border border-border bg-muted p-4\">\n <p className=\"font-medium\" data-testid=\"report-ticket-receipt\">\n Ticket number: {ticketReference ?? `#${ticketId}`}\n </p>\n <Button onClick={onClose} data-testid=\"report-receipt-close\">\n Close\n </Button>\n </div>\n )}\n\n {cropping && imageUrl ? (\n <div className=\"grid gap-2\" hidden={ticketId !== null}>\n <ImageCropper\n key={frameSize ? 'sized' : 'unsized'}\n image={imageUrl}\n aspect={\n frameSize\n ? frameSize.width / frameSize.height\n : window.innerWidth / window.innerHeight\n }\n maxZoom={6}\n cropAreaClassName=\"h-[50vh] min-h-64\"\n onCropComplete={(area) => setCropArea(area)}\n />\n <div className=\"flex flex-wrap justify-end gap-2\">\n <Button\n variant=\"ghost\"\n onClick={() => setCropping(false)}\n data-testid=\"report-cancel-crop\"\n >\n Cancel crop\n </Button>\n <Button\n variant=\"ghost\"\n onClick={() => onImageChange(null)}\n data-testid=\"report-remove-screenshot\"\n >\n <Trash2 className=\"mr-1 size-4\" /> Remove screenshot\n </Button>\n <Button variant=\"ghost\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Retake\n </Button>\n <Button\n disabled={!cropArea || busy}\n onClick={() => void applyCrop()}\n data-testid=\"report-use-crop\"\n >\n <Crop className=\"mr-1 size-4\" /> Use this crop\n </Button>\n </div>\n </div>\n ) : imageUrl ? (\n <div className=\"grid gap-2\" hidden={ticketId !== null}>\n <div className=\"flex min-h-0 justify-center overflow-hidden rounded-md bg-muted p-2\">\n <div className=\"relative max-w-full\">\n <img\n ref={imgRef}\n src={imageUrl}\n alt=\"Screenshot of the problem\"\n className=\"block max-h-[45vh] max-w-full select-none object-contain\"\n draggable={false}\n onLoad={(event) =>\n setNatural({\n width: event.currentTarget.naturalWidth,\n height: event.currentTarget.naturalHeight,\n })\n }\n data-testid=\"report-screenshot\"\n />\n <div\n className=\"absolute inset-0 cursor-crosshair touch-none\"\n onPointerDown={(event) => {\n const point = pointFrom(event)\n if (!point) return\n event.currentTarget.setPointerCapture?.(event.pointerId)\n dragStart.current = point\n setDraft({ kind: 'redact', ...point, w: 0, h: 0 })\n }}\n onPointerMove={(event) => {\n const point = pointFrom(event)\n if (dragStart.current && point && natural)\n setDraft({\n kind: 'redact',\n ...rectFromDrag(dragStart.current, point, natural),\n })\n }}\n onPointerUp={() => {\n if (draft && isMeaningfulRect(draft)) setMarks((m) => [...m, draft])\n dragStart.current = null\n setDraft(null)\n }}\n data-testid=\"report-draw-surface\"\n >\n {shown.map((mark, i) => (\n <div\n key={i}\n className=\"pointer-events-none absolute bg-black\"\n style={percent(mark)}\n data-testid=\"report-mark-redact\"\n />\n ))}\n </div>\n </div>\n </div>\n <div className=\"flex flex-wrap items-center justify-end gap-2 text-sm\">\n <span className=\"mr-auto flex items-center gap-1 text-muted-foreground\">\n <EyeOff className=\"size-4\" /> Drag over anything confidential to black it out.\n </span>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!!marks.length}\n title={marks.length ? 'Undo blacked-out areas before cropping' : undefined}\n onClick={() => {\n setCropArea(null)\n setCropping(true)\n }}\n data-testid=\"report-crop\"\n >\n <Crop className=\"mr-1 size-4\" /> Crop\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n disabled={!marks.length}\n onClick={() => setMarks((m) => m.slice(0, -1))}\n data-testid=\"report-undo\"\n >\n <Undo2 className=\"mr-1 size-4\" /> Undo\n </Button>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => onImageChange(null)}\n data-testid=\"report-remove-screenshot\"\n >\n <Trash2 className=\"mr-1 size-4\" /> Remove\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Retake\n </Button>\n </div>\n </div>\n ) : (\n <div\n className=\"flex flex-wrap items-center gap-3 rounded-md border border-dashed border-border p-3 text-sm\"\n hidden={ticketId !== null}\n >\n <span className=\"text-muted-foreground\">No screenshot attached.</span>\n {canCaptureScreen() ? (\n <Button size=\"sm\" variant=\"outline\" onClick={onRetake} data-testid=\"report-retake\">\n <Camera className=\"mr-1 size-4\" /> Take a screenshot\n </Button>\n ) : (\n <label className=\"inline-flex cursor-pointer items-center gap-1 font-medium text-primary\">\n <ImageUp className=\"size-4\" /> Choose a screenshot\n <input\n type=\"file\"\n accept=\"image/*\"\n className=\"sr-only\"\n onChange={(event) => {\n const file = event.target.files?.[0]\n if (file) onImageChange(file)\n }}\n data-testid=\"report-choose-image\"\n />\n </label>\n )}\n </div>\n )}\n\n <label className=\"grid gap-1 text-sm\" hidden={ticketId !== null}>\n <span className=\"font-medium\">What went wrong?</span>\n <Textarea\n value={description}\n onChange={(event) => setDescription(event.target.value)}\n rows={3}\n placeholder=\"What did you do, and what happened instead?\"\n data-testid=\"report-description\"\n />\n </label>\n\n {failure && (\n <p role=\"alert\" className=\"text-sm text-destructive\" hidden={ticketId !== null}>\n {failure}\n </p>\n )}\n <div className=\"flex flex-wrap items-center justify-end gap-2\" hidden={ticketId !== null}>\n <span className=\"mr-auto text-xs text-muted-foreground\">{footnote}</span>\n <Button variant=\"ghost\" onClick={onClose} disabled={busy}>\n Cancel\n </Button>\n <Button\n disabled={\n !onSubmit || !description.trim() || busy || cropping || (!!screenshot && !natural)\n }\n onClick={() => void submit()}\n data-testid=\"report-send\"\n >\n {busy ? 'Sending\u2026' : 'Send to support'}\n </Button>\n </div>\n </DialogContent>\n </Dialog>\n )\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -10,8 +10,8 @@ require('../chunk-ZU2B2RZK.cjs');
10
10
  var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
11
11
  var chunkOEJQFPWO_cjs = require('../chunk-OEJQFPWO.cjs');
12
12
  require('../chunk-ZFKWCGA5.cjs');
13
- var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
14
13
  require('../chunk-IPSHAMO2.cjs');
14
+ var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
15
15
  var chunkU5T46QCS_cjs = require('../chunk-U5T46QCS.cjs');
16
16
  require('../chunk-JDFBEGQO.cjs');
17
17
  require('../chunk-ULWRNGGE.cjs');
@@ -1,110 +1,110 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkFJXJ43JO_cjs = require('../chunk-FJXJ43JO.cjs');
5
- require('../chunk-TXFZAA3R.cjs');
6
- require('../chunk-ZEQEIFZJ.cjs');
7
- require('../chunk-N6AZYEYL.cjs');
8
- require('../chunk-3GYOWDNM.cjs');
4
+ var chunkR4TP3VS3_cjs = require('../chunk-R4TP3VS3.cjs');
5
+ require('../chunk-BHTEKYWJ.cjs');
6
+ require('../chunk-ONZOVO2B.cjs');
7
+ require('../chunk-ZZZ6AZDR.cjs');
8
+ require('../chunk-OTG5T5Z5.cjs');
9
9
  require('../chunk-TJY7XPDE.cjs');
10
10
  require('../chunk-XNW62J54.cjs');
11
11
  require('../chunk-OKHKJ5ML.cjs');
12
- require('../chunk-ZNZGYSVB.cjs');
13
- require('../chunk-NJCK6V6U.cjs');
14
- require('../chunk-4QTQS4LS.cjs');
12
+ require('../chunk-A4Z5CTLF.cjs');
13
+ require('../chunk-XKDUPU7B.cjs');
14
+ require('../chunk-OVKJ7OVZ.cjs');
15
15
  require('../chunk-223D4727.cjs');
16
16
  require('../chunk-SNUBQMIS.cjs');
17
17
  require('../chunk-ENUZ35NR.cjs');
18
- require('../chunk-3NEI27QQ.cjs');
18
+ require('../chunk-KZKGZ7IG.cjs');
19
19
  require('../chunk-QQMMCXBP.cjs');
20
20
  require('../chunk-DTMBAFIL.cjs');
21
21
  require('../chunk-4B6HYQTW.cjs');
22
+ require('../chunk-JHDCDEXY.cjs');
23
+ require('../chunk-M2FOXGJU.cjs');
24
+ require('../chunk-5F4DCIHS.cjs');
22
25
  require('../chunk-MZZ3SBQL.cjs');
23
- require('../chunk-ZQLRWA3Y.cjs');
24
- require('../chunk-NOYQ23I7.cjs');
26
+ require('../chunk-MJHIBCF7.cjs');
27
+ require('../chunk-GTTDJMWX.cjs');
25
28
  require('../chunk-ZPPMAL5P.cjs');
26
29
  require('../chunk-ORELHENJ.cjs');
27
30
  require('../chunk-NWNVWO6L.cjs');
28
31
  require('../chunk-SK6HQ46Q.cjs');
29
32
  require('../chunk-Z3VNKPPH.cjs');
30
- require('../chunk-VLCY46K6.cjs');
33
+ require('../chunk-Z2XZ2D4N.cjs');
34
+ require('../chunk-YZSQ7F5K.cjs');
35
+ require('../chunk-MCXS6X37.cjs');
36
+ require('../chunk-KQF7POTG.cjs');
37
+ require('../chunk-75BNMCUX.cjs');
31
38
  require('../chunk-OEJQFPWO.cjs');
32
- require('../chunk-TP5PGWIO.cjs');
39
+ require('../chunk-4IOYQLKG.cjs');
33
40
  require('../chunk-I4IS6ST6.cjs');
34
41
  require('../chunk-7JLJH5CW.cjs');
35
42
  require('../chunk-EVZH6Z5O.cjs');
43
+ require('../chunk-HSLPFBK2.cjs');
36
44
  require('../chunk-OYXWQTHF.cjs');
37
45
  require('../chunk-S237ORM3.cjs');
38
46
  require('../chunk-II2OEXHW.cjs');
39
47
  require('../chunk-3YEXZX4H.cjs');
40
48
  require('../chunk-4PA6VCCR.cjs');
41
- require('../chunk-3Q5L7XVI.cjs');
49
+ require('../chunk-M2D4POJV.cjs');
42
50
  require('../chunk-AHDJXIUB.cjs');
43
51
  require('../chunk-RL2HI6NP.cjs');
44
52
  require('../chunk-6UZC4XVV.cjs');
45
53
  require('../chunk-YAPXIANR.cjs');
54
+ require('../chunk-QGVOT7E4.cjs');
55
+ require('../chunk-QRAQZTJE.cjs');
56
+ require('../chunk-UDSHVNU3.cjs');
46
57
  require('../chunk-ZFKWCGA5.cjs');
47
- require('../chunk-E7TE2WVT.cjs');
58
+ require('../chunk-IPSHAMO2.cjs');
48
59
  require('../chunk-V6C2MBFY.cjs');
49
60
  require('../chunk-M74FWYNL.cjs');
61
+ require('../chunk-QUMUAJ2P.cjs');
62
+ require('../chunk-VZOOGA47.cjs');
50
63
  require('../chunk-XW524KUX.cjs');
51
- require('../chunk-LTEXVRCH.cjs');
64
+ require('../chunk-IE677C4I.cjs');
52
65
  require('../chunk-T7J352JD.cjs');
53
66
  require('../chunk-LQHXUSWZ.cjs');
54
67
  var chunk6YOZKXV6_cjs = require('../chunk-6YOZKXV6.cjs');
55
68
  require('../chunk-TMX7YFVM.cjs');
69
+ require('../chunk-ZBP4ZSAJ.cjs');
56
70
  require('../chunk-3YZKDCWY.cjs');
57
71
  require('../chunk-SJSGSHIT.cjs');
58
- require('../chunk-ZW6FPIFC.cjs');
59
- require('../chunk-ZT5MIFLC.cjs');
60
- require('../chunk-QUMUAJ2P.cjs');
61
- require('../chunk-VZOOGA47.cjs');
62
- require('../chunk-JHDCDEXY.cjs');
63
- require('../chunk-M2FOXGJU.cjs');
64
- require('../chunk-5F4DCIHS.cjs');
65
- require('../chunk-Z2XZ2D4N.cjs');
66
- require('../chunk-YZSQ7F5K.cjs');
67
- require('../chunk-MCXS6X37.cjs');
68
- require('../chunk-KQF7POTG.cjs');
69
- require('../chunk-75BNMCUX.cjs');
70
- require('../chunk-HSLPFBK2.cjs');
71
- require('../chunk-QGVOT7E4.cjs');
72
- require('../chunk-QRAQZTJE.cjs');
73
- require('../chunk-UDSHVNU3.cjs');
74
- require('../chunk-IPSHAMO2.cjs');
75
- require('../chunk-ZBP4ZSAJ.cjs');
76
72
  require('../chunk-PPCATBOY.cjs');
73
+ require('../chunk-ZW6FPIFC.cjs');
77
74
  require('../chunk-U5T46QCS.cjs');
78
75
  require('../chunk-JDFBEGQO.cjs');
79
- require('../chunk-ULWRNGGE.cjs');
76
+ require('../chunk-ZT5MIFLC.cjs');
80
77
  require('../chunk-LJJJ6CYH.cjs');
78
+ require('../chunk-VLCY46K6.cjs');
79
+ require('../chunk-E7TE2WVT.cjs');
80
+ require('../chunk-ULWRNGGE.cjs');
81
81
  require('../chunk-PLIF5CUV.cjs');
82
82
 
83
83
 
84
84
 
85
85
  Object.defineProperty(exports, "ArbiChat", {
86
86
  enumerable: true,
87
- get: function () { return chunkFJXJ43JO_cjs.ArbiChat; }
87
+ get: function () { return chunkR4TP3VS3_cjs.ArbiChat; }
88
88
  });
89
89
  Object.defineProperty(exports, "ConnectedCompactLogin", {
90
90
  enumerable: true,
91
- get: function () { return chunkFJXJ43JO_cjs.ConnectedCompactLogin; }
91
+ get: function () { return chunkR4TP3VS3_cjs.ConnectedCompactLogin; }
92
92
  });
93
93
  Object.defineProperty(exports, "ConnectedEmbeddedChat", {
94
94
  enumerable: true,
95
- get: function () { return chunkFJXJ43JO_cjs.ConnectedEmbeddedChat; }
95
+ get: function () { return chunkR4TP3VS3_cjs.ConnectedEmbeddedChat; }
96
96
  });
97
97
  Object.defineProperty(exports, "ConnectedLoginPage", {
98
98
  enumerable: true,
99
- get: function () { return chunkFJXJ43JO_cjs.ConnectedLoginPage; }
99
+ get: function () { return chunkR4TP3VS3_cjs.ConnectedLoginPage; }
100
100
  });
101
101
  Object.defineProperty(exports, "EmbeddedChatPanel", {
102
102
  enumerable: true,
103
- get: function () { return chunkFJXJ43JO_cjs.EmbeddedChatPanel; }
103
+ get: function () { return chunkR4TP3VS3_cjs.EmbeddedChatPanel; }
104
104
  });
105
105
  Object.defineProperty(exports, "defaultHost", {
106
106
  enumerable: true,
107
- get: function () { return chunkFJXJ43JO_cjs.defaultHost; }
107
+ get: function () { return chunkR4TP3VS3_cjs.defaultHost; }
108
108
  });
109
109
  Object.defineProperty(exports, "useConnection", {
110
110
  enumerable: true,