@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.cjs CHANGED
@@ -1220,7 +1220,7 @@ var import_feedback_kit_core4 = require("@solhun/feedback-kit-core");
1220
1220
  var import_react = require("react");
1221
1221
 
1222
1222
  // src/version.ts
1223
- var VERSION = true ? "0.11.0" : "dev";
1223
+ var VERSION = true ? "0.12.0" : "dev";
1224
1224
 
1225
1225
  // src/dev-clipboard.ts
1226
1226
  var import_feedback_kit_core3 = require("@solhun/feedback-kit-core");
@@ -1298,6 +1298,36 @@ function resolveDevMode(propValue, stored) {
1298
1298
  if (stored !== null) return stored;
1299
1299
  return propValue === true;
1300
1300
  }
1301
+ var SETTINGS_FLAG = "fk-settings";
1302
+ var SESSION_KEY = "feedback-kit:settings-visible";
1303
+ function isSettingsRequested(search, session) {
1304
+ const store = session === void 0 ? sessionStorageOrNull() : session;
1305
+ let requested = false;
1306
+ try {
1307
+ requested = new URLSearchParams(search).get(SETTINGS_FLAG) === "1";
1308
+ } catch {
1309
+ requested = false;
1310
+ }
1311
+ if (requested) {
1312
+ try {
1313
+ store?.setItem(SESSION_KEY, "1");
1314
+ } catch {
1315
+ }
1316
+ return true;
1317
+ }
1318
+ try {
1319
+ return store?.getItem(SESSION_KEY) === "1";
1320
+ } catch {
1321
+ return false;
1322
+ }
1323
+ }
1324
+ function sessionStorageOrNull() {
1325
+ try {
1326
+ return globalThis.sessionStorage ?? null;
1327
+ } catch {
1328
+ return null;
1329
+ }
1330
+ }
1301
1331
 
1302
1332
  // src/feedback-kit.tsx
1303
1333
  var import_jsx_runtime = require("react/jsx-runtime");
@@ -1795,9 +1825,12 @@ function FeedbackKit(props) {
1795
1825
  const [pickingState, setPickingState] = (0, import_react.useState)(INITIAL_PICKING_STATE);
1796
1826
  const [announcement, setAnnouncement] = (0, import_react.useState)(null);
1797
1827
  const [devMode, setDevMode] = (0, import_react.useState)(() => resolveDevMode(props.devMode, readDevPreference()));
1798
- const [devSettingsAvailable] = (0, import_react.useState)(
1828
+ const [devToggleAvailable] = (0, import_react.useState)(
1799
1829
  () => props.devMode === true || isDevSettingsHost(globalThis.location?.hostname ?? "")
1800
1830
  );
1831
+ const [devSettingsAvailable] = (0, import_react.useState)(
1832
+ () => props.devMode === true || isDevSettingsHost(globalThis.location?.hostname ?? "") || isSettingsRequested(globalThis.location?.search ?? "")
1833
+ );
1801
1834
  const [devSettingsOpen, setDevSettingsOpen] = (0, import_react.useState)(false);
1802
1835
  const [connection, setConnection] = (0, import_react.useState)(null);
1803
1836
  const [connectionState, setConnectionState] = (0, import_react.useState)("idle");
@@ -2227,6 +2260,7 @@ function FeedbackKit(props) {
2227
2260
  {
2228
2261
  type: "checkbox",
2229
2262
  checked: devMode,
2263
+ disabled: !devToggleAvailable,
2230
2264
  onChange: (event) => toggleDevMode(event.currentTarget.checked),
2231
2265
  style: { marginTop: 3 }
2232
2266
  }
@@ -2284,11 +2318,17 @@ function FeedbackKit(props) {
2284
2318
  ]
2285
2319
  }
2286
2320
  ),
2287
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { style: { margin: "12px 0 0", color: TOKENS.muted, fontSize: 12 }, children: [
2288
- "\uC774 \uC124\uC815\uC740 \uB85C\uCEEC(",
2321
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { style: { margin: "12px 0 0", color: TOKENS.muted, fontSize: 12 }, children: devToggleAvailable ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
2322
+ "\uAC1C\uBC1C\uC6A9 \uBAA8\uB4DC\uB294 \uB85C\uCEEC(",
2289
2323
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { children: "localhost" }),
2290
- ")\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."
2291
- ] }),
2324
+ ")\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."
2325
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
2326
+ "\uC5EC\uAE30\uC11C\uB294 ",
2327
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: "\uBCF4\uAE30\uB9CC" }),
2328
+ " \uB429\uB2C8\uB2E4. \uAC1C\uBC1C\uC6A9 \uBAA8\uB4DC\uB294 \uB85C\uCEEC(",
2329
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { children: "localhost" }),
2330
+ ")\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."
2331
+ ] }) }),
2292
2332
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", justifyContent: "flex-end", marginTop: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", { type: "button", style: baseButton, onClick: () => setDevSettingsOpen(false), children: "\uB2EB\uAE30" }) })
2293
2333
  ]
2294
2334
  }