@wireai/activation 0.13.2 → 0.13.3

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.
Files changed (69) hide show
  1. package/AGENTS.md +4 -3
  2. package/CHANGELOG.md +228 -4
  3. package/README.md +16 -2
  4. package/dist/analytics/index.d.mts +4 -4
  5. package/dist/analytics/index.d.ts +4 -4
  6. package/dist/analytics/index.js +104 -470
  7. package/dist/analytics/index.js.map +1 -1
  8. package/dist/analytics/index.mjs +102 -468
  9. package/dist/analytics/index.mjs.map +1 -1
  10. package/dist/coachmarks/index.d.mts +14 -1
  11. package/dist/coachmarks/index.d.ts +14 -1
  12. package/dist/coachmarks/index.js +58 -14
  13. package/dist/coachmarks/index.js.map +1 -1
  14. package/dist/coachmarks/index.mjs +58 -14
  15. package/dist/coachmarks/index.mjs.map +1 -1
  16. package/dist/{currentSession-ClkLjcJ0.d.mts → currentSession-BoWtr3Jp.d.mts} +2 -2
  17. package/dist/{currentSession-DOVZEWJl.d.ts → currentSession-CCOMlaQ2.d.ts} +2 -2
  18. package/dist/{decision-Bl_M2y3r.d.mts → decision-Cjw0jbEj.d.mts} +1 -1
  19. package/dist/{decision-Cau5KmP6.d.ts → decision-GfpXAsk_.d.ts} +1 -1
  20. package/dist/index.d.mts +25 -2
  21. package/dist/index.d.ts +25 -2
  22. package/dist/index.js +220 -573
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +217 -570
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/questionnaire/index.d.mts +42 -10
  27. package/dist/questionnaire/index.d.ts +42 -10
  28. package/dist/questionnaire/index.js +45 -13
  29. package/dist/questionnaire/index.js.map +1 -1
  30. package/dist/questionnaire/index.mjs +45 -13
  31. package/dist/questionnaire/index.mjs.map +1 -1
  32. package/dist/reviews/index.d.mts +4 -4
  33. package/dist/reviews/index.d.ts +4 -4
  34. package/dist/reviews/index.js +27 -7
  35. package/dist/reviews/index.js.map +1 -1
  36. package/dist/reviews/index.mjs +27 -7
  37. package/dist/reviews/index.mjs.map +1 -1
  38. package/dist/showcase/index.js +7 -2
  39. package/dist/showcase/index.js.map +1 -1
  40. package/dist/showcase/index.mjs +7 -2
  41. package/dist/showcase/index.mjs.map +1 -1
  42. package/dist/{transport-DsRe4epC.d.ts → transport-CefdERPs.d.mts} +44 -5
  43. package/dist/{transport-CF_eHwzC.d.mts → transport-DFuPyCoJ.d.ts} +44 -5
  44. package/dist/{types-Buj9Lw9t.d.ts → types-UVYt9BJe.d.ts} +41 -1
  45. package/dist/{types-CNUqMK0D.d.mts → types-l2tfg23P.d.mts} +41 -1
  46. package/package.json +4 -1
  47. package/src/OnboardingFlow.tsx +44 -15
  48. package/src/WireOnboarding.tsx +7 -6
  49. package/src/activation/wireActivation.ts +3 -3
  50. package/src/analytics/analyticsFacade.ts +2 -2
  51. package/src/analytics/eventQueue.ts +83 -20
  52. package/src/cards/CardGridSelectCard.tsx +1 -1
  53. package/src/cards/ChipSelectCard.tsx +2 -2
  54. package/src/cards/SelectionCard.tsx +1 -1
  55. package/src/coachmarks/runtime.ts +62 -2
  56. package/src/coachmarks/useCoachmarkTour.ts +62 -14
  57. package/src/context/deviceId.ts +4 -4
  58. package/src/features/WireFeaturesProvider.tsx +4 -1
  59. package/src/identity/userIdentity.ts +1 -1
  60. package/src/questionnaire/QuestionnaireGate.tsx +90 -10
  61. package/src/questionnaire/index.ts +9 -1
  62. package/src/questionnaire/transport.ts +46 -11
  63. package/src/reviews/ReviewGate.tsx +61 -6
  64. package/src/reviews/index.ts +10 -1
  65. package/src/reviews/transport.ts +58 -12
  66. package/src/session-analytics/useLifecycleEvents.ts +1 -1
  67. package/src/theme/ThemeContext.tsx +42 -1
  68. package/src/types.ts +1 -1
  69. package/src/utils/submitResult.ts +39 -0
