@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.
- package/dist/components/panel/ReportFeedbackList.d.ts.map +1 -1
- package/dist/components/panel/ReportFeedbackList.js +9 -2
- package/dist/components/panel/ReportFeedbackList.js.map +1 -1
- package/dist/components/panel/feedback/FeedbackHoverCard.d.ts +4 -1
- package/dist/components/panel/feedback/FeedbackHoverCard.d.ts.map +1 -1
- package/dist/components/panel/feedback/FeedbackHoverCard.js +6 -2
- package/dist/components/panel/feedback/FeedbackHoverCard.js.map +1 -1
- package/dist/components/point/ReportDraftMarker.d.ts.map +1 -1
- package/dist/components/point/ReportDraftMarker.js +4 -3
- package/dist/components/point/ReportDraftMarker.js.map +1 -1
- package/dist/components/point/ReportMarkersLayer.d.ts.map +1 -1
- package/dist/components/point/ReportMarkersLayer.js +86 -9
- package/dist/components/point/ReportMarkersLayer.js.map +1 -1
- package/dist/hooks/useReportState.d.ts.map +1 -1
- package/dist/hooks/useReportState.js +35 -2
- package/dist/hooks/useReportState.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +7 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/ko.d.ts.map +1 -1
- package/dist/i18n/ko.js +7 -0
- package/dist/i18n/ko.js.map +1 -1
- package/dist/i18n/types.d.ts +7 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/styles/reportStylesheet.d.ts +1 -1
- package/dist/styles/reportStylesheet.d.ts.map +1 -1
- package/dist/styles/reportStylesheet.js +1 -1
- package/dist/styles/reportStylesheet.js.map +1 -1
- package/dist/types/report-ui.d.ts +19 -0
- package/dist/types/report-ui.d.ts.map +1 -1
- package/dist/utils/coordinates.d.ts +4 -1
- package/dist/utils/coordinates.d.ts.map +1 -1
- package/dist/utils/coordinates.js +80 -6
- package/dist/utils/coordinates.js.map +1 -1
- package/dist/utils/dom.d.ts +4 -0
- package/dist/utils/dom.d.ts.map +1 -1
- package/dist/utils/dom.js +129 -7
- package/dist/utils/dom.js.map +1 -1
- package/dist/utils/markerContext.d.ts +30 -0
- package/dist/utils/markerContext.d.ts.map +1 -0
- package/dist/utils/markerContext.js +77 -0
- package/dist/utils/markerContext.js.map +1 -0
- 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
|
-
|
|
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
|
|
219
|
+
const elements = getElementsFromPoint(clientX, clientY);
|
|
116
220
|
overlay.style.pointerEvents = previousPointerEvents;
|
|
117
|
-
|
|
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";
|
package/dist/utils/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,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;
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../src/utils/dom.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|