issue-sticker 0.10.0 → 0.12.0
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/CHANGELOG.md +60 -0
- package/dist/_commonjsHelpers-DWwsNxpa.js +8 -0
- package/dist/{externalUserPayload-DNGAp9bP.js → externalUserPayload-DWcXyz2U.js} +2538 -473
- package/dist/index-DA6SoSp7.js +3009 -0
- package/dist/issue-sticker-headless-react.js +3 -3
- package/dist/issue-sticker-headless.js +136 -74
- package/dist/issue-sticker-react.js +1489 -642
- package/dist/{three-_bdgDAmI.js → three-B228j4M6.js} +11 -11
- package/dist/{tooltip-UijEbdDX.js → tooltip-CT7e9xbU.js} +1 -1
- package/headless.d.ts +67 -0
- package/package.json +2 -1
|
@@ -27689,8 +27689,8 @@ function registerThree(handle) {
|
|
|
27689
27689
|
}
|
|
27690
27690
|
installThreeAutoDetect();
|
|
27691
27691
|
export {
|
|
27692
|
-
|
|
27693
|
-
|
|
27692
|
+
Anchor as A,
|
|
27693
|
+
Root2 as B,
|
|
27694
27694
|
CANVAS_INTERACTION_TAG as C,
|
|
27695
27695
|
DismissableLayer as D,
|
|
27696
27696
|
Arrow as E,
|
|
@@ -27709,15 +27709,15 @@ export {
|
|
|
27709
27709
|
createLucideIcon as c,
|
|
27710
27710
|
usePortalContainer as d,
|
|
27711
27711
|
OVERLAY_LAYER as e,
|
|
27712
|
-
|
|
27713
|
-
|
|
27714
|
-
|
|
27715
|
-
|
|
27716
|
-
|
|
27717
|
-
|
|
27718
|
-
|
|
27719
|
-
|
|
27720
|
-
|
|
27712
|
+
useControllableState as f,
|
|
27713
|
+
useId as g,
|
|
27714
|
+
Primitive as h,
|
|
27715
|
+
composeEventHandlers as i,
|
|
27716
|
+
useDismissableLayerSurface as j,
|
|
27717
|
+
useComposedRefs as k,
|
|
27718
|
+
Portal as l,
|
|
27719
|
+
createContextScope as m,
|
|
27720
|
+
createSlot as n,
|
|
27721
27721
|
useLayoutEffect2 as o,
|
|
27722
27722
|
useCallbackRef as p,
|
|
27723
27723
|
PortalContainerProvider as q,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import { P as Presence,
|
|
3
|
+
import { P as Presence, l as Portal$1, E as Arrow, D as DismissableLayer, y as Content, G as Root, k as useComposedRefs, z as createPopperScope, m as createContextScope, H as createSlottable, g as useId, f as useControllableState, B as Root2, A as Anchor, h as Primitive, i as composeEventHandlers, d as usePortalContainer, a as cn, e as OVERLAY_LAYER, s as stopEscapePropagation } from "./three-B228j4M6.js";
|
|
4
4
|
var [createTooltipContext] = createContextScope("Tooltip", [
|
|
5
5
|
createPopperScope
|
|
6
6
|
]);
|
package/headless.d.ts
CHANGED
|
@@ -19,6 +19,28 @@ export interface IssuePosition {
|
|
|
19
19
|
width: number;
|
|
20
20
|
height: number;
|
|
21
21
|
};
|
|
22
|
+
/** 대상 요소를 다시 찾기 위한 의미 지문. 캡처가 채운다. */
|
|
23
|
+
locator?: {
|
|
24
|
+
v: number;
|
|
25
|
+
tag: string;
|
|
26
|
+
role?: string;
|
|
27
|
+
name?: string;
|
|
28
|
+
text?: string;
|
|
29
|
+
attrs?: Record<string, string>;
|
|
30
|
+
classes?: string[];
|
|
31
|
+
context?: {
|
|
32
|
+
container?: { role: string; name?: string };
|
|
33
|
+
heading?: string;
|
|
34
|
+
landmark?: string;
|
|
35
|
+
rowText?: string;
|
|
36
|
+
};
|
|
37
|
+
roleIndex?: number;
|
|
38
|
+
};
|
|
39
|
+
/** 대상 요소를 그린 UI 컴포넌트 경로(바깥→안쪽). 수집하지 못하면 없다. */
|
|
40
|
+
component?: {
|
|
41
|
+
framework: string;
|
|
42
|
+
path: string[];
|
|
43
|
+
};
|
|
22
44
|
}
|
|
23
45
|
|
|
24
46
|
export interface NetworkLog {
|
|
@@ -79,6 +101,21 @@ export interface IssueStickerSummary {
|
|
|
79
101
|
readonly color: string;
|
|
80
102
|
readonly label: string | null;
|
|
81
103
|
} | null;
|
|
104
|
+
/** 영상 URL. 업로드 중이거나 영상이 없으면 `null` 입니다. */
|
|
105
|
+
video?: string | null;
|
|
106
|
+
/**
|
|
107
|
+
* 영상 업로드 상태. `submitDraft()` 직후에는 `'uploading'` 이고, 업로드가 끝나면
|
|
108
|
+
* `snapshot.issues` 의 같은 이슈가 `'ready'` 로 바뀝니다. 영상 URL 은 `openIssue()` 로 연
|
|
109
|
+
* `snapshot.activeIssue.video` 에서 확인합니다. 업로드를 끝내 포기하면 `'failed'` 입니다.
|
|
110
|
+
* 영상이 없으면 `null`.
|
|
111
|
+
*/
|
|
112
|
+
video_status?: 'uploading' | 'ready' | 'failed' | null;
|
|
113
|
+
/**
|
|
114
|
+
* 세션 리플레이 업로드 상태. 리플레이가 있는 이슈는 `submitDraft()`·`createIssue()` 직후
|
|
115
|
+
* `'uploading'` 이고, 업로드가 끝나면 `snapshot.issues` 의 같은 이슈가 `'ready'` 로 바뀝니다.
|
|
116
|
+
* 업로드를 끝내 포기하면 `'failed'` 이고 그 이슈에는 리플레이가 없습니다. 리플레이가 없으면 `null`.
|
|
117
|
+
*/
|
|
118
|
+
replay_status?: 'uploading' | 'ready' | 'failed' | null;
|
|
82
119
|
}
|
|
83
120
|
|
|
84
121
|
/** 상세 조회한 이슈. */
|
|
@@ -235,6 +272,28 @@ export interface HeadlessSessionReplayState {
|
|
|
235
272
|
readonly error: string | null;
|
|
236
273
|
}
|
|
237
274
|
|
|
275
|
+
/** 뒤에서 올리는 영상 하나의 상태. 업로드가 끝나면 목록에서 빠집니다. */
|
|
276
|
+
export interface HeadlessVideoUpload {
|
|
277
|
+
readonly issueId: string;
|
|
278
|
+
/** `failed` 는 네트워크 재시도를 모두 쓴 상태입니다. `retryVideoUpload()` 로 이어 올립니다. */
|
|
279
|
+
readonly status: 'queued' | 'uploading' | 'failed';
|
|
280
|
+
/** 0~1 */
|
|
281
|
+
readonly progress: number;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/** 뒤에서 올리는 세션 리플레이·웹소켓 로그 하나의 상태. 업로드가 끝나면 목록에서 빠집니다. */
|
|
285
|
+
export interface HeadlessAttachmentUpload {
|
|
286
|
+
readonly issueId: string;
|
|
287
|
+
readonly kind: 'replay' | 'socket';
|
|
288
|
+
/**
|
|
289
|
+
* `failed` 는 네트워크 재시도를 모두 쓴 상태입니다. 연결이 돌아오거나 다음에 초기화할 때,
|
|
290
|
+
* 또는 `retryVideoUpload(issueId)` 를 부르면 다시 올립니다.
|
|
291
|
+
*/
|
|
292
|
+
readonly status: 'queued' | 'uploading' | 'failed';
|
|
293
|
+
/** 0~1 */
|
|
294
|
+
readonly progress: number;
|
|
295
|
+
}
|
|
296
|
+
|
|
238
297
|
export interface HeadlessSnapshot {
|
|
239
298
|
readonly phase: HeadlessPhase;
|
|
240
299
|
readonly auth: HeadlessAuthState;
|
|
@@ -243,6 +302,8 @@ export interface HeadlessSnapshot {
|
|
|
243
302
|
readonly draft: HeadlessIssueDraft | null;
|
|
244
303
|
readonly videoCapture: HeadlessVideoCaptureState;
|
|
245
304
|
readonly sessionReplay: HeadlessSessionReplayState;
|
|
305
|
+
readonly videoUploads: readonly HeadlessVideoUpload[];
|
|
306
|
+
readonly attachmentUploads: readonly HeadlessAttachmentUpload[];
|
|
246
307
|
readonly formSchema: IssueFormSchema | null;
|
|
247
308
|
readonly filterSchema: IssueFilterSchema | null;
|
|
248
309
|
readonly error: IssueStickerHeadlessError | null;
|
|
@@ -307,7 +368,13 @@ export interface HeadlessClient {
|
|
|
307
368
|
stopVideoCapture(): Promise<void>;
|
|
308
369
|
setSessionReplayEnabled(enabled: boolean): void;
|
|
309
370
|
cancelIssueCapture(): void;
|
|
371
|
+
/**
|
|
372
|
+
* 이슈를 생성하고 바로 돌려줍니다. 녹화 영상·세션 리플레이·웹소켓 로그는 이슈가 생성된 뒤
|
|
373
|
+
* 따로 업로드되며, 진행은 `snapshot.videoUploads`·`snapshot.attachmentUploads` 로 확인합니다.
|
|
374
|
+
*/
|
|
310
375
|
submitDraft(input: SubmitDraftInput): Promise<Issue>;
|
|
376
|
+
/** 이슈의 실패한 업로드(영상·세션 리플레이·웹소켓 로그)를 다시 올립니다. */
|
|
377
|
+
retryVideoUpload(issueId: string): void;
|
|
311
378
|
/**
|
|
312
379
|
* 유저 액션 없이 코드에서 이슈를 만듭니다. 캡처 단계를 거치지 않으므로 `phase`와
|
|
313
380
|
* `draft`를 건드리지 않고, 사용자가 이슈를 작성하는 중에도 호출할 수 있습니다.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "issue-sticker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "IssueSticker SDK - Visual bug tracking widget for web applications",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"type": "module",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"@tanstack/react-query": "^5.90.12",
|
|
76
76
|
"class-variance-authority": "^0.7.1",
|
|
77
77
|
"clsx": "^2.1.1",
|
|
78
|
+
"dom-accessibility-api": "^0.7.1",
|
|
78
79
|
"es-toolkit": "^1.49.0",
|
|
79
80
|
"framer-motion": "^12.29.2",
|
|
80
81
|
"lucide-react": "^0.562.0",
|