@solhun/feedback-kit-web 0.11.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/dist/index.js CHANGED
@@ -1180,7 +1180,7 @@ import {
1180
1180
  } from "react";
1181
1181
 
1182
1182
  // src/version.ts
1183
- var VERSION = true ? "0.11.0" : "dev";
1183
+ var VERSION = true ? "0.12.0" : "dev";
1184
1184
 
1185
1185
  // src/dev-clipboard.ts
1186
1186
  import { sourceFromElement } from "@solhun/feedback-kit-core";
@@ -1258,6 +1258,36 @@ function resolveDevMode(propValue, stored) {
1258
1258
  if (stored !== null) return stored;
1259
1259
  return propValue === true;
1260
1260
  }
1261
+ var SETTINGS_FLAG = "fk-settings";
1262
+ var SESSION_KEY = "feedback-kit:settings-visible";
1263
+ function isSettingsRequested(search, session) {
1264
+ const store = session === void 0 ? sessionStorageOrNull() : session;
1265
+ let requested = false;
1266
+ try {
1267
+ requested = new URLSearchParams(search).get(SETTINGS_FLAG) === "1";
1268
+ } catch {
1269
+ requested = false;
1270
+ }
1271
+ if (requested) {
1272
+ try {
1273
+ store?.setItem(SESSION_KEY, "1");
1274
+ } catch {
1275
+ }
1276
+ return true;
1277
+ }
1278
+ try {
1279
+ return store?.getItem(SESSION_KEY) === "1";
1280
+ } catch {
1281
+ return false;
1282
+ }
1283
+ }
1284
+ function sessionStorageOrNull() {
1285
+ try {
1286
+ return globalThis.sessionStorage ?? null;
1287
+ } catch {
1288
+ return null;
1289
+ }
1290
+ }
1261
1291
 
1262
1292
  // src/feedback-kit.tsx
1263
1293
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1755,9 +1785,12 @@ function FeedbackKit(props) {
1755
1785
  const [pickingState, setPickingState] = useState(INITIAL_PICKING_STATE);
1756
1786
  const [announcement, setAnnouncement] = useState(null);
1757
1787
  const [devMode, setDevMode] = useState(() => resolveDevMode(props.devMode, readDevPreference()));
1758
- const [devSettingsAvailable] = useState(
1788
+ const [devToggleAvailable] = useState(
1759
1789
  () => props.devMode === true || isDevSettingsHost(globalThis.location?.hostname ?? "")
1760
1790
  );
1791
+ const [devSettingsAvailable] = useState(
1792
+ () => props.devMode === true || isDevSettingsHost(globalThis.location?.hostname ?? "") || isSettingsRequested(globalThis.location?.search ?? "")
1793
+ );
1761
1794
  const [devSettingsOpen, setDevSettingsOpen] = useState(false);
1762
1795
  const [connection, setConnection] = useState(null);
1763
1796
  const [connectionState, setConnectionState] = useState("idle");
@@ -2187,6 +2220,7 @@ function FeedbackKit(props) {
2187
2220
  {
2188
2221
  type: "checkbox",
2189
2222
  checked: devMode,
2223
+ disabled: !devToggleAvailable,
2190
2224
  onChange: (event) => toggleDevMode(event.currentTarget.checked),
2191
2225
  style: { marginTop: 3 }
2192
2226
  }
@@ -2244,11 +2278,17 @@ function FeedbackKit(props) {
2244
2278
  ]
2245
2279
  }
2246
2280
  ),
2247
- /* @__PURE__ */ jsxs("p", { style: { margin: "12px 0 0", color: TOKENS.muted, fontSize: 12 }, children: [
2248
- "\uC774 \uC124\uC815\uC740 \uB85C\uCEEC(",
2281
+ /* @__PURE__ */ jsx("p", { style: { margin: "12px 0 0", color: TOKENS.muted, fontSize: 12 }, children: devToggleAvailable ? /* @__PURE__ */ jsxs(Fragment, { children: [
2282
+ "\uAC1C\uBC1C\uC6A9 \uBAA8\uB4DC\uB294 \uB85C\uCEEC(",
2249
2283
  /* @__PURE__ */ jsx("code", { children: "localhost" }),
2250
- ")\uC5D0\uC11C\uB9CC \uBCF4\uC785\uB2C8\uB2E4. \uBC30\uD3EC\uB41C \uD654\uBA74\uC5D0\uC11C\uB294 \uC2E4\uC0AC\uC6A9\uC790\uAC00 \uCF24 \uC218 \uC5C6\uC5B4\uC57C \uD574\uC11C \uC544\uC608 \uB744\uC6B0\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4."
2251
- ] }),
2284
+ ")\uC5D0\uC11C\uB9CC \uCF24 \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uBC30\uD3EC\uB41C \uD654\uBA74\uC5D0\uC11C \uC2E4\uC0AC\uC6A9\uC790\uAC00 \uCF1C\uBA74 \uADF8 \uC0AC\uB78C \uC81C\uBCF4\uAC00 \uC5B4\uB514\uC5D0\uB3C4 \uC548 \uB0A8\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4."
2285
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2286
+ "\uC5EC\uAE30\uC11C\uB294 ",
2287
+ /* @__PURE__ */ jsx("b", { children: "\uBCF4\uAE30\uB9CC" }),
2288
+ " \uB429\uB2C8\uB2E4. \uAC1C\uBC1C\uC6A9 \uBAA8\uB4DC\uB294 \uB85C\uCEEC(",
2289
+ /* @__PURE__ */ jsx("code", { children: "localhost" }),
2290
+ ")\uC5D0\uC11C\uB9CC \uCF24 \uC218 \uC788\uC2B5\uB2C8\uB2E4 \u2014 \uC2E4\uC0AC\uC6A9\uC790\uAC00 \uCF1C\uBA74 \uADF8 \uC0AC\uB78C \uC81C\uBCF4\uAC00 \uC5B4\uB514\uC5D0\uB3C4 \uC548 \uB0A8\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4."
2291
+ ] }) }),
2252
2292
  /* @__PURE__ */ jsx("div", { style: { display: "flex", justifyContent: "flex-end", marginTop: 12 }, children: /* @__PURE__ */ jsx("button", { type: "button", style: baseButton, onClick: () => setDevSettingsOpen(false), children: "\uB2EB\uAE30" }) })
2253
2293
  ]
2254
2294
  }