@fivepixels-js/react 0.1.5 → 0.1.7

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 (43) hide show
  1. package/dist/components/panel/ReportFeedbackList.d.ts.map +1 -1
  2. package/dist/components/panel/ReportFeedbackList.js +9 -2
  3. package/dist/components/panel/ReportFeedbackList.js.map +1 -1
  4. package/dist/components/panel/feedback/FeedbackHoverCard.d.ts +4 -1
  5. package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -1
  6. package/dist/components/panel/feedback/FeedbackHoverCard.js +6 -2
  7. package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -1
  8. package/dist/components/point/ReportDraftMarker.d.ts.map +1 -1
  9. package/dist/components/point/ReportDraftMarker.js +4 -3
  10. package/dist/components/point/ReportDraftMarker.js.map +1 -1
  11. package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -1
  12. package/dist/components/point/ReportMarkersLayer.js +86 -9
  13. package/dist/components/point/ReportMarkersLayer.js.map +1 -1
  14. package/dist/hooks/useReportState.d.ts.map +1 -1
  15. package/dist/hooks/useReportState.js +35 -2
  16. package/dist/hooks/useReportState.js.map +1 -1
  17. package/dist/i18n/en.d.ts.map +1 -1
  18. package/dist/i18n/en.js +7 -0
  19. package/dist/i18n/en.js.map +1 -1
  20. package/dist/i18n/ko.d.ts.map +1 -1
  21. package/dist/i18n/ko.js +7 -0
  22. package/dist/i18n/ko.js.map +1 -1
  23. package/dist/i18n/types.d.ts +7 -0
  24. package/dist/i18n/types.d.ts.map +1 -1
  25. package/dist/styles/reportStylesheet.d.ts +1 -1
  26. package/dist/styles/reportStylesheet.d.ts.map +1 -1
  27. package/dist/styles/reportStylesheet.js +1 -1
  28. package/dist/styles/reportStylesheet.js.map +1 -1
  29. package/dist/types/report-ui.d.ts +19 -0
  30. package/dist/types/report-ui.d.ts.map +1 -1
  31. package/dist/utils/coordinates.d.ts +4 -1
  32. package/dist/utils/coordinates.d.ts.map +1 -1
  33. package/dist/utils/coordinates.js +80 -6
  34. package/dist/utils/coordinates.js.map +1 -1
  35. package/dist/utils/dom.d.ts +4 -0
  36. package/dist/utils/dom.d.ts.map +1 -1
  37. package/dist/utils/dom.js +129 -7
  38. package/dist/utils/dom.js.map +1 -1
  39. package/dist/utils/markerContext.d.ts +30 -0
  40. package/dist/utils/markerContext.d.ts.map +1 -0
  41. package/dist/utils/markerContext.js +77 -0
  42. package/dist/utils/markerContext.js.map +1 -0
  43. package/package.json +1 -1
package/dist/utils/dom.js CHANGED
@@ -12,21 +12,51 @@ export function getFeedbackTargetSelector(reportId, reportType) {
12
12
  }
13
13
  return `[data-report-id="${escapedId}"]:not([data-report-type="group"])`;
14
14
  }