@@ -54,7 +54,12 @@ var defaultOnboardingTheme = {
54
54
  var mergeTheme = (override) => {
55
55
  return defaultOnboardingTheme;
56
56
  };
57
- var OnboardingThemeContext = createContext(null);
57
+ var THEME_CONTEXT_SLOT = /* @__PURE__ */ Symbol.for("@wireai/activation:themeContext");
58
+ var themeGlobal = globalThis;
59
+ if (!themeGlobal[THEME_CONTEXT_SLOT]) {
60
+ themeGlobal[THEME_CONTEXT_SLOT] = createContext(null);
61
+ }
62
+ var OnboardingThemeContext = themeGlobal[THEME_CONTEXT_SLOT];
58
63
  var useOnboardingTheme = () => {
59
64
  const ctx = useContext(OnboardingThemeContext);
60
65
  return ctx != null ? ctx : mergeTheme();
@@ -786,19 +791,21 @@ var ensureCurrentSessionId = () => {
786
791
  };
787
792
 
788
793
  // src/reviews/transport.ts
789
- var submitReview = (target, review) => {
790
- if (!(target == null ? void 0 : target.serverUrl)) return;
794
+ var submitReview = async (target, review) => {
795
+ if (!(target == null ? void 0 : target.serverUrl)) return "unsent";
791
796
  try {
792
797
  const url = `${target.serverUrl.replace(/\/$/, "")}/v1/reviews`;
793
798
  const headers = { "Content-Type": "application/json" };
794
799
  if (target.apiKey) headers.Authorization = `Bearer ${target.apiKey}`;
795
- void fetch(url, {
800
+ const res = await fetch(url, {
796
801
  method: "POST",
797
802
  headers,
798
803
  body: JSON.stringify(review)
799
- }).catch(() => {
800
804
  });
805
+ if (!res) return "unsent";
806
+ return res.ok ? "accepted" : "rejected";
801
807
  } catch {
808
+ return "unsent";
802
809
  }
803
810
  };
804
811
  var fetchReviewDecision = async (target, options = {}) => {
@@ -887,17 +894,30 @@ var _ReviewGate = ({
887
894
  onResolved == null ? void 0 : onResolved();
888
895
  }, [onResolved]);
889
896
  const postedRef = React7.useRef(false);
897
+ const unackedRef = React7.useRef(null);
890
898
  const postOnce = useCallback(
891
899
  (body) => {
892
900
  if (postedRef.current) return;
893
901
  postedRef.current = true;
894
- submitReview(target, body);
902
+ unackedRef.current = body;
903
+ void submitReview(target, body).then((result) => {
904
+ if (result === "unsent") {
905
+ postedRef.current = false;
906
+ return;
907
+ }
908
+ unackedRef.current = null;
909
+ });
895
910
  },
896
911
  [target]
897
912
  );
898
913
  const abandonRef = React7.useRef(() => {
899
914
  });
900
915
  abandonRef.current = () => {
916
+ const undelivered = unackedRef.current;
917
+ if (undelivered && !postedRef.current) {
918
+ postOnce(undelivered);
919
+ return;
920
+ }
901
921
  if (postedRef.current || stars < 1) return;
902
922
  postOnce(
903
923
  buildReviewSubmission({
@@ -1265,7 +1285,7 @@ var useWireFeatures = (config) => {
1265
1285
  return flags;
1266
1286
  };
1267
1287
  var CONTEXT_SYMBOL = /* @__PURE__ */ Symbol.for("wireai.features.context");
1268
- var globalObj = global;
1288
+ var globalObj = globalThis;
1269
1289
  if (!globalObj[CONTEXT_SYMBOL]) {
1270
1290
  globalObj[CONTEXT_SYMBOL] = createContext(null);
1271
1291
  }