@preprio/toolkit 0.5.0-rc.1 → 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.
Files changed (69) hide show
  1. package/README.md +300 -19
  2. package/dist/astro/chunk-3UVUDDNY.js +173 -0
  3. package/dist/astro/graphql.cjs +983 -0
  4. package/dist/astro/graphql.d.cts +231 -0
  5. package/dist/astro/graphql.d.ts +231 -0
  6. package/dist/astro/graphql.js +893 -0
  7. package/dist/astro/index-XT_z-RYT.d.cts +130 -0
  8. package/dist/astro/index-XT_z-RYT.d.ts +130 -0
  9. package/dist/astro/index.cjs +14 -1
  10. package/dist/astro/index.d.cts +1 -120
  11. package/dist/astro/index.d.ts +1 -120
  12. package/dist/astro/index.js +15 -153
  13. package/dist/{chunk-4JNKYIEV.js → chunk-BJ2LBLWO.js} +69 -268
  14. package/dist/chunk-DGZA7KX7.js +172 -0
  15. package/dist/chunk-YR7P4IWE.js +187 -0
  16. package/dist/graphql.cjs +894 -0
  17. package/dist/graphql.d.cts +231 -0
  18. package/dist/graphql.d.ts +231 -0
  19. package/dist/graphql.js +787 -0
  20. package/dist/index.cjs +74 -111
  21. package/dist/index.d.cts +11 -62
  22. package/dist/index.d.ts +11 -62
  23. package/dist/index.js +23 -167
  24. package/dist/nextjs/chunk-U4HXENF7.js +231 -0
  25. package/dist/nextjs/components.cjs +188 -114
  26. package/dist/nextjs/components.d.cts +33 -2
  27. package/dist/nextjs/components.d.ts +33 -2
  28. package/dist/nextjs/components.js +132 -4
  29. package/dist/nextjs/graphql.cjs +1315 -0
  30. package/dist/nextjs/graphql.d.cts +361 -0
  31. package/dist/nextjs/graphql.d.ts +361 -0
  32. package/dist/nextjs/graphql.js +1218 -0
  33. package/dist/nextjs/index.cjs +126 -6
  34. package/dist/nextjs/index.d.cts +53 -141
  35. package/dist/nextjs/index.d.ts +53 -141
  36. package/dist/nextjs/index.js +113 -203
  37. package/dist/nextjs/server-CjpELYvq.d.cts +156 -0
  38. package/dist/nextjs/server-CjpELYvq.d.ts +156 -0
  39. package/dist/nuxt/chunk-P6ENNAEE.js +417 -0
  40. package/dist/nuxt/graphql.cjs +990 -0
  41. package/dist/nuxt/graphql.d.cts +228 -0
  42. package/dist/nuxt/graphql.d.ts +228 -0
  43. package/dist/nuxt/graphql.js +894 -0
  44. package/dist/nuxt/index.cjs +14 -1
  45. package/dist/nuxt/index.d.cts +3 -148
  46. package/dist/nuxt/index.d.ts +3 -148
  47. package/dist/nuxt/index.js +15 -391
  48. package/dist/nuxt/server-8v6OHbsw.d.cts +158 -0
  49. package/dist/nuxt/server-8v6OHbsw.d.ts +158 -0
  50. package/dist/pixel-DwW7cXJm.d.cts +49 -0
  51. package/dist/pixel-DwW7cXJm.d.ts +49 -0
  52. package/dist/react/components.cjs +86 -112
  53. package/dist/react/components.js +86 -112
  54. package/dist/server-Brr1UgtW.d.ts +59 -0
  55. package/dist/server-DJuS3YU0.d.cts +59 -0
  56. package/dist/sveltekit/chunk-FSARVMG5.js +413 -0
  57. package/dist/sveltekit/graphql.cjs +996 -0
  58. package/dist/sveltekit/graphql.d.cts +233 -0
  59. package/dist/sveltekit/graphql.d.ts +233 -0
  60. package/dist/sveltekit/graphql.js +900 -0
  61. package/dist/sveltekit/index.cjs +14 -1
  62. package/dist/sveltekit/index.d.cts +3 -88
  63. package/dist/sveltekit/index.d.ts +3 -88
  64. package/dist/sveltekit/index.js +15 -387
  65. package/dist/sveltekit/server-CO847mEV.d.cts +98 -0
  66. package/dist/sveltekit/server-CO847mEV.d.ts +98 -0
  67. package/dist/{pixel-e1fUWl2Y.d.cts → types-BYH9XqmN.d.cts} +2 -50
  68. package/dist/{pixel-e1fUWl2Y.d.ts → types-BYH9XqmN.d.ts} +2 -50
  69. package/package.json +31 -1
@@ -2,11 +2,100 @@
2
2
  import {
3
3
  createPreprPreview,
4
4
  loadTrackingPixel
5
- } from "../chunk-4JNKYIEV.js";
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 { useEffect as useEffect2, useRef } from "react";
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
  };