15
+ function isStyleHidden(style) {
16
+ if (style.display === "none" || style.visibility === "hidden") {
17
+ return true;
18
+ }
19
+ if (Number.parseFloat(style.opacity) <= 0) {
20
+ return true;
21
+ }
22
+ return false;
23
+ }
24
+ function intersectsViewport(rect) {
25
+ if (rect.width <= 0 || rect.height <= 0) {
26
+ return false;
27
+ }
28
+ return rect.right > 0 && rect.bottom > 0 && rect.left < window.innerWidth && rect.top < window.innerHeight;
29
+ }
30
+ export function hasFixedPositionAncestor(element) {
31
+ let node = element.parentElement;
32
+ while (node && node !== document.documentElement) {
33
+ if (window.getComputedStyle(node).position === "fixed") {
34
+ return true;
35
+ }
36
+ node = node.parentElement;
37
+ }
38
+ return false;
39
+ }
15
40
  export function isFeedbackTargetVisible(element) {
16
41
  if ("checkVisibility" in element && typeof element.checkVisibility === "function") {
17
42
  if (!element.checkVisibility({ checkOpacity: true, checkVisibilityCSS: true })) {
18
43
  return false;
19
44
  }
20
45
  }
46
+ else {
47
+ let node = element;
48
+ while (node && node !== document.documentElement) {
49
+ if (isStyleHidden(window.getComputedStyle(node))) {
50
+ return false;
51
+ }
52
+ node = node.parentElement;
53
+ }
54
+ }
21
55
  const rect = element.getBoundingClientRect();
22
56
  if (rect.width <= 0 || rect.height <= 0) {
23
57
  return false;
24
58
  }
25
- const style = window.getComputedStyle(element);
26
- if (style.display === "none" || style.visibility === "hidden") {
27
- return false;
28
- }
29
- if (Number.parseFloat(style.opacity) <= 0) {
59
+ if (!intersectsViewport(rect)) {
30
60
  return false;
31
61
  }
32
62
  return true;
@@ -101,20 +131,112 @@ export function getNearestScrollContainer(element) {
101
131
  }
102
132
  return null;
103
133
  }
134
+ const SCROLL_CLAMP_ATTR = "data-fivepixels-scroll-clamp";
135
+ export function getScrollContainerClampId(scrollContainer) {
136
+ const existing = scrollContainer.getAttribute(SCROLL_CLAMP_ATTR);
137
+ if (existing) {
138
+ return existing;
139
+ }
140
+ const id = `scroll-clamp-${Math.random().toString(36).slice(2, 10)}`;
141
+ scrollContainer.setAttribute(SCROLL_CLAMP_ATTR, id);
142
+ return id;
143
+ }
144
+ export function getScrollContainerByClampId(containerId) {
145
+ return document.querySelector(`[${SCROLL_CLAMP_ATTR}="${containerId}"]`);
146
+ }
147
+ export function scrollContainerTowardEdge(containerId, edge) {
148
+ const container = getScrollContainerByClampId(containerId);
149
+ if (!container) {
150
+ return;
151
+ }
152
+ const scrollAmount = Math.max(Math.min(container.clientHeight, container.clientWidth) * 0.6, 120);
153
+ switch (edge) {
154
+ case "top":
155
+ container.scrollBy({ top: -scrollAmount, behavior: "smooth" });
156
+ break;
157
+ case "bottom":
158
+ container.scrollBy({ top: scrollAmount, behavior: "smooth" });
159
+ break;
160
+ case "left":
161
+ container.scrollBy({ left: -scrollAmount, behavior: "smooth" });
162
+ break;
163
+ case "right":
164
+ container.scrollBy({ left: scrollAmount, behavior: "smooth" });
165
+ break;
166
+ }
167
+ }
104
168
  export function getSelectableTargets() {
105
169
  return Array.from(document.querySelectorAll(TARGET_SELECTOR))
106
170
  .map((element) => toSnapshot(element))
107
171
  .filter((snapshot) => snapshot !== null);
108
172
  }
173
+ function getElementsFromPoint(clientX, clientY) {
174
+ if (typeof document.elementsFromPoint === "function") {
175
+ return document.elementsFromPoint(clientX, clientY).filter((node) => node instanceof HTMLElement);
176
+ }
177
+ if (typeof document.elementFromPoint === "function") {
178
+ const hitElement = document.elementFromPoint(clientX, clientY);
179
+ return hitElement instanceof HTMLElement ? [hitElement] : [];
180
+ }
181
+ return [];
182
+ }
183
+ function isAriaHiddenSubtree(element) {
184
+ let node = element;
185
+ while (node && node !== document.documentElement) {
186
+ if (node.getAttribute("aria-hidden") === "true") {
187
+ return true;
188
+ }
189
+ node = node.parentElement;
190
+ }
191
+ return false;
192
+ }
193
+ function isSelectableFeedbackTarget(target) {
194
+ if (!isFeedbackTargetVisible(target)) {
195
+ return false;
196
+ }
197
+ if (isAriaHiddenSubtree(target)) {
198
+ return false;
199
+ }
200
+ return true;
201
+ }
202
+ function isPointerEventBlockingLayer(element) {
203
+ const style = window.getComputedStyle(element);
204
+ if (style.pointerEvents === "none" || isStyleHidden(style)) {
205
+ return false;
206
+ }
207
+ if (style.position !== "fixed" && style.position !== "sticky") {
208
+ return false;
209
+ }
210
+ const rect = element.getBoundingClientRect();
211
+ return rect.width > 0 && rect.height > 0;
212
+ }
109
213
  export function findTargetByPoint(overlay, clientX, clientY) {
110
214
  if (!overlay) {
111
215
  return null;
112
216
  }
113
217
  const previousPointerEvents = overlay.style.pointerEvents;
114
218
  overlay.style.pointerEvents = "none";
115
- const hitElement = document.elementFromPoint(clientX, clientY);
219
+ const elements = getElementsFromPoint(clientX, clientY);
116
220
  overlay.style.pointerEvents = previousPointerEvents;
117
- return findTargetElement(hitElement);
221
+ const seen = new Set();
222
+ for (const element of elements) {
223
+ const target = findTargetElement(element);
224
+ if (!target) {
225
+ if (isPointerEventBlockingLayer(element)) {
226
+ return null;
227
+ }
228
+ continue;
229
+ }
230
+ if (seen.has(target)) {
231
+ continue;
232
+ }
233
+ seen.add(target);
234
+ if (!isSelectableFeedbackTarget(target)) {
235
+ continue;
236
+ }
237
+ return target;
238
+ }
239
+ return null;
118
240
  }
119
241
  const REPORT_HOST_ID = "fivepixels-root";
120
242
  const REPORT_MOUNT_ATTR = "data-fivepixels-mount";
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,UAAU,eAAe,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IAClD,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,UAA4B;IACpF,MAAM,SAAS,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,oBAAoB,SAAS,8BAA8B,CAAC;IACvE,CAAC;IAED,OAAO,oBAAoB,SAAS,oCAAoC,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,KAA0B;IAC7C,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAa;IACrC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC;AAC/G,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAoB;IACzD,IAAI,IAAI,GAAuB,OAAO,CAAC,aAAa,CAAC;IAErD,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAoB;IACxD,IAAI,iBAAiB,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7E,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,IAAI,GAAuB,OAAO,CAAC;QAEvC,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC/C,IAAI,aAAa,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC/C,OAAO,KAAK,CAAC;YACjB,CAAC;YAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAE7C,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA+B,EAAE,IAA2B;IAC1F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA2B;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAElD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO;QACH,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE;KACxC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,aAA0B;IACpE,IAAI,IAAI,GAAuB,aAAa,CAAC,aAAa,CAAC;IAE3D,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE/C,IAAI,QAAQ,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,WAA+B;IAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,aAAa,GAAuB,IAAI,CAAC;IAC7C,IAAI,IAAI,GAAuB,WAAW,CAAC;IAE3C,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAE/C,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACjB,aAAa,GAAG,IAAI,CAAC;YACzB,CAAC;QACL,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa;IACvC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAoB;IAC1D,IAAI,IAAI,GAAuB,OAAO,CAAC,aAAa,CAAC;IAErD,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtG,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QAEpG,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,iBAAiB,GAAG,8BAA8B,CAAC;AAEzD,MAAM,UAAU,yBAAyB,CAAC,eAA4B;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAEjE,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,EAAE,GAAG,gBAAgB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IACrE,eAAe,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC3D,OAAO,QAAQ,CAAC,aAAa,CAAc,IAAI,iBAAiB,KAAK,WAAW,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,IAAyC;IACpG,MAAM,SAAS,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;IAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACb,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IAElG,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,KAAK;YACN,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM;QACV,KAAK,QAAQ;YACT,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,MAAM;QACV,KAAK,MAAM;YACP,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChE,MAAM;QACV,KAAK,OAAO;YACR,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC/D,MAAM;IACd,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAc,eAAe,CAAC,CAAC;SACrE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SACrC,MAAM,CAAC,CAAC,QAAQ,EAA8B,EAAE,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe,EAAE,OAAe;IAC1D,IAAI,OAAO,QAAQ,CAAC,iBAAiB,KAAK,UAAU,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC,IAAI,YAAY,WAAW,CAAC,CAAC;IAC3H,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/D,OAAO,UAAU,YAAY,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAoB;IAC7C,IAAI,IAAI,GAAuB,OAAO,CAAC;IAEvC,OAAO,IAAI,IAAI,IAAI,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,MAAM,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAmB;IACnD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAAC,OAAoB;IACrD,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,KAAK,CAAC,aAAa,KAAK,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAE7C,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAA8B,EAAE,OAAe,EAAE,OAAe;IAC9F,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;IAC1D,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;IACrC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,qBAAqB,CAAC;IAEpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IAEpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,IAAI,2BAA2B,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YAChB,CAAC;YAED,SAAS;QACb,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnB,SAAS;QACb,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjB,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,cAAc,GAAG,iBAAiB,CAAC;AACzC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAClD,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAElE,MAAM,UAAU,mBAAmB;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE3G,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB;IACpC,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAEvE,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,IAAI,yBAAyB,GAAG,CAAC,CAAC;IAEvE,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,YAAY,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACrD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,iFAAiF,CAAC;QAC3G,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,CAAC,gBAAgB,EAAE,CAAC;QACxC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAChC,OAAO,wBAAwB,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { ReportFeedback } from "../types/report.js";
2
+ import type { MarkerDetachedKind } from "../types/report-ui.js";
3
+ export type ModalGhostFrame = {
4
+ backdrop: {
5
+ left: number;
6
+ top: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ dialog: {
11
+ left: number;
12
+ top: number;
13
+ width: number;
14
+ height: number;
15
+ };
16
+ };
17
+ export declare function isModalReportId(reportId: string): boolean;
18
+ export declare function usesViewportDetachedCoords(report: Pick<ReportFeedback, "anchor_report_id" | "viewport_width">): boolean;
19
+ export declare function resolveDetachedKind(report: Pick<ReportFeedback, "report_id" | "anchor_report_id" | "viewport_width">, targetElement: HTMLElement | null, detached: boolean): MarkerDetachedKind;
20
+ export declare function formatModalReportLabel(reportId: string): string;
21
+ export declare function getModalGhostFrame(report: Pick<ReportFeedback, "x_ratio" | "y_ratio" | "viewport_width" | "viewport_height">): ModalGhostFrame;
22
+ export declare function getDetachedMarkerHint(detachedKind: MarkerDetachedKind, messages: {
23
+ detachedHint: string;
24
+ detachedModalHint: string;
25
+ }): string | null;
26
+ export declare function getDetachedMarkerAriaLabel(detachedKind: MarkerDetachedKind, messages: {
27
+ detachedAriaLabel: string;
28
+ detachedModalAriaLabel: string;
29
+ }): string;
30
+ //# sourceMappingURL=markerContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markerContext.d.ts","sourceRoot":"","sources":["../../src/utils/markerContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK/D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;CACL,CAAC;AAMF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,WAE/C;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,WAE7G;AAED,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,kBAAkB,GAAG,gBAAgB,CAAC,EACjF,aAAa,EAAE,WAAW,GAAG,IAAI,EACjC,QAAQ,EAAE,OAAO,GAClB,kBAAkB,CAkBpB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,UAUtD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,SAAS,GAAG,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,eAAe,CAsB9I;AAED,wBAAgB,qBAAqB,CACjC,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE;IACN,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC7B,iBAWJ;AAED,wBAAgB,0BAA0B,CACtC,YAAY,EAAE,kBAAkB,EAChC,QAAQ,EAAE;IACN,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;CAClC,UAWJ"}
@@ -0,0 +1,77 @@
1
+ import { hasFixedPositionAncestor } from "./dom.js";
2
+ const MODAL_REPORT_ID_PATTERN = /(?:^|-)(modal|overlay|dialog)(?:-|$)/i;
3
+ const MODAL_GHOST_DIALOG_WIDTH = 480;
4
+ const MODAL_GHOST_DIALOG_HEIGHT = 280;
5
+ const MODAL_GHOST_DIALOG_MAX_WIDTH_RATIO = 0.92;
6
+ export function isModalReportId(reportId) {
7
+ return MODAL_REPORT_ID_PATTERN.test(reportId);
8
+ }
9
+ export function usesViewportDetachedCoords(report) {
10
+ return !report.anchor_report_id && report.viewport_width > 0;
11
+ }
12
+ export function resolveDetachedKind(report, targetElement, detached) {
13
+ if (!detached) {
14
+ return null;
15
+ }
16
+ if (isModalReportId(report.report_id)) {
17
+ return "modal";
18
+ }
19
+ if (usesViewportDetachedCoords(report)) {
20
+ return "modal";
21
+ }
22
+ if (targetElement && hasFixedPositionAncestor(targetElement)) {
23
+ return "modal";
24
+ }
25
+ return "hidden";
26
+ }
27
+ export function formatModalReportLabel(reportId) {
28
+ const withoutPrefix = reportId.replace(/^modal-/, "");
29
+ const name = withoutPrefix
30
+ .replace(/-(overlay|target|open|demo)$/, "")
31
+ .split("-")
32
+ .filter(Boolean)
33
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
34
+ .join(" ");
35
+ return name ? `${name} modal` : "Modal";
36
+ }
37
+ export function getModalGhostFrame(report) {
38
+ const widthScale = report.viewport_width > 0 ? window.innerWidth / report.viewport_width : 1;
39
+ const heightScale = report.viewport_height > 0 ? window.innerHeight / report.viewport_height : 1;
40
+ const centerX = report.viewport_width * report.x_ratio * widthScale;
41
+ const centerY = report.viewport_height * report.y_ratio * heightScale;
42
+ const dialogWidth = Math.min(MODAL_GHOST_DIALOG_WIDTH * widthScale, window.innerWidth * MODAL_GHOST_DIALOG_MAX_WIDTH_RATIO);
43
+ const dialogHeight = MODAL_GHOST_DIALOG_HEIGHT * heightScale;
44
+ return {
45
+ backdrop: {
46
+ left: 0,
47
+ top: 0,
48
+ width: window.innerWidth,
49
+ height: window.innerHeight,
50
+ },
51
+ dialog: {
52
+ left: centerX - dialogWidth / 2,
53
+ top: centerY - dialogHeight / 2,
54
+ width: dialogWidth,
55
+ height: dialogHeight,
56
+ },
57
+ };
58
+ }
59
+ export function getDetachedMarkerHint(detachedKind, messages) {
60
+ if (detachedKind === "modal") {
61
+ return messages.detachedModalHint;
62
+ }
63
+ if (detachedKind === "hidden") {
64
+ return messages.detachedHint;
65
+ }
66
+ return null;
67
+ }
68
+ export function getDetachedMarkerAriaLabel(detachedKind, messages) {
69
+ if (detachedKind === "modal") {
70
+ return messages.detachedModalAriaLabel;
71
+ }
72
+ if (detachedKind === "hidden") {
73
+ return messages.detachedAriaLabel;
74
+ }
75
+ return messages.detachedAriaLabel;
76
+ }
77
+ //# sourceMappingURL=markerContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markerContext.js","sourceRoot":"","sources":["../../src/utils/markerContext.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fivepixels-js/react",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "React library for DOM element feedback markers on staging, QA, and internal tool UIs",
5
5
  "license": "MIT",
6
6
  "keywords": [