@hanzo/event 0.3.44 → 0.3.48
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 +37 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +35 -7
- package/dist/index.mjs.map +1 -1
- package/dist/items.d.ts +22 -0
- package/dist/items.d.ts.map +1 -0
- package/dist/react.cjs +64 -12
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +8 -0
- package/dist/react.d.ts +8 -0
- package/dist/react.d.ts.map +1 -1
- package/dist/react.mjs +65 -14
- package/dist/react.mjs.map +1 -1
- package/dist/tags.d.ts +14 -1
- package/dist/tags.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +3 -1
- package/src/items.test.ts +22 -0
- package/src/items.ts +44 -0
- package/src/react.tsx +22 -0
- package/src/tags.test.ts +18 -0
- package/src/tags.ts +38 -5
package/dist/items.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface CommerceItem {
|
|
2
|
+
item_id: string;
|
|
3
|
+
item_name?: string;
|
|
4
|
+
item_category: 'individual' | 'team';
|
|
5
|
+
item_variant: 'monthly' | 'annual';
|
|
6
|
+
price: number;
|
|
7
|
+
quantity: number;
|
|
8
|
+
}
|
|
9
|
+
export interface PlanLine {
|
|
10
|
+
id: string;
|
|
11
|
+
name?: string;
|
|
12
|
+
/** A team plan is sold per seat. */
|
|
13
|
+
team?: boolean;
|
|
14
|
+
/** The term, as commerce (`month`, `year`) or the funnel (`monthly`, `annual`) says it. */
|
|
15
|
+
interval: string;
|
|
16
|
+
price: number | null;
|
|
17
|
+
quantity?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function commerceItem(p: PlanLine): CommerceItem;
|
|
20
|
+
/** What the whole order is worth: the unit price times the seats. */
|
|
21
|
+
export declare const worth: (i: CommerceItem) => number;
|
|
22
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,YAAY,GAAG,MAAM,CAAA;IACpC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAA;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,GAAG,YAAY,CAUtD;AAED,qEAAqE;AACrE,eAAO,MAAM,KAAK,MAAO,YAAY,KAAG,MAA8B,CAAA"}
|
package/dist/react.cjs
CHANGED
|
@@ -22,20 +22,20 @@ var SOCIAL_HOSTS = [
|
|
|
22
22
|
var SEARCH_HOSTS = ["google.", "bing.", "duckduckgo.", "yahoo.", "baidu.", "ecosia."];
|
|
23
23
|
function parseAttribution(search, referrer) {
|
|
24
24
|
const q = new URLSearchParams(search || "");
|
|
25
|
-
const
|
|
25
|
+
const get2 = (k) => {
|
|
26
26
|
const v = q.get(k);
|
|
27
27
|
return v ? v.trim() : void 0;
|
|
28
28
|
};
|
|
29
29
|
const a = {
|
|
30
30
|
utm: {
|
|
31
|
-
source:
|
|
32
|
-
medium:
|
|
33
|
-
campaign:
|
|
34
|
-
term:
|
|
35
|
-
content:
|
|
31
|
+
source: get2("utm_source"),
|
|
32
|
+
medium: get2("utm_medium"),
|
|
33
|
+
campaign: get2("utm_campaign"),
|
|
34
|
+
term: get2("utm_term"),
|
|
35
|
+
content: get2("utm_content")
|
|
36
36
|
},
|
|
37
37
|
referrer: referrer ? referrer.trim() : void 0,
|
|
38
|
-
refCode:
|
|
38
|
+
refCode: get2("ref") || get2("refCode") || get2("ref_code") || void 0
|
|
39
39
|
};
|
|
40
40
|
a.channel = deriveChannel(a);
|
|
41
41
|
return a;
|
|
@@ -397,7 +397,7 @@ function hzAnonAdopt(id) {
|
|
|
397
397
|
}
|
|
398
398
|
|
|
399
399
|
// package.json
|
|
400
|
-
var version = "0.3.
|
|
400
|
+
var version = "0.3.48";
|
|
401
401
|
|
|
402
402
|
// src/version.ts
|
|
403
403
|
var VERSION = version;
|
|
@@ -805,10 +805,10 @@ function linkUrl(url, state, fromHost, base) {
|
|
|
805
805
|
}
|
|
806
806
|
if (u.protocol !== "https:" && u.protocol !== "http:") return url;
|
|
807
807
|
if (!orgOf(u.hostname) || u.hostname === fromHost) return url;
|
|
808
|
-
const
|
|
809
|
-
if (isId(state.anonId))
|
|
810
|
-
if (isId(state.sessionId))
|
|
811
|
-
if (state.firstTouch)
|
|
808
|
+
const set2 = (k, v) => v && u.searchParams.set(k, v);
|
|
809
|
+
if (isId(state.anonId)) set2(LINK_PARAMS.anon, state.anonId);
|
|
810
|
+
if (isId(state.sessionId)) set2(LINK_PARAMS.session, state.sessionId);
|
|
811
|
+
if (state.firstTouch) set2(LINK_PARAMS.firstTouch, encodeFirstTouch(state.firstTouch));
|
|
812
812
|
return u.toString();
|
|
813
813
|
}
|
|
814
814
|
function readLink(search) {
|
|
@@ -1270,6 +1270,45 @@ function createAnalytics(config) {
|
|
|
1270
1270
|
return fresh;
|
|
1271
1271
|
}
|
|
1272
1272
|
|
|
1273
|
+
// src/cookie.ts
|
|
1274
|
+
function get(name) {
|
|
1275
|
+
if (typeof document === "undefined") return void 0;
|
|
1276
|
+
const hit = document.cookie.split("; ").find((c) => c.startsWith(`${name}=`));
|
|
1277
|
+
return hit ? decodeURIComponent(hit.slice(name.length + 1)) : void 0;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
// src/consent.ts
|
|
1281
|
+
var CONSENT_COOKIE = "hz_consent";
|
|
1282
|
+
var CONSENT_EVENT = "hzconsent";
|
|
1283
|
+
var US = /^(America\/(New_York|Chicago|Denver|Los_Angeles|Phoenix|Anchorage|Adak|Boise|Detroit|Juneau|Sitka|Nome|Yakutat|Menominee|Metlakatla|Indiana\/.*|Kentucky\/.*|North_Dakota\/.*)|Pacific\/Honolulu|US\/.*)$/;
|
|
1284
|
+
function gpc() {
|
|
1285
|
+
if (typeof navigator === "undefined") return false;
|
|
1286
|
+
return navigator.globalPrivacyControl === true;
|
|
1287
|
+
}
|
|
1288
|
+
function refused() {
|
|
1289
|
+
if (typeof window === "undefined") return false;
|
|
1290
|
+
const n = navigator;
|
|
1291
|
+
const dnt = n.doNotTrack ?? window.doNotTrack ?? n.msDoNotTrack;
|
|
1292
|
+
return gpc() || dnt === "1" || dnt === "yes";
|
|
1293
|
+
}
|
|
1294
|
+
function region() {
|
|
1295
|
+
try {
|
|
1296
|
+
const zone = Intl.DateTimeFormat().resolvedOptions().timeZone ?? "";
|
|
1297
|
+
return US.test(zone) ? "opt-out" : "opt-in";
|
|
1298
|
+
} catch {
|
|
1299
|
+
return "opt-in";
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
function read2() {
|
|
1303
|
+
const kept = get(CONSENT_COOKIE);
|
|
1304
|
+
const on = kept !== void 0 ? kept.split(",") : region() === "opt-in" || refused() ? [] : ["analytics", "marketing", "ads"];
|
|
1305
|
+
const has = (k) => on.includes(k);
|
|
1306
|
+
return { analytics: has("analytics"), marketing: has("marketing") && !gpc(), ads: has("ads") && !gpc() };
|
|
1307
|
+
}
|
|
1308
|
+
function render(c) {
|
|
1309
|
+
return ["analytics", "marketing", "ads"].filter((k) => c[k]).join(",");
|
|
1310
|
+
}
|
|
1311
|
+
|
|
1273
1312
|
// src/react.tsx
|
|
1274
1313
|
var Ctx = react.createContext(null);
|
|
1275
1314
|
function AnalyticsProvider(props) {
|
|
@@ -1324,6 +1363,18 @@ var ErrorBoundary = class extends react.Component {
|
|
|
1324
1363
|
}
|
|
1325
1364
|
};
|
|
1326
1365
|
ErrorBoundary.contextType = Ctx;
|
|
1366
|
+
var listen = (on) => {
|
|
1367
|
+
window.addEventListener(CONSENT_EVENT, on);
|
|
1368
|
+
return () => window.removeEventListener(CONSENT_EVENT, on);
|
|
1369
|
+
};
|
|
1370
|
+
function useConsent() {
|
|
1371
|
+
const kept = react.useSyncExternalStore(listen, () => render(read2()), () => "");
|
|
1372
|
+
return {
|
|
1373
|
+
analytics: kept.includes("analytics"),
|
|
1374
|
+
marketing: kept.includes("marketing"),
|
|
1375
|
+
ads: kept.includes("ads")
|
|
1376
|
+
};
|
|
1377
|
+
}
|
|
1327
1378
|
/*! anon.js — THE anonymous-identity chain. ONE implementation, two distributions.
|
|
1328
1379
|
*
|
|
1329
1380
|
* One browser is ONE person on every Hanzo surface, whichever client a page
|
|
@@ -1349,6 +1400,7 @@ ErrorBoundary.contextType = Ctx;
|
|
|
1349
1400
|
exports.AnalyticsProvider = AnalyticsProvider;
|
|
1350
1401
|
exports.ErrorBoundary = ErrorBoundary;
|
|
1351
1402
|
exports.useAnalytics = useAnalytics;
|
|
1403
|
+
exports.useConsent = useConsent;
|
|
1352
1404
|
exports.usePageview = usePageview;
|
|
1353
1405
|
//# sourceMappingURL=react.cjs.map
|
|
1354
1406
|
//# sourceMappingURL=react.cjs.map
|