issue-sticker 0.7.0 → 0.8.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
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
npm 패키지 `issue-sticker`의 변경 이력입니다. 설치·업그레이드에 영향을 주는 변경만 기록합니다.
|
|
4
4
|
|
|
5
|
+
## 0.8.0 - 2026-09-14
|
|
6
|
+
|
|
7
|
+
### 추가
|
|
8
|
+
|
|
9
|
+
- 멤버로 로그인하면 위젯 더보기 메뉴의 스티커 필터에서 날짜·커스텀 필드·Jira·Notion 조건으로 스티커를 필터링할 수 있습니다. 항목을 바꾸는 즉시 적용됩니다.
|
|
10
|
+
- 게스트에게는 스티커 필터 항목이 표시되지 않고, 필터도 적용되지 않습니다.
|
|
11
|
+
- 필터 값은 페이지 안에서만 유지되며 새로고침하면 초기화됩니다.
|
|
12
|
+
|
|
13
|
+
### 개선
|
|
14
|
+
|
|
15
|
+
- 가이드에서 「건너뛰기」를 클릭하면 확인 없이 바로 닫힙니다.
|
|
16
|
+
- 백엔드 1.7.0부터 SDK가 동작하는 도메인을 워크스페이스에 등록된 호스트와 그 하위 도메인 기준으로 판정합니다. 포트·프로토콜은 구분하지 않습니다. SDK 코드 변경 없이 적용되며, 도메인 등록은 관리자 콘솔의 도메인 연결 메뉴에서 합니다.
|
|
17
|
+
|
|
5
18
|
## 0.7.0 - 2026-09-13
|
|
6
19
|
|
|
7
20
|
### 호환성이 깨지는 변경
|
|
@@ -4967,6 +4967,182 @@ function buildJiraCreateFields(exposedFields, fieldDefinitions = [], values = {}
|
|
|
4967
4967
|
includeReadonly: false
|
|
4968
4968
|
}).filter((field) => knownFieldIds.has(normalizeJiraFieldId(field.id))).filter((field) => !CREATE_UNSUPPORTED_FIELD_IDS.has(normalizeJiraFieldId(field.id)));
|
|
4969
4969
|
}
|
|
4970
|
+
const JIRA_FILTERABLE_FIELD_IDS = /* @__PURE__ */ new Set([
|
|
4971
|
+
"status",
|
|
4972
|
+
"priority",
|
|
4973
|
+
"assignee",
|
|
4974
|
+
"reporter",
|
|
4975
|
+
"fixVersions",
|
|
4976
|
+
"issuetype",
|
|
4977
|
+
"project_key",
|
|
4978
|
+
"sprint_id",
|
|
4979
|
+
"sprint_name",
|
|
4980
|
+
"epic_link",
|
|
4981
|
+
"story_points"
|
|
4982
|
+
]);
|
|
4983
|
+
const NOTION_FILTERABLE_FIELD_TYPES = /* @__PURE__ */ new Set(["select", "multi_select", "status", "checkbox"]);
|
|
4984
|
+
function getJiraConfig(integration) {
|
|
4985
|
+
if (integration.service_type !== "JIRA") return null;
|
|
4986
|
+
return integration.config ?? null;
|
|
4987
|
+
}
|
|
4988
|
+
function getNotionConfig(integration) {
|
|
4989
|
+
if (integration.service_type !== "NOTION") return null;
|
|
4990
|
+
return integration.config ?? null;
|
|
4991
|
+
}
|
|
4992
|
+
function getExposedFields(config) {
|
|
4993
|
+
if (!(config == null ? void 0 : config.exposed_fields)) return [];
|
|
4994
|
+
return normalizeExposedJiraFields(
|
|
4995
|
+
Array.isArray(config.exposed_fields) ? config.exposed_fields : void 0
|
|
4996
|
+
);
|
|
4997
|
+
}
|
|
4998
|
+
function getLastKnownJiraFields(config) {
|
|
4999
|
+
const fields = config == null ? void 0 : config.last_known_fields;
|
|
5000
|
+
if (!Array.isArray(fields)) return [];
|
|
5001
|
+
return fields.filter(
|
|
5002
|
+
(field) => Boolean(field) && typeof field === "object" && typeof field.id === "string" && typeof field.name === "string"
|
|
5003
|
+
);
|
|
5004
|
+
}
|
|
5005
|
+
function getSelectedNotionFields(config) {
|
|
5006
|
+
const fields = config == null ? void 0 : config.selected_fields;
|
|
5007
|
+
if (!Array.isArray(fields)) return [];
|
|
5008
|
+
return fields.filter((field) => typeof field === "string");
|
|
5009
|
+
}
|
|
5010
|
+
function getLastKnownNotionFields(config) {
|
|
5011
|
+
const fields = config == null ? void 0 : config.last_known_fields;
|
|
5012
|
+
if (!Array.isArray(fields)) return [];
|
|
5013
|
+
return fields.filter(
|
|
5014
|
+
(field) => Boolean(field) && typeof field === "object" && typeof field.id === "string" && typeof field.name === "string" && typeof field.type === "string"
|
|
5015
|
+
);
|
|
5016
|
+
}
|
|
5017
|
+
const OPTION_CUSTOM_FIELD_TYPES = /* @__PURE__ */ new Set(["select", "multi_select"]);
|
|
5018
|
+
function getSelectableCustomFieldOptions(field) {
|
|
5019
|
+
var _a;
|
|
5020
|
+
if (!OPTION_CUSTOM_FIELD_TYPES.has(field.field_type)) return [];
|
|
5021
|
+
const rawOptions = (_a = field.field_config) == null ? void 0 : _a.options;
|
|
5022
|
+
if (!Array.isArray(rawOptions)) return [];
|
|
5023
|
+
return rawOptions.filter((option) => typeof option === "string" && option.trim().length > 0).map((option) => ({ label: option, value: option }));
|
|
5024
|
+
}
|
|
5025
|
+
function getJiraOptionValue(option) {
|
|
5026
|
+
return option.id;
|
|
5027
|
+
}
|
|
5028
|
+
function getJiraFieldFilterOptions(field) {
|
|
5029
|
+
const options = field.options ?? [];
|
|
5030
|
+
if (!options.length) return [];
|
|
5031
|
+
return options.map((option) => ({
|
|
5032
|
+
label: option.name || option.value || option.id,
|
|
5033
|
+
value: getJiraOptionValue(option)
|
|
5034
|
+
})).filter((option) => option.value.length > 0);
|
|
5035
|
+
}
|
|
5036
|
+
function getNotionFieldFilterOptions(field) {
|
|
5037
|
+
if (field.type === "checkbox") {
|
|
5038
|
+
return [
|
|
5039
|
+
{ label: "체크됨", value: "true" },
|
|
5040
|
+
{ label: "체크 안 됨", value: "false" }
|
|
5041
|
+
];
|
|
5042
|
+
}
|
|
5043
|
+
const options = field.options ?? [];
|
|
5044
|
+
if (!options.length) return [];
|
|
5045
|
+
return options.map((option) => ({
|
|
5046
|
+
label: option.name,
|
|
5047
|
+
value: option.name
|
|
5048
|
+
})).filter((option) => option.value.length > 0);
|
|
5049
|
+
}
|
|
5050
|
+
function mergeOptions(current, next) {
|
|
5051
|
+
const byValue = new Map(current.map((option) => [option.value, option]));
|
|
5052
|
+
for (const option of next) {
|
|
5053
|
+
if (!byValue.has(option.value)) {
|
|
5054
|
+
byValue.set(option.value, option);
|
|
5055
|
+
}
|
|
5056
|
+
}
|
|
5057
|
+
return Array.from(byValue.values()).sort((a2, b) => a2.label.localeCompare(b.label));
|
|
5058
|
+
}
|
|
5059
|
+
function upsertFilterGroup(groups, group) {
|
|
5060
|
+
const existing = groups.get(group.id);
|
|
5061
|
+
if (!existing) {
|
|
5062
|
+
groups.set(group.id, {
|
|
5063
|
+
...group,
|
|
5064
|
+
options: mergeOptions([], group.options)
|
|
5065
|
+
});
|
|
5066
|
+
return;
|
|
5067
|
+
}
|
|
5068
|
+
groups.set(group.id, {
|
|
5069
|
+
...existing,
|
|
5070
|
+
options: mergeOptions(existing.options, group.options)
|
|
5071
|
+
});
|
|
5072
|
+
}
|
|
5073
|
+
function appendCustomFieldFilterGroups(groups, customFields) {
|
|
5074
|
+
for (const field of customFields) {
|
|
5075
|
+
const options = getSelectableCustomFieldOptions(field);
|
|
5076
|
+
if (!options.length) continue;
|
|
5077
|
+
upsertFilterGroup(groups, {
|
|
5078
|
+
kind: "custom",
|
|
5079
|
+
id: `custom:${field.id}`,
|
|
5080
|
+
fieldDefinitionId: field.id,
|
|
5081
|
+
label: field.field_name,
|
|
5082
|
+
options
|
|
5083
|
+
});
|
|
5084
|
+
}
|
|
5085
|
+
}
|
|
5086
|
+
function appendJiraFieldFilterGroups(groups, exposedFieldIds, fields) {
|
|
5087
|
+
for (const field of fields) {
|
|
5088
|
+
const normalizedFieldId = normalizeJiraFieldId(field.id);
|
|
5089
|
+
if (!exposedFieldIds.has(normalizedFieldId) || !JIRA_FILTERABLE_FIELD_IDS.has(normalizedFieldId)) {
|
|
5090
|
+
continue;
|
|
5091
|
+
}
|
|
5092
|
+
const options = getJiraFieldFilterOptions(field);
|
|
5093
|
+
if (!options.length) continue;
|
|
5094
|
+
upsertFilterGroup(groups, {
|
|
5095
|
+
kind: "jira",
|
|
5096
|
+
id: `jira:${normalizedFieldId}`,
|
|
5097
|
+
fieldName: normalizedFieldId,
|
|
5098
|
+
label: field.name,
|
|
5099
|
+
options
|
|
5100
|
+
});
|
|
5101
|
+
}
|
|
5102
|
+
}
|
|
5103
|
+
function appendNotionFieldFilterGroups(groups, selectedFields, fields) {
|
|
5104
|
+
for (const field of fields) {
|
|
5105
|
+
if (!selectedFields.has(field.id) && !selectedFields.has(field.name)) continue;
|
|
5106
|
+
if (!NOTION_FILTERABLE_FIELD_TYPES.has(field.type)) continue;
|
|
5107
|
+
const options = getNotionFieldFilterOptions(field);
|
|
5108
|
+
if (!options.length) continue;
|
|
5109
|
+
upsertFilterGroup(groups, {
|
|
5110
|
+
kind: "notion",
|
|
5111
|
+
id: `notion:${field.id}`,
|
|
5112
|
+
fieldName: field.name,
|
|
5113
|
+
label: field.name,
|
|
5114
|
+
options
|
|
5115
|
+
});
|
|
5116
|
+
}
|
|
5117
|
+
}
|
|
5118
|
+
function composeIssueFilterGroups(integrations, customFields) {
|
|
5119
|
+
const groups = /* @__PURE__ */ new Map();
|
|
5120
|
+
const jiraIntegration = integrations.find((integration) => {
|
|
5121
|
+
const config = getJiraConfig(integration);
|
|
5122
|
+
return integration.is_active !== false && config;
|
|
5123
|
+
});
|
|
5124
|
+
appendCustomFieldFilterGroups(groups, customFields);
|
|
5125
|
+
const jiraConfig = jiraIntegration ? getJiraConfig(jiraIntegration) : null;
|
|
5126
|
+
const configExposedFields = getExposedFields(jiraConfig);
|
|
5127
|
+
if (configExposedFields.length) {
|
|
5128
|
+
appendJiraFieldFilterGroups(
|
|
5129
|
+
groups,
|
|
5130
|
+
new Set(configExposedFields),
|
|
5131
|
+
getLastKnownJiraFields(jiraConfig)
|
|
5132
|
+
);
|
|
5133
|
+
}
|
|
5134
|
+
for (const integration of integrations) {
|
|
5135
|
+
if (integration.is_active === false) continue;
|
|
5136
|
+
const notionConfig = getNotionConfig(integration);
|
|
5137
|
+
if (!notionConfig) continue;
|
|
5138
|
+
appendNotionFieldFilterGroups(
|
|
5139
|
+
groups,
|
|
5140
|
+
new Set(getSelectedNotionFields(notionConfig)),
|
|
5141
|
+
getLastKnownNotionFields(notionConfig)
|
|
5142
|
+
);
|
|
5143
|
+
}
|
|
5144
|
+
return Array.from(groups.values()).sort((a2, b) => a2.label.localeCompare(b.label));
|
|
5145
|
+
}
|
|
4970
5146
|
const STABLE_ATTR_KEYS = [
|
|
4971
5147
|
"data-testid",
|
|
4972
5148
|
"data-test",
|
|
@@ -6486,7 +6662,7 @@ var Popover$1 = (props) => {
|
|
|
6486
6662
|
};
|
|
6487
6663
|
Popover$1.displayName = POPOVER_NAME;
|
|
6488
6664
|
var ANCHOR_NAME = "PopoverAnchor";
|
|
6489
|
-
var PopoverAnchor = React.forwardRef(
|
|
6665
|
+
var PopoverAnchor$1 = React.forwardRef(
|
|
6490
6666
|
(props, forwardedRef) => {
|
|
6491
6667
|
const { __scopePopover, ...anchorProps } = props;
|
|
6492
6668
|
const context = usePopoverContext(ANCHOR_NAME, __scopePopover);
|
|
@@ -6499,7 +6675,7 @@ var PopoverAnchor = React.forwardRef(
|
|
|
6499
6675
|
return /* @__PURE__ */ jsx(Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });
|
|
6500
6676
|
}
|
|
6501
6677
|
);
|
|
6502
|
-
PopoverAnchor.displayName = ANCHOR_NAME;
|
|
6678
|
+
PopoverAnchor$1.displayName = ANCHOR_NAME;
|
|
6503
6679
|
var TRIGGER_NAME$1 = "PopoverTrigger";
|
|
6504
6680
|
var PopoverTrigger$1 = React.forwardRef(
|
|
6505
6681
|
(props, forwardedRef) => {
|
|
@@ -6722,11 +6898,13 @@ function getState(open) {
|
|
|
6722
6898
|
return open ? "open" : "closed";
|
|
6723
6899
|
}
|
|
6724
6900
|
var Root2 = Popover$1;
|
|
6901
|
+
var Anchor2 = PopoverAnchor$1;
|
|
6725
6902
|
var Trigger = PopoverTrigger$1;
|
|
6726
6903
|
var Portal = PopoverPortal;
|
|
6727
6904
|
var Content2 = PopoverContent$1;
|
|
6728
6905
|
const Popover = Root2;
|
|
6729
6906
|
const PopoverTrigger = Trigger;
|
|
6907
|
+
const PopoverAnchor = Anchor2;
|
|
6730
6908
|
const PopoverContent = React.forwardRef(({ className, align = "center", sideOffset = 6, onEscapeKeyDown, ...props }, ref) => {
|
|
6731
6909
|
const portalContainer = usePortalContainer();
|
|
6732
6910
|
return /* @__PURE__ */ jsx(Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
@@ -12786,12 +12964,6 @@ const DEFAULT_LABELS = {
|
|
|
12786
12964
|
badge: "가이드",
|
|
12787
12965
|
close: "가이드 닫기",
|
|
12788
12966
|
skip: "건너뛰기",
|
|
12789
|
-
skipConfirmTitle: "가이드를 건너뛸까요?",
|
|
12790
|
-
// 채널마다 진입점이 다르다(admin=헤더 아이콘, extension=더보기 메뉴, sdk=FAB 메뉴).
|
|
12791
|
-
// 위치를 특정하면 어느 한쪽에서는 틀린 안내가 되므로 라벨만 가리킨다.
|
|
12792
|
-
skipConfirmBody: "'가이드 다시 보기'를 클릭하면 언제든 다시 열 수 있습니다.",
|
|
12793
|
-
skipConfirmCancel: "계속 보기",
|
|
12794
|
-
skipConfirmConfirm: "건너뛰기",
|
|
12795
12967
|
previous: "이전",
|
|
12796
12968
|
next: "다음",
|
|
12797
12969
|
done: "완료",
|
|
@@ -13048,64 +13220,10 @@ function OnboardingPopoverContent({
|
|
|
13048
13220
|
canGoPrevious,
|
|
13049
13221
|
isLast,
|
|
13050
13222
|
isVisible,
|
|
13051
|
-
|
|
13052
|
-
onRequestSkip,
|
|
13053
|
-
onCancelSkip,
|
|
13054
|
-
onConfirmSkip,
|
|
13223
|
+
onSkip,
|
|
13055
13224
|
onNext,
|
|
13056
13225
|
onPrevious
|
|
13057
13226
|
}) {
|
|
13058
|
-
if (isSkipConfirmOpen) {
|
|
13059
|
-
return /* @__PURE__ */ jsxs(
|
|
13060
|
-
"div",
|
|
13061
|
-
{
|
|
13062
|
-
role: "alertdialog",
|
|
13063
|
-
"aria-modal": "false",
|
|
13064
|
-
"aria-labelledby": "issue-sticker-onboarding-skip-title",
|
|
13065
|
-
"aria-describedby": "issue-sticker-onboarding-skip-desc",
|
|
13066
|
-
children: [
|
|
13067
|
-
/* @__PURE__ */ jsx(
|
|
13068
|
-
"h2",
|
|
13069
|
-
{
|
|
13070
|
-
id: "issue-sticker-onboarding-skip-title",
|
|
13071
|
-
className: "text-sm font-semibold leading-5 text-text-primary",
|
|
13072
|
-
children: labels.skipConfirmTitle
|
|
13073
|
-
}
|
|
13074
|
-
),
|
|
13075
|
-
/* @__PURE__ */ jsx(
|
|
13076
|
-
"p",
|
|
13077
|
-
{
|
|
13078
|
-
id: "issue-sticker-onboarding-skip-desc",
|
|
13079
|
-
className: "mt-2 whitespace-pre-line text-sm leading-5 text-text-secondary",
|
|
13080
|
-
children: labels.skipConfirmBody
|
|
13081
|
-
}
|
|
13082
|
-
),
|
|
13083
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center justify-end gap-2", children: [
|
|
13084
|
-
/* @__PURE__ */ jsx(
|
|
13085
|
-
"button",
|
|
13086
|
-
{
|
|
13087
|
-
type: "button",
|
|
13088
|
-
onClick: onCancelSkip,
|
|
13089
|
-
disabled: !isVisible,
|
|
13090
|
-
className: "inline-flex h-[30px] items-center justify-center rounded-md border border-line-subtle px-2.5 text-xs font-semibold text-text-secondary transition-colors hover:bg-surface-2 hover:text-text-primary focus-visible:outline-none focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50",
|
|
13091
|
-
children: labels.skipConfirmCancel
|
|
13092
|
-
}
|
|
13093
|
-
),
|
|
13094
|
-
/* @__PURE__ */ jsx(
|
|
13095
|
-
"button",
|
|
13096
|
-
{
|
|
13097
|
-
type: "button",
|
|
13098
|
-
onClick: onConfirmSkip,
|
|
13099
|
-
disabled: !isVisible,
|
|
13100
|
-
className: "inline-flex h-[30px] items-center justify-center rounded-md border border-line-subtle px-2.5 text-xs font-semibold text-text-primary transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50",
|
|
13101
|
-
children: labels.skipConfirmConfirm
|
|
13102
|
-
}
|
|
13103
|
-
)
|
|
13104
|
-
] })
|
|
13105
|
-
]
|
|
13106
|
-
}
|
|
13107
|
-
);
|
|
13108
|
-
}
|
|
13109
13227
|
const hasNextButton = shouldRenderNextButton(step);
|
|
13110
13228
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
13111
13229
|
/* @__PURE__ */ jsx("h2", { className: "text-sm font-semibold leading-5 text-text-primary", children: step.title }),
|
|
@@ -13134,7 +13252,7 @@ function OnboardingPopoverContent({
|
|
|
13134
13252
|
"button",
|
|
13135
13253
|
{
|
|
13136
13254
|
type: "button",
|
|
13137
|
-
onClick:
|
|
13255
|
+
onClick: onSkip,
|
|
13138
13256
|
disabled: !isVisible,
|
|
13139
13257
|
className: LINK_BUTTON_CLASS,
|
|
13140
13258
|
children: labels.skip
|
|
@@ -13145,7 +13263,7 @@ function OnboardingPopoverContent({
|
|
|
13145
13263
|
{
|
|
13146
13264
|
type: "button",
|
|
13147
13265
|
onClick: onPrevious,
|
|
13148
|
-
disabled: !isVisible
|
|
13266
|
+
disabled: !isVisible,
|
|
13149
13267
|
className: LINK_BUTTON_CLASS,
|
|
13150
13268
|
children: labels.previous
|
|
13151
13269
|
}
|
|
@@ -13157,7 +13275,7 @@ function OnboardingPopoverContent({
|
|
|
13157
13275
|
{
|
|
13158
13276
|
type: "button",
|
|
13159
13277
|
onClick: onPrevious,
|
|
13160
|
-
disabled: !isVisible
|
|
13278
|
+
disabled: !isVisible,
|
|
13161
13279
|
className: "inline-flex h-[30px] items-center justify-center rounded-md border border-line-subtle px-2.5 text-xs font-semibold text-text-secondary transition-colors hover:bg-surface-2 hover:text-text-primary focus-visible:outline-none focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50",
|
|
13162
13280
|
children: labels.previous
|
|
13163
13281
|
}
|
|
@@ -13167,7 +13285,7 @@ function OnboardingPopoverContent({
|
|
|
13167
13285
|
{
|
|
13168
13286
|
type: "button",
|
|
13169
13287
|
onClick: onNext,
|
|
13170
|
-
disabled: !isVisible
|
|
13288
|
+
disabled: !isVisible,
|
|
13171
13289
|
className: "inline-flex h-[30px] items-center justify-center rounded-md border border-line-subtle px-2.5 text-xs font-semibold text-text-primary transition-colors hover:bg-surface-2 focus-visible:outline-none focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50",
|
|
13172
13290
|
children: isLast ? labels.done : step.nextLabel ?? labels.next
|
|
13173
13291
|
}
|
|
@@ -13194,7 +13312,6 @@ function OnboardingOverlay({
|
|
|
13194
13312
|
}) {
|
|
13195
13313
|
const maskId = React.useId().replace(/:/g, "");
|
|
13196
13314
|
const renderHighlight = (node) => elevateHighlight && typeof document !== "undefined" ? ReactDOM.createPortal(node, document.body) : node;
|
|
13197
|
-
const [isSkipConfirmOpen, setIsSkipConfirmOpen] = React.useState(false);
|
|
13198
13315
|
const cutoutRect = targetRect ? padRect(targetRect, MASK_PADDING) : null;
|
|
13199
13316
|
const cutoutRadius = cutoutRect ? Math.min(
|
|
13200
13317
|
targetRadius === null || targetRadius === void 0 ? CUTOUT_RADIUS : targetRadius + MASK_PADDING,
|
|
@@ -13219,7 +13336,7 @@ function OnboardingOverlay({
|
|
|
13219
13336
|
const observer = new ResizeObserver(measure);
|
|
13220
13337
|
observer.observe(element);
|
|
13221
13338
|
return () => observer.disconnect();
|
|
13222
|
-
}, [step.id, step.body
|
|
13339
|
+
}, [step.id, step.body]);
|
|
13223
13340
|
const effectiveSize = popoverSize && popoverSize.width > 0 && popoverSize.height > 0 ? popoverSize : DEFAULT_POPOVER_SIZE;
|
|
13224
13341
|
const placement = resolvePopoverPlacement(
|
|
13225
13342
|
step.position ?? (cutoutRect ? "bottom" : "center"),
|
|
@@ -13233,9 +13350,6 @@ function OnboardingOverlay({
|
|
|
13233
13350
|
const isPassthrough = !!step.advanceOn;
|
|
13234
13351
|
const isTargetInteraction = isTargetInteractionStep(step);
|
|
13235
13352
|
const clickHint = isTargetInteraction ? step.clickHint ?? labels.clickHint : null;
|
|
13236
|
-
React.useEffect(() => {
|
|
13237
|
-
setIsSkipConfirmOpen(false);
|
|
13238
|
-
}, [step.id]);
|
|
13239
13353
|
return /* @__PURE__ */ jsxs(
|
|
13240
13354
|
"div",
|
|
13241
13355
|
{
|
|
@@ -13378,7 +13492,6 @@ function OnboardingOverlay({
|
|
|
13378
13492
|
}
|
|
13379
13493
|
)
|
|
13380
13494
|
) : null,
|
|
13381
|
-
isSkipConfirmOpen ? /* @__PURE__ */ jsx("div", { "aria-hidden": "true", className: "fixed inset-0 pointer-events-auto" }) : null,
|
|
13382
13495
|
renderHighlight(
|
|
13383
13496
|
/* @__PURE__ */ jsx(
|
|
13384
13497
|
"div",
|
|
@@ -13405,10 +13518,7 @@ function OnboardingOverlay({
|
|
|
13405
13518
|
canGoPrevious,
|
|
13406
13519
|
isLast,
|
|
13407
13520
|
isVisible: isPopoverVisible,
|
|
13408
|
-
|
|
13409
|
-
onRequestSkip: () => setIsSkipConfirmOpen(true),
|
|
13410
|
-
onCancelSkip: () => setIsSkipConfirmOpen(false),
|
|
13411
|
-
onConfirmSkip: onSkip,
|
|
13521
|
+
onSkip,
|
|
13412
13522
|
onNext,
|
|
13413
13523
|
onPrevious
|
|
13414
13524
|
}
|
|
@@ -14073,49 +14183,49 @@ function buildExternalUserPayload(user) {
|
|
|
14073
14183
|
};
|
|
14074
14184
|
}
|
|
14075
14185
|
export {
|
|
14076
|
-
|
|
14077
|
-
|
|
14078
|
-
|
|
14186
|
+
getNotionPageMetadata as $,
|
|
14187
|
+
getLogBackupSessionId as A,
|
|
14188
|
+
createIndexedDbLogBackup as B,
|
|
14079
14189
|
ConsoleCollector as C,
|
|
14080
|
-
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
|
|
14084
|
-
|
|
14190
|
+
PopoverTrigger as D,
|
|
14191
|
+
Input as E,
|
|
14192
|
+
PopoverContent as F,
|
|
14193
|
+
Select$1 as G,
|
|
14194
|
+
SelectTrigger as H,
|
|
14085
14195
|
ISSUE_STICKER_INTERNAL_LOG_PREFIX as I,
|
|
14086
|
-
|
|
14087
|
-
|
|
14196
|
+
SelectValue as J,
|
|
14197
|
+
SelectContent as K,
|
|
14088
14198
|
Label as L,
|
|
14089
|
-
|
|
14199
|
+
SelectItem as M,
|
|
14090
14200
|
NetworkCollector as N,
|
|
14091
|
-
|
|
14201
|
+
getJiraMetadata as O,
|
|
14092
14202
|
Popover as P,
|
|
14093
|
-
|
|
14094
|
-
|
|
14203
|
+
buildJiraIssueFields as Q,
|
|
14204
|
+
Button$1 as R,
|
|
14095
14205
|
ScreenRecordingController as S,
|
|
14096
|
-
|
|
14097
|
-
|
|
14098
|
-
|
|
14099
|
-
|
|
14100
|
-
|
|
14101
|
-
|
|
14102
|
-
|
|
14103
|
-
|
|
14206
|
+
Root2 as T,
|
|
14207
|
+
Trigger as U,
|
|
14208
|
+
ChevronDown as V,
|
|
14209
|
+
Portal as W,
|
|
14210
|
+
Content2 as X,
|
|
14211
|
+
Check as Y,
|
|
14212
|
+
X as Z,
|
|
14213
|
+
DatePicker as _,
|
|
14104
14214
|
uploadSignedMediaWithApi as a,
|
|
14105
|
-
|
|
14106
|
-
|
|
14107
|
-
|
|
14108
|
-
|
|
14109
|
-
|
|
14110
|
-
|
|
14111
|
-
|
|
14112
|
-
|
|
14113
|
-
|
|
14114
|
-
|
|
14115
|
-
|
|
14116
|
-
|
|
14117
|
-
|
|
14118
|
-
|
|
14215
|
+
buildNotionFieldViews as a0,
|
|
14216
|
+
DirectUploadError as a1,
|
|
14217
|
+
toast as a2,
|
|
14218
|
+
getSnapshot as a3,
|
|
14219
|
+
subscribe as a4,
|
|
14220
|
+
getRegisteredUploadId as a5,
|
|
14221
|
+
ChevronRight as a6,
|
|
14222
|
+
ReactRemoveScroll as a7,
|
|
14223
|
+
hideOthers as a8,
|
|
14224
|
+
useFocusGuards as a9,
|
|
14225
|
+
FocusScope as aa,
|
|
14226
|
+
getExposedJiraFields as ab,
|
|
14227
|
+
isJiraFieldExposed as ac,
|
|
14228
|
+
normalizeExposedJiraFields as ad,
|
|
14119
14229
|
getPrimaryJiraMapping as ae,
|
|
14120
14230
|
createCollection as af,
|
|
14121
14231
|
useDirection as ag,
|
|
@@ -14126,29 +14236,30 @@ export {
|
|
|
14126
14236
|
OnboardingProvider as al,
|
|
14127
14237
|
useOnboardingTarget as am,
|
|
14128
14238
|
useOnboardingFlow as an,
|
|
14129
|
-
|
|
14239
|
+
PopoverAnchor as ao,
|
|
14240
|
+
buildJiraCreateFields as b,
|
|
14130
14241
|
captureWithModernScreenshot as c,
|
|
14131
14242
|
directUploadToSignedUrl as d,
|
|
14132
|
-
|
|
14133
|
-
|
|
14243
|
+
buildNotionCreateFields as e,
|
|
14244
|
+
buildGuestOwnerQuery as f,
|
|
14134
14245
|
getElementPosition as g,
|
|
14135
|
-
|
|
14246
|
+
composeIssueFilterGroups as h,
|
|
14136
14247
|
buildIssueIntegrationsPayload as i,
|
|
14137
14248
|
devLogger as j,
|
|
14138
14249
|
filterExcludeServiceRelatedLogs as k,
|
|
14139
14250
|
filterExcludeServiceRelatedConsoleLogs as l,
|
|
14140
14251
|
compactNetworkLogsForTransport as m,
|
|
14141
|
-
|
|
14142
|
-
|
|
14252
|
+
CONSOLE_LOG_SUBMIT_LIMIT as n,
|
|
14253
|
+
buildExternalUserPayload as o,
|
|
14143
14254
|
pristineFetch as p,
|
|
14144
|
-
|
|
14145
|
-
|
|
14255
|
+
shrinkNetworkLogsToFit as q,
|
|
14256
|
+
measureJsonBytes as r,
|
|
14146
14257
|
selectNetworkLogsForSubmit as s,
|
|
14147
|
-
|
|
14258
|
+
sanitizeString as t,
|
|
14148
14259
|
uploadScreenshotDataUrls as u,
|
|
14149
|
-
|
|
14150
|
-
|
|
14151
|
-
|
|
14152
|
-
|
|
14153
|
-
|
|
14260
|
+
getCurrentPageUrl as v,
|
|
14261
|
+
SessionReplayCaptureController as w,
|
|
14262
|
+
preloadModernScreenshot as x,
|
|
14263
|
+
trimLogBackupPayload as y,
|
|
14264
|
+
createSafeLogBackup as z
|
|
14154
14265
|
};
|