@wireai/activation 0.13.0 → 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.
- package/AGENTS.md +7 -4
- package/CHANGELOG.md +341 -4
- package/README.md +98 -2
- package/dist/analytics/index.d.mts +4 -4
- package/dist/analytics/index.d.ts +4 -4
- package/dist/analytics/index.js +164 -471
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/index.mjs +162 -469
- package/dist/analytics/index.mjs.map +1 -1
- package/dist/coachmarks/index.d.mts +14 -1
- package/dist/coachmarks/index.d.ts +14 -1
- package/dist/coachmarks/index.js +58 -14
- package/dist/coachmarks/index.js.map +1 -1
- package/dist/coachmarks/index.mjs +58 -14
- package/dist/coachmarks/index.mjs.map +1 -1
- package/dist/{currentSession-_GynvhzT.d.mts → currentSession-BoWtr3Jp.d.mts} +299 -14
- package/dist/{currentSession-D7zabMXK.d.ts → currentSession-CCOMlaQ2.d.ts} +299 -14
- package/dist/{decision-Bl_M2y3r.d.mts → decision-Cjw0jbEj.d.mts} +1 -1
- package/dist/{decision-Cau5KmP6.d.ts → decision-GfpXAsk_.d.ts} +1 -1
- package/dist/index.d.mts +218 -4
- package/dist/index.d.ts +218 -4
- package/dist/index.js +1104 -888
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +887 -692
- package/dist/index.mjs.map +1 -1
- package/dist/questionnaire/index.d.mts +42 -10
- package/dist/questionnaire/index.d.ts +42 -10
- package/dist/questionnaire/index.js +45 -13
- package/dist/questionnaire/index.js.map +1 -1
- package/dist/questionnaire/index.mjs +45 -13
- package/dist/questionnaire/index.mjs.map +1 -1
- package/dist/reviews/index.d.mts +4 -4
- package/dist/reviews/index.d.ts +4 -4
- package/dist/reviews/index.js +39 -8
- package/dist/reviews/index.js.map +1 -1
- package/dist/reviews/index.mjs +39 -8
- package/dist/reviews/index.mjs.map +1 -1
- package/dist/showcase/index.js +7 -2
- package/dist/showcase/index.js.map +1 -1
- package/dist/showcase/index.mjs +7 -2
- package/dist/showcase/index.mjs.map +1 -1
- package/dist/{transport-DsRe4epC.d.ts → transport-CefdERPs.d.mts} +44 -5
- package/dist/{transport-CF_eHwzC.d.mts → transport-DFuPyCoJ.d.ts} +44 -5
- package/dist/{types-Buj9Lw9t.d.ts → types-UVYt9BJe.d.ts} +41 -1
- package/dist/{types-CNUqMK0D.d.mts → types-l2tfg23P.d.mts} +41 -1
- package/package.json +4 -1
- package/src/OnboardingFlow.tsx +175 -15
- package/src/WireOnboarding.tsx +70 -8
- package/src/activation/wireActivation.ts +3 -3
- package/src/analytics/analyticsEvent.ts +16 -1
- package/src/analytics/analyticsFacade.ts +2 -2
- package/src/analytics/eventQueue.ts +85 -20
- package/src/analytics/reportClientEvent.ts +68 -12
- package/src/cards/CardGridSelectCard.tsx +1 -1
- package/src/cards/ChipSelectCard.tsx +2 -2
- package/src/cards/PermissionCard.tsx +438 -0
- package/src/cards/SelectionCard.tsx +1 -1
- package/src/cards/index.ts +7 -0
- package/src/coachmarks/runtime.ts +62 -2
- package/src/coachmarks/useCoachmarkTour.ts +62 -14
- package/src/context/deviceId.ts +4 -4
- package/src/features/WireFeaturesProvider.tsx +4 -1
- package/src/identity/userIdentity.ts +1 -1
- package/src/illustrations/defaultIllustrations.tsx +44 -3
- package/src/index.ts +38 -0
- package/src/permissions/index.ts +64 -0
- package/src/permissions/permissionCopy.ts +87 -0
- package/src/permissions/permissionEvents.ts +76 -0
- package/src/permissions/permissionMemory.ts +88 -0
- package/src/permissions/placement.ts +88 -0
- package/src/permissions/types.ts +131 -0
- package/src/questionnaire/QuestionnaireGate.tsx +90 -10
- package/src/questionnaire/index.ts +9 -1
- package/src/questionnaire/transport.ts +46 -11
- package/src/reviews/ReviewGate.tsx +61 -6
- package/src/reviews/index.ts +10 -1
- package/src/reviews/transport.ts +58 -12
- package/src/session/persistedSession.ts +10 -3
- package/src/session-analytics/useLifecycleEvents.ts +1 -1
- package/src/theme/ThemeContext.tsx +42 -1
- package/src/types.ts +66 -4
- package/src/utils/submitResult.ts +39 -0
package/dist/reviews/index.mjs
CHANGED
|
@@ -54,7 +54,12 @@ var defaultOnboardingTheme = {
|
|
|
54
54
|
var mergeTheme = (override) => {
|
|
55
55
|
return defaultOnboardingTheme;
|
|
56
56
|
};
|
|
57
|
-
var
|
|
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();
|
|
@@ -731,13 +736,24 @@ var requestStoreReview = async (store) => {
|
|
|
731
736
|
|
|
732
737
|
// src/analytics/reportClientEvent.ts
|
|
733
738
|
var makeSessionId = () => `wire_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 10)}`;
|
|
739
|
+
var toWireEvents = (events) => events.map((event) => {
|
|
740
|
+
if (typeof event.ts !== "number") return event;
|
|
741
|
+
const { ts, ...rest } = event;
|
|
742
|
+
if (!Number.isFinite(ts)) return rest;
|
|
743
|
+
try {
|
|
744
|
+
return { ...rest, ts: new Date(ts).toISOString() };
|
|
745
|
+
} catch {
|
|
746
|
+
return rest;
|
|
747
|
+
}
|
|
748
|
+
});
|
|
734
749
|
var buildEventsRequest = (target, events) => {
|
|
735
750
|
if (!(target == null ? void 0 : target.serverUrl) || events.length === 0) return null;
|
|
736
751
|
try {
|
|
737
752
|
const url = `${target.serverUrl.replace(/\/$/, "")}/v1/events`;
|
|
738
753
|
const headers = { "Content-Type": "application/json" };
|
|
739
754
|
if (target.apiKey) headers.Authorization = `Bearer ${target.apiKey}`;
|
|
740
|
-
|
|
755
|
+
const body = JSON.stringify({ events: toWireEvents(events) });
|
|
756
|
+
return { url, init: { method: "POST", headers, body } };
|
|
741
757
|
} catch {
|
|
742
758
|
return null;
|
|
743
759
|
}
|
|
@@ -775,19 +791,21 @@ var ensureCurrentSessionId = () => {
|
|
|
775
791
|
};
|
|
776
792
|
|
|
777
793
|
// src/reviews/transport.ts
|
|
778
|
-
var submitReview = (target, review) => {
|
|
779
|
-
if (!(target == null ? void 0 : target.serverUrl)) return;
|
|
794
|
+
var submitReview = async (target, review) => {
|
|
795
|
+
if (!(target == null ? void 0 : target.serverUrl)) return "unsent";
|
|
780
796
|
try {
|
|
781
797
|
const url = `${target.serverUrl.replace(/\/$/, "")}/v1/reviews`;
|
|
782
798
|
const headers = { "Content-Type": "application/json" };
|
|
783
799
|
if (target.apiKey) headers.Authorization = `Bearer ${target.apiKey}`;
|
|
784
|
-
|
|
800
|
+
const res = await fetch(url, {
|
|
785
801
|
method: "POST",
|
|
786
802
|
headers,
|
|
787
803
|
body: JSON.stringify(review)
|
|
788
|
-
}).catch(() => {
|
|
789
804
|
});
|
|
805
|
+
if (!res) return "unsent";
|
|
806
|
+
return res.ok ? "accepted" : "rejected";
|
|
790
807
|
} catch {
|
|
808
|
+
return "unsent";
|
|
791
809
|
}
|
|
792
810
|
};
|
|
793
811
|
var fetchReviewDecision = async (target, options = {}) => {
|
|
@@ -876,17 +894,30 @@ var _ReviewGate = ({
|
|
|
876
894
|
onResolved == null ? void 0 : onResolved();
|
|
877
895
|
}, [onResolved]);
|
|
878
896
|
const postedRef = React7.useRef(false);
|
|
897
|
+
const unackedRef = React7.useRef(null);
|
|
879
898
|
const postOnce = useCallback(
|
|
880
899
|
(body) => {
|
|
881
900
|
if (postedRef.current) return;
|
|
882
901
|
postedRef.current = true;
|
|
883
|
-
|
|
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
|
+
});
|
|
884
910
|
},
|
|
885
911
|
[target]
|
|
886
912
|
);
|
|
887
913
|
const abandonRef = React7.useRef(() => {
|
|
888
914
|
});
|
|
889
915
|
abandonRef.current = () => {
|
|
916
|
+
const undelivered = unackedRef.current;
|
|
917
|
+
if (undelivered && !postedRef.current) {
|
|
918
|
+
postOnce(undelivered);
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
890
921
|
if (postedRef.current || stars < 1) return;
|
|
891
922
|
postOnce(
|
|
892
923
|
buildReviewSubmission({
|
|
@@ -1254,7 +1285,7 @@ var useWireFeatures = (config) => {
|
|
|
1254
1285
|
return flags;
|
|
1255
1286
|
};
|
|
1256
1287
|
var CONTEXT_SYMBOL = /* @__PURE__ */ Symbol.for("wireai.features.context");
|
|
1257
|
-
var globalObj =
|
|
1288
|
+
var globalObj = globalThis;
|
|
1258
1289
|
if (!globalObj[CONTEXT_SYMBOL]) {
|
|
1259
1290
|
globalObj[CONTEXT_SYMBOL] = createContext(null);
|
|
1260
1291
|
}
|