@preprio/toolkit 0.5.0-rc.2 → 0.6.0-alpha.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/README.md +308 -27
- package/dist/astro/chunk-3UVUDDNY.js +173 -0
- package/dist/astro/graphql.cjs +983 -0
- package/dist/astro/graphql.d.cts +231 -0
- package/dist/astro/graphql.d.ts +231 -0
- package/dist/astro/graphql.js +893 -0
- package/dist/astro/index-XT_z-RYT.d.cts +130 -0
- package/dist/astro/index-XT_z-RYT.d.ts +130 -0
- package/dist/astro/index.cjs +14 -1
- package/dist/astro/index.d.cts +1 -120
- package/dist/astro/index.d.ts +1 -120
- package/dist/astro/index.js +15 -153
- package/dist/{chunk-FLPNN3CV.js → chunk-BJ2LBLWO.js} +71 -276
- package/dist/chunk-DGZA7KX7.js +172 -0
- package/dist/chunk-YR7P4IWE.js +187 -0
- package/dist/graphql.cjs +894 -0
- package/dist/graphql.d.cts +231 -0
- package/dist/graphql.d.ts +231 -0
- package/dist/graphql.js +787 -0
- package/dist/index.cjs +76 -119
- package/dist/index.d.cts +12 -64
- package/dist/index.d.ts +12 -64
- package/dist/index.js +23 -167
- package/dist/nextjs/chunk-U4HXENF7.js +231 -0
- package/dist/nextjs/components.cjs +190 -122
- package/dist/nextjs/components.d.cts +33 -2
- package/dist/nextjs/components.d.ts +33 -2
- package/dist/nextjs/components.js +132 -4
- package/dist/nextjs/graphql.cjs +1315 -0
- package/dist/nextjs/graphql.d.cts +361 -0
- package/dist/nextjs/graphql.d.ts +361 -0
- package/dist/nextjs/graphql.js +1218 -0
- package/dist/nextjs/index.cjs +126 -6
- package/dist/nextjs/index.d.cts +53 -147
- package/dist/nextjs/index.d.ts +53 -147
- package/dist/nextjs/index.js +113 -203
- package/dist/nextjs/server-CjpELYvq.d.cts +156 -0
- package/dist/nextjs/server-CjpELYvq.d.ts +156 -0
- package/dist/nuxt/chunk-P6ENNAEE.js +417 -0
- package/dist/nuxt/graphql.cjs +990 -0
- package/dist/nuxt/graphql.d.cts +228 -0
- package/dist/nuxt/graphql.d.ts +228 -0
- package/dist/nuxt/graphql.js +894 -0
- package/dist/nuxt/index.cjs +14 -1
- package/dist/nuxt/index.d.cts +3 -148
- package/dist/nuxt/index.d.ts +3 -148
- package/dist/nuxt/index.js +15 -391
- package/dist/nuxt/server-8v6OHbsw.d.cts +158 -0
- package/dist/nuxt/server-8v6OHbsw.d.ts +158 -0
- package/dist/pixel-DwW7cXJm.d.cts +49 -0
- package/dist/pixel-DwW7cXJm.d.ts +49 -0
- package/dist/react/components.cjs +88 -120
- package/dist/react/components.d.cts +2 -8
- package/dist/react/components.d.ts +2 -8
- package/dist/react/components.js +88 -120
- package/dist/server-Brr1UgtW.d.ts +59 -0
- package/dist/server-DJuS3YU0.d.cts +59 -0
- package/dist/sveltekit/chunk-FSARVMG5.js +413 -0
- package/dist/sveltekit/graphql.cjs +996 -0
- package/dist/sveltekit/graphql.d.cts +233 -0
- package/dist/sveltekit/graphql.d.ts +233 -0
- package/dist/sveltekit/graphql.js +900 -0
- package/dist/sveltekit/index.cjs +14 -1
- package/dist/sveltekit/index.d.cts +3 -88
- package/dist/sveltekit/index.d.ts +3 -88
- package/dist/sveltekit/index.js +15 -387
- package/dist/sveltekit/server-CO847mEV.d.cts +98 -0
- package/dist/sveltekit/server-CO847mEV.d.ts +98 -0
- package/dist/{pixel-B3oQNbZ3.d.cts → types-BYH9XqmN.d.cts} +4 -58
- package/dist/{pixel-B3oQNbZ3.d.ts → types-BYH9XqmN.d.ts} +4 -58
- package/package.json +31 -1
|
@@ -2,11 +2,100 @@
|
|
|
2
2
|
import {
|
|
3
3
|
createPreprPreview,
|
|
4
4
|
loadTrackingPixel
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-BJ2LBLWO.js";
|
|
6
|
+
import "../chunk-DGZA7KX7.js";
|
|
6
7
|
|
|
7
8
|
// src/nextjs/components.ts
|
|
8
9
|
import { usePathname, useRouter } from "next/navigation";
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
createElement,
|
|
12
|
+
useEffect as useEffect2,
|
|
13
|
+
useLayoutEffect,
|
|
14
|
+
useRef
|
|
15
|
+
} from "react";
|
|
16
|
+
|
|
17
|
+
// src/react/hydration.ts
|
|
18
|
+
var PROPS_KEY_PREFIX = "__reactProps$";
|
|
19
|
+
function reactProps(element) {
|
|
20
|
+
for (const key of Object.keys(element)) {
|
|
21
|
+
if (key.startsWith(PROPS_KEY_PREFIX)) {
|
|
22
|
+
return element[key];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return void 0;
|
|
26
|
+
}
|
|
27
|
+
function isReactHydrated(text) {
|
|
28
|
+
for (let el = text.parentElement; el; el = el.parentElement) {
|
|
29
|
+
const props = reactProps(el);
|
|
30
|
+
if (!props) continue;
|
|
31
|
+
return el === text.parentElement || props.dangerouslySetInnerHTML != null;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/nextjs/ab-switch.ts
|
|
37
|
+
function applyPreprAbBucket() {
|
|
38
|
+
const match = document.cookie.match(/(?:^|; )prepr_ab_bucket=([AB])(?:;|$)/);
|
|
39
|
+
const bucket = match ? match[1] : "A";
|
|
40
|
+
const state = window;
|
|
41
|
+
if (state.__preprAbBucket === bucket) return;
|
|
42
|
+
state.__preprAbBucket = bucket;
|
|
43
|
+
const css = bucket === "A" ? "" : '[data-prepr-ab="A"]{display:none!important}[data-prepr-ab="' + bucket + '"]{display:contents!important}';
|
|
44
|
+
try {
|
|
45
|
+
if (!state.__preprAbSheet) {
|
|
46
|
+
const sheet = new CSSStyleSheet();
|
|
47
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.concat(sheet);
|
|
48
|
+
state.__preprAbSheet = sheet;
|
|
49
|
+
}
|
|
50
|
+
state.__preprAbSheet.replaceSync(css);
|
|
51
|
+
} catch {
|
|
52
|
+
if (!state.__preprAbSheet) {
|
|
53
|
+
state.__preprAbSheet = document.createElement("style");
|
|
54
|
+
document.head.appendChild(state.__preprAbSheet);
|
|
55
|
+
}
|
|
56
|
+
state.__preprAbSheet.textContent = css;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function applyPreprDecisions() {
|
|
60
|
+
const match = document.cookie.match(/(?:^|; )prepr_decisions=([^;]*)/);
|
|
61
|
+
let raw;
|
|
62
|
+
try {
|
|
63
|
+
raw = match ? decodeURIComponent(match[1]) : "";
|
|
64
|
+
} catch {
|
|
65
|
+
raw = "";
|
|
66
|
+
}
|
|
67
|
+
const state = window;
|
|
68
|
+
if (state.__preprDecisions === raw) return;
|
|
69
|
+
state.__preprDecisions = raw;
|
|
70
|
+
const id = /^[\w-]+$/;
|
|
71
|
+
let css = "";
|
|
72
|
+
raw.split("~").forEach((pair) => {
|
|
73
|
+
const at = pair.indexOf(":");
|
|
74
|
+
const group = pair.slice(0, at);
|
|
75
|
+
if (at < 1 || !id.test(group)) return;
|
|
76
|
+
const selector = '[data-prepr-group="' + group + '"]';
|
|
77
|
+
css += selector + "{display:none!important}";
|
|
78
|
+
pair.slice(at + 1).split("|").forEach((variant) => {
|
|
79
|
+
if (id.test(variant)) {
|
|
80
|
+
css += selector + '[data-prepr-variant="' + variant + '"]{display:contents!important}';
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
try {
|
|
85
|
+
if (!state.__preprDecisionSheet) {
|
|
86
|
+
const sheet = new CSSStyleSheet();
|
|
87
|
+
document.adoptedStyleSheets = document.adoptedStyleSheets.concat(sheet);
|
|
88
|
+
state.__preprDecisionSheet = sheet;
|
|
89
|
+
}
|
|
90
|
+
state.__preprDecisionSheet.replaceSync(css);
|
|
91
|
+
} catch {
|
|
92
|
+
if (!state.__preprDecisionSheet) {
|
|
93
|
+
state.__preprDecisionSheet = document.createElement("style");
|
|
94
|
+
document.head.appendChild(state.__preprDecisionSheet);
|
|
95
|
+
}
|
|
96
|
+
state.__preprDecisionSheet.textContent = css;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
10
99
|
|
|
11
100
|
// src/react/components.ts
|
|
12
101
|
import { useEffect } from "react";
|
|
@@ -36,13 +125,52 @@ function PreprToolbar({
|
|
|
36
125
|
navigation: {
|
|
37
126
|
navigate: (url) => router.push(url),
|
|
38
127
|
currentPath: () => pathnameRef.current + window.location.search
|
|
39
|
-
}
|
|
128
|
+
},
|
|
129
|
+
isHydrated: isReactHydrated
|
|
40
130
|
});
|
|
41
131
|
return () => toolbar.destroy();
|
|
42
132
|
}, []);
|
|
43
133
|
return null;
|
|
44
134
|
}
|
|
135
|
+
function PreprAbSwitch() {
|
|
136
|
+
useLayoutEffect(() => {
|
|
137
|
+
applyPreprAbBucket();
|
|
138
|
+
applyPreprDecisions();
|
|
139
|
+
});
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
var VARIANT_KEY_ATTRIBUTE = "data-prepr-variant-key";
|
|
143
|
+
function PreprVariantTracking({
|
|
144
|
+
variantKeys,
|
|
145
|
+
ab,
|
|
146
|
+
children
|
|
147
|
+
}) {
|
|
148
|
+
const ref = useRef(null);
|
|
149
|
+
const keys = variantKeys.join(" ");
|
|
150
|
+
useLayoutEffect(() => {
|
|
151
|
+
const elements = [...ref.current?.children ?? []];
|
|
152
|
+
const list = keys.split(" ");
|
|
153
|
+
const pairs = elements.length === list.length ? elements.map((element, i) => [element, list[i]]) : elements.slice(0, 1).map((element) => [element, list[0]]);
|
|
154
|
+
const tagged = pairs.filter(([element, key]) => {
|
|
155
|
+
if (element.hasAttribute(VARIANT_KEY_ATTRIBUTE)) return false;
|
|
156
|
+
element.setAttribute(VARIANT_KEY_ATTRIBUTE, key);
|
|
157
|
+
return true;
|
|
158
|
+
});
|
|
159
|
+
return () => {
|
|
160
|
+
for (const [element] of tagged) {
|
|
161
|
+
element.removeAttribute(VARIANT_KEY_ATTRIBUTE);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}, [keys]);
|
|
165
|
+
return createElement(
|
|
166
|
+
"div",
|
|
167
|
+
ab === void 0 ? { ref, style: { display: "contents" } } : { ref, "data-prepr-ab": ab },
|
|
168
|
+
children
|
|
169
|
+
);
|
|
170
|
+
}
|
|
45
171
|
export {
|
|
172
|
+
PreprAbSwitch,
|
|
46
173
|
PreprToolbar,
|
|
47
|
-
PreprTrackingPixel
|
|
174
|
+
PreprTrackingPixel,
|
|
175
|
+
PreprVariantTracking
|
|
48
176
|
};
|