@preprio/toolkit 0.5.0-rc.2 → 0.6.0-alpha.1

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