@uniformdev/context-devtools 16.2.1-nuxt.325 → 17.0.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/dist/esm/index.js CHANGED
@@ -1,10 +1,10 @@
1
- import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}from"@emotion/react";import{createContext as nt,useContext as it}from"react";var me=nt({settings:{},saveSettings:()=>{}}),z=()=>it(me),ue=({children:t,settings:r,saveSettings:n})=>e(me.Provider,{value:{settings:r,saveSettings:n}},t);var st=({route:t,children:r,className:n})=>{let{settings:o,saveSettings:i}=z();return e("a",{href:"",className:n,onClick:s=>{s.preventDefault(),i({...o,route:t})}},r)},H=st;import{css as at}from"@emotion/react";var ge=()=>{var n;let t=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"&&((n=chrome==null?void 0:chrome.runtime)==null?void 0:n.getManifest()),r=t?t==null?void 0:t.version:"DEV";return e("div",{css:at`
1
+ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}from"@emotion/react";import{createContext as it,useContext as st}from"react";var ue=it({settings:{},saveSettings:()=>{}}),z=()=>st(ue),ge=({children:t,settings:r,saveSettings:n})=>e(ue.Provider,{value:{settings:r,saveSettings:n}},t);var at=({route:t,children:r,className:n})=>{let{settings:o,saveSettings:i}=z();return e("a",{href:"",className:n,onClick:a=>{a.preventDefault(),i({...o,route:t})}},r)},M=at;import{css as ct}from"@emotion/react";var ve=()=>{var n;let t=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"&&((n=chrome==null?void 0:chrome.runtime)==null?void 0:n.getManifest()),r=t?t==null?void 0:t.version:"DEV";return e("div",{css:ct`
2
2
  font-size: var(--fs-sm);
3
3
  color: var(--gray-400);
4
4
  position: absolute;
5
5
  bottom: 2px;
6
6
  right: 5px;
7
- `},`v${r}`)};var ct=[{title:"Dimensions",href:"/dimensions",icon:`<svg
7
+ `},`v${r}`)};var lt=[{title:"Dimensions",href:"/dimensions",icon:`<svg
8
8
  width="24"
9
9
  height="24"
10
10
  viewBox="0 0 24 24"
@@ -42,11 +42,11 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
42
42
  </svg>`},{title:"Settings",href:"/settings",icon:`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
43
43
  <path d="M19.1469 12.716C19.1986 12.2636 19.201 11.8069 19.1539 11.354L21.7429 9.474C21.8681 9.3822 21.9548 9.24723 21.9862 9.0952C22.0176 8.94316 21.9915 8.78489 21.9129 8.651L19.9939 5.399C19.9182 5.26986 19.7985 5.17231 19.6568 5.1242C19.515 5.07608 19.3606 5.08063 19.2219 5.137L16.3599 6.292C15.9237 5.9578 15.4502 5.67525 14.9489 5.45L14.5739 2.545C14.5547 2.39441 14.4813 2.25598 14.3673 2.15566C14.2534 2.05534 14.1068 1.99999 13.9549 2H10.0859C9.93402 1.99997 9.78728 2.05527 9.67317 2.15558C9.55906 2.25588 9.48539 2.39432 9.46595 2.545L9.09395 5.433C8.63957 5.63249 8.20723 5.87882 7.80395 6.168L5.00895 4.954C4.87173 4.89484 4.71787 4.88672 4.57519 4.9311C4.4325 4.97549 4.3104 5.06945 4.23095 5.196L2.22195 8.398C2.1396 8.52998 2.10934 8.68789 2.13707 8.84096C2.1648 8.99403 2.24854 9.1313 2.37195 9.226L4.86795 11.142C4.83172 11.4266 4.81302 11.7131 4.81195 12C4.81195 12.18 4.82095 12.362 4.83795 12.558L2.26495 14.375C2.13766 14.4647 2.04844 14.5987 2.01478 14.7508C1.98112 14.9028 2.00543 15.0619 2.08295 15.197L3.95695 18.474C4.11095 18.742 4.43695 18.857 4.72595 18.746L7.56095 17.644C8.00795 17.997 8.49195 18.294 9.00795 18.53L9.33795 21.396C9.37495 21.709 9.63795 21.946 9.95195 21.95L13.8169 22H13.8249C14.1349 22 14.3989 21.771 14.4439 21.463L14.8549 18.59C15.3703 18.3674 15.8579 18.0855 16.3079 17.75L19.1279 18.93C19.4129 19.05 19.7419 18.944 19.9029 18.679L21.8669 15.452C21.9477 15.319 21.976 15.1608 21.9464 15.0081C21.9168 14.8554 21.8315 14.7192 21.7069 14.626L19.1469 12.716ZM11.9999 15C10.3459 15 8.99995 13.655 8.99995 12C8.99995 10.346 10.3449 9 11.9999 9C13.6539 9 14.9999 10.345 14.9999 12C14.9999 13.654 13.6539 15 11.9999 15Z" fill="white"/>
44
44
  </svg>
45
- `}],lt=`<svg width="24" height="24" fill="white" viewBox="0 0 122.88 116.67" xmlns="http://www.w3.org/2000/svg">
45
+ `}],dt=`<svg width="24" height="24" fill="white" viewBox="0 0 122.88 116.67" xmlns="http://www.w3.org/2000/svg">
46
46
  <g>
47
47
  <path d="M84.55,116.66c2.49,0,4.53-1.99,4.53-4.41V88.08c1.55-13.03,7.27-9.16,14-5.13 c16.27,9.74,27.08-15.88,13.93-23.78c-10.32-6.2-14.79,4.46-22.35,3.36c-2.92-0.43-4.95-3.5-5.59-8.17V36.9 c0-2.43-2.04-4.41-4.53-4.41H63.73c-17.18-2.12-1.93-11.37-1.93-19.98C61.81,5.6,55.38,0,47.45,0c-7.92,0-15.19,5.6-15.19,12.51 c0,8.12,15.78,17.86-1.64,19.98H4.53C2.04,32.49,0,34.47,0,36.9v17.42c1.33,7.43,6.49,9.15,13.1,4.25 c2.23-1.66,5.99-3.59,8.71-3.59c7.09,0,12.85,6.25,12.85,13.96S28.91,84.6,21.81,84.6c-2.53,0-4.89-0.8-6.89-2.19 c0,0.59-12.4-10.85-14.92,3.15v26.71c0,2.43,2.04,4.41,4.53,4.41c13.97,0,27.92,0,41.88-0.01c0.55-2.55-1.24-5.47-2.92-8 c-13.22-19.93,38.21-21.92,24.99,0.62c-0.65,1.11-1.3,2.19-1.8,3.24c-0.63,1.31-1.05,2.91-0.96,4.14L84.55,116.66L84.55,116.66z"></path>
48
48
  </g>
49
- </svg>`,ve=({...t})=>{var o,i;let r=s=>{var p;let d="active";return!((p=t.settings)!=null&&p.route)&&s==="/dimensions"||t.settings.route===s?d:""},n=Boolean(typeof window!="undefined"&&((i=(o=window.chrome)==null?void 0:o.runtime)==null?void 0:i.id));return e("nav",{css:D`
49
+ </svg>`,fe=({...t})=>{var o,i;let r=a=>{var p;let d="active";return!((p=t.settings)!=null&&p.route)&&a==="/dimensions"||t.settings.route===a?d:""},n=Boolean(typeof window!="undefined"&&((i=(o=window.chrome)==null?void 0:o.runtime)==null?void 0:i.id));return e("nav",{css:D`
50
50
  background: var(--brand-secondary-1);
51
51
  padding: var(--spacing-base) var(--spacing-base) var(--spacing-md);
52
52
  min-width: 200px;
@@ -64,7 +64,7 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
64
64
  margin: 0;
65
65
  list-style-type: none;
66
66
  flex-grow: 1;
67
- `},ct.map((s,d)=>{var m,u,a,c;let p=0;return s.href==="/overrides"&&Object.keys((m=t.settings.scoreOverrides)!=null?m:{}).length>0&&(p=Object.keys((u=t.settings.scoreOverrides)!=null?u:{}).length),s.href==="/quirks"&&Object.keys((a=t.settings.quirkOverrides)!=null?a:{}).length>0&&(p=Object.keys((c=t.settings.quirkOverrides)!=null?c:{}).length),e("li",{css:D`
67
+ `},lt.map((a,d)=>{var m,u,s,c;let p=0;return a.href==="/overrides"&&Object.keys((m=t.settings.scoreOverrides)!=null?m:{}).length>0&&(p=Object.keys((u=t.settings.scoreOverrides)!=null?u:{}).length),a.href==="/quirks"&&Object.keys((s=t.settings.quirkOverrides)!=null?s:{}).length>0&&(p=Object.keys((c=t.settings.quirkOverrides)!=null?c:{}).length),e("li",{css:D`
68
68
  padding: 0;
69
69
  margin: 0;
70
70
  list-style-type: none;
@@ -72,7 +72,7 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
72
72
  &:last-of-type {
73
73
  margin-top: auto;
74
74
  }
75
- `,key:d},e(H,{css:D`
75
+ `,key:d},e(M,{css:D`
76
76
  align-items: center;
77
77
  border-radius: var(--rounded-base);
78
78
  display: flex;
@@ -86,10 +86,10 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
86
86
  &.active {
87
87
  background: var(--gray-700);
88
88
  }
89
- `,className:r(s.href),route:s.href},e("i",{css:D`
89
+ `,className:r(a.href),route:a.href},e("i",{css:D`
90
90
  align-items: center;
91
91
  display: flex;
92
- `,dangerouslySetInnerHTML:{__html:s.icon}}),s.title,p?e("span",{css:D`
92
+ `,dangerouslySetInnerHTML:{__html:a.icon}}),a.title,p?e("span",{css:D`
93
93
  font-size: var(--fs-xxs);
94
94
  display: inline-block;
95
95
  width: 12px;
@@ -116,11 +116,11 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
116
116
  `,rel:"noreferrer"},e("i",{css:D`
117
117
  align-items: center;
118
118
  display: flex;
119
- `,dangerouslySetInnerHTML:{__html:lt}}),"Install Chrome Extension"),e(ge,null))};var fe=()=>e("article",null,e("h1",null,"Something when wrong"),e("p",null,"We could not find the page you're looking for."));import*as te from"react";import{css as M}from"@emotion/react";import*as U from"react";var he=M({willChange:"height"}),dt=M`
119
+ `,dangerouslySetInnerHTML:{__html:dt}}),"Install Chrome Extension"),e(ve,null))};var he=()=>e("article",null,e("h1",null,"Something when wrong"),e("p",null,"We could not find the page you're looking for."));import*as te from"react";import{css as E}from"@emotion/react";import*as U from"react";var be=E({willChange:"height"}),pt=E`
120
120
  border-bottom: 2px solid var(--brand-secondary-1);
121
121
  font-size: var(--fs-base);
122
122
  margin: 0;
123
- `,pt=M`
123
+ `,mt=E`
124
124
  align-items: center;
125
125
  border: none;
126
126
  background: none;
@@ -130,13 +130,13 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
130
130
  padding: var(--spacing-sm) 0;
131
131
  font-weight: var(--fw-bold);
132
132
  justify-content: space-between;
133
- `,mt=M`
133
+ `,ut=E`
134
134
  align-self: center;
135
- `,ut=M`
135
+ `,gt=E`
136
136
  transform: rotate(-180deg);
137
- `,_=({children:t})=>e("div",{css:[he]},t),G=({title:t,children:r})=>{let[n,o]=U.useState(!1),i=t.split(" ").join("-").toLocaleLowerCase();return e(U.Fragment,null,e("h3",{css:dt},e("button",{"aria-expanded":n,css:pt,title:t,id:i,"aria-controls":`${i}-section`,onClick:()=>o(s=>!s),type:"button"},t,e("i",{css:[mt,n?ut:void 0]},e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M6.34317 7.75732L4.92896 9.17154L12 16.2426L19.0711 9.17157L17.6569 7.75735L12 13.4142L6.34317 7.75732Z",fill:"currentColor"}))))),e("div",{id:`${i}-section`,css:[he,M`
137
+ `,_=({children:t})=>e("div",{css:[be]},t),G=({title:t,children:r})=>{let[n,o]=U.useState(!1),i=t.split(" ").join("-").toLocaleLowerCase();return e(U.Fragment,null,e("h3",{css:pt},e("button",{"aria-expanded":n,css:mt,title:t,id:i,"aria-controls":`${i}-section`,onClick:()=>o(a=>!a),type:"button"},t,e("i",{css:[ut,n?gt:void 0]},e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M6.34317 7.75732L4.92896 9.17154L12 16.2426L19.0711 9.17157L17.6569 7.75735L12 13.4142L6.34317 7.75732Z",fill:"currentColor"}))))),e("div",{id:`${i}-section`,css:[be,E`
138
138
  padding: var(--spacing-sm) 0;
139
- `],role:"region","aria-labelledby":i},n?r:null))};import{css as E}from"@emotion/react";var $=E`
139
+ `],role:"region","aria-labelledby":i},n?r:null))};import{css as A}from"@emotion/react";var $=A`
140
140
  background-color: var(--gray-100);
141
141
  padding: var(--spacing-base) var(--spacing-md);
142
142
  margin: var(--spacing-base) 0;
@@ -144,21 +144,21 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
144
144
  &:first-of-type {
145
145
  margin: 0 0 var(--spacing-base);
146
146
  }
147
- `,be=E`
147
+ `,ye=A`
148
148
  background: var(--gray-100)
149
149
  url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9 2C8.44771 2 8 2.44772 8 3V5C8 5.55228 8.44771 6 9 6C9.55229 6 10 5.55228 10 5V3C10 2.44772 9.55229 2 9 2ZM8 9H16V11C16 13.2091 14.2091 15 12 15C9.79086 15 8 13.2091 8 11V9ZM13 16.917C15.8377 16.441 18 13.973 18 11V7H6V11C6 13.973 8.16229 16.441 11 16.917V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V16.917ZM14 3C14 2.44772 14.4477 2 15 2C15.5523 2 16 2.44772 16 3V5C16 5.55228 15.5523 6 15 6C14.4477 6 14 5.55228 14 5V3Z' fill='%232ecdb4' /%3E%3C/svg%3E")
150
150
  no-repeat var(--spacing-sm) var(--spacing-base);
151
151
  padding: var(--spacing-base) var(--spacing-xl);
152
- `,K=E`
152
+ `,K=A`
153
153
  color: var(--brand-secondary-1);
154
154
  margin: 0;
155
155
  font-size: var(--fs-base);
156
156
  font-weight: var(--fw-bold);
157
- `,W=E`
157
+ `,W=A`
158
158
  color: var(--brand-secondary-1);
159
159
  margin: var(--spacing-xs) 0 0;
160
160
  font-size: var(--fs-sm);
161
- `,ye=E`
161
+ `,Ce=A`
162
162
  align-items: center;
163
163
  border: none;
164
164
  background: transparent
@@ -178,11 +178,11 @@ import{jsx as e}from"@emotion/react";import*as b from"react";import{css as D}fro
178
178
  &:hover {
179
179
  opacity: 0.6;
180
180
  }
181
- `,Y=E`
181
+ `,Y=A`
182
182
  display: flex;
183
183
  margin: var(--spacing-sm) 0 0;
184
184
  gap: var(--spacing-base);
185
- `;var A=({title:t,text:r,buttonGroup:n,children:o})=>e("div",{css:$},e("h2",{css:K},t),e("p",{css:W},r),o,n?e("div",{css:Y},n):null);import{css as T,keyframes as gt}from"@emotion/react";var vt=gt`from {
185
+ `;var B=({title:t,text:r,buttonGroup:n,children:o})=>e("div",{css:$},e("h2",{css:K},t),e("p",{css:W},r),o,n?e("div",{css:Y},n):null);import{css as T,keyframes as vt}from"@emotion/react";var ft=vt`from {
186
186
  transform: scale(1);
187
187
  }
188
188
  to {
@@ -222,7 +222,7 @@ to {
222
222
  position: absolute;
223
223
  right: var(--spacing-base);
224
224
  bottom: var(--spacing-base);
225
- animation: 0.5s 2 alternate ${vt};
225
+ animation: 0.5s 2 alternate ${ft};
226
226
  `,cancelButton:T`
227
227
  position: absolute;
228
228
  left: calc(200px + var(--spacing-base));
@@ -243,13 +243,13 @@ to {
243
243
  display: table;
244
244
  width: 100%;
245
245
  font-size: var(--fs-sm);
246
- `},t),Ce=({children:t})=>e("thead",{css:S`
246
+ `},t),we=({children:t})=>e("thead",{css:S`
247
247
  background: var(--gray-50);
248
248
  text-align: left;
249
249
  & tr {
250
250
  border-bottom: 1px solid var(--gray-200);
251
251
  }
252
- `},t),X=({children:t})=>e("tbody",null,t),q=({border:t,children:r})=>e("tr",{css:t?S`
252
+ `},t),X=({children:t})=>e("tbody",null,t),N=({border:t,children:r})=>e("tr",{css:t?S`
253
253
  border-bottom: 1px solid var(--gray-200);
254
254
  &:where(:last-child) {
255
255
  border: none;
@@ -258,27 +258,27 @@ to {
258
258
  outline: none;
259
259
  padding: var(--spacing-sm);
260
260
  width: ${r!=null?r:"auto"};
261
- `},t);function ft(t){switch(t){case"light":return S`
261
+ `},t);function ht(t){switch(t){case"light":return S`
262
262
  color: var(--gray-400);
263
263
  `;case"dark":return S`
264
264
  color: var(--brand-secondary-1);
265
- `}}function ht(t){return S`
265
+ `}}function bt(t){return S`
266
266
  text-align: ${t};
267
267
  `}var O=({alignment:t="left",border:r,color:n="dark",children:o})=>e("td",{css:[S`
268
268
  padding: var(--spacing-base);
269
269
  max-width: 180px;
270
270
  overflow-wrap: break-word;
271
271
  position: relative;
272
- `,ft(n),ht(t),r?S`
272
+ `,ht(n),bt(t),r?S`
273
273
  border-left: 1px solid var(--gray-200);
274
- `:void 0]},o);import{css as ie}from"@emotion/react";var we=ie`
274
+ `:void 0]},o);import{css as ie}from"@emotion/react";var ke=ie`
275
275
  position: relative;
276
276
  display: inline-block;
277
277
  font-size: var(--fs-base);
278
- `,ke=ie`
278
+ `,Te=ie`
279
279
  display: block;
280
280
  text-decoration: line-through;
281
- `,Te=ie`
281
+ `,De=ie`
282
282
  position: absolute;
283
283
  width: 6px;
284
284
  height: 6px;
@@ -286,26 +286,26 @@ to {
286
286
  top: 9px;
287
287
  background: var(--red-tooltip);
288
288
  border-radius: 3px;
289
- `;import{css as bt}from"@emotion/react";var yt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
289
+ `;import{css as yt}from"@emotion/react";var Ct=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
290
290
  <path d="M4.2 7.2C4.53137 7.2 4.8 6.93137 4.8 6.6C4.8 6.26863 4.53137 6 4.2 6C3.86863 6 3.6 6.26863 3.6 6.6C3.6 6.93137 3.86863 7.2 4.2 7.2Z" fill="#828282"/>
291
291
  <path d="M8.4 6.6C8.4 6.93137 8.13137 7.2 7.8 7.2C7.46863 7.2 7.2 6.93137 7.2 6.6C7.2 6.26863 7.46863 6 7.8 6C8.13137 6 8.4 6.26863 8.4 6.6Z" fill="#828282"/>
292
292
  <path fill-rule="evenodd" clip-rule="evenodd" d="M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM6 10.8C8.65097 10.8 10.8 8.65097 10.8 6C10.8 5.49824 10.723 5.01447 10.5802 4.55984C10.0795 4.69533 9.55274 4.76763 9.00913 4.76763C6.77526 4.76763 4.82652 3.54683 3.79366 1.73601C2.25282 2.53492 1.2 4.14451 1.2 6C1.2 8.65097 3.34903 10.8 6 10.8Z" fill="#828282"/>
293
- </svg>`,Ct=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
293
+ </svg>`,wt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
294
294
  <path fill-rule="evenodd" clip-rule="evenodd" d="M3.59995 5.05775C4.9254 5.05775 5.99992 3.98325 5.99992 2.65778C5.99992 1.33232 4.9254 0.257812 3.59995 0.257812C2.27448 0.257812 1.19998 1.33232 1.19998 2.65778C1.19998 3.98325 2.27448 5.05775 3.59995 5.05775ZM3.59999 3.85777C4.26272 3.85777 4.79997 3.32052 4.79997 2.65778C4.79997 1.99505 4.26272 1.4578 3.59999 1.4578C2.93725 1.4578 2.4 1.99505 2.4 2.65778C2.4 3.32052 2.93725 3.85777 3.59999 3.85777Z" fill="#828282"/>
295
295
  <path d="M5.39993 6.8577C5.73131 6.8577 5.99993 7.12632 5.99993 7.45769V11.0576H7.19991V7.45769C7.19991 6.46356 6.39406 5.65771 5.39993 5.65771H1.79998C0.80588 5.65771 0 6.46356 0 7.45769V11.0576H1.19999V7.45769C1.19999 7.12632 1.46861 6.8577 1.79998 6.8577H5.39993Z" fill="#828282"/>
296
296
  <path d="M11.9999 5.05762H8.3999V6.2576H11.9999V5.05762Z" fill="#828282"/>
297
297
  <path d="M8.3999 7.45752H11.9999V8.6575H8.3999V7.45752Z" fill="#828282"/>
298
298
  <path d="M11.9999 2.65771H8.3999V3.8577H11.9999V2.65771Z" fill="#828282"/>
299
- </svg>`,De=`<svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
299
+ </svg>`,Se=`<svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
300
300
  <path fill-rule="evenodd" clip-rule="evenodd" d="M7.113 3.12646C8.16729 3.12646 9.02195 3.98113 9.02195 5.03541C9.02195 5.86658 8.49075 6.57368 7.74932 6.83573V10.1259H6.47669V6.83573C5.73526 6.57368 5.20405 5.86658 5.20405 5.03541C5.20405 3.98113 6.05872 3.12646 7.113 3.12646ZM7.113 4.39909C7.46443 4.39909 7.74932 4.68398 7.74932 5.03541C7.74932 5.38684 7.46443 5.67172 7.113 5.67172C6.76158 5.67172 6.47669 5.38684 6.47669 5.03541C6.47669 4.68398 6.76158 4.39909 7.113 4.39909Z" fill="#828282"/>
301
301
  <path d="M3.96336 1.88578C3.15733 2.69183 2.65879 3.80537 2.65879 5.03535C2.65879 6.42093 3.29145 7.65875 4.28366 8.47569L5.1895 7.56984C4.42501 6.98876 3.93142 6.06969 3.93142 5.03535C3.93142 4.1568 4.28752 3.36142 4.86325 2.78567L3.96336 1.88578Z" fill="#828282"/>
302
302
  <path d="M9.36269 2.7856C9.93846 3.36136 10.2946 4.15676 10.2946 5.03535C10.2946 6.06973 9.80096 6.98882 9.03643 7.5699L9.94228 8.47575C10.9345 7.65881 11.5672 6.42096 11.5672 5.03535C11.5672 3.80533 11.0687 2.69177 10.2626 1.88571L9.36269 2.7856Z" fill="#828282"/>
303
303
  <path d="M0.113525 5.03534C0.113525 3.10251 0.896953 1.35266 2.16359 0.0860049L3.06347 0.985892C2.02714 2.02224 1.38616 3.45394 1.38616 5.03534C1.38616 6.61674 2.02714 8.04844 3.06347 9.08479L2.16358 9.98468C0.89695 8.71802 0.113525 6.96817 0.113525 5.03534Z" fill="#828282"/>
304
304
  <path d="M12.0624 9.98474C13.329 8.71809 14.1125 6.96821 14.1125 5.03534C14.1125 3.10248 13.329 1.3526 12.0624 0.0859375L11.1625 0.985824C12.1988 2.02218 12.8398 3.4539 12.8398 5.03534C12.8398 6.61678 12.1988 8.0485 11.1625 9.08486L12.0624 9.98474Z" fill="#828282"/>
305
- </svg>`,Se=({type:t})=>{let r="";switch(t){case"Audience":r=yt;break;case"Signal":r=De;break;case"Intent":r=De;break;case"Enrichment":r=Ct;break}return e("i",{css:bt`
305
+ </svg>`,Le=({type:t})=>{let r="";switch(t){case"Audience":r=Ct;break;case"Signal":r=Se;break;case"Intent":r=Se;break;case"Enrichment":r=wt;break}return e("i",{css:yt`
306
306
  align-items: center;
307
307
  display: inline-block;
308
- `,dangerouslySetInnerHTML:{__html:r}})};var wt=({dimensionIndex:t,dimensions:r,disableEditOverride:n,onClick:o,preemptiveOverrides:i})=>{var p;let{settings:s}=z(),d=(p=i!=null?i:s.scoreOverrides)!=null?p:{};return e(J,null,e(X,null,Object.entries(r).sort(([m],[u])=>m.localeCompare(u)).map(([m,u])=>{var f;let{dim:a,name:c,type:l,category:v}=(f=t[m])!=null?f:{name:m,dim:m,type:void 0,category:void 0},g=d[a];return e(q,{key:a},e(O,null,g!==void 0?e("s",{css:ke},g.initial):null,e("b",{css:we},u,g!==void 0&&e("i",{css:Te}))),e(O,null,e("div",{onClick:()=>o==null?void 0:o(a),css:o?{cursor:"pointer"}:void 0},e("span",{css:h.divider,role:"presentation"}),e("div",null,e(Se,{type:l})," ",l),e("strong",null,v?`${v}:`:""," ",c))),e(O,{alignment:"right",color:"light"},g!==void 0&&!n?e(H,{route:`/overrides/${a}`},"Edit override"):null))})))},P=wt;async function ee({actions:t,saveSettings:r,scores:n,settings:o}){var p,m;let i=(p=o.scoreOverrides)!=null?p:{},s={...i},d=[];for(let u of Object.keys(i)){let a=i==null?void 0:i[u];delete s[u],d.push({type:"modscoreS",data:{dimension:u,delta:a.initial-((m=n[u])!=null?m:0)}})}await r({...o,scoreOverrides:s}),await t.rawUpdate(d)}async function Le({quirk:t,settings:r,saveSettings:n,actions:o}){var d;let i=(d=r.quirkOverrides)==null?void 0:d[t];if(!i)return;let s={...r.quirkOverrides};delete s[t],await n({...r,quirkOverrides:s}),await o.rawUpdate([{type:"setquirk",data:{key:t,value:i.initial}}])}import{Button as Oe}from"@uniformdev/design-system";import{Switch as kt}from"@uniformdev/design-system";var xe=({dimensionIndex:{index:t},state:{scores:r,data:n},actions:o,saveSettings:i,settings:s})=>{let d=te.useMemo(()=>{let a={};return Object.keys(t).filter(c=>!r[c]).map(c=>{a[t[c].dim]=0}),a},[r,t]),p=Object.keys(r).length,m=p+Object.keys(d).length,u=()=>{o.rawUpdate([{type:"setcontrol",data:!n.controlGroup}])};return e(te.Fragment,null,e("article",{css:h.page},e("div",{css:h.headingGroup},e("h2",{css:h.title},"Dimensions",e("small",null,p," active of ",m)),e("div",{css:h.reset},e(Oe,{buttonType:"ghost",onClick:()=>ee({actions:o,saveSettings:i,scores:r,settings:s}).then(o.forget)},"clear all dimensions")),e(kt,{name:"controlGroup",label:"Control Group",onChange:u,checked:n.controlGroup})),p>0?e(P,{dimensionIndex:t,dimensions:r}):e(A,{title:n.controlGroup?"In control group":"No active dimensions",text:n.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have score in any dimensions yet.",buttonGroup:n.controlGroup?e(Oe,{buttonType:"secondary",onClick:u},"Exit control group"):null}),e(_,null,e(G,{title:`Inactive Dimensions (${Object.keys(d).length})`},e(P,{dimensionIndex:t,dimensions:d})))))};import*as Ve from"react";import{AddButton as Tt}from"@uniformdev/design-system";import{Button as Re}from"@uniformdev/design-system";var Pe=({dimensionIndex:{index:t},state:{data:r,scores:n},actions:o,settings:i,saveSettings:s})=>{var c;let d=(c=i.scoreOverrides)!=null?c:{},p=Object.keys(d).length,m=l=>(l==null||l.preventDefault(),s({...i,route:"/overrides/add"})),u=()=>{o.rawUpdate([{type:"setcontrol",data:!r.controlGroup}])},a={};return Object.entries(n).map(([l,v])=>{d[l]!==void 0&&(a[l]=v)}),e(Ve.Fragment,null,e("article",{css:h.page},e("div",{css:h.headingGroup},e("h2",{css:h.title},"What if?"),e("div",{css:h.reset},e(Re,{buttonType:"ghost",onClick:()=>ee({actions:o,settings:i,saveSettings:s,scores:n})},"delete all overrides")),e(Tt,{onClick:m})),e("p",null,"Override dimension scores to test personalization"),p>0?e(P,{dimensionIndex:t,dimensions:a,onClick:l=>s({...i,route:`/overrides/${l}`})}):e(A,{title:r.controlGroup?"In control group":"No overrides",text:r.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have any dimension overrides yet.",buttonGroup:r.controlGroup?e(Re,{buttonType:"secondary",onClick:u},"Exit control group"):null})))};import{Field as Fe,Form as It,Formik as Ht}from"formik";import*as Q from"yup";import{css as I}from"@emotion/react";var Ie=I`
308
+ `,dangerouslySetInnerHTML:{__html:r}})};var kt=({dimensionIndex:t,dimensions:r,disableEditOverride:n,onClick:o,preemptiveOverrides:i})=>{var p;let{settings:a}=z(),d=(p=i!=null?i:a.scoreOverrides)!=null?p:{};return e(J,null,e(X,null,Object.entries(r).sort(([m],[u])=>m.localeCompare(u)).map(([m,u])=>{var f;let{dim:s,name:c,type:l,category:v}=(f=t[m])!=null?f:{name:m,dim:m,type:void 0,category:void 0},g=d[s];return e(N,{key:s},e(O,null,g!==void 0?e("s",{css:Te},g.initial):null,e("b",{css:ke},u,g!==void 0&&e("i",{css:De}))),e(O,null,e("div",{onClick:()=>o==null?void 0:o(s),css:o?{cursor:"pointer"}:void 0},e("span",{css:h.divider,role:"presentation"}),e("div",null,e(Le,{type:l})," ",l),e("strong",null,v?`${v}:`:""," ",c))),e(O,{alignment:"right",color:"light"},g!==void 0&&!n?e(M,{route:`/overrides/${s}`},"Edit override"):null))})))},P=kt;async function ee({actions:t,saveSettings:r,scores:n,settings:o}){var p,m;let i=(p=o.scoreOverrides)!=null?p:{},a={...i},d=[];for(let u of Object.keys(i)){let s=i==null?void 0:i[u];delete a[u],d.push({type:"modscoreS",data:{dimension:u,delta:s.initial-((m=n[u])!=null?m:0)}})}await r({...o,scoreOverrides:a}),await t.rawUpdate(d)}async function Oe({quirk:t,settings:r,saveSettings:n,actions:o}){var d;let i=(d=r.quirkOverrides)==null?void 0:d[t];if(!i)return;let a={...r.quirkOverrides};delete a[t],await n({...r,quirkOverrides:a}),await o.rawUpdate([{type:"setquirk",data:{key:t,value:i.initial}}])}import{Button as xe}from"@uniformdev/design-system";import{Switch as Tt}from"@uniformdev/design-system";var Re=({dimensionIndex:{index:t},state:{scores:r,data:n},actions:o,saveSettings:i,settings:a})=>{let d=te.useMemo(()=>{let s={};return Object.keys(t).filter(c=>!r[c]).map(c=>{s[t[c].dim]=0}),s},[r,t]),p=Object.keys(r).length,m=p+Object.keys(d).length,u=()=>{o.rawUpdate([{type:"setcontrol",data:!n.controlGroup}])};return e(te.Fragment,null,e("article",{css:h.page},e("div",{css:h.headingGroup},e("h2",{css:h.title},"Dimensions",e("small",null,p," active of ",m)),e("div",{css:h.reset},e(xe,{buttonType:"ghost",onClick:()=>ee({actions:o,saveSettings:i,scores:r,settings:a}).then(o.forget)},"clear all dimensions")),e(Tt,{name:"controlGroup",label:"Control Group",onChange:u,checked:n.controlGroup})),p>0?e(P,{dimensionIndex:t,dimensions:r}):e(B,{title:n.controlGroup?"In control group":"No active dimensions",text:n.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have score in any dimensions yet.",buttonGroup:n.controlGroup?e(xe,{buttonType:"secondary",onClick:u},"Exit control group"):null}),e(_,null,e(G,{title:`Inactive Dimensions (${Object.keys(d).length})`},e(P,{dimensionIndex:t,dimensions:d})))))};import*as Pe from"react";import{AddButton as Dt}from"@uniformdev/design-system";import{Button as Ve}from"@uniformdev/design-system";var Ie=({dimensionIndex:{index:t},state:{data:r,scores:n},actions:o,settings:i,saveSettings:a})=>{var c;let d=(c=i.scoreOverrides)!=null?c:{},p=Object.keys(d).length,m=l=>(l==null||l.preventDefault(),a({...i,route:"/overrides/add"})),u=()=>{o.rawUpdate([{type:"setcontrol",data:!r.controlGroup}])},s={};return Object.entries(n).map(([l,v])=>{d[l]!==void 0&&(s[l]=v)}),e(Pe.Fragment,null,e("article",{css:h.page},e("div",{css:h.headingGroup},e("h2",{css:h.title},"What if?"),e("div",{css:h.reset},e(Ve,{buttonType:"ghost",onClick:()=>ee({actions:o,settings:i,saveSettings:a,scores:n})},"delete all overrides")),e(Dt,{onClick:m})),e("p",null,"Override dimension scores to test personalization"),p>0?e(P,{dimensionIndex:t,dimensions:s,onClick:l=>a({...i,route:`/overrides/${l}`})}):e(B,{title:r.controlGroup?"In control group":"No overrides",text:r.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have any dimension overrides yet.",buttonGroup:r.controlGroup?e(Ve,{buttonType:"secondary",onClick:u},"Exit control group"):null})))};import{Field as qe,Form as Ht,Formik as Mt}from"formik";import*as F from"yup";import{css as I}from"@emotion/react";var He=I`
309
309
  background: var(--white);
310
310
  border: 1px solid var(--gray-500);
311
311
  border-radius: var(--rounded-base);
@@ -316,26 +316,26 @@ to {
316
316
  cursor: not-allowed;
317
317
  color: var(--gray-200);
318
318
  }
319
- `,ur=I`
319
+ `,yr=I`
320
320
  margin: var(--spacing-base) 0;
321
- `,He=I`
321
+ `,Me=I`
322
322
  color: var(--brand-secondary-1);
323
323
  display: flex;
324
324
  flex-direction: column;
325
325
  margin: 0 0 var(--spacing-sm);
326
- `,Me=I`
326
+ `,Ee=I`
327
327
  color: var(--brand-secondary-1);
328
328
  display: block;
329
329
  flex: 1 100%;
330
330
  font-weight: var(--fw-bold);
331
331
  margin: 0 0 var(--spacing-sm);
332
- `,gr=I`
332
+ `,Cr=I`
333
333
  color: var(--gray-600);
334
334
  font-size: var(--fs-sm);
335
- `,vr=I`
335
+ `,wr=I`
336
336
  color: var(--brand-secondary-5);
337
337
  display: block;
338
- `,Ee=I`
338
+ `,Ae=I`
339
339
  flex-direction: row;
340
340
  flex-wrap: wrap;
341
341
 
@@ -403,18 +403,18 @@ to {
403
403
  flex: 1 0 20%;
404
404
  padding: 10px;
405
405
  }
406
- `;import{Caption as Dt,ErrorMessage as St}from"@uniformdev/design-system";var Ae=({field:t,form:r,meta:n,...o})=>{var u,a;let{label:i,caption:s,min:d=0,max:p=100,step:m}=o;return e("div",null,e("label",{css:[He,Ee]},e("span",{css:Me},i),e("input",{type:"range",min:d,max:p,step:m,...t,value:(u=t.value)!=null?u:0}),e("span",{className:"value-display"},(a=t.value)!=null?a:0)),s?e(Dt,null,s):null,r.touched[t.name]&&r.errors[t.name]?e(St,{message:r.errors[t.name]}):null)};import{css as Lt}from"@emotion/react";var x=({children:t,...r})=>e("fieldset",{css:Lt`
406
+ `;import{Caption as St,ErrorMessage as Lt}from"@uniformdev/design-system";var Be=({field:t,form:r,meta:n,...o})=>{var u,s;let{label:i,caption:a,min:d=0,max:p=100,step:m}=o;return e("div",null,e("label",{css:[Me,Ae]},e("span",{css:Ee},i),e("input",{type:"range",min:d,max:p,step:m,...t,value:(u=t.value)!=null?u:0}),e("span",{className:"value-display"},(s=t.value)!=null?s:0)),a?e(St,null,a):null,r.touched[t.name]&&r.errors[t.name]?e(Lt,{message:r.errors[t.name]}):null)};import{css as Ot}from"@emotion/react";var x=({children:t,...r})=>e("fieldset",{css:Ot`
407
407
  border: none;
408
408
  padding: 0;
409
409
  & legend {
410
410
  margin-bottom: var(--spacing-base);
411
411
  }
412
- `,...r},t);import{css as Ot}from"@emotion/react";var B=({children:t})=>e("legend",{css:Ot`
412
+ `,...r},t);import{css as xt}from"@emotion/react";var Q=({children:t})=>e("legend",{css:xt`
413
413
  font-size: var(--fs-md);
414
414
  font-weight: var(--fw-bold);
415
415
  border-bottom: 1px solid var(--gray-400);
416
416
  width: 100%;
417
- `},t);import{Context as xt,TransitionDataStore as Rt}from"@uniformdev/context";function Be({manifest:t,visitor:r,override:n}){let o=new xt({manifest:t,transitionStore:new se({initialData:r})}),i={...o.scores};o.storage.updateData([n]);let d={...{...o.scores}};return Object.entries(d).forEach(([p,m])=>{i[p]===m&&delete d[p]}),d}var se=class extends Rt{async handleDelete(){}async handleUpdateData(){}};function N({scores:t,scoreOverrides:r}){let n=[];return r?(Object.entries(r).forEach(([o,i])=>{var p;let s=(p=t[o])!=null?p:0;if(s===i.override)return;let d=i.override-s;n.push({type:"modscoreS",data:{dimension:o,delta:d}})}),n):[]}function oe({quirks:t,quirkOverrides:r}){let n={};if(!!r)return Object.entries(r).forEach(([o,i])=>{t[o]!==i.override&&(n[o]=i.override)}),Object.keys(n).length>0?n:void 0}import{Button as Mt}from"@uniformdev/design-system";var ae=t=>({field:r,form:n,meta:o,...i})=>e(t,{...r,...i,errorMessage:n.errors[r.name]});import{Input as Vt,InputSelect as Pt}from"@uniformdev/design-system";var re=ae(Vt),Qe=ae(Pt);var Et=Q.object({dimension:Q.string(),score:Q.number()}),ce=({settings:t,saveSettings:r,state:n,actions:o,dimensionIndex:{index:i}})=>{var m,u;let s=t.route?[...t.route.matchAll(/overrides\/(?!.*add)(\w+)?/g)]:[],d=s[0]?s[0][1]:"";if(!((m=n.manifest.project.pz)!=null&&m.sig))return e("p",null,"Error, manifest is broken or there is no signal to override.");let p=Object.entries(i).filter(([,a])=>a.type!=="Audience"&&a.type!=="Intent").map(([a,c])=>{let l=c.type?`${c.type}: `:"",v=c.category?`${c.category} - `:"",g=`${l}${v}${c.name}`;return{value:a,label:g}});return p.unshift({value:"",label:"Choose dimension to override"}),e(Ht,{initialValues:{dimension:d,score:(u=n.scores[d])!=null?u:0},validate:a=>{let c={};return(a.score===n.scores[a.dimension]||a.score===0&&!n.scores[d])&&(c.score="You have to modify current score value"),c},validationSchema:Et,enableReinitialize:!0,validateOnChange:!1,validateOnBlur:!1,onSubmit:async a=>{var f,y,C,w,R,V;let c=(y=(f=i[a.dimension])==null?void 0:f.cap)!=null?y:0,l=Math.min(a.score,c),v={...t,scoreOverrides:{...t.scoreOverrides,[a.dimension]:{initial:(V=(R=(w=(C=t.scoreOverrides)==null?void 0:C[a.dimension])==null?void 0:w.initial)!=null?R:n.scores[a.dimension])!=null?V:0,override:l}},route:"/overrides"};await r(v);let g=N({scores:n.scores,scoreOverrides:v.scoreOverrides});o.rawUpdate(g)}},({isSubmitting:a,values:c,setFieldValue:l})=>{var C;let v=Be({manifest:n.manifest,visitor:n.data,override:{type:"modscore",data:{dimension:c.dimension,delta:c.score-((C=n.scores[c.dimension])!=null?C:0)}}}),g=Object.entries(n.scores).reduce((w,[R,V])=>(w[R]={initial:V,override:V},w),{}),f={max:100,step:50};i[c.dimension]&&(f.max=i[c.dimension].cap,f.step=i[c.dimension].str);let y=c.score&&Object.keys(v).length>0;return e(It,{css:h.page},e("h1",{css:h.title},"Override Dimension"),e(Fe,{component:Qe,label:"Dimension",id:"dimension",name:"dimension",options:p,disabled:a,onChange:w=>{l("score",0,!1),l("dimension",w.target.value)}}),e("p",{css:h.text},e("small",null,"Audiences and Intents are aggregated from other dimension scores and cannot be overridden directly.")),c.dimension?e(Fe,{component:Ae,name:"score",label:"Score",disabled:a,max:f.max,step:f.step,caption:`Range: 0 - ${f.max} in increments of ${f.step}`}):null,e(x,{disabled:a,css:{marginBottom:"2rem"}},y?e(_,null,e(G,{title:`Impacted Dimensions (${Object.keys(v).length})`},e(P,{preemptiveOverrides:g,dimensionIndex:i,dimensions:v,disableEditOverride:!0}))):null,e(Mt,{type:"submit",css:h.submitButton,disabled:a},"Save"),e(H,{route:"/overrides",css:h.cancelButton},"Cancel")))})};import{useState as Nt}from"react";import{useState as At,useEffect as Bt}from"react";import{Button as Qt,Input as Ft}from"@uniformdev/design-system";var qt=({name:t,value:r,submit:n})=>{let[o,i]=At(r!=null?r:"");return Bt(()=>{i(r!=null?r:"")},[r]),e("div",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(Ft,{type:"text",css:[Ie],name:t,value:o,onChange:p=>{i(p.target.value)}}),e(Qt,{buttonType:"primary",disabled:o===r,size:"sm",onClick:()=>n(t,o!=null?o:"")},"Save"))},qe=qt;import{Button as Ne,InputSelect as Zt}from"@uniformdev/design-system";var Ze=({...t})=>{let{state:{data:{quirks:r}},quirksIndex:{index:n},settings:o,saveSettings:i,actions:s}=t,[d,p]=Nt(""),m;d&&(m=n[d]);let u=async(a,c)=>{var g,f,y;p("");let l={...o,quirkOverrides:{...o.quirkOverrides,[a]:{initial:(y=(f=(g=o.quirkOverrides)==null?void 0:g[a])==null?void 0:f.initial)!=null?y:r[a],override:c}}};await i(l);let v=oe({quirks:r,quirkOverrides:l.quirkOverrides});await s.update({quirks:v})};return e(b.Fragment,null,e("article",{css:[h.page,h.quirks]},e("h1",{css:h.title},"Quirks"),e("p",{css:h.text},"Keys defined in Uniform and their current, programmatically defined values for this visit."),Object.keys(n).length?e(J,null,e(Ce,null,e(q,null,e(j,{width:"30%"},"Key"),e(j,{width:"50%"},"Value"),e(j,{width:"20%"},""))),e(X,null,Object.values(n).map(({name:a,value:c,id:l})=>{var f,y,C;let v=(y=(f=o.quirkOverrides)==null?void 0:f[a])==null?void 0:y.initial,g=[];return m&&m.options&&(g=m.options.map(w=>({value:w.value,label:w.name}))),e(q,{key:l,border:"bottom"},e(O,null,e("strong",null,a)),e(O,null,d!==l?e("div",{onClick:()=>{p(l)}},v?e("div",null,e("s",null,v)):null,c):null,d===l&&m&&e(b.Fragment,null,m.options?e(Zt,{showLabel:!1,label:`Change ${a}`,defaultOption:`Change ${a}`,name:l,onChange:w=>u(w.target.name,w.target.value),options:g}):e(qe,{name:l,value:c,submit:u}))),e(O,null,d?null:(C=o.quirkOverrides)!=null&&C[l]?e(Ne,{buttonType:"ghost",onClick:()=>{Le({quirk:l,settings:o,saveSettings:i,actions:s})}},e("small",null,"Clear Override")):e(Ne,{buttonType:"ghost",onClick:()=>{p(l)}},e("small",null,"Override"))))}))):e(A,{title:"No quirks configured",text:"There are currently no quirks setup. Try to connect to Uniform API to load additional information about Quirks and Quirks without defined value."})))};import{Button as ze}from"@uniformdev/design-system";import{Switch as Ue}from"@uniformdev/design-system";var _e=({settings:t,saveSettings:r,actions:n,state:{data:o},clearAllExtensionData:i})=>e("article",{css:[h.page,{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}]},e("h1",{css:h.title},"Settings"),e(x,null,e(B,null,"Data Connection"),e(ze,{buttonType:"tertiary",onClick:()=>{r({...t,route:"/connect"})}},"Manage Connection to Uniform")),e(x,null,e(B,null,"Storage Consent"),e(Ue,{label:"Store visitor data",id:"consent-mode",name:"consentMode",checked:o.consent,onChange:s=>{n.rawUpdate([{type:"consent",data:s.currentTarget.checked}]),r({...t,consentMode:s.currentTarget.checked})}}),e("p",null,e("small",null,"Enabling storage consent allows storing behavior in this browser for personalization across sessions. Only affects this browser. Personalization works with this disabled, but dimension scores are lost on refresh."))),e(x,null,e(B,null,"Logging"),e(Ue,{label:"Write Uniform Context diagnostic logs to browser console",id:"logging",name:"logging",checked:t.logLevel==="debug",onChange:s=>r({...t,logLevel:s.currentTarget.checked?"debug":"none"})})),e(x,null,e(B,null,"Clear extension storage"),e(ze,{onClick:()=>{i()}},"Clear"),e("p",null,e("small",null,"May be necessary when you have multiple different sites on the same domain name (e.g. http://localhost:3000) and there are some conflicts or other unexpected behaviour."))));import{Button as Ge}from"@uniformdev/design-system";var le=({settings:t,saveSettings:r})=>{let n=()=>{r({...t,route:"/connect"})},o=()=>{r({...t,ignoreApiKeyPrompt:!0})},i=t.route==="/connect",s=!(t!=null&&t.apiKey);return!t.ignoreApiKeyPrompt&&s&&!i?e("div",{css:[$,be]},e("h2",{css:K},"Connect to a Uniform Project"),e("p",{css:W},"This allows reading human-readable labels for the dimensions."),e("div",{css:Y},e(Ge,{buttonType:"secondary",onClick:n},"Connect this site"),e(Ge,{buttonType:"ghost",onClick:o},"Skip for now")),e("button",{type:"button",css:ye,title:"close",onClick:o},e("span",{hidden:!0},"Close"))):null};import{computeDimensionDefinitionDisplayData as zt,computeDimensionDisplayData as $e,UncachedDimensionClient as Ut}from"@uniformdev/context/api";import{useAsync as _t}from"react-use";import*as Ke from"react";function We({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:s,value:d}=_t(async()=>{if(!r||!n)return p;let u=(await new Ut({projectId:n,apiKey:r,apiHost:t||void 0}).get()).dimensions,a={};return u.map(c=>{var l,v,g,f,y,C,w,R;if(a[c.dim]={...zt(c),cap:c.cap,str:(f=(g=(v=(l=o==null?void 0:o.project.pz)==null?void 0:l.sig)==null?void 0:v[c.dim])==null?void 0:g.str)!=null?f:50},a[c.dim].type==="Enrichment"){let V=c.dim.split("_")[0];a[c.dim].cap=(R=(w=(C=(y=o==null?void 0:o.project.pz)==null?void 0:y.enr)==null?void 0:C[V])==null?void 0:w.cap)!=null?R:100}}),a},[t,r,n]),p=Ke.useMemo(()=>{var u,a,c,l;let m={};return o&&(Object.entries((a=(u=o==null?void 0:o.project.pz)==null?void 0:u.sig)!=null?a:{}).map(([v,g])=>{let f=$e(v,o);f&&(m[v]={...g,...f})}),Object.entries((l=(c=o==null?void 0:o.project.pz)==null?void 0:c.enr)!=null?l:{}).map(([v,g])=>{var C;let f=$e(v,o),y={cap:(C=g.cap)!=null?C:100,str:10};f&&(m[v]={...f,cap:y.cap,str:y.str})}),d&&Object.entries(d).map(([v,g])=>{m[v]={...m[v],...g}})),m},[o,d]);return{loading:i,error:s,index:p}}import{useMemo as Gt}from"react";import{UncachedQuirkClient as $t}from"@uniformdev/context/api";import{useAsync as Kt}from"react-use";function Ye({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:s,value:d}=Kt(async()=>{if(!r||!n)return{};let u=await new $t({projectId:n,apiKey:r,apiHost:t||void 0}).get(),a={};return u.quirks.map(c=>{a[c.id]={...c,value:o[c.id]}}),a},[t,r,n]),p=Gt(()=>{let m={};return Object.entries(o).map(([u,a])=>m[u]={value:a,id:u,name:u}),d&&Object.entries(d).map(([u,a])=>m[u]={...a,value:o[u]}),m},[o,d]);return{loading:i,error:s,index:p}}import{css as et}from"@emotion/react";import{Theme as so}from"@uniformdev/design-system";function ne(){return e("style",null,`
417
+ `},t);import{Context as Rt,TransitionDataStore as Vt}from"@uniformdev/context";function Qe({manifest:t,visitor:r,override:n}){let o=new Rt({manifest:t,transitionStore:new se({initialData:r})}),i={...o.scores};o.storage.updateData([n]);let d={...{...o.scores}};return Object.entries(d).forEach(([p,m])=>{i[p]===m&&delete d[p]}),d}var se=class extends Vt{async handleDelete(){}async handleUpdateData(){}};function Z({scores:t,scoreOverrides:r}){let n=[];return r?(Object.entries(r).forEach(([o,i])=>{var p;let a=(p=t[o])!=null?p:0;if(a===i.override)return;let d=i.override-a;n.push({type:"modscoreS",data:{dimension:o,delta:d}})}),n):[]}function oe({quirks:t,quirkOverrides:r}){let n={};if(!!r)return Object.entries(r).forEach(([o,i])=>{t[o]!==i.override&&(n[o]=i.override)}),Object.keys(n).length>0?n:void 0}import{Button as Et}from"@uniformdev/design-system";var ae=t=>({field:r,form:n,meta:o,...i})=>e(t,{...r,...i,errorMessage:n.errors[r.name]});import{Input as Pt,InputSelect as It}from"@uniformdev/design-system";var re=ae(Pt),Fe=ae(It);var At=F.object({dimension:F.string(),score:F.number()}),ce=({settings:t,saveSettings:r,state:n,actions:o,dimensionIndex:{index:i}})=>{var m,u;let a=t.route?[...t.route.matchAll(/overrides\/(?!.*add)(\w+)?/g)]:[],d=a[0]?a[0][1]:"";if(!((m=n.manifest.project.pz)!=null&&m.sig))return e("p",null,"Error, manifest is broken or there is no signal to override.");let p=Object.entries(i).filter(([,s])=>s.type!=="Audience"&&s.type!=="Intent").map(([s,c])=>{let l=c.type?`${c.type}: `:"",v=c.category?`${c.category} - `:"",g=`${l}${v}${c.name}`;return{value:s,label:g}});return p.unshift({value:"",label:"Choose dimension to override"}),e(Mt,{initialValues:{dimension:d,score:(u=n.scores[d])!=null?u:0},validate:s=>{let c={};return(s.score===n.scores[s.dimension]||s.score===0&&!n.scores[d])&&(c.score="You have to modify current score value"),c},validationSchema:At,enableReinitialize:!0,validateOnChange:!1,validateOnBlur:!1,onSubmit:async s=>{var f,y,C,w,R,V;let c=(y=(f=i[s.dimension])==null?void 0:f.cap)!=null?y:0,l=Math.min(s.score,c),v={...t,scoreOverrides:{...t.scoreOverrides,[s.dimension]:{initial:(V=(R=(w=(C=t.scoreOverrides)==null?void 0:C[s.dimension])==null?void 0:w.initial)!=null?R:n.scores[s.dimension])!=null?V:0,override:l}},route:"/overrides"};await r(v);let g=Z({scores:n.scores,scoreOverrides:v.scoreOverrides});o.rawUpdate(g)}},({isSubmitting:s,values:c,setFieldValue:l})=>{var C;let v=Qe({manifest:n.manifest,visitor:n.data,override:{type:"modscore",data:{dimension:c.dimension,delta:c.score-((C=n.scores[c.dimension])!=null?C:0)}}}),g=Object.entries(n.scores).reduce((w,[R,V])=>(w[R]={initial:V,override:V},w),{}),f={max:100,step:50};i[c.dimension]&&(f.max=i[c.dimension].cap,f.step=i[c.dimension].str);let y=c.score&&Object.keys(v).length>0;return e(Ht,{css:h.page},e("h1",{css:h.title},"Override Dimension"),e(qe,{component:Fe,label:"Dimension",id:"dimension",name:"dimension",options:p,disabled:s,onChange:w=>{l("score",0,!1),l("dimension",w.target.value)}}),e("p",{css:h.text},e("small",null,"Audiences and Intents are aggregated from other dimension scores and cannot be overridden directly.")),c.dimension?e(qe,{component:Be,name:"score",label:"Score",disabled:s,max:f.max,step:f.step,caption:`Range: 0 - ${f.max} in increments of ${f.step}`}):null,e(x,{disabled:s,css:{marginBottom:"2rem"}},y?e(_,null,e(G,{title:`Impacted Dimensions (${Object.keys(v).length})`},e(P,{preemptiveOverrides:g,dimensionIndex:i,dimensions:v,disableEditOverride:!0}))):null,e(Et,{type:"submit",css:h.submitButton,disabled:s},"Save"),e(M,{route:"/overrides",css:h.cancelButton},"Cancel")))})};import{useState as Zt}from"react";import{useState as Bt,useEffect as Qt}from"react";import{Button as Ft,Input as qt}from"@uniformdev/design-system";var Nt=({name:t,value:r,submit:n})=>{let[o,i]=Bt(r!=null?r:"");return Qt(()=>{i(r!=null?r:"")},[r]),e("div",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(qt,{type:"text",css:[He],name:t,value:o,onChange:p=>{i(p.target.value)}}),e(Ft,{buttonType:"primary",disabled:o===r,size:"sm",onClick:()=>n(t,o!=null?o:"")},"Save"))},Ne=Nt;import{Button as Ze,InputSelect as zt}from"@uniformdev/design-system";var ze=({...t})=>{let{state:{data:{quirks:r}},quirksIndex:{index:n},settings:o,saveSettings:i,actions:a}=t,[d,p]=Zt(""),m;d&&(m=n[d]);let u=async(s,c)=>{var g,f,y;p("");let l={...o,quirkOverrides:{...o.quirkOverrides,[s]:{initial:(y=(f=(g=o.quirkOverrides)==null?void 0:g[s])==null?void 0:f.initial)!=null?y:r[s],override:c}}};await i(l);let v=oe({quirks:r,quirkOverrides:l.quirkOverrides});await a.update({quirks:v})};return e(b.Fragment,null,e("article",{css:[h.page,h.quirks]},e("h1",{css:h.title},"Quirks"),e("p",{css:h.text},"Keys defined in Uniform and their current, programmatically defined values for this visit."),Object.keys(n).length?e(J,null,e(we,null,e(N,null,e(j,{width:"30%"},"Key"),e(j,{width:"50%"},"Value"),e(j,{width:"20%"},""))),e(X,null,Object.values(n).map(({name:s,value:c,id:l})=>{var f,y,C;let v=(y=(f=o.quirkOverrides)==null?void 0:f[s])==null?void 0:y.initial,g=[];return m&&m.options&&(g=m.options.map(w=>({value:w.value,label:w.name}))),e(N,{key:l,border:"bottom"},e(O,null,e("strong",null,s)),e(O,null,d!==l?e("div",{onClick:()=>{p(l)}},v?e("div",null,e("s",null,v)):null,c):null,d===l&&m&&e(b.Fragment,null,m.options?e(zt,{showLabel:!1,label:`Change ${s}`,defaultOption:`Change ${s}`,name:l,onChange:w=>u(w.target.name,w.target.value),options:g}):e(Ne,{name:l,value:c,submit:u}))),e(O,null,d?null:(C=o.quirkOverrides)!=null&&C[l]?e(Ze,{buttonType:"ghost",onClick:()=>{Oe({quirk:l,settings:o,saveSettings:i,actions:a})}},e("small",null,"Clear Override")):e(Ze,{buttonType:"ghost",onClick:()=>{p(l)}},e("small",null,"Override"))))}))):e(B,{title:"No quirks configured",text:"There are currently no quirks setup. Try to connect to Uniform API to load additional information about Quirks and Quirks without defined value."})))};import{Button as Ue}from"@uniformdev/design-system";import{Switch as _e}from"@uniformdev/design-system";var Ge=({settings:t,saveSettings:r,actions:n,state:{data:o},clearAllExtensionData:i})=>e("article",{css:[h.page,{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}]},e("h1",{css:h.title},"Settings"),e(x,null,e(Q,null,"Data Connection"),e(Ue,{buttonType:"tertiary",onClick:()=>{r({...t,route:"/connect"})}},"Manage Connection to Uniform")),e(x,null,e(Q,null,"Storage Consent"),e(_e,{label:"Store visitor data",id:"consent-mode",name:"consentMode",checked:o.consent,onChange:a=>{n.rawUpdate([{type:"consent",data:a.currentTarget.checked}]),r({...t,consentMode:a.currentTarget.checked})}}),e("p",null,e("small",null,"Enabling storage consent allows storing behavior in this browser for personalization across sessions. Only affects this browser. Personalization works with this disabled, but dimension scores are lost on refresh."))),e(x,null,e(Q,null,"Logging"),e(_e,{label:"Write Uniform Context diagnostic logs to browser console",id:"logging",name:"logging",checked:t.logLevel==="debug",onChange:a=>r({...t,logLevel:a.currentTarget.checked?"debug":"none"})})),e(x,null,e(Q,null,"Clear extension storage"),e(Ue,{onClick:()=>{i()}},"Clear"),e("p",null,e("small",null,"May be necessary when you have multiple different sites on the same domain name (e.g. http://localhost:3000) and there are some conflicts or other unexpected behaviour."))));import{Button as $e}from"@uniformdev/design-system";var le=({settings:t,saveSettings:r})=>{let n=()=>{r({...t,route:"/connect"})},o=()=>{r({...t,ignoreApiKeyPrompt:!0})},i=t.route==="/connect",a=!(t!=null&&t.apiKey);return!t.ignoreApiKeyPrompt&&a&&!i?e("div",{css:[$,ye]},e("h2",{css:K},"Connect to a Uniform Project"),e("p",{css:W},"This allows reading human-readable labels for the dimensions."),e("div",{css:Y},e($e,{buttonType:"secondary",onClick:n},"Connect this site"),e($e,{buttonType:"ghost",onClick:o},"Skip for now")),e("button",{type:"button",css:Ce,title:"close",onClick:o},e("span",{hidden:!0},"Close"))):null};import{computeDimensionDefinitionDisplayData as Ut,computeDimensionDisplayData as Ke,UncachedDimensionClient as _t}from"@uniformdev/context/api";import{useAsync as Gt}from"react-use";import*as We from"react";function Ye({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:a,value:d}=Gt(async()=>{if(!r||!n)return p;let u=(await new _t({projectId:n,apiKey:r,apiHost:t||void 0}).get()).dimensions,s={};return u.map(c=>{var l,v,g,f,y,C,w,R;if(s[c.dim]={...Ut(c),cap:c.cap,str:(f=(g=(v=(l=o==null?void 0:o.project.pz)==null?void 0:l.sig)==null?void 0:v[c.dim])==null?void 0:g.str)!=null?f:50},s[c.dim].type==="Enrichment"){let V=c.dim.split("_")[0];s[c.dim].cap=(R=(w=(C=(y=o==null?void 0:o.project.pz)==null?void 0:y.enr)==null?void 0:C[V])==null?void 0:w.cap)!=null?R:100}}),s},[t,r,n]),p=We.useMemo(()=>{var u,s,c,l;let m={};return o&&(Object.entries((s=(u=o==null?void 0:o.project.pz)==null?void 0:u.sig)!=null?s:{}).map(([v,g])=>{let f=Ke(v,o);f&&(m[v]={...g,...f})}),Object.entries((l=(c=o==null?void 0:o.project.pz)==null?void 0:c.enr)!=null?l:{}).map(([v,g])=>{var C;let f=Ke(v,o),y={cap:(C=g.cap)!=null?C:100,str:10};f&&(m[v]={...f,cap:y.cap,str:y.str})}),d&&Object.entries(d).map(([v,g])=>{m[v]={...m[v],...g}})),m},[o,d]);return{loading:i,error:a,index:p}}import{useMemo as $t}from"react";import{UncachedQuirkClient as Kt}from"@uniformdev/context/api";import{useAsync as Wt}from"react-use";function Je({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:a,value:d}=Wt(async()=>{if(!r||!n)return{};let u=await new Kt({projectId:n,apiKey:r,apiHost:t||void 0}).get(),s={};return u.quirks.map(c=>{s[c.id]={...c,value:o[c.id]}}),s},[t,r,n]),p=$t(()=>{let m={};return Object.entries(o).map(([u,s])=>m[u]={value:s,id:u,name:u}),d&&Object.entries(d).map(([u,s])=>m[u]={...s,value:o[u]}),m},[o,d]);return{loading:i,error:a,index:p}}import{css as tt}from"@emotion/react";import{Theme as ao}from"@uniformdev/design-system";function ne(){return e("style",null,`
418
418
  :root {
419
419
  --site-width: 700px;
420
420
 
@@ -424,7 +424,7 @@ to {
424
424
 
425
425
  --min-height: 450px;
426
426
  }
427
- `)}import{useEffect as Wt,useState as Yt}from"react";import{useMountedState as Jt}from"react-use";var Je=()=>{let[t,r]=Yt(!1),n=Jt();return Wt(()=>{setTimeout(()=>{n()&&r(!0)},1e3)},[n]),t?e("article",{css:h.page},e("h1",null,"Loading..."),e("p",null,"Connecting to Uniform API for complete data.")):null};import{parseQuickConnect as Xt}from"@uniformdev/context";import{ApiClientError as jt,UncachedManifestClient as eo}from"@uniformdev/context/api";import{Field as de,Form as to,Formik as oo}from"formik";import*as k from"react";import{ErrorMessage as ro,Input as no,Button as F}from"@uniformdev/design-system";function Xe(t){let[r,n]=k.useState(t.currentData?"c":"qc"),[o,i]=k.useState(void 0),[s,d]=k.useState(void 0),p=k.useCallback(async a=>{let c=new eo(a);i(void 0);try{let l=await c.get({preview:!0});return d({manifest:l,target:a}),l}catch(l){if(l instanceof jt){l.statusCode===403?i("API key is valid but does not have Context > Read Drafts permission, or the API key does not have permissions to the project, or the project does not exist."):i(l.errorMessage);return}if("message"in l){l.message==="Failed to fetch"?i("A network error occurred. Ensure the API host is valid."):i(l.message);return}i(JSON.stringify(l,null,2));return}},[]);k.useEffect(()=>{!t.currentData||p(t.currentData)},[p,t.currentData]);let m=async a=>{await p(a)&&(n("c"),await t.onConnect(a))},u=()=>{confirm("Disconnect from Uniform? Make sure to save your API key if you want to reconnect.")&&(n("qc"),d(void 0),i(void 0),t.onConnect(null))};return e("div",null,o?e(k.Fragment,null,e(ro,{message:o}),e(F,{buttonType:"secondary",type:"button",onClick:u},"Clear old/broken settings")):null,r==="qc"||r==="mc"?e(io,{...t,state:r,setState:n,onConnect:m}):e("div",null,s?e(k.Fragment,null,e("p",null,"Connected to"," ",e("a",{href:`${s==null?void 0:s.target.apiHost}/projects/${s==null?void 0:s.target.projectId}`,target:"_blank",rel:"noopener noreferrer",css:{textDecoration:"underline"}},e("strong",null,s==null?void 0:s.manifest.project.name))," ",e("small",null,"(",s==null?void 0:s.manifest.project.id,")")),e(F,{buttonType:"secondary",type:"button",onClick:u},"Disconnect")):null))}function io({setState:t,state:r,currentData:n,onConnect:o}){var i,s,d;return e("div",null,e(oo,{initialValues:{apiHost:(i=n==null?void 0:n.apiHost)!=null?i:"https://uniform.app",apiKey:(s=n==null?void 0:n.apiKey)!=null?s:"",projectId:(d=n==null?void 0:n.projectId)!=null?d:"",qc:""},onSubmit:o},({setFieldValue:p,setFieldError:m,errors:{qc:u},isSubmitting:a})=>e(to,null,e("fieldset",{css:{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}},r==="qc"?e(k.Fragment,null,e("div",null,e(no,{placeholder:"Paste Quick Connect Code Here",caption:"Copy the Quick Connect code after creating an API key in Uniform.",errorMessage:u,onChange:c=>{try{let l=Xt(c.currentTarget.value);p("apiHost",l.apiHost),p("apiKey",l.apiKey),p("projectId",l.projectId)}catch(l){m("qc",l.message)}}})),e("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(F,{type:"submit",buttonType:"primary",disabled:a},a?"Verifying...":"Connect"),e(F,{type:"button",buttonType:"ghost",onClick:()=>t("mc"),disabled:a},"Connect Manually"))):e(k.Fragment,null,e("div",null,e(de,{component:re,label:"API Key",name:"apiKey",caption:"Generate an API key in your Uniform team settings."})),e("div",null,e(de,{component:re,label:"Project ID",name:"projectId",caption:"Available to copy after generating an API key"})),e("div",null,e(de,{component:re,label:"API Host",name:"apiHost",caption:"Use a non-standard Uniform API endpoint. Most people will not not need this option."})),e("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(F,{type:"submit",buttonType:"primary",disabled:a},a?"Verifying...":"Connect"),e(F,{type:"button",buttonType:"ghost",onClick:()=>t("qc"),disabled:a},"Use Quick Connect")))))))}var je=({settings:t,saveSettings:r})=>{let n=t.apiKey&&t.projectId?{apiKey:t.apiKey,projectId:t.projectId,apiHost:t.apiHost}:void 0;return e("article",{css:h.page},e("h1",{css:h.title},"Connect to a Uniform Project"),e("p",{css:h.text},e("small",null,"Adding an API key and project ID enables human-readable dimension labels to be shown. You must have access to the Uniform project to do this.")),e(Xe,{onConnect:async o=>{o?await r({...t,apiKey:o.apiKey,projectId:o.projectId,apiHost:o.apiHost}):await r({...t,apiKey:void 0,projectId:void 0,apiHost:void 0})},currentData:n}))};var ao=et`
427
+ `)}import{useEffect as Yt,useState as Jt}from"react";import{useMountedState as Xt}from"react-use";var Xe=()=>{let[t,r]=Jt(!1),n=Xt();return Yt(()=>{setTimeout(()=>{n()&&r(!0)},1e3)},[n]),t?e("article",{css:h.page},e("h1",null,"Loading..."),e("p",null,"Connecting to Uniform API for complete data.")):null};import{parseQuickConnect as jt}from"@uniformdev/context";import{ApiClientError as eo,UncachedManifestClient as to}from"@uniformdev/context/api";import{Field as de,Form as oo,Formik as ro}from"formik";import*as k from"react";import{ErrorMessage as no,Input as io,Button as q}from"@uniformdev/design-system";function je(t){let[r,n]=k.useState(t.currentData?"c":"qc"),[o,i]=k.useState(void 0),[a,d]=k.useState(void 0),p=k.useCallback(async s=>{let c=new to(s);i(void 0);try{let l=await c.get({preview:!0});return d({manifest:l,target:s}),l}catch(l){if(l instanceof eo){l.statusCode===403?i("API key is valid but does not have Context > Read Drafts permission, or the API key does not have permissions to the project, or the project does not exist."):i(l.errorMessage);return}if("message"in l){l.message==="Failed to fetch"?i("A network error occurred. Ensure the API host is valid."):i(l.message);return}i(JSON.stringify(l,null,2));return}},[]);k.useEffect(()=>{!t.currentData||p(t.currentData)},[p,t.currentData]);let m=async s=>{await p(s)&&(n("c"),await t.onConnect(s))},u=()=>{confirm("Disconnect from Uniform? Make sure to save your API key if you want to reconnect.")&&(n("qc"),d(void 0),i(void 0),t.onConnect(null))};return e("div",null,o?e(k.Fragment,null,e(no,{message:o}),e(q,{buttonType:"secondary",type:"button",onClick:u},"Clear old/broken settings")):null,r==="qc"||r==="mc"?e(so,{...t,state:r,setState:n,onConnect:m}):e("div",null,a?e(k.Fragment,null,e("p",null,"Connected to"," ",e("a",{href:`${a==null?void 0:a.target.apiHost}/projects/${a==null?void 0:a.target.projectId}`,target:"_blank",rel:"noopener noreferrer",css:{textDecoration:"underline"}},e("strong",null,a==null?void 0:a.manifest.project.name))," ",e("small",null,"(",a==null?void 0:a.manifest.project.id,")")),e(q,{buttonType:"secondary",type:"button",onClick:u},"Disconnect")):null))}function so({setState:t,state:r,currentData:n,onConnect:o}){var i,a,d;return e("div",null,e(ro,{initialValues:{apiHost:(i=n==null?void 0:n.apiHost)!=null?i:"https://uniform.app",apiKey:(a=n==null?void 0:n.apiKey)!=null?a:"",projectId:(d=n==null?void 0:n.projectId)!=null?d:"",qc:""},onSubmit:o},({setFieldValue:p,setFieldError:m,errors:{qc:u},isSubmitting:s})=>e(oo,null,e("fieldset",{css:{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}},r==="qc"?e(k.Fragment,null,e("div",null,e(io,{placeholder:"Paste Quick Connect Code Here",caption:"Copy the Quick Connect code after creating an API key in Uniform.",errorMessage:u,onChange:c=>{try{let l=jt(c.currentTarget.value);p("apiHost",l.apiHost),p("apiKey",l.apiKey),p("projectId",l.projectId)}catch(l){m("qc",l.message)}}})),e("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(q,{type:"submit",buttonType:"primary",disabled:s},s?"Verifying...":"Connect"),e(q,{type:"button",buttonType:"ghost",onClick:()=>t("mc"),disabled:s},"Connect Manually"))):e(k.Fragment,null,e("div",null,e(de,{component:re,label:"API Key",name:"apiKey",caption:"Generate an API key in your Uniform team settings."})),e("div",null,e(de,{component:re,label:"Project ID",name:"projectId",caption:"Available to copy after generating an API key"})),e("div",null,e(de,{component:re,label:"API Host",name:"apiHost",caption:"Use a non-standard Uniform API endpoint. Most people will not not need this option."})),e("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},e(q,{type:"submit",buttonType:"primary",disabled:s},s?"Verifying...":"Connect"),e(q,{type:"button",buttonType:"ghost",onClick:()=>t("qc"),disabled:s},"Use Quick Connect")))))))}var et=({settings:t,saveSettings:r})=>{let n=t.apiKey&&t.projectId?{apiKey:t.apiKey,projectId:t.projectId,apiHost:t.apiHost}:void 0;return e("article",{css:h.page},e("h1",{css:h.title},"Connect to a Uniform Project"),e("p",{css:h.text},e("small",null,"Adding an API key and project ID enables human-readable dimension labels to be shown. You must have access to the Uniform project to do this.")),e(je,{onConnect:async o=>{o?await r({...t,apiKey:o.apiKey,projectId:o.projectId,apiHost:o.apiHost}):await r({...t,apiKey:void 0,projectId:void 0,apiHost:void 0})},currentData:n}))};var co=tt`
428
428
  background: var(--white);
429
429
  padding: var(--spacing-base);
430
430
  overflow-y: auto;
@@ -453,7 +453,7 @@ to {
453
453
  &::-webkit-scrollbar-thumb:hover {
454
454
  background: var(--gray-500);
455
455
  }
456
- `;function tt(t){let r=We(t.settings,t.state.manifest),n=Ye(t.settings,t.state.data.quirks),o={...t,dimensionIndex:r,quirksIndex:n},i=()=>{var s;if(r.loading||n.loading)return e(Je,null);if(t.settings.route&&t.settings.route.match(/overrides\/\w+/))return e(ce,{...o});switch((s=t.settings)==null?void 0:s.route){case void 0:case"/":case"/dimensions":return e(xe,{...o});case"/overrides":return e(Pe,{...o});case"/overrides/add":return e(ce,{...o});case"/quirks":return e(Ze,{...o});case"/settings":return e(_e,{...o});case"/connect":return e(je,{...o});default:return e(fe,null)}};return e(ue,{settings:t.settings,saveSettings:t.saveSettings},e(so,null),e(ne,null),e("div",{css:et`
456
+ `;function ot(t){let r=Ye(t.settings,t.state.manifest),n=Je(t.settings,t.state.data.quirks),o={...t,dimensionIndex:r,quirksIndex:n},i=()=>{var a;if(r.loading||n.loading)return e(Xe,null);if(t.settings.route&&t.settings.route.match(/overrides\/\w+/))return e(ce,{...o});switch((a=t.settings)==null?void 0:a.route){case void 0:case"/":case"/dimensions":return e(Re,{...o});case"/overrides":return e(Ie,{...o});case"/overrides/add":return e(ce,{...o});case"/quirks":return e(ze,{...o});case"/settings":return e(Ge,{...o});case"/connect":return e(et,{...o});default:return e(he,null)}};return e(ge,{settings:t.settings,saveSettings:t.saveSettings},e(ao,null),e(ne,null),e("div",{css:tt`
457
457
  display: grid;
458
458
  grid-template-columns: 200px auto;
459
459
  font-weight: var(--fs-base);
@@ -462,7 +462,7 @@ to {
462
462
  line-height: var(--base-line-height);
463
463
  height: var(--min-height);
464
464
  min-width: var(--site-width);
465
- `},e(ve,{...t}),e("main",{css:ao},e(le,{...t}),i())))}import{Context as co,createDebugConsoleLogDrain as lo}from"@uniformdev/context";import*as L from"react";var pe="embeddedUniformDevToolsSettings";function ot({context:t,initialSettings:r}){let n=t!=null?t:typeof window!="undefined"?window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__:void 0,o=n!=null?n:new co({manifest:{project:{}}}),[i,s]=L.useState({data:o.storage.data,manifest:o.manifest.data,scores:o.scores,personalizations:[],tests:[]}),[d,p]=L.useState(r!=null?r:{});L.useEffect(()=>{var l;let c=lo((l=d.logLevel)!=null?l:"none");return o.events.on("log",c),()=>{o.events.off("log",c)}},[d,o]),L.useEffect(()=>{let c=()=>{let g=window.localStorage.getItem(pe)||"{}",f=JSON.parse(g),y=oe({quirks:o.storage.data.quirks,quirkOverrides:f.quirkOverrides});y&&(console.log("Applying overridden quirks:",y),o.update({quirks:y}));let C=N({scores:o.scores,scoreOverrides:f.scoreOverrides});C.length&&(console.log("Applying overridden scores:",C),o.storage.updateData(C)),s(w=>({...w,scores:o.scores,data:o.storage.data,manifest:o.manifest.data}))},l=g=>{!g.changed||s(f=>({...f,personalizations:[...f.personalizations,g]}))},v=g=>{!g.variantAssigned||s(f=>({...f,tests:[...f.tests,g]}))};return o.events.on("personalizationResult",l),o.events.on("testResult",v),o.storage.events.on("*",c),()=>{o.storage.events.off("*",c),o.events.off("personalizationResult",l),o.events.off("testResult",v)}},[o]),L.useEffect(()=>{if(window.localStorage){let c=window.localStorage.getItem(pe);if(c)try{let l=JSON.parse(c),v={...r,...l};p(v);let g=N({scores:i.scores,scoreOverrides:v.scoreOverrides});m.rawUpdate(g)}catch(l){window.localStorage.removeItem(pe),console.error("Failed to parse settings from localStorage: ",l.message)}}},[]);let{actions:m,saveSettings:u,clearAllExtensionData:a}=L.useMemo(()=>({actions:{update:g=>o.update(g),forget:()=>o.forget(!1),rawUpdate:g=>o.storage.updateData(g)},saveSettings:async g=>{p(g),window.localStorage&&window.localStorage.setItem("embeddedUniformDevToolsSettings",JSON.stringify(g))},clearAllExtensionData:async()=>{p({route:"/"}),window.localStorage&&(window.localStorage.removeItem("embeddedUniformDevToolsSettings"),window.location.reload())}}),[o]);return n?e(tt,{state:i,actions:m,settings:d,saveSettings:u,clearAllExtensionData:a}):e("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}import{css as uo}from"@emotion/react";import*as Z from"react";import{Theme as go}from"@uniformdev/design-system";import{css as po}from"@emotion/react";var mo=po`
465
+ `},e(fe,{...t}),e("main",{css:co},e(le,{...t}),i())))}import{Context as lo,createDebugConsoleLogDrain as po}from"@uniformdev/context";import*as L from"react";var pe="embeddedUniformDevToolsSettings";function rt({context:t,initialSettings:r}){let n=t!=null?t:typeof window!="undefined"?window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__:void 0,o=n!=null?n:new lo({manifest:{project:{}}}),[i,a]=L.useState({data:o.storage.data,manifest:o.manifest.data,scores:o.scores,personalizations:[],tests:[]}),[d,p]=L.useState(r!=null?r:{});L.useEffect(()=>{var l;let c=po((l=d.logLevel)!=null?l:"none");return o.events.on("log",c),()=>{o.events.off("log",c)}},[d,o]),L.useEffect(()=>{let c=()=>{let g=window.localStorage.getItem(pe)||"{}",f=JSON.parse(g),y=oe({quirks:o.storage.data.quirks,quirkOverrides:f.quirkOverrides});y&&(console.log("Applying overridden quirks:",y),o.update({quirks:y}));let C=Z({scores:o.scores,scoreOverrides:f.scoreOverrides});C.length&&(console.log("Applying overridden scores:",C),o.storage.updateData(C)),a(w=>({...w,scores:o.scores,data:o.storage.data,manifest:o.manifest.data}))},l=g=>{!g.changed||a(f=>({...f,personalizations:[...f.personalizations,g]}))},v=g=>{!g.variantAssigned||a(f=>({...f,tests:[...f.tests,g]}))};return o.events.on("personalizationResult",l),o.events.on("testResult",v),o.storage.events.on("*",c),()=>{o.storage.events.off("*",c),o.events.off("personalizationResult",l),o.events.off("testResult",v)}},[o]),L.useEffect(()=>{if(window.localStorage){let c=window.localStorage.getItem(pe);if(c)try{let l=JSON.parse(c),v={...r,...l};p(v);let g=Z({scores:i.scores,scoreOverrides:v.scoreOverrides});m.rawUpdate(g)}catch(l){window.localStorage.removeItem(pe),console.error("Failed to parse settings from localStorage: ",l.message)}}},[]);let{actions:m,saveSettings:u,clearAllExtensionData:s}=L.useMemo(()=>({actions:{update:g=>o.update(g),forget:()=>o.forget(!1),rawUpdate:g=>o.storage.updateData(g)},saveSettings:async g=>{p(g),window.localStorage&&window.localStorage.setItem("embeddedUniformDevToolsSettings",JSON.stringify(g))},clearAllExtensionData:async()=>{p({route:"/"}),window.localStorage&&(window.localStorage.removeItem("embeddedUniformDevToolsSettings"),window.location.reload())}}),[o]);return n?e(ot,{state:i,actions:m,settings:d,saveSettings:u,clearAllExtensionData:s}):e("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}import{css as me}from"@emotion/react";import*as H from"react";import{Theme as go,Button as vo,Paragraph as fo,Callout as ho}from"@uniformdev/design-system";import{useLocalStorage as bo}from"react-use";import{css as mo}from"@emotion/react";var uo=mo`
466
466
  align-items: center;
467
467
  border-radius: var(--rounded-full);
468
468
  background: var(--brand-secondary-5);
@@ -488,11 +488,15 @@ to {
488
488
  max-width: 100%;
489
489
  height: auto;
490
490
  }
491
- `,rt=({...t})=>e("button",{type:"button",css:mo,...t},e("span",{hidden:!0},"Uniform devtools"),e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M13.325 3.05011L8.66741 20.4323L10.5993 20.9499L15.2568 3.56775L13.325 3.05011Z",fill:"currentColor"}),e("path",{d:"M7.61197 18.3608L8.97136 16.9124L8.97086 16.8933L3.87657 12.1121L8.66699 7.00798L7.20868 5.63928L1.04956 12.2017L7.61197 18.3608Z",fill:"currentColor"}),e("path",{d:"M16.388 18.3608L15.0286 16.9124L15.0291 16.8933L20.1234 12.1121L15.333 7.00798L16.7913 5.63928L22.9504 12.2017L16.388 18.3608Z",fill:"currentColor"})));function Ti(t){let[r,n]=Z.useState(!1),[o,i]=Z.useState(t.context);return Z.useEffect(()=>{!t.context&&typeof document!="undefined"&&i(window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__)},[t.context]),o?e("div",null,e(go,null),e(ne,null),e(rt,{onClick:()=>n(s=>!s)}),r?e("div",{css:uo`
491
+ `,nt=({...t})=>e("button",{type:"button",css:uo,...t},e("span",{hidden:!0},"Uniform devtools"),e("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M13.325 3.05011L8.66741 20.4323L10.5993 20.9499L15.2568 3.56775L13.325 3.05011Z",fill:"currentColor"}),e("path",{d:"M7.61197 18.3608L8.97136 16.9124L8.97086 16.8933L3.87657 12.1121L8.66699 7.00798L7.20868 5.63928L1.04956 12.2017L7.61197 18.3608Z",fill:"currentColor"}),e("path",{d:"M16.388 18.3608L15.0286 16.9124L15.0291 16.8933L20.1234 12.1121L15.333 7.00798L16.7913 5.63928L22.9504 12.2017L16.388 18.3608Z",fill:"currentColor"})));var yo="dblgnkbknchechcibdojfdoeeodhmgbd",Co="dcmlokofjljnfjcknpmhjocogllfbhkg";function Vi(t){let[r,n]=H.useState(!1),[o,i]=H.useState(t.context),[a,d]=H.useState(!1),[p,m]=bo("isUniformInlineDevtoolsDisabled",!1);return H.useEffect(()=>{!t.context&&typeof document!="undefined"&&i(window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__)},[t.context]),H.useEffect(()=>{[Co,yo].map(u=>{let s=new Image;s.src=`chrome-extension://${u}/icons/uniform-logo.png`,s.onload=()=>d(!0)})},[]),p?null:o?e("div",null,e(go,null),e(ne,null),e(nt,{onClick:()=>n(u=>!u)}),r?e("div",{css:me`
492
492
  box-shadow: var(--shadow-base);
493
493
  position: fixed;
494
494
  bottom: 82px;
495
495
  right: var(--spacing-base);
496
496
  z-index: var(--z-10);
497
497
  max-width: var(--site-width);
498
- `},e(ot,{...t})):null):e("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}export{tt as ContextDevTools,ot as EmbeddedContextDevTools,Ti as ToggleEmbeddedContextDevTools};
498
+ `},a?e("div",{css:me`
499
+ padding: var(--spacing-md);
500
+ `},e(ho,{type:"danger",title:"This functionality is disabled."},e(fo,null,"We detected you already use the Uniform Context browser extension. Using both tools is not supported. Please use the functionality of the browser extension instead."),e(vo,{css:me`
501
+ margin-top: var(--spacing-md);
502
+ `,buttonType:"secondary",onClick:()=>m(!0)},"Disabled inline tools"))):e(rt,{...t})):null):e("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}export{ot as ContextDevTools,rt as EmbeddedContextDevTools,Vi as ToggleEmbeddedContextDevTools};
package/dist/index.d.ts CHANGED
@@ -79,6 +79,6 @@ declare type EmbeddedContextDevToolsProps = {
79
79
  declare function EmbeddedContextDevTools({ context, initialSettings }: EmbeddedContextDevToolsProps): _emotion_react_types_jsx_namespace.EmotionJSX.Element;
80
80
 
81
81
  /** Renders Uniform Context DevTools in an embedded state (as a React component that can be an island on a demo page, for example) */
82
- declare function ToggleEmbeddedContextDevTools(props: EmbeddedContextDevToolsProps): _emotion_react_types_jsx_namespace.EmotionJSX.Element;
82
+ declare function ToggleEmbeddedContextDevTools(props: EmbeddedContextDevToolsProps): _emotion_react_types_jsx_namespace.EmotionJSX.Element | null;
83
83
 
84
84
  export { ContextDevTools, ContextDevToolsProps, ContextDevToolsRouteProps, DevToolsSettings, EmbeddedContextDevTools, EmbeddedContextDevToolsProps, Override, ToggleEmbeddedContextDevTools };
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
- "use strict";var Mt=Object.create;var K=Object.defineProperty;var Et=Object.getOwnPropertyDescriptor;var At=Object.getOwnPropertyNames;var Bt=Object.getPrototypeOf,Qt=Object.prototype.hasOwnProperty;var Ft=(t,r)=>{for(var n in r)K(t,n,{get:r[n],enumerable:!0})},Me=(t,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of At(r))!Qt.call(t,i)&&i!==n&&K(t,i,{get:()=>r[i],enumerable:!(o=Et(r,i))||o.enumerable});return t};var O=(t,r,n)=>(n=t!=null?Mt(Bt(t)):{},Me(r||!t||!t.__esModule?K(n,"default",{value:t,enumerable:!0}):n,t)),qt=t=>Me(K({},"__esModule",{value:!0}),t);var so={};Ft(so,{ContextDevTools:()=>Pe,EmbeddedContextDevTools:()=>He,ToggleEmbeddedContextDevTools:()=>io});module.exports=qt(so);var e=require("@emotion/react"),b=O(require("react"));var S=require("@emotion/react");var W=require("react"),Ee=(0,W.createContext)({settings:{},saveSettings:()=>{}}),Y=()=>(0,W.useContext)(Ee),Ae=({children:t,settings:r,saveSettings:n})=>(0,e.jsx)(Ee.Provider,{value:{settings:r,saveSettings:n}},t);var Nt=({route:t,children:r,className:n})=>{let{settings:o,saveSettings:i}=Y();return(0,e.jsx)("a",{href:"",className:n,onClick:s=>{s.preventDefault(),i({...o,route:t})}},r)},q=Nt;var Be=require("@emotion/react"),Qe=()=>{var n;let t=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"&&((n=chrome==null?void 0:chrome.runtime)==null?void 0:n.getManifest()),r=t?t==null?void 0:t.version:"DEV";return(0,e.jsx)("div",{css:Be.css`
1
+ "use strict";var Et=Object.create;var W=Object.defineProperty;var At=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var Qt=Object.getPrototypeOf,Ft=Object.prototype.hasOwnProperty;var qt=(t,r)=>{for(var n in r)W(t,n,{get:r[n],enumerable:!0})},Ae=(t,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Bt(r))!Ft.call(t,i)&&i!==n&&W(t,i,{get:()=>r[i],enumerable:!(o=At(r,i))||o.enumerable});return t};var O=(t,r,n)=>(n=t!=null?Et(Qt(t)):{},Ae(r||!t||!t.__esModule?W(n,"default",{value:t,enumerable:!0}):n,t)),Nt=t=>Ae(W({},"__esModule",{value:!0}),t);var lo={};qt(lo,{ContextDevTools:()=>He,EmbeddedContextDevTools:()=>Ee,ToggleEmbeddedContextDevTools:()=>co});module.exports=Nt(lo);var e=require("@emotion/react"),b=O(require("react"));var S=require("@emotion/react");var Y=require("react"),Be=(0,Y.createContext)({settings:{},saveSettings:()=>{}}),J=()=>(0,Y.useContext)(Be),Qe=({children:t,settings:r,saveSettings:n})=>(0,e.jsx)(Be.Provider,{value:{settings:r,saveSettings:n}},t);var Zt=({route:t,children:r,className:n})=>{let{settings:o,saveSettings:i}=J();return(0,e.jsx)("a",{href:"",className:n,onClick:a=>{a.preventDefault(),i({...o,route:t})}},r)},Z=Zt;var Fe=require("@emotion/react"),qe=()=>{var n;let t=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"&&((n=chrome==null?void 0:chrome.runtime)==null?void 0:n.getManifest()),r=t?t==null?void 0:t.version:"DEV";return(0,e.jsx)("div",{css:Fe.css`
2
2
  font-size: var(--fs-sm);
3
3
  color: var(--gray-400);
4
4
  position: absolute;
5
5
  bottom: 2px;
6
6
  right: 5px;
7
- `},`v${r}`)};var Zt=[{title:"Dimensions",href:"/dimensions",icon:`<svg
7
+ `},`v${r}`)};var zt=[{title:"Dimensions",href:"/dimensions",icon:`<svg
8
8
  width="24"
9
9
  height="24"
10
10
  viewBox="0 0 24 24"
@@ -42,11 +42,11 @@
42
42
  </svg>`},{title:"Settings",href:"/settings",icon:`<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
43
43
  <path d="M19.1469 12.716C19.1986 12.2636 19.201 11.8069 19.1539 11.354L21.7429 9.474C21.8681 9.3822 21.9548 9.24723 21.9862 9.0952C22.0176 8.94316 21.9915 8.78489 21.9129 8.651L19.9939 5.399C19.9182 5.26986 19.7985 5.17231 19.6568 5.1242C19.515 5.07608 19.3606 5.08063 19.2219 5.137L16.3599 6.292C15.9237 5.9578 15.4502 5.67525 14.9489 5.45L14.5739 2.545C14.5547 2.39441 14.4813 2.25598 14.3673 2.15566C14.2534 2.05534 14.1068 1.99999 13.9549 2H10.0859C9.93402 1.99997 9.78728 2.05527 9.67317 2.15558C9.55906 2.25588 9.48539 2.39432 9.46595 2.545L9.09395 5.433C8.63957 5.63249 8.20723 5.87882 7.80395 6.168L5.00895 4.954C4.87173 4.89484 4.71787 4.88672 4.57519 4.9311C4.4325 4.97549 4.3104 5.06945 4.23095 5.196L2.22195 8.398C2.1396 8.52998 2.10934 8.68789 2.13707 8.84096C2.1648 8.99403 2.24854 9.1313 2.37195 9.226L4.86795 11.142C4.83172 11.4266 4.81302 11.7131 4.81195 12C4.81195 12.18 4.82095 12.362 4.83795 12.558L2.26495 14.375C2.13766 14.4647 2.04844 14.5987 2.01478 14.7508C1.98112 14.9028 2.00543 15.0619 2.08295 15.197L3.95695 18.474C4.11095 18.742 4.43695 18.857 4.72595 18.746L7.56095 17.644C8.00795 17.997 8.49195 18.294 9.00795 18.53L9.33795 21.396C9.37495 21.709 9.63795 21.946 9.95195 21.95L13.8169 22H13.8249C14.1349 22 14.3989 21.771 14.4439 21.463L14.8549 18.59C15.3703 18.3674 15.8579 18.0855 16.3079 17.75L19.1279 18.93C19.4129 19.05 19.7419 18.944 19.9029 18.679L21.8669 15.452C21.9477 15.319 21.976 15.1608 21.9464 15.0081C21.9168 14.8554 21.8315 14.7192 21.7069 14.626L19.1469 12.716ZM11.9999 15C10.3459 15 8.99995 13.655 8.99995 12C8.99995 10.346 10.3449 9 11.9999 9C13.6539 9 14.9999 10.345 14.9999 12C14.9999 13.654 13.6539 15 11.9999 15Z" fill="white"/>
44
44
  </svg>
45
- `}],zt=`<svg width="24" height="24" fill="white" viewBox="0 0 122.88 116.67" xmlns="http://www.w3.org/2000/svg">
45
+ `}],Ut=`<svg width="24" height="24" fill="white" viewBox="0 0 122.88 116.67" xmlns="http://www.w3.org/2000/svg">
46
46
  <g>
47
47
  <path d="M84.55,116.66c2.49,0,4.53-1.99,4.53-4.41V88.08c1.55-13.03,7.27-9.16,14-5.13 c16.27,9.74,27.08-15.88,13.93-23.78c-10.32-6.2-14.79,4.46-22.35,3.36c-2.92-0.43-4.95-3.5-5.59-8.17V36.9 c0-2.43-2.04-4.41-4.53-4.41H63.73c-17.18-2.12-1.93-11.37-1.93-19.98C61.81,5.6,55.38,0,47.45,0c-7.92,0-15.19,5.6-15.19,12.51 c0,8.12,15.78,17.86-1.64,19.98H4.53C2.04,32.49,0,34.47,0,36.9v17.42c1.33,7.43,6.49,9.15,13.1,4.25 c2.23-1.66,5.99-3.59,8.71-3.59c7.09,0,12.85,6.25,12.85,13.96S28.91,84.6,21.81,84.6c-2.53,0-4.89-0.8-6.89-2.19 c0,0.59-12.4-10.85-14.92,3.15v26.71c0,2.43,2.04,4.41,4.53,4.41c13.97,0,27.92,0,41.88-0.01c0.55-2.55-1.24-5.47-2.92-8 c-13.22-19.93,38.21-21.92,24.99,0.62c-0.65,1.11-1.3,2.19-1.8,3.24c-0.63,1.31-1.05,2.91-0.96,4.14L84.55,116.66L84.55,116.66z"></path>
48
48
  </g>
49
- </svg>`,Fe=({...t})=>{var o,i;let r=s=>{var p;let d="active";return!((p=t.settings)!=null&&p.route)&&s==="/dimensions"||t.settings.route===s?d:""},n=Boolean(typeof window!="undefined"&&((i=(o=window.chrome)==null?void 0:o.runtime)==null?void 0:i.id));return(0,e.jsx)("nav",{css:S.css`
49
+ </svg>`,Ne=({...t})=>{var o,i;let r=a=>{var p;let d="active";return!((p=t.settings)!=null&&p.route)&&a==="/dimensions"||t.settings.route===a?d:""},n=Boolean(typeof window!="undefined"&&((i=(o=window.chrome)==null?void 0:o.runtime)==null?void 0:i.id));return(0,e.jsx)("nav",{css:S.css`
50
50
  background: var(--brand-secondary-1);
51
51
  padding: var(--spacing-base) var(--spacing-base) var(--spacing-md);
52
52
  min-width: 200px;
@@ -64,7 +64,7 @@
64
64
  margin: 0;
65
65
  list-style-type: none;
66
66
  flex-grow: 1;
67
- `},Zt.map((s,d)=>{var m,u,a,c;let p=0;return s.href==="/overrides"&&Object.keys((m=t.settings.scoreOverrides)!=null?m:{}).length>0&&(p=Object.keys((u=t.settings.scoreOverrides)!=null?u:{}).length),s.href==="/quirks"&&Object.keys((a=t.settings.quirkOverrides)!=null?a:{}).length>0&&(p=Object.keys((c=t.settings.quirkOverrides)!=null?c:{}).length),(0,e.jsx)("li",{css:S.css`
67
+ `},zt.map((a,d)=>{var m,u,s,c;let p=0;return a.href==="/overrides"&&Object.keys((m=t.settings.scoreOverrides)!=null?m:{}).length>0&&(p=Object.keys((u=t.settings.scoreOverrides)!=null?u:{}).length),a.href==="/quirks"&&Object.keys((s=t.settings.quirkOverrides)!=null?s:{}).length>0&&(p=Object.keys((c=t.settings.quirkOverrides)!=null?c:{}).length),(0,e.jsx)("li",{css:S.css`
68
68
  padding: 0;
69
69
  margin: 0;
70
70
  list-style-type: none;
@@ -72,7 +72,7 @@
72
72
  &:last-of-type {
73
73
  margin-top: auto;
74
74
  }
75
- `,key:d},(0,e.jsx)(q,{css:S.css`
75
+ `,key:d},(0,e.jsx)(Z,{css:S.css`
76
76
  align-items: center;
77
77
  border-radius: var(--rounded-base);
78
78
  display: flex;
@@ -86,10 +86,10 @@
86
86
  &.active {
87
87
  background: var(--gray-700);
88
88
  }
89
- `,className:r(s.href),route:s.href},(0,e.jsx)("i",{css:S.css`
89
+ `,className:r(a.href),route:a.href},(0,e.jsx)("i",{css:S.css`
90
90
  align-items: center;
91
91
  display: flex;
92
- `,dangerouslySetInnerHTML:{__html:s.icon}}),s.title,p?(0,e.jsx)("span",{css:S.css`
92
+ `,dangerouslySetInnerHTML:{__html:a.icon}}),a.title,p?(0,e.jsx)("span",{css:S.css`
93
93
  font-size: var(--fs-xxs);
94
94
  display: inline-block;
95
95
  width: 12px;
@@ -116,11 +116,11 @@
116
116
  `,rel:"noreferrer"},(0,e.jsx)("i",{css:S.css`
117
117
  align-items: center;
118
118
  display: flex;
119
- `,dangerouslySetInnerHTML:{__html:zt}}),"Install Chrome Extension"),(0,e.jsx)(Qe,null))};var qe=()=>(0,e.jsx)("article",null,(0,e.jsx)("h1",null,"Something when wrong"),(0,e.jsx)("p",null,"We could not find the page you're looking for."));var le=O(require("react"));var E=require("@emotion/react"),J=O(require("react")),Ne=(0,E.css)({willChange:"height"}),Ut=E.css`
119
+ `,dangerouslySetInnerHTML:{__html:Ut}}),"Install Chrome Extension"),(0,e.jsx)(qe,null))};var Ze=()=>(0,e.jsx)("article",null,(0,e.jsx)("h1",null,"Something when wrong"),(0,e.jsx)("p",null,"We could not find the page you're looking for."));var de=O(require("react"));var A=require("@emotion/react"),X=O(require("react")),ze=(0,A.css)({willChange:"height"}),_t=A.css`
120
120
  border-bottom: 2px solid var(--brand-secondary-1);
121
121
  font-size: var(--fs-base);
122
122
  margin: 0;
123
- `,_t=E.css`
123
+ `,Gt=A.css`
124
124
  align-items: center;
125
125
  border: none;
126
126
  background: none;
@@ -130,13 +130,13 @@
130
130
  padding: var(--spacing-sm) 0;
131
131
  font-weight: var(--fw-bold);
132
132
  justify-content: space-between;
133
- `,Gt=E.css`
133
+ `,$t=A.css`
134
134
  align-self: center;
135
- `,$t=E.css`
135
+ `,Kt=A.css`
136
136
  transform: rotate(-180deg);
137
- `,X=({children:t})=>(0,e.jsx)("div",{css:[Ne]},t),j=({title:t,children:r})=>{let[n,o]=J.useState(!1),i=t.split(" ").join("-").toLocaleLowerCase();return(0,e.jsx)(J.Fragment,null,(0,e.jsx)("h3",{css:Ut},(0,e.jsx)("button",{"aria-expanded":n,css:_t,title:t,id:i,"aria-controls":`${i}-section`,onClick:()=>o(s=>!s),type:"button"},t,(0,e.jsx)("i",{css:[Gt,n?$t:void 0]},(0,e.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.jsx)("path",{d:"M6.34317 7.75732L4.92896 9.17154L12 16.2426L19.0711 9.17157L17.6569 7.75735L12 13.4142L6.34317 7.75732Z",fill:"currentColor"}))))),(0,e.jsx)("div",{id:`${i}-section`,css:[Ne,E.css`
137
+ `,j=({children:t})=>(0,e.jsx)("div",{css:[ze]},t),ee=({title:t,children:r})=>{let[n,o]=X.useState(!1),i=t.split(" ").join("-").toLocaleLowerCase();return(0,e.jsx)(X.Fragment,null,(0,e.jsx)("h3",{css:_t},(0,e.jsx)("button",{"aria-expanded":n,css:Gt,title:t,id:i,"aria-controls":`${i}-section`,onClick:()=>o(a=>!a),type:"button"},t,(0,e.jsx)("i",{css:[$t,n?Kt:void 0]},(0,e.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.jsx)("path",{d:"M6.34317 7.75732L4.92896 9.17154L12 16.2426L19.0711 9.17157L17.6569 7.75735L12 13.4142L6.34317 7.75732Z",fill:"currentColor"}))))),(0,e.jsx)("div",{id:`${i}-section`,css:[ze,A.css`
138
138
  padding: var(--spacing-sm) 0;
139
- `],role:"region","aria-labelledby":i},n?r:null))};var A=require("@emotion/react"),ee=A.css`
139
+ `],role:"region","aria-labelledby":i},n?r:null))};var B=require("@emotion/react"),te=B.css`
140
140
  background-color: var(--gray-100);
141
141
  padding: var(--spacing-base) var(--spacing-md);
142
142
  margin: var(--spacing-base) 0;
@@ -144,21 +144,21 @@
144
144
  &:first-of-type {
145
145
  margin: 0 0 var(--spacing-base);
146
146
  }
147
- `,Ze=A.css`
147
+ `,Ue=B.css`
148
148
  background: var(--gray-100)
149
149
  url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%0A%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M9 2C8.44771 2 8 2.44772 8 3V5C8 5.55228 8.44771 6 9 6C9.55229 6 10 5.55228 10 5V3C10 2.44772 9.55229 2 9 2ZM8 9H16V11C16 13.2091 14.2091 15 12 15C9.79086 15 8 13.2091 8 11V9ZM13 16.917C15.8377 16.441 18 13.973 18 11V7H6V11C6 13.973 8.16229 16.441 11 16.917V22C11 22.5523 11.4477 23 12 23C12.5523 23 13 22.5523 13 22V16.917ZM14 3C14 2.44772 14.4477 2 15 2C15.5523 2 16 2.44772 16 3V5C16 5.55228 15.5523 6 15 6C14.4477 6 14 5.55228 14 5V3Z' fill='%232ecdb4' /%3E%3C/svg%3E")
150
150
  no-repeat var(--spacing-sm) var(--spacing-base);
151
151
  padding: var(--spacing-base) var(--spacing-xl);
152
- `,te=A.css`
152
+ `,oe=B.css`
153
153
  color: var(--brand-secondary-1);
154
154
  margin: 0;
155
155
  font-size: var(--fs-base);
156
156
  font-weight: var(--fw-bold);
157
- `,oe=A.css`
157
+ `,re=B.css`
158
158
  color: var(--brand-secondary-1);
159
159
  margin: var(--spacing-xs) 0 0;
160
160
  font-size: var(--fs-sm);
161
- `,ze=A.css`
161
+ `,_e=B.css`
162
162
  align-items: center;
163
163
  border: none;
164
164
  background: transparent
@@ -178,11 +178,11 @@
178
178
  &:hover {
179
179
  opacity: 0.6;
180
180
  }
181
- `,re=A.css`
181
+ `,ne=B.css`
182
182
  display: flex;
183
183
  margin: var(--spacing-sm) 0 0;
184
184
  gap: var(--spacing-base);
185
- `;var N=({title:t,text:r,buttonGroup:n,children:o})=>(0,e.jsx)("div",{css:ee},(0,e.jsx)("h2",{css:te},t),(0,e.jsx)("p",{css:oe},r),o,n?(0,e.jsx)("div",{css:re},n):null);var k=require("@emotion/react"),Kt=k.keyframes`from {
185
+ `;var z=({title:t,text:r,buttonGroup:n,children:o})=>(0,e.jsx)("div",{css:te},(0,e.jsx)("h2",{css:oe},t),(0,e.jsx)("p",{css:re},r),o,n?(0,e.jsx)("div",{css:ne},n):null);var k=require("@emotion/react"),Wt=k.keyframes`from {
186
186
  transform: scale(1);
187
187
  }
188
188
  to {
@@ -222,7 +222,7 @@ to {
222
222
  position: absolute;
223
223
  right: var(--spacing-base);
224
224
  bottom: var(--spacing-base);
225
- animation: 0.5s 2 alternate ${Kt};
225
+ animation: 0.5s 2 alternate ${Wt};
226
226
  `,cancelButton:k.css`
227
227
  position: absolute;
228
228
  left: calc(200px + var(--spacing-base));
@@ -238,47 +238,47 @@ to {
238
238
  input {
239
239
  padding: var(--spacing-sm);
240
240
  }
241
- `};var L=require("@emotion/react"),ne=({children:t})=>(0,e.jsx)("table",{css:L.css`
241
+ `};var L=require("@emotion/react"),ie=({children:t})=>(0,e.jsx)("table",{css:L.css`
242
242
  border-collapse: collapse;
243
243
  display: table;
244
244
  width: 100%;
245
245
  font-size: var(--fs-sm);
246
- `},t),Ue=({children:t})=>(0,e.jsx)("thead",{css:L.css`
246
+ `},t),Ge=({children:t})=>(0,e.jsx)("thead",{css:L.css`
247
247
  background: var(--gray-50);
248
248
  text-align: left;
249
249
  & tr {
250
250
  border-bottom: 1px solid var(--gray-200);
251
251
  }
252
- `},t),ie=({children:t})=>(0,e.jsx)("tbody",null,t),U=({border:t,children:r})=>(0,e.jsx)("tr",{css:t?L.css`
252
+ `},t),se=({children:t})=>(0,e.jsx)("tbody",null,t),G=({border:t,children:r})=>(0,e.jsx)("tr",{css:t?L.css`
253
253
  border-bottom: 1px solid var(--gray-200);
254
254
  &:where(:last-child) {
255
255
  border: none;
256
256
  }
257
- `:void 0},r),se=({children:t,width:r})=>(0,e.jsx)("th",{css:L.css`
257
+ `:void 0},r),ae=({children:t,width:r})=>(0,e.jsx)("th",{css:L.css`
258
258
  outline: none;
259
259
  padding: var(--spacing-sm);
260
260
  width: ${r!=null?r:"auto"};
261
- `},t);function Wt(t){switch(t){case"light":return L.css`
261
+ `},t);function Yt(t){switch(t){case"light":return L.css`
262
262
  color: var(--gray-400);
263
263
  `;case"dark":return L.css`
264
264
  color: var(--brand-secondary-1);
265
- `}}function Yt(t){return L.css`
265
+ `}}function Jt(t){return L.css`
266
266
  text-align: ${t};
267
267
  `}var R=({alignment:t="left",border:r,color:n="dark",children:o})=>(0,e.jsx)("td",{css:[L.css`
268
268
  padding: var(--spacing-base);
269
269
  max-width: 180px;
270
270
  overflow-wrap: break-word;
271
271
  position: relative;
272
- `,Wt(n),Yt(t),r?L.css`
272
+ `,Yt(n),Jt(t),r?L.css`
273
273
  border-left: 1px solid var(--gray-200);
274
- `:void 0]},o);var ae=require("@emotion/react"),_e=ae.css`
274
+ `:void 0]},o);var ce=require("@emotion/react"),$e=ce.css`
275
275
  position: relative;
276
276
  display: inline-block;
277
277
  font-size: var(--fs-base);
278
- `,Ge=ae.css`
278
+ `,Ke=ce.css`
279
279
  display: block;
280
280
  text-decoration: line-through;
281
- `,$e=ae.css`
281
+ `,We=ce.css`
282
282
  position: absolute;
283
283
  width: 6px;
284
284
  height: 6px;
@@ -286,26 +286,26 @@ to {
286
286
  top: 9px;
287
287
  background: var(--red-tooltip);
288
288
  border-radius: 3px;
289
- `;var We=require("@emotion/react"),Jt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
289
+ `;var Je=require("@emotion/react"),Xt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
290
290
  <path d="M4.2 7.2C4.53137 7.2 4.8 6.93137 4.8 6.6C4.8 6.26863 4.53137 6 4.2 6C3.86863 6 3.6 6.26863 3.6 6.6C3.6 6.93137 3.86863 7.2 4.2 7.2Z" fill="#828282"/>
291
291
  <path d="M8.4 6.6C8.4 6.93137 8.13137 7.2 7.8 7.2C7.46863 7.2 7.2 6.93137 7.2 6.6C7.2 6.26863 7.46863 6 7.8 6C8.13137 6 8.4 6.26863 8.4 6.6Z" fill="#828282"/>
292
292
  <path fill-rule="evenodd" clip-rule="evenodd" d="M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM6 10.8C8.65097 10.8 10.8 8.65097 10.8 6C10.8 5.49824 10.723 5.01447 10.5802 4.55984C10.0795 4.69533 9.55274 4.76763 9.00913 4.76763C6.77526 4.76763 4.82652 3.54683 3.79366 1.73601C2.25282 2.53492 1.2 4.14451 1.2 6C1.2 8.65097 3.34903 10.8 6 10.8Z" fill="#828282"/>
293
- </svg>`,Xt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
293
+ </svg>`,jt=`<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
294
294
  <path fill-rule="evenodd" clip-rule="evenodd" d="M3.59995 5.05775C4.9254 5.05775 5.99992 3.98325 5.99992 2.65778C5.99992 1.33232 4.9254 0.257812 3.59995 0.257812C2.27448 0.257812 1.19998 1.33232 1.19998 2.65778C1.19998 3.98325 2.27448 5.05775 3.59995 5.05775ZM3.59999 3.85777C4.26272 3.85777 4.79997 3.32052 4.79997 2.65778C4.79997 1.99505 4.26272 1.4578 3.59999 1.4578C2.93725 1.4578 2.4 1.99505 2.4 2.65778C2.4 3.32052 2.93725 3.85777 3.59999 3.85777Z" fill="#828282"/>
295
295
  <path d="M5.39993 6.8577C5.73131 6.8577 5.99993 7.12632 5.99993 7.45769V11.0576H7.19991V7.45769C7.19991 6.46356 6.39406 5.65771 5.39993 5.65771H1.79998C0.80588 5.65771 0 6.46356 0 7.45769V11.0576H1.19999V7.45769C1.19999 7.12632 1.46861 6.8577 1.79998 6.8577H5.39993Z" fill="#828282"/>
296
296
  <path d="M11.9999 5.05762H8.3999V6.2576H11.9999V5.05762Z" fill="#828282"/>
297
297
  <path d="M8.3999 7.45752H11.9999V8.6575H8.3999V7.45752Z" fill="#828282"/>
298
298
  <path d="M11.9999 2.65771H8.3999V3.8577H11.9999V2.65771Z" fill="#828282"/>
299
- </svg>`,Ke=`<svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
299
+ </svg>`,Ye=`<svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
300
300
  <path fill-rule="evenodd" clip-rule="evenodd" d="M7.113 3.12646C8.16729 3.12646 9.02195 3.98113 9.02195 5.03541C9.02195 5.86658 8.49075 6.57368 7.74932 6.83573V10.1259H6.47669V6.83573C5.73526 6.57368 5.20405 5.86658 5.20405 5.03541C5.20405 3.98113 6.05872 3.12646 7.113 3.12646ZM7.113 4.39909C7.46443 4.39909 7.74932 4.68398 7.74932 5.03541C7.74932 5.38684 7.46443 5.67172 7.113 5.67172C6.76158 5.67172 6.47669 5.38684 6.47669 5.03541C6.47669 4.68398 6.76158 4.39909 7.113 4.39909Z" fill="#828282"/>
301
301
  <path d="M3.96336 1.88578C3.15733 2.69183 2.65879 3.80537 2.65879 5.03535C2.65879 6.42093 3.29145 7.65875 4.28366 8.47569L5.1895 7.56984C4.42501 6.98876 3.93142 6.06969 3.93142 5.03535C3.93142 4.1568 4.28752 3.36142 4.86325 2.78567L3.96336 1.88578Z" fill="#828282"/>
302
302
  <path d="M9.36269 2.7856C9.93846 3.36136 10.2946 4.15676 10.2946 5.03535C10.2946 6.06973 9.80096 6.98882 9.03643 7.5699L9.94228 8.47575C10.9345 7.65881 11.5672 6.42096 11.5672 5.03535C11.5672 3.80533 11.0687 2.69177 10.2626 1.88571L9.36269 2.7856Z" fill="#828282"/>
303
303
  <path d="M0.113525 5.03534C0.113525 3.10251 0.896953 1.35266 2.16359 0.0860049L3.06347 0.985892C2.02714 2.02224 1.38616 3.45394 1.38616 5.03534C1.38616 6.61674 2.02714 8.04844 3.06347 9.08479L2.16358 9.98468C0.89695 8.71802 0.113525 6.96817 0.113525 5.03534Z" fill="#828282"/>
304
304
  <path d="M12.0624 9.98474C13.329 8.71809 14.1125 6.96821 14.1125 5.03534C14.1125 3.10248 13.329 1.3526 12.0624 0.0859375L11.1625 0.985824C12.1988 2.02218 12.8398 3.4539 12.8398 5.03534C12.8398 6.61678 12.1988 8.0485 11.1625 9.08486L12.0624 9.98474Z" fill="#828282"/>
305
- </svg>`,Ye=({type:t})=>{let r="";switch(t){case"Audience":r=Jt;break;case"Signal":r=Ke;break;case"Intent":r=Ke;break;case"Enrichment":r=Xt;break}return(0,e.jsx)("i",{css:We.css`
305
+ </svg>`,Xe=({type:t})=>{let r="";switch(t){case"Audience":r=Xt;break;case"Signal":r=Ye;break;case"Intent":r=Ye;break;case"Enrichment":r=jt;break}return(0,e.jsx)("i",{css:Je.css`
306
306
  align-items: center;
307
307
  display: inline-block;
308
- `,dangerouslySetInnerHTML:{__html:r}})};var jt=({dimensionIndex:t,dimensions:r,disableEditOverride:n,onClick:o,preemptiveOverrides:i})=>{var p;let{settings:s}=Y(),d=(p=i!=null?i:s.scoreOverrides)!=null?p:{};return(0,e.jsx)(ne,null,(0,e.jsx)(ie,null,Object.entries(r).sort(([m],[u])=>m.localeCompare(u)).map(([m,u])=>{var f;let{dim:a,name:c,type:l,category:v}=(f=t[m])!=null?f:{name:m,dim:m,type:void 0,category:void 0},g=d[a];return(0,e.jsx)(U,{key:a},(0,e.jsx)(R,null,g!==void 0?(0,e.jsx)("s",{css:Ge},g.initial):null,(0,e.jsx)("b",{css:_e},u,g!==void 0&&(0,e.jsx)("i",{css:$e}))),(0,e.jsx)(R,null,(0,e.jsx)("div",{onClick:()=>o==null?void 0:o(a),css:o?{cursor:"pointer"}:void 0},(0,e.jsx)("span",{css:h.divider,role:"presentation"}),(0,e.jsx)("div",null,(0,e.jsx)(Ye,{type:l})," ",l),(0,e.jsx)("strong",null,v?`${v}:`:""," ",c))),(0,e.jsx)(R,{alignment:"right",color:"light"},g!==void 0&&!n?(0,e.jsx)(q,{route:`/overrides/${a}`},"Edit override"):null))})))},B=jt;async function ce({actions:t,saveSettings:r,scores:n,settings:o}){var p,m;let i=(p=o.scoreOverrides)!=null?p:{},s={...i},d=[];for(let u of Object.keys(i)){let a=i==null?void 0:i[u];delete s[u],d.push({type:"modscoreS",data:{dimension:u,delta:a.initial-((m=n[u])!=null?m:0)}})}await r({...o,scoreOverrides:s}),await t.rawUpdate(d)}async function Je({quirk:t,settings:r,saveSettings:n,actions:o}){var d;let i=(d=r.quirkOverrides)==null?void 0:d[t];if(!i)return;let s={...r.quirkOverrides};delete s[t],await n({...r,quirkOverrides:s}),await o.rawUpdate([{type:"setquirk",data:{key:t,value:i.initial}}])}var we=require("@uniformdev/design-system"),Xe=require("@uniformdev/design-system"),je=({dimensionIndex:{index:t},state:{scores:r,data:n},actions:o,saveSettings:i,settings:s})=>{let d=le.useMemo(()=>{let a={};return Object.keys(t).filter(c=>!r[c]).map(c=>{a[t[c].dim]=0}),a},[r,t]),p=Object.keys(r).length,m=p+Object.keys(d).length,u=()=>{o.rawUpdate([{type:"setcontrol",data:!n.controlGroup}])};return(0,e.jsx)(le.Fragment,null,(0,e.jsx)("article",{css:h.page},(0,e.jsx)("div",{css:h.headingGroup},(0,e.jsx)("h2",{css:h.title},"Dimensions",(0,e.jsx)("small",null,p," active of ",m)),(0,e.jsx)("div",{css:h.reset},(0,e.jsx)(we.Button,{buttonType:"ghost",onClick:()=>ce({actions:o,saveSettings:i,scores:r,settings:s}).then(o.forget)},"clear all dimensions")),(0,e.jsx)(Xe.Switch,{name:"controlGroup",label:"Control Group",onChange:u,checked:n.controlGroup})),p>0?(0,e.jsx)(B,{dimensionIndex:t,dimensions:r}):(0,e.jsx)(N,{title:n.controlGroup?"In control group":"No active dimensions",text:n.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have score in any dimensions yet.",buttonGroup:n.controlGroup?(0,e.jsx)(we.Button,{buttonType:"secondary",onClick:u},"Exit control group"):null}),(0,e.jsx)(X,null,(0,e.jsx)(j,{title:`Inactive Dimensions (${Object.keys(d).length})`},(0,e.jsx)(B,{dimensionIndex:t,dimensions:d})))))};var et=O(require("react"));var tt=require("@uniformdev/design-system");var ke=require("@uniformdev/design-system"),ot=({dimensionIndex:{index:t},state:{data:r,scores:n},actions:o,settings:i,saveSettings:s})=>{var c;let d=(c=i.scoreOverrides)!=null?c:{},p=Object.keys(d).length,m=l=>(l==null||l.preventDefault(),s({...i,route:"/overrides/add"})),u=()=>{o.rawUpdate([{type:"setcontrol",data:!r.controlGroup}])},a={};return Object.entries(n).map(([l,v])=>{d[l]!==void 0&&(a[l]=v)}),(0,e.jsx)(et.Fragment,null,(0,e.jsx)("article",{css:h.page},(0,e.jsx)("div",{css:h.headingGroup},(0,e.jsx)("h2",{css:h.title},"What if?"),(0,e.jsx)("div",{css:h.reset},(0,e.jsx)(ke.Button,{buttonType:"ghost",onClick:()=>ce({actions:o,settings:i,saveSettings:s,scores:n})},"delete all overrides")),(0,e.jsx)(tt.AddButton,{onClick:m})),(0,e.jsx)("p",null,"Override dimension scores to test personalization"),p>0?(0,e.jsx)(B,{dimensionIndex:t,dimensions:a,onClick:l=>s({...i,route:`/overrides/${l}`})}):(0,e.jsx)(N,{title:r.controlGroup?"In control group":"No overrides",text:r.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have any dimension overrides yet.",buttonGroup:r.controlGroup?(0,e.jsx)(ke.Button,{buttonType:"secondary",onClick:u},"Exit control group"):null})))};var Q=require("formik");var z=O(require("yup"));var V=require("@emotion/react"),rt=V.css`
308
+ `,dangerouslySetInnerHTML:{__html:r}})};var eo=({dimensionIndex:t,dimensions:r,disableEditOverride:n,onClick:o,preemptiveOverrides:i})=>{var p;let{settings:a}=J(),d=(p=i!=null?i:a.scoreOverrides)!=null?p:{};return(0,e.jsx)(ie,null,(0,e.jsx)(se,null,Object.entries(r).sort(([m],[u])=>m.localeCompare(u)).map(([m,u])=>{var f;let{dim:s,name:c,type:l,category:v}=(f=t[m])!=null?f:{name:m,dim:m,type:void 0,category:void 0},g=d[s];return(0,e.jsx)(G,{key:s},(0,e.jsx)(R,null,g!==void 0?(0,e.jsx)("s",{css:Ke},g.initial):null,(0,e.jsx)("b",{css:$e},u,g!==void 0&&(0,e.jsx)("i",{css:We}))),(0,e.jsx)(R,null,(0,e.jsx)("div",{onClick:()=>o==null?void 0:o(s),css:o?{cursor:"pointer"}:void 0},(0,e.jsx)("span",{css:h.divider,role:"presentation"}),(0,e.jsx)("div",null,(0,e.jsx)(Xe,{type:l})," ",l),(0,e.jsx)("strong",null,v?`${v}:`:""," ",c))),(0,e.jsx)(R,{alignment:"right",color:"light"},g!==void 0&&!n?(0,e.jsx)(Z,{route:`/overrides/${s}`},"Edit override"):null))})))},Q=eo;async function le({actions:t,saveSettings:r,scores:n,settings:o}){var p,m;let i=(p=o.scoreOverrides)!=null?p:{},a={...i},d=[];for(let u of Object.keys(i)){let s=i==null?void 0:i[u];delete a[u],d.push({type:"modscoreS",data:{dimension:u,delta:s.initial-((m=n[u])!=null?m:0)}})}await r({...o,scoreOverrides:a}),await t.rawUpdate(d)}async function je({quirk:t,settings:r,saveSettings:n,actions:o}){var d;let i=(d=r.quirkOverrides)==null?void 0:d[t];if(!i)return;let a={...r.quirkOverrides};delete a[t],await n({...r,quirkOverrides:a}),await o.rawUpdate([{type:"setquirk",data:{key:t,value:i.initial}}])}var Te=require("@uniformdev/design-system"),et=require("@uniformdev/design-system"),tt=({dimensionIndex:{index:t},state:{scores:r,data:n},actions:o,saveSettings:i,settings:a})=>{let d=de.useMemo(()=>{let s={};return Object.keys(t).filter(c=>!r[c]).map(c=>{s[t[c].dim]=0}),s},[r,t]),p=Object.keys(r).length,m=p+Object.keys(d).length,u=()=>{o.rawUpdate([{type:"setcontrol",data:!n.controlGroup}])};return(0,e.jsx)(de.Fragment,null,(0,e.jsx)("article",{css:h.page},(0,e.jsx)("div",{css:h.headingGroup},(0,e.jsx)("h2",{css:h.title},"Dimensions",(0,e.jsx)("small",null,p," active of ",m)),(0,e.jsx)("div",{css:h.reset},(0,e.jsx)(Te.Button,{buttonType:"ghost",onClick:()=>le({actions:o,saveSettings:i,scores:r,settings:a}).then(o.forget)},"clear all dimensions")),(0,e.jsx)(et.Switch,{name:"controlGroup",label:"Control Group",onChange:u,checked:n.controlGroup})),p>0?(0,e.jsx)(Q,{dimensionIndex:t,dimensions:r}):(0,e.jsx)(z,{title:n.controlGroup?"In control group":"No active dimensions",text:n.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have score in any dimensions yet.",buttonGroup:n.controlGroup?(0,e.jsx)(Te.Button,{buttonType:"secondary",onClick:u},"Exit control group"):null}),(0,e.jsx)(j,null,(0,e.jsx)(ee,{title:`Inactive Dimensions (${Object.keys(d).length})`},(0,e.jsx)(Q,{dimensionIndex:t,dimensions:d})))))};var ot=O(require("react"));var rt=require("@uniformdev/design-system");var De=require("@uniformdev/design-system"),nt=({dimensionIndex:{index:t},state:{data:r,scores:n},actions:o,settings:i,saveSettings:a})=>{var c;let d=(c=i.scoreOverrides)!=null?c:{},p=Object.keys(d).length,m=l=>(l==null||l.preventDefault(),a({...i,route:"/overrides/add"})),u=()=>{o.rawUpdate([{type:"setcontrol",data:!r.controlGroup}])},s={};return Object.entries(n).map(([l,v])=>{d[l]!==void 0&&(s[l]=v)}),(0,e.jsx)(ot.Fragment,null,(0,e.jsx)("article",{css:h.page},(0,e.jsx)("div",{css:h.headingGroup},(0,e.jsx)("h2",{css:h.title},"What if?"),(0,e.jsx)("div",{css:h.reset},(0,e.jsx)(De.Button,{buttonType:"ghost",onClick:()=>le({actions:o,settings:i,saveSettings:a,scores:n})},"delete all overrides")),(0,e.jsx)(rt.AddButton,{onClick:m})),(0,e.jsx)("p",null,"Override dimension scores to test personalization"),p>0?(0,e.jsx)(Q,{dimensionIndex:t,dimensions:s,onClick:l=>a({...i,route:`/overrides/${l}`})}):(0,e.jsx)(z,{title:r.controlGroup?"In control group":"No overrides",text:r.controlGroup?"You are part of the personalization control group. While in the control group you do not have dimension scores and will not see personalized content. A/B tests will still run.":"You do not have any dimension overrides yet.",buttonGroup:r.controlGroup?(0,e.jsx)(De.Button,{buttonType:"secondary",onClick:u},"Exit control group"):null})))};var F=require("formik");var _=O(require("yup"));var V=require("@emotion/react"),it=V.css`
309
309
  background: var(--white);
310
310
  border: 1px solid var(--gray-500);
311
311
  border-radius: var(--rounded-base);
@@ -316,26 +316,26 @@ to {
316
316
  cursor: not-allowed;
317
317
  color: var(--gray-200);
318
318
  }
319
- `,Go=V.css`
319
+ `,Wo=V.css`
320
320
  margin: var(--spacing-base) 0;
321
- `,nt=V.css`
321
+ `,st=V.css`
322
322
  color: var(--brand-secondary-1);
323
323
  display: flex;
324
324
  flex-direction: column;
325
325
  margin: 0 0 var(--spacing-sm);
326
- `,it=V.css`
326
+ `,at=V.css`
327
327
  color: var(--brand-secondary-1);
328
328
  display: block;
329
329
  flex: 1 100%;
330
330
  font-weight: var(--fw-bold);
331
331
  margin: 0 0 var(--spacing-sm);
332
- `,$o=V.css`
332
+ `,Yo=V.css`
333
333
  color: var(--gray-600);
334
334
  font-size: var(--fs-sm);
335
- `,Ko=V.css`
335
+ `,Jo=V.css`
336
336
  color: var(--brand-secondary-5);
337
337
  display: block;
338
- `,st=V.css`
338
+ `,ct=V.css`
339
339
  flex-direction: row;
340
340
  flex-wrap: wrap;
341
341
 
@@ -403,18 +403,18 @@ to {
403
403
  flex: 1 0 20%;
404
404
  padding: 10px;
405
405
  }
406
- `;var de=require("@uniformdev/design-system"),at=({field:t,form:r,meta:n,...o})=>{var u,a;let{label:i,caption:s,min:d=0,max:p=100,step:m}=o;return(0,e.jsx)("div",null,(0,e.jsx)("label",{css:[nt,st]},(0,e.jsx)("span",{css:it},i),(0,e.jsx)("input",{type:"range",min:d,max:p,step:m,...t,value:(u=t.value)!=null?u:0}),(0,e.jsx)("span",{className:"value-display"},(a=t.value)!=null?a:0)),s?(0,e.jsx)(de.Caption,null,s):null,r.touched[t.name]&&r.errors[t.name]?(0,e.jsx)(de.ErrorMessage,{message:r.errors[t.name]}):null)};var ct=require("@emotion/react"),P=({children:t,...r})=>(0,e.jsx)("fieldset",{css:ct.css`
406
+ `;var pe=require("@uniformdev/design-system"),lt=({field:t,form:r,meta:n,...o})=>{var u,s;let{label:i,caption:a,min:d=0,max:p=100,step:m}=o;return(0,e.jsx)("div",null,(0,e.jsx)("label",{css:[st,ct]},(0,e.jsx)("span",{css:at},i),(0,e.jsx)("input",{type:"range",min:d,max:p,step:m,...t,value:(u=t.value)!=null?u:0}),(0,e.jsx)("span",{className:"value-display"},(s=t.value)!=null?s:0)),a?(0,e.jsx)(pe.Caption,null,a):null,r.touched[t.name]&&r.errors[t.name]?(0,e.jsx)(pe.ErrorMessage,{message:r.errors[t.name]}):null)};var dt=require("@emotion/react"),P=({children:t,...r})=>(0,e.jsx)("fieldset",{css:dt.css`
407
407
  border: none;
408
408
  padding: 0;
409
409
  & legend {
410
410
  margin-bottom: var(--spacing-base);
411
411
  }
412
- `,...r},t);var lt=require("@emotion/react"),Z=({children:t})=>(0,e.jsx)("legend",{css:lt.css`
412
+ `,...r},t);var pt=require("@emotion/react"),U=({children:t})=>(0,e.jsx)("legend",{css:pt.css`
413
413
  font-size: var(--fs-md);
414
414
  font-weight: var(--fw-bold);
415
415
  border-bottom: 1px solid var(--gray-400);
416
416
  width: 100%;
417
- `},t);var pe=require("@uniformdev/context");function dt({manifest:t,visitor:r,override:n}){let o=new pe.Context({manifest:t,transitionStore:new Te({initialData:r})}),i={...o.scores};o.storage.updateData([n]);let d={...{...o.scores}};return Object.entries(d).forEach(([p,m])=>{i[p]===m&&delete d[p]}),d}var Te=class extends pe.TransitionDataStore{async handleDelete(){}async handleUpdateData(){}};function _({scores:t,scoreOverrides:r}){let n=[];return r?(Object.entries(r).forEach(([o,i])=>{var p;let s=(p=t[o])!=null?p:0;if(s===i.override)return;let d=i.override-s;n.push({type:"modscoreS",data:{dimension:o,delta:d}})}),n):[]}function me({quirks:t,quirkOverrides:r}){let n={};if(!!r)return Object.entries(r).forEach(([o,i])=>{t[o]!==i.override&&(n[o]=i.override)}),Object.keys(n).length>0?n:void 0}var mt=require("@uniformdev/design-system");var De=t=>({field:r,form:n,meta:o,...i})=>(0,e.jsx)(t,{...r,...i,errorMessage:n.errors[r.name]});var ue=require("@uniformdev/design-system"),ge=De(ue.Input),pt=De(ue.InputSelect);var eo=z.object({dimension:z.string(),score:z.number()}),Se=({settings:t,saveSettings:r,state:n,actions:o,dimensionIndex:{index:i}})=>{var m,u;let s=t.route?[...t.route.matchAll(/overrides\/(?!.*add)(\w+)?/g)]:[],d=s[0]?s[0][1]:"";if(!((m=n.manifest.project.pz)!=null&&m.sig))return(0,e.jsx)("p",null,"Error, manifest is broken or there is no signal to override.");let p=Object.entries(i).filter(([,a])=>a.type!=="Audience"&&a.type!=="Intent").map(([a,c])=>{let l=c.type?`${c.type}: `:"",v=c.category?`${c.category} - `:"",g=`${l}${v}${c.name}`;return{value:a,label:g}});return p.unshift({value:"",label:"Choose dimension to override"}),(0,e.jsx)(Q.Formik,{initialValues:{dimension:d,score:(u=n.scores[d])!=null?u:0},validate:a=>{let c={};return(a.score===n.scores[a.dimension]||a.score===0&&!n.scores[d])&&(c.score="You have to modify current score value"),c},validationSchema:eo,enableReinitialize:!0,validateOnChange:!1,validateOnBlur:!1,onSubmit:async a=>{var f,y,C,w,H,M;let c=(y=(f=i[a.dimension])==null?void 0:f.cap)!=null?y:0,l=Math.min(a.score,c),v={...t,scoreOverrides:{...t.scoreOverrides,[a.dimension]:{initial:(M=(H=(w=(C=t.scoreOverrides)==null?void 0:C[a.dimension])==null?void 0:w.initial)!=null?H:n.scores[a.dimension])!=null?M:0,override:l}},route:"/overrides"};await r(v);let g=_({scores:n.scores,scoreOverrides:v.scoreOverrides});o.rawUpdate(g)}},({isSubmitting:a,values:c,setFieldValue:l})=>{var C;let v=dt({manifest:n.manifest,visitor:n.data,override:{type:"modscore",data:{dimension:c.dimension,delta:c.score-((C=n.scores[c.dimension])!=null?C:0)}}}),g=Object.entries(n.scores).reduce((w,[H,M])=>(w[H]={initial:M,override:M},w),{}),f={max:100,step:50};i[c.dimension]&&(f.max=i[c.dimension].cap,f.step=i[c.dimension].str);let y=c.score&&Object.keys(v).length>0;return(0,e.jsx)(Q.Form,{css:h.page},(0,e.jsx)("h1",{css:h.title},"Override Dimension"),(0,e.jsx)(Q.Field,{component:pt,label:"Dimension",id:"dimension",name:"dimension",options:p,disabled:a,onChange:w=>{l("score",0,!1),l("dimension",w.target.value)}}),(0,e.jsx)("p",{css:h.text},(0,e.jsx)("small",null,"Audiences and Intents are aggregated from other dimension scores and cannot be overridden directly.")),c.dimension?(0,e.jsx)(Q.Field,{component:at,name:"score",label:"Score",disabled:a,max:f.max,step:f.step,caption:`Range: 0 - ${f.max} in increments of ${f.step}`}):null,(0,e.jsx)(P,{disabled:a,css:{marginBottom:"2rem"}},y?(0,e.jsx)(X,null,(0,e.jsx)(j,{title:`Impacted Dimensions (${Object.keys(v).length})`},(0,e.jsx)(B,{preemptiveOverrides:g,dimensionIndex:i,dimensions:v,disableEditOverride:!0}))):null,(0,e.jsx)(mt.Button,{type:"submit",css:h.submitButton,disabled:a},"Save"),(0,e.jsx)(q,{route:"/overrides",css:h.cancelButton},"Cancel")))})};var gt=require("react");var ve=require("react"),fe=require("@uniformdev/design-system");var to=({name:t,value:r,submit:n})=>{let[o,i]=(0,ve.useState)(r!=null?r:"");return(0,ve.useEffect)(()=>{i(r!=null?r:"")},[r]),(0,e.jsx)("div",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(fe.Input,{type:"text",css:[rt],name:t,value:o,onChange:p=>{i(p.target.value)}}),(0,e.jsx)(fe.Button,{buttonType:"primary",disabled:o===r,size:"sm",onClick:()=>n(t,o!=null?o:"")},"Save"))},ut=to;var G=require("@uniformdev/design-system"),vt=({...t})=>{let{state:{data:{quirks:r}},quirksIndex:{index:n},settings:o,saveSettings:i,actions:s}=t,[d,p]=(0,gt.useState)(""),m;d&&(m=n[d]);let u=async(a,c)=>{var g,f,y;p("");let l={...o,quirkOverrides:{...o.quirkOverrides,[a]:{initial:(y=(f=(g=o.quirkOverrides)==null?void 0:g[a])==null?void 0:f.initial)!=null?y:r[a],override:c}}};await i(l);let v=me({quirks:r,quirkOverrides:l.quirkOverrides});await s.update({quirks:v})};return(0,e.jsx)(b.Fragment,null,(0,e.jsx)("article",{css:[h.page,h.quirks]},(0,e.jsx)("h1",{css:h.title},"Quirks"),(0,e.jsx)("p",{css:h.text},"Keys defined in Uniform and their current, programmatically defined values for this visit."),Object.keys(n).length?(0,e.jsx)(ne,null,(0,e.jsx)(Ue,null,(0,e.jsx)(U,null,(0,e.jsx)(se,{width:"30%"},"Key"),(0,e.jsx)(se,{width:"50%"},"Value"),(0,e.jsx)(se,{width:"20%"},""))),(0,e.jsx)(ie,null,Object.values(n).map(({name:a,value:c,id:l})=>{var f,y,C;let v=(y=(f=o.quirkOverrides)==null?void 0:f[a])==null?void 0:y.initial,g=[];return m&&m.options&&(g=m.options.map(w=>({value:w.value,label:w.name}))),(0,e.jsx)(U,{key:l,border:"bottom"},(0,e.jsx)(R,null,(0,e.jsx)("strong",null,a)),(0,e.jsx)(R,null,d!==l?(0,e.jsx)("div",{onClick:()=>{p(l)}},v?(0,e.jsx)("div",null,(0,e.jsx)("s",null,v)):null,c):null,d===l&&m&&(0,e.jsx)(b.Fragment,null,m.options?(0,e.jsx)(G.InputSelect,{showLabel:!1,label:`Change ${a}`,defaultOption:`Change ${a}`,name:l,onChange:w=>u(w.target.name,w.target.value),options:g}):(0,e.jsx)(ut,{name:l,value:c,submit:u}))),(0,e.jsx)(R,null,d?null:(C=o.quirkOverrides)!=null&&C[l]?(0,e.jsx)(G.Button,{buttonType:"ghost",onClick:()=>{Je({quirk:l,settings:o,saveSettings:i,actions:s})}},(0,e.jsx)("small",null,"Clear Override")):(0,e.jsx)(G.Button,{buttonType:"ghost",onClick:()=>{p(l)}},(0,e.jsx)("small",null,"Override"))))}))):(0,e.jsx)(N,{title:"No quirks configured",text:"There are currently no quirks setup. Try to connect to Uniform API to load additional information about Quirks and Quirks without defined value."})))};var Le=require("@uniformdev/design-system"),Oe=require("@uniformdev/design-system"),ft=({settings:t,saveSettings:r,actions:n,state:{data:o},clearAllExtensionData:i})=>(0,e.jsx)("article",{css:[h.page,{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}]},(0,e.jsx)("h1",{css:h.title},"Settings"),(0,e.jsx)(P,null,(0,e.jsx)(Z,null,"Data Connection"),(0,e.jsx)(Le.Button,{buttonType:"tertiary",onClick:()=>{r({...t,route:"/connect"})}},"Manage Connection to Uniform")),(0,e.jsx)(P,null,(0,e.jsx)(Z,null,"Storage Consent"),(0,e.jsx)(Oe.Switch,{label:"Store visitor data",id:"consent-mode",name:"consentMode",checked:o.consent,onChange:s=>{n.rawUpdate([{type:"consent",data:s.currentTarget.checked}]),r({...t,consentMode:s.currentTarget.checked})}}),(0,e.jsx)("p",null,(0,e.jsx)("small",null,"Enabling storage consent allows storing behavior in this browser for personalization across sessions. Only affects this browser. Personalization works with this disabled, but dimension scores are lost on refresh."))),(0,e.jsx)(P,null,(0,e.jsx)(Z,null,"Logging"),(0,e.jsx)(Oe.Switch,{label:"Write Uniform Context diagnostic logs to browser console",id:"logging",name:"logging",checked:t.logLevel==="debug",onChange:s=>r({...t,logLevel:s.currentTarget.checked?"debug":"none"})})),(0,e.jsx)(P,null,(0,e.jsx)(Z,null,"Clear extension storage"),(0,e.jsx)(Le.Button,{onClick:()=>{i()}},"Clear"),(0,e.jsx)("p",null,(0,e.jsx)("small",null,"May be necessary when you have multiple different sites on the same domain name (e.g. http://localhost:3000) and there are some conflicts or other unexpected behaviour."))));var xe=require("@uniformdev/design-system");var Re=({settings:t,saveSettings:r})=>{let n=()=>{r({...t,route:"/connect"})},o=()=>{r({...t,ignoreApiKeyPrompt:!0})},i=t.route==="/connect",s=!(t!=null&&t.apiKey);return!t.ignoreApiKeyPrompt&&s&&!i?(0,e.jsx)("div",{css:[ee,Ze]},(0,e.jsx)("h2",{css:te},"Connect to a Uniform Project"),(0,e.jsx)("p",{css:oe},"This allows reading human-readable labels for the dimensions."),(0,e.jsx)("div",{css:re},(0,e.jsx)(xe.Button,{buttonType:"secondary",onClick:n},"Connect this site"),(0,e.jsx)(xe.Button,{buttonType:"ghost",onClick:o},"Skip for now")),(0,e.jsx)("button",{type:"button",css:ze,title:"close",onClick:o},(0,e.jsx)("span",{hidden:!0},"Close"))):null};var F=require("@uniformdev/context/api"),ht=require("react-use"),bt=O(require("react"));function yt({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:s,value:d}=(0,ht.useAsync)(async()=>{if(!r||!n)return p;let u=(await new F.UncachedDimensionClient({projectId:n,apiKey:r,apiHost:t||void 0}).get()).dimensions,a={};return u.map(c=>{var l,v,g,f,y,C,w,H;if(a[c.dim]={...(0,F.computeDimensionDefinitionDisplayData)(c),cap:c.cap,str:(f=(g=(v=(l=o==null?void 0:o.project.pz)==null?void 0:l.sig)==null?void 0:v[c.dim])==null?void 0:g.str)!=null?f:50},a[c.dim].type==="Enrichment"){let M=c.dim.split("_")[0];a[c.dim].cap=(H=(w=(C=(y=o==null?void 0:o.project.pz)==null?void 0:y.enr)==null?void 0:C[M])==null?void 0:w.cap)!=null?H:100}}),a},[t,r,n]),p=bt.useMemo(()=>{var u,a,c,l;let m={};return o&&(Object.entries((a=(u=o==null?void 0:o.project.pz)==null?void 0:u.sig)!=null?a:{}).map(([v,g])=>{let f=(0,F.computeDimensionDisplayData)(v,o);f&&(m[v]={...g,...f})}),Object.entries((l=(c=o==null?void 0:o.project.pz)==null?void 0:c.enr)!=null?l:{}).map(([v,g])=>{var C;let f=(0,F.computeDimensionDisplayData)(v,o),y={cap:(C=g.cap)!=null?C:100,str:10};f&&(m[v]={...f,cap:y.cap,str:y.str})}),d&&Object.entries(d).map(([v,g])=>{m[v]={...m[v],...g}})),m},[o,d]);return{loading:i,error:s,index:p}}var Ct=require("react"),wt=require("@uniformdev/context/api"),kt=require("react-use");function Tt({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:s,value:d}=(0,kt.useAsync)(async()=>{if(!r||!n)return{};let u=await new wt.UncachedQuirkClient({projectId:n,apiKey:r,apiHost:t||void 0}).get(),a={};return u.quirks.map(c=>{a[c.id]={...c,value:o[c.id]}}),a},[t,r,n]),p=(0,Ct.useMemo)(()=>{let m={};return Object.entries(o).map(([u,a])=>m[u]={value:a,id:u,name:u}),d&&Object.entries(d).map(([u,a])=>m[u]={...a,value:o[u]}),m},[o,d]);return{loading:i,error:s,index:p}}var Ve=require("@emotion/react"),Rt=require("@uniformdev/design-system");function he(){return(0,e.jsx)("style",null,`
417
+ `},t);var me=require("@uniformdev/context");function mt({manifest:t,visitor:r,override:n}){let o=new me.Context({manifest:t,transitionStore:new Se({initialData:r})}),i={...o.scores};o.storage.updateData([n]);let d={...{...o.scores}};return Object.entries(d).forEach(([p,m])=>{i[p]===m&&delete d[p]}),d}var Se=class extends me.TransitionDataStore{async handleDelete(){}async handleUpdateData(){}};function $({scores:t,scoreOverrides:r}){let n=[];return r?(Object.entries(r).forEach(([o,i])=>{var p;let a=(p=t[o])!=null?p:0;if(a===i.override)return;let d=i.override-a;n.push({type:"modscoreS",data:{dimension:o,delta:d}})}),n):[]}function ue({quirks:t,quirkOverrides:r}){let n={};if(!!r)return Object.entries(r).forEach(([o,i])=>{t[o]!==i.override&&(n[o]=i.override)}),Object.keys(n).length>0?n:void 0}var gt=require("@uniformdev/design-system");var Le=t=>({field:r,form:n,meta:o,...i})=>(0,e.jsx)(t,{...r,...i,errorMessage:n.errors[r.name]});var ge=require("@uniformdev/design-system"),ve=Le(ge.Input),ut=Le(ge.InputSelect);var to=_.object({dimension:_.string(),score:_.number()}),Oe=({settings:t,saveSettings:r,state:n,actions:o,dimensionIndex:{index:i}})=>{var m,u;let a=t.route?[...t.route.matchAll(/overrides\/(?!.*add)(\w+)?/g)]:[],d=a[0]?a[0][1]:"";if(!((m=n.manifest.project.pz)!=null&&m.sig))return(0,e.jsx)("p",null,"Error, manifest is broken or there is no signal to override.");let p=Object.entries(i).filter(([,s])=>s.type!=="Audience"&&s.type!=="Intent").map(([s,c])=>{let l=c.type?`${c.type}: `:"",v=c.category?`${c.category} - `:"",g=`${l}${v}${c.name}`;return{value:s,label:g}});return p.unshift({value:"",label:"Choose dimension to override"}),(0,e.jsx)(F.Formik,{initialValues:{dimension:d,score:(u=n.scores[d])!=null?u:0},validate:s=>{let c={};return(s.score===n.scores[s.dimension]||s.score===0&&!n.scores[d])&&(c.score="You have to modify current score value"),c},validationSchema:to,enableReinitialize:!0,validateOnChange:!1,validateOnBlur:!1,onSubmit:async s=>{var f,y,C,w,M,E;let c=(y=(f=i[s.dimension])==null?void 0:f.cap)!=null?y:0,l=Math.min(s.score,c),v={...t,scoreOverrides:{...t.scoreOverrides,[s.dimension]:{initial:(E=(M=(w=(C=t.scoreOverrides)==null?void 0:C[s.dimension])==null?void 0:w.initial)!=null?M:n.scores[s.dimension])!=null?E:0,override:l}},route:"/overrides"};await r(v);let g=$({scores:n.scores,scoreOverrides:v.scoreOverrides});o.rawUpdate(g)}},({isSubmitting:s,values:c,setFieldValue:l})=>{var C;let v=mt({manifest:n.manifest,visitor:n.data,override:{type:"modscore",data:{dimension:c.dimension,delta:c.score-((C=n.scores[c.dimension])!=null?C:0)}}}),g=Object.entries(n.scores).reduce((w,[M,E])=>(w[M]={initial:E,override:E},w),{}),f={max:100,step:50};i[c.dimension]&&(f.max=i[c.dimension].cap,f.step=i[c.dimension].str);let y=c.score&&Object.keys(v).length>0;return(0,e.jsx)(F.Form,{css:h.page},(0,e.jsx)("h1",{css:h.title},"Override Dimension"),(0,e.jsx)(F.Field,{component:ut,label:"Dimension",id:"dimension",name:"dimension",options:p,disabled:s,onChange:w=>{l("score",0,!1),l("dimension",w.target.value)}}),(0,e.jsx)("p",{css:h.text},(0,e.jsx)("small",null,"Audiences and Intents are aggregated from other dimension scores and cannot be overridden directly.")),c.dimension?(0,e.jsx)(F.Field,{component:lt,name:"score",label:"Score",disabled:s,max:f.max,step:f.step,caption:`Range: 0 - ${f.max} in increments of ${f.step}`}):null,(0,e.jsx)(P,{disabled:s,css:{marginBottom:"2rem"}},y?(0,e.jsx)(j,null,(0,e.jsx)(ee,{title:`Impacted Dimensions (${Object.keys(v).length})`},(0,e.jsx)(Q,{preemptiveOverrides:g,dimensionIndex:i,dimensions:v,disableEditOverride:!0}))):null,(0,e.jsx)(gt.Button,{type:"submit",css:h.submitButton,disabled:s},"Save"),(0,e.jsx)(Z,{route:"/overrides",css:h.cancelButton},"Cancel")))})};var ft=require("react");var fe=require("react"),he=require("@uniformdev/design-system");var oo=({name:t,value:r,submit:n})=>{let[o,i]=(0,fe.useState)(r!=null?r:"");return(0,fe.useEffect)(()=>{i(r!=null?r:"")},[r]),(0,e.jsx)("div",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(he.Input,{type:"text",css:[it],name:t,value:o,onChange:p=>{i(p.target.value)}}),(0,e.jsx)(he.Button,{buttonType:"primary",disabled:o===r,size:"sm",onClick:()=>n(t,o!=null?o:"")},"Save"))},vt=oo;var K=require("@uniformdev/design-system"),ht=({...t})=>{let{state:{data:{quirks:r}},quirksIndex:{index:n},settings:o,saveSettings:i,actions:a}=t,[d,p]=(0,ft.useState)(""),m;d&&(m=n[d]);let u=async(s,c)=>{var g,f,y;p("");let l={...o,quirkOverrides:{...o.quirkOverrides,[s]:{initial:(y=(f=(g=o.quirkOverrides)==null?void 0:g[s])==null?void 0:f.initial)!=null?y:r[s],override:c}}};await i(l);let v=ue({quirks:r,quirkOverrides:l.quirkOverrides});await a.update({quirks:v})};return(0,e.jsx)(b.Fragment,null,(0,e.jsx)("article",{css:[h.page,h.quirks]},(0,e.jsx)("h1",{css:h.title},"Quirks"),(0,e.jsx)("p",{css:h.text},"Keys defined in Uniform and their current, programmatically defined values for this visit."),Object.keys(n).length?(0,e.jsx)(ie,null,(0,e.jsx)(Ge,null,(0,e.jsx)(G,null,(0,e.jsx)(ae,{width:"30%"},"Key"),(0,e.jsx)(ae,{width:"50%"},"Value"),(0,e.jsx)(ae,{width:"20%"},""))),(0,e.jsx)(se,null,Object.values(n).map(({name:s,value:c,id:l})=>{var f,y,C;let v=(y=(f=o.quirkOverrides)==null?void 0:f[s])==null?void 0:y.initial,g=[];return m&&m.options&&(g=m.options.map(w=>({value:w.value,label:w.name}))),(0,e.jsx)(G,{key:l,border:"bottom"},(0,e.jsx)(R,null,(0,e.jsx)("strong",null,s)),(0,e.jsx)(R,null,d!==l?(0,e.jsx)("div",{onClick:()=>{p(l)}},v?(0,e.jsx)("div",null,(0,e.jsx)("s",null,v)):null,c):null,d===l&&m&&(0,e.jsx)(b.Fragment,null,m.options?(0,e.jsx)(K.InputSelect,{showLabel:!1,label:`Change ${s}`,defaultOption:`Change ${s}`,name:l,onChange:w=>u(w.target.name,w.target.value),options:g}):(0,e.jsx)(vt,{name:l,value:c,submit:u}))),(0,e.jsx)(R,null,d?null:(C=o.quirkOverrides)!=null&&C[l]?(0,e.jsx)(K.Button,{buttonType:"ghost",onClick:()=>{je({quirk:l,settings:o,saveSettings:i,actions:a})}},(0,e.jsx)("small",null,"Clear Override")):(0,e.jsx)(K.Button,{buttonType:"ghost",onClick:()=>{p(l)}},(0,e.jsx)("small",null,"Override"))))}))):(0,e.jsx)(z,{title:"No quirks configured",text:"There are currently no quirks setup. Try to connect to Uniform API to load additional information about Quirks and Quirks without defined value."})))};var xe=require("@uniformdev/design-system"),Re=require("@uniformdev/design-system"),bt=({settings:t,saveSettings:r,actions:n,state:{data:o},clearAllExtensionData:i})=>(0,e.jsx)("article",{css:[h.page,{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}]},(0,e.jsx)("h1",{css:h.title},"Settings"),(0,e.jsx)(P,null,(0,e.jsx)(U,null,"Data Connection"),(0,e.jsx)(xe.Button,{buttonType:"tertiary",onClick:()=>{r({...t,route:"/connect"})}},"Manage Connection to Uniform")),(0,e.jsx)(P,null,(0,e.jsx)(U,null,"Storage Consent"),(0,e.jsx)(Re.Switch,{label:"Store visitor data",id:"consent-mode",name:"consentMode",checked:o.consent,onChange:a=>{n.rawUpdate([{type:"consent",data:a.currentTarget.checked}]),r({...t,consentMode:a.currentTarget.checked})}}),(0,e.jsx)("p",null,(0,e.jsx)("small",null,"Enabling storage consent allows storing behavior in this browser for personalization across sessions. Only affects this browser. Personalization works with this disabled, but dimension scores are lost on refresh."))),(0,e.jsx)(P,null,(0,e.jsx)(U,null,"Logging"),(0,e.jsx)(Re.Switch,{label:"Write Uniform Context diagnostic logs to browser console",id:"logging",name:"logging",checked:t.logLevel==="debug",onChange:a=>r({...t,logLevel:a.currentTarget.checked?"debug":"none"})})),(0,e.jsx)(P,null,(0,e.jsx)(U,null,"Clear extension storage"),(0,e.jsx)(xe.Button,{onClick:()=>{i()}},"Clear"),(0,e.jsx)("p",null,(0,e.jsx)("small",null,"May be necessary when you have multiple different sites on the same domain name (e.g. http://localhost:3000) and there are some conflicts or other unexpected behaviour."))));var Ve=require("@uniformdev/design-system");var Pe=({settings:t,saveSettings:r})=>{let n=()=>{r({...t,route:"/connect"})},o=()=>{r({...t,ignoreApiKeyPrompt:!0})},i=t.route==="/connect",a=!(t!=null&&t.apiKey);return!t.ignoreApiKeyPrompt&&a&&!i?(0,e.jsx)("div",{css:[te,Ue]},(0,e.jsx)("h2",{css:oe},"Connect to a Uniform Project"),(0,e.jsx)("p",{css:re},"This allows reading human-readable labels for the dimensions."),(0,e.jsx)("div",{css:ne},(0,e.jsx)(Ve.Button,{buttonType:"secondary",onClick:n},"Connect this site"),(0,e.jsx)(Ve.Button,{buttonType:"ghost",onClick:o},"Skip for now")),(0,e.jsx)("button",{type:"button",css:_e,title:"close",onClick:o},(0,e.jsx)("span",{hidden:!0},"Close"))):null};var q=require("@uniformdev/context/api"),yt=require("react-use"),Ct=O(require("react"));function wt({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:a,value:d}=(0,yt.useAsync)(async()=>{if(!r||!n)return p;let u=(await new q.UncachedDimensionClient({projectId:n,apiKey:r,apiHost:t||void 0}).get()).dimensions,s={};return u.map(c=>{var l,v,g,f,y,C,w,M;if(s[c.dim]={...(0,q.computeDimensionDefinitionDisplayData)(c),cap:c.cap,str:(f=(g=(v=(l=o==null?void 0:o.project.pz)==null?void 0:l.sig)==null?void 0:v[c.dim])==null?void 0:g.str)!=null?f:50},s[c.dim].type==="Enrichment"){let E=c.dim.split("_")[0];s[c.dim].cap=(M=(w=(C=(y=o==null?void 0:o.project.pz)==null?void 0:y.enr)==null?void 0:C[E])==null?void 0:w.cap)!=null?M:100}}),s},[t,r,n]),p=Ct.useMemo(()=>{var u,s,c,l;let m={};return o&&(Object.entries((s=(u=o==null?void 0:o.project.pz)==null?void 0:u.sig)!=null?s:{}).map(([v,g])=>{let f=(0,q.computeDimensionDisplayData)(v,o);f&&(m[v]={...g,...f})}),Object.entries((l=(c=o==null?void 0:o.project.pz)==null?void 0:c.enr)!=null?l:{}).map(([v,g])=>{var C;let f=(0,q.computeDimensionDisplayData)(v,o),y={cap:(C=g.cap)!=null?C:100,str:10};f&&(m[v]={...f,cap:y.cap,str:y.str})}),d&&Object.entries(d).map(([v,g])=>{m[v]={...m[v],...g}})),m},[o,d]);return{loading:i,error:a,index:p}}var kt=require("react"),Tt=require("@uniformdev/context/api"),Dt=require("react-use");function St({apiHost:t,apiKey:r,projectId:n},o){let{loading:i,error:a,value:d}=(0,Dt.useAsync)(async()=>{if(!r||!n)return{};let u=await new Tt.UncachedQuirkClient({projectId:n,apiKey:r,apiHost:t||void 0}).get(),s={};return u.quirks.map(c=>{s[c.id]={...c,value:o[c.id]}}),s},[t,r,n]),p=(0,kt.useMemo)(()=>{let m={};return Object.entries(o).map(([u,s])=>m[u]={value:s,id:u,name:u}),d&&Object.entries(d).map(([u,s])=>m[u]={...s,value:o[u]}),m},[o,d]);return{loading:i,error:a,index:p}}var Ie=require("@emotion/react"),Pt=require("@uniformdev/design-system");function be(){return(0,e.jsx)("style",null,`
418
418
  :root {
419
419
  --site-width: 700px;
420
420
 
@@ -424,7 +424,7 @@ to {
424
424
 
425
425
  --min-height: 450px;
426
426
  }
427
- `)}var be=require("react"),Dt=require("react-use");var St=()=>{let[t,r]=(0,be.useState)(!1),n=(0,Dt.useMountedState)();return(0,be.useEffect)(()=>{setTimeout(()=>{n()&&r(!0)},1e3)},[n]),t?(0,e.jsx)("article",{css:h.page},(0,e.jsx)("h1",null,"Loading..."),(0,e.jsx)("p",null,"Connecting to Uniform API for complete data.")):null};var Lt=require("@uniformdev/context"),ye=require("@uniformdev/context/api"),I=require("formik"),T=O(require("react")),D=require("@uniformdev/design-system");function Ot(t){let[r,n]=T.useState(t.currentData?"c":"qc"),[o,i]=T.useState(void 0),[s,d]=T.useState(void 0),p=T.useCallback(async a=>{let c=new ye.UncachedManifestClient(a);i(void 0);try{let l=await c.get({preview:!0});return d({manifest:l,target:a}),l}catch(l){if(l instanceof ye.ApiClientError){l.statusCode===403?i("API key is valid but does not have Context > Read Drafts permission, or the API key does not have permissions to the project, or the project does not exist."):i(l.errorMessage);return}if("message"in l){l.message==="Failed to fetch"?i("A network error occurred. Ensure the API host is valid."):i(l.message);return}i(JSON.stringify(l,null,2));return}},[]);T.useEffect(()=>{!t.currentData||p(t.currentData)},[p,t.currentData]);let m=async a=>{await p(a)&&(n("c"),await t.onConnect(a))},u=()=>{confirm("Disconnect from Uniform? Make sure to save your API key if you want to reconnect.")&&(n("qc"),d(void 0),i(void 0),t.onConnect(null))};return(0,e.jsx)("div",null,o?(0,e.jsx)(T.Fragment,null,(0,e.jsx)(D.ErrorMessage,{message:o}),(0,e.jsx)(D.Button,{buttonType:"secondary",type:"button",onClick:u},"Clear old/broken settings")):null,r==="qc"||r==="mc"?(0,e.jsx)(oo,{...t,state:r,setState:n,onConnect:m}):(0,e.jsx)("div",null,s?(0,e.jsx)(T.Fragment,null,(0,e.jsx)("p",null,"Connected to"," ",(0,e.jsx)("a",{href:`${s==null?void 0:s.target.apiHost}/projects/${s==null?void 0:s.target.projectId}`,target:"_blank",rel:"noopener noreferrer",css:{textDecoration:"underline"}},(0,e.jsx)("strong",null,s==null?void 0:s.manifest.project.name))," ",(0,e.jsx)("small",null,"(",s==null?void 0:s.manifest.project.id,")")),(0,e.jsx)(D.Button,{buttonType:"secondary",type:"button",onClick:u},"Disconnect")):null))}function oo({setState:t,state:r,currentData:n,onConnect:o}){var i,s,d;return(0,e.jsx)("div",null,(0,e.jsx)(I.Formik,{initialValues:{apiHost:(i=n==null?void 0:n.apiHost)!=null?i:"https://uniform.app",apiKey:(s=n==null?void 0:n.apiKey)!=null?s:"",projectId:(d=n==null?void 0:n.projectId)!=null?d:"",qc:""},onSubmit:o},({setFieldValue:p,setFieldError:m,errors:{qc:u},isSubmitting:a})=>(0,e.jsx)(I.Form,null,(0,e.jsx)("fieldset",{css:{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}},r==="qc"?(0,e.jsx)(T.Fragment,null,(0,e.jsx)("div",null,(0,e.jsx)(D.Input,{placeholder:"Paste Quick Connect Code Here",caption:"Copy the Quick Connect code after creating an API key in Uniform.",errorMessage:u,onChange:c=>{try{let l=(0,Lt.parseQuickConnect)(c.currentTarget.value);p("apiHost",l.apiHost),p("apiKey",l.apiKey),p("projectId",l.projectId)}catch(l){m("qc",l.message)}}})),(0,e.jsx)("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(D.Button,{type:"submit",buttonType:"primary",disabled:a},a?"Verifying...":"Connect"),(0,e.jsx)(D.Button,{type:"button",buttonType:"ghost",onClick:()=>t("mc"),disabled:a},"Connect Manually"))):(0,e.jsx)(T.Fragment,null,(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ge,label:"API Key",name:"apiKey",caption:"Generate an API key in your Uniform team settings."})),(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ge,label:"Project ID",name:"projectId",caption:"Available to copy after generating an API key"})),(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ge,label:"API Host",name:"apiHost",caption:"Use a non-standard Uniform API endpoint. Most people will not not need this option."})),(0,e.jsx)("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(D.Button,{type:"submit",buttonType:"primary",disabled:a},a?"Verifying...":"Connect"),(0,e.jsx)(D.Button,{type:"button",buttonType:"ghost",onClick:()=>t("qc"),disabled:a},"Use Quick Connect")))))))}var xt=({settings:t,saveSettings:r})=>{let n=t.apiKey&&t.projectId?{apiKey:t.apiKey,projectId:t.projectId,apiHost:t.apiHost}:void 0;return(0,e.jsx)("article",{css:h.page},(0,e.jsx)("h1",{css:h.title},"Connect to a Uniform Project"),(0,e.jsx)("p",{css:h.text},(0,e.jsx)("small",null,"Adding an API key and project ID enables human-readable dimension labels to be shown. You must have access to the Uniform project to do this.")),(0,e.jsx)(Ot,{onConnect:async o=>{o?await r({...t,apiKey:o.apiKey,projectId:o.projectId,apiHost:o.apiHost}):await r({...t,apiKey:void 0,projectId:void 0,apiHost:void 0})},currentData:n}))};var ro=Ve.css`
427
+ `)}var ye=require("react"),Lt=require("react-use");var Ot=()=>{let[t,r]=(0,ye.useState)(!1),n=(0,Lt.useMountedState)();return(0,ye.useEffect)(()=>{setTimeout(()=>{n()&&r(!0)},1e3)},[n]),t?(0,e.jsx)("article",{css:h.page},(0,e.jsx)("h1",null,"Loading..."),(0,e.jsx)("p",null,"Connecting to Uniform API for complete data.")):null};var xt=require("@uniformdev/context"),Ce=require("@uniformdev/context/api"),I=require("formik"),T=O(require("react")),D=require("@uniformdev/design-system");function Rt(t){let[r,n]=T.useState(t.currentData?"c":"qc"),[o,i]=T.useState(void 0),[a,d]=T.useState(void 0),p=T.useCallback(async s=>{let c=new Ce.UncachedManifestClient(s);i(void 0);try{let l=await c.get({preview:!0});return d({manifest:l,target:s}),l}catch(l){if(l instanceof Ce.ApiClientError){l.statusCode===403?i("API key is valid but does not have Context > Read Drafts permission, or the API key does not have permissions to the project, or the project does not exist."):i(l.errorMessage);return}if("message"in l){l.message==="Failed to fetch"?i("A network error occurred. Ensure the API host is valid."):i(l.message);return}i(JSON.stringify(l,null,2));return}},[]);T.useEffect(()=>{!t.currentData||p(t.currentData)},[p,t.currentData]);let m=async s=>{await p(s)&&(n("c"),await t.onConnect(s))},u=()=>{confirm("Disconnect from Uniform? Make sure to save your API key if you want to reconnect.")&&(n("qc"),d(void 0),i(void 0),t.onConnect(null))};return(0,e.jsx)("div",null,o?(0,e.jsx)(T.Fragment,null,(0,e.jsx)(D.ErrorMessage,{message:o}),(0,e.jsx)(D.Button,{buttonType:"secondary",type:"button",onClick:u},"Clear old/broken settings")):null,r==="qc"||r==="mc"?(0,e.jsx)(ro,{...t,state:r,setState:n,onConnect:m}):(0,e.jsx)("div",null,a?(0,e.jsx)(T.Fragment,null,(0,e.jsx)("p",null,"Connected to"," ",(0,e.jsx)("a",{href:`${a==null?void 0:a.target.apiHost}/projects/${a==null?void 0:a.target.projectId}`,target:"_blank",rel:"noopener noreferrer",css:{textDecoration:"underline"}},(0,e.jsx)("strong",null,a==null?void 0:a.manifest.project.name))," ",(0,e.jsx)("small",null,"(",a==null?void 0:a.manifest.project.id,")")),(0,e.jsx)(D.Button,{buttonType:"secondary",type:"button",onClick:u},"Disconnect")):null))}function ro({setState:t,state:r,currentData:n,onConnect:o}){var i,a,d;return(0,e.jsx)("div",null,(0,e.jsx)(I.Formik,{initialValues:{apiHost:(i=n==null?void 0:n.apiHost)!=null?i:"https://uniform.app",apiKey:(a=n==null?void 0:n.apiKey)!=null?a:"",projectId:(d=n==null?void 0:n.projectId)!=null?d:"",qc:""},onSubmit:o},({setFieldValue:p,setFieldError:m,errors:{qc:u},isSubmitting:s})=>(0,e.jsx)(I.Form,null,(0,e.jsx)("fieldset",{css:{display:"flex",flexDirection:"column",gap:"var(--spacing-base)"}},r==="qc"?(0,e.jsx)(T.Fragment,null,(0,e.jsx)("div",null,(0,e.jsx)(D.Input,{placeholder:"Paste Quick Connect Code Here",caption:"Copy the Quick Connect code after creating an API key in Uniform.",errorMessage:u,onChange:c=>{try{let l=(0,xt.parseQuickConnect)(c.currentTarget.value);p("apiHost",l.apiHost),p("apiKey",l.apiKey),p("projectId",l.projectId)}catch(l){m("qc",l.message)}}})),(0,e.jsx)("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(D.Button,{type:"submit",buttonType:"primary",disabled:s},s?"Verifying...":"Connect"),(0,e.jsx)(D.Button,{type:"button",buttonType:"ghost",onClick:()=>t("mc"),disabled:s},"Connect Manually"))):(0,e.jsx)(T.Fragment,null,(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ve,label:"API Key",name:"apiKey",caption:"Generate an API key in your Uniform team settings."})),(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ve,label:"Project ID",name:"projectId",caption:"Available to copy after generating an API key"})),(0,e.jsx)("div",null,(0,e.jsx)(I.Field,{component:ve,label:"API Host",name:"apiHost",caption:"Use a non-standard Uniform API endpoint. Most people will not not need this option."})),(0,e.jsx)("section",{css:{display:"flex",gap:"var(--spacing-sm)"}},(0,e.jsx)(D.Button,{type:"submit",buttonType:"primary",disabled:s},s?"Verifying...":"Connect"),(0,e.jsx)(D.Button,{type:"button",buttonType:"ghost",onClick:()=>t("qc"),disabled:s},"Use Quick Connect")))))))}var Vt=({settings:t,saveSettings:r})=>{let n=t.apiKey&&t.projectId?{apiKey:t.apiKey,projectId:t.projectId,apiHost:t.apiHost}:void 0;return(0,e.jsx)("article",{css:h.page},(0,e.jsx)("h1",{css:h.title},"Connect to a Uniform Project"),(0,e.jsx)("p",{css:h.text},(0,e.jsx)("small",null,"Adding an API key and project ID enables human-readable dimension labels to be shown. You must have access to the Uniform project to do this.")),(0,e.jsx)(Rt,{onConnect:async o=>{o?await r({...t,apiKey:o.apiKey,projectId:o.projectId,apiHost:o.apiHost}):await r({...t,apiKey:void 0,projectId:void 0,apiHost:void 0})},currentData:n}))};var no=Ie.css`
428
428
  background: var(--white);
429
429
  padding: var(--spacing-base);
430
430
  overflow-y: auto;
@@ -453,7 +453,7 @@ to {
453
453
  &::-webkit-scrollbar-thumb:hover {
454
454
  background: var(--gray-500);
455
455
  }
456
- `;function Pe(t){let r=yt(t.settings,t.state.manifest),n=Tt(t.settings,t.state.data.quirks),o={...t,dimensionIndex:r,quirksIndex:n},i=()=>{var s;if(r.loading||n.loading)return(0,e.jsx)(St,null);if(t.settings.route&&t.settings.route.match(/overrides\/\w+/))return(0,e.jsx)(Se,{...o});switch((s=t.settings)==null?void 0:s.route){case void 0:case"/":case"/dimensions":return(0,e.jsx)(je,{...o});case"/overrides":return(0,e.jsx)(ot,{...o});case"/overrides/add":return(0,e.jsx)(Se,{...o});case"/quirks":return(0,e.jsx)(vt,{...o});case"/settings":return(0,e.jsx)(ft,{...o});case"/connect":return(0,e.jsx)(xt,{...o});default:return(0,e.jsx)(qe,null)}};return(0,e.jsx)(Ae,{settings:t.settings,saveSettings:t.saveSettings},(0,e.jsx)(Rt.Theme,null),(0,e.jsx)(he,null),(0,e.jsx)("div",{css:Ve.css`
456
+ `;function He(t){let r=wt(t.settings,t.state.manifest),n=St(t.settings,t.state.data.quirks),o={...t,dimensionIndex:r,quirksIndex:n},i=()=>{var a;if(r.loading||n.loading)return(0,e.jsx)(Ot,null);if(t.settings.route&&t.settings.route.match(/overrides\/\w+/))return(0,e.jsx)(Oe,{...o});switch((a=t.settings)==null?void 0:a.route){case void 0:case"/":case"/dimensions":return(0,e.jsx)(tt,{...o});case"/overrides":return(0,e.jsx)(nt,{...o});case"/overrides/add":return(0,e.jsx)(Oe,{...o});case"/quirks":return(0,e.jsx)(ht,{...o});case"/settings":return(0,e.jsx)(bt,{...o});case"/connect":return(0,e.jsx)(Vt,{...o});default:return(0,e.jsx)(Ze,null)}};return(0,e.jsx)(Qe,{settings:t.settings,saveSettings:t.saveSettings},(0,e.jsx)(Pt.Theme,null),(0,e.jsx)(be,null),(0,e.jsx)("div",{css:Ie.css`
457
457
  display: grid;
458
458
  grid-template-columns: 200px auto;
459
459
  font-weight: var(--fs-base);
@@ -462,7 +462,7 @@ to {
462
462
  line-height: var(--base-line-height);
463
463
  height: var(--min-height);
464
464
  min-width: var(--site-width);
465
- `},(0,e.jsx)(Fe,{...t}),(0,e.jsx)("main",{css:ro},(0,e.jsx)(Re,{...t}),i())))}var Ce=require("@uniformdev/context"),x=O(require("react"));var Ie="embeddedUniformDevToolsSettings";function He({context:t,initialSettings:r}){let n=t!=null?t:typeof window!="undefined"?window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__:void 0,o=n!=null?n:new Ce.Context({manifest:{project:{}}}),[i,s]=x.useState({data:o.storage.data,manifest:o.manifest.data,scores:o.scores,personalizations:[],tests:[]}),[d,p]=x.useState(r!=null?r:{});x.useEffect(()=>{var l;let c=(0,Ce.createDebugConsoleLogDrain)((l=d.logLevel)!=null?l:"none");return o.events.on("log",c),()=>{o.events.off("log",c)}},[d,o]),x.useEffect(()=>{let c=()=>{let g=window.localStorage.getItem(Ie)||"{}",f=JSON.parse(g),y=me({quirks:o.storage.data.quirks,quirkOverrides:f.quirkOverrides});y&&(console.log("Applying overridden quirks:",y),o.update({quirks:y}));let C=_({scores:o.scores,scoreOverrides:f.scoreOverrides});C.length&&(console.log("Applying overridden scores:",C),o.storage.updateData(C)),s(w=>({...w,scores:o.scores,data:o.storage.data,manifest:o.manifest.data}))},l=g=>{!g.changed||s(f=>({...f,personalizations:[...f.personalizations,g]}))},v=g=>{!g.variantAssigned||s(f=>({...f,tests:[...f.tests,g]}))};return o.events.on("personalizationResult",l),o.events.on("testResult",v),o.storage.events.on("*",c),()=>{o.storage.events.off("*",c),o.events.off("personalizationResult",l),o.events.off("testResult",v)}},[o]),x.useEffect(()=>{if(window.localStorage){let c=window.localStorage.getItem(Ie);if(c)try{let l=JSON.parse(c),v={...r,...l};p(v);let g=_({scores:i.scores,scoreOverrides:v.scoreOverrides});m.rawUpdate(g)}catch(l){window.localStorage.removeItem(Ie),console.error("Failed to parse settings from localStorage: ",l.message)}}},[]);let{actions:m,saveSettings:u,clearAllExtensionData:a}=x.useMemo(()=>({actions:{update:g=>o.update(g),forget:()=>o.forget(!1),rawUpdate:g=>o.storage.updateData(g)},saveSettings:async g=>{p(g),window.localStorage&&window.localStorage.setItem("embeddedUniformDevToolsSettings",JSON.stringify(g))},clearAllExtensionData:async()=>{p({route:"/"}),window.localStorage&&(window.localStorage.removeItem("embeddedUniformDevToolsSettings"),window.location.reload())}}),[o]);return n?(0,e.jsx)(Pe,{state:i,actions:m,settings:d,saveSettings:u,clearAllExtensionData:a}):(0,e.jsx)("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}var It=require("@emotion/react"),$=O(require("react"));var Ht=require("@uniformdev/design-system");var Vt=require("@emotion/react"),no=Vt.css`
465
+ `},(0,e.jsx)(Ne,{...t}),(0,e.jsx)("main",{css:no},(0,e.jsx)(Pe,{...t}),i())))}var we=require("@uniformdev/context"),x=O(require("react"));var Me="embeddedUniformDevToolsSettings";function Ee({context:t,initialSettings:r}){let n=t!=null?t:typeof window!="undefined"?window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__:void 0,o=n!=null?n:new we.Context({manifest:{project:{}}}),[i,a]=x.useState({data:o.storage.data,manifest:o.manifest.data,scores:o.scores,personalizations:[],tests:[]}),[d,p]=x.useState(r!=null?r:{});x.useEffect(()=>{var l;let c=(0,we.createDebugConsoleLogDrain)((l=d.logLevel)!=null?l:"none");return o.events.on("log",c),()=>{o.events.off("log",c)}},[d,o]),x.useEffect(()=>{let c=()=>{let g=window.localStorage.getItem(Me)||"{}",f=JSON.parse(g),y=ue({quirks:o.storage.data.quirks,quirkOverrides:f.quirkOverrides});y&&(console.log("Applying overridden quirks:",y),o.update({quirks:y}));let C=$({scores:o.scores,scoreOverrides:f.scoreOverrides});C.length&&(console.log("Applying overridden scores:",C),o.storage.updateData(C)),a(w=>({...w,scores:o.scores,data:o.storage.data,manifest:o.manifest.data}))},l=g=>{!g.changed||a(f=>({...f,personalizations:[...f.personalizations,g]}))},v=g=>{!g.variantAssigned||a(f=>({...f,tests:[...f.tests,g]}))};return o.events.on("personalizationResult",l),o.events.on("testResult",v),o.storage.events.on("*",c),()=>{o.storage.events.off("*",c),o.events.off("personalizationResult",l),o.events.off("testResult",v)}},[o]),x.useEffect(()=>{if(window.localStorage){let c=window.localStorage.getItem(Me);if(c)try{let l=JSON.parse(c),v={...r,...l};p(v);let g=$({scores:i.scores,scoreOverrides:v.scoreOverrides});m.rawUpdate(g)}catch(l){window.localStorage.removeItem(Me),console.error("Failed to parse settings from localStorage: ",l.message)}}},[]);let{actions:m,saveSettings:u,clearAllExtensionData:s}=x.useMemo(()=>({actions:{update:g=>o.update(g),forget:()=>o.forget(!1),rawUpdate:g=>o.storage.updateData(g)},saveSettings:async g=>{p(g),window.localStorage&&window.localStorage.setItem("embeddedUniformDevToolsSettings",JSON.stringify(g))},clearAllExtensionData:async()=>{p({route:"/"}),window.localStorage&&(window.localStorage.removeItem("embeddedUniformDevToolsSettings"),window.location.reload())}}),[o]);return n?(0,e.jsx)(He,{state:i,actions:m,settings:d,saveSettings:u,clearAllExtensionData:s}):(0,e.jsx)("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}var ke=require("@emotion/react"),N=O(require("react"));var H=require("@uniformdev/design-system"),Mt=require("react-use");var It=require("@emotion/react"),io=It.css`
466
466
  align-items: center;
467
467
  border-radius: var(--rounded-full);
468
468
  background: var(--brand-secondary-5);
@@ -488,11 +488,15 @@ to {
488
488
  max-width: 100%;
489
489
  height: auto;
490
490
  }
491
- `,Pt=({...t})=>(0,e.jsx)("button",{type:"button",css:no,...t},(0,e.jsx)("span",{hidden:!0},"Uniform devtools"),(0,e.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.jsx)("path",{d:"M13.325 3.05011L8.66741 20.4323L10.5993 20.9499L15.2568 3.56775L13.325 3.05011Z",fill:"currentColor"}),(0,e.jsx)("path",{d:"M7.61197 18.3608L8.97136 16.9124L8.97086 16.8933L3.87657 12.1121L8.66699 7.00798L7.20868 5.63928L1.04956 12.2017L7.61197 18.3608Z",fill:"currentColor"}),(0,e.jsx)("path",{d:"M16.388 18.3608L15.0286 16.9124L15.0291 16.8933L20.1234 12.1121L15.333 7.00798L16.7913 5.63928L22.9504 12.2017L16.388 18.3608Z",fill:"currentColor"})));function io(t){let[r,n]=$.useState(!1),[o,i]=$.useState(t.context);return $.useEffect(()=>{!t.context&&typeof document!="undefined"&&i(window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__)},[t.context]),o?(0,e.jsx)("div",null,(0,e.jsx)(Ht.Theme,null),(0,e.jsx)(he,null),(0,e.jsx)(Pt,{onClick:()=>n(s=>!s)}),r?(0,e.jsx)("div",{css:It.css`
491
+ `,Ht=({...t})=>(0,e.jsx)("button",{type:"button",css:io,...t},(0,e.jsx)("span",{hidden:!0},"Uniform devtools"),(0,e.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.jsx)("path",{d:"M13.325 3.05011L8.66741 20.4323L10.5993 20.9499L15.2568 3.56775L13.325 3.05011Z",fill:"currentColor"}),(0,e.jsx)("path",{d:"M7.61197 18.3608L8.97136 16.9124L8.97086 16.8933L3.87657 12.1121L8.66699 7.00798L7.20868 5.63928L1.04956 12.2017L7.61197 18.3608Z",fill:"currentColor"}),(0,e.jsx)("path",{d:"M16.388 18.3608L15.0286 16.9124L15.0291 16.8933L20.1234 12.1121L15.333 7.00798L16.7913 5.63928L22.9504 12.2017L16.388 18.3608Z",fill:"currentColor"})));var so="dblgnkbknchechcibdojfdoeeodhmgbd",ao="dcmlokofjljnfjcknpmhjocogllfbhkg";function co(t){let[r,n]=N.useState(!1),[o,i]=N.useState(t.context),[a,d]=N.useState(!1),[p,m]=(0,Mt.useLocalStorage)("isUniformInlineDevtoolsDisabled",!1);return N.useEffect(()=>{!t.context&&typeof document!="undefined"&&i(window.__UNIFORM_DEVTOOLS_CONTEXT_INSTANCE__)},[t.context]),N.useEffect(()=>{[ao,so].map(u=>{let s=new Image;s.src=`chrome-extension://${u}/icons/uniform-logo.png`,s.onload=()=>d(!0)})},[]),p?null:o?(0,e.jsx)("div",null,(0,e.jsx)(H.Theme,null),(0,e.jsx)(be,null),(0,e.jsx)(Ht,{onClick:()=>n(u=>!u)}),r?(0,e.jsx)("div",{css:ke.css`
492
492
  box-shadow: var(--shadow-base);
493
493
  position: fixed;
494
494
  bottom: 82px;
495
495
  right: var(--spacing-base);
496
496
  z-index: var(--z-10);
497
497
  max-width: var(--site-width);
498
- `},(0,e.jsx)(He,{...t})):null):(0,e.jsx)("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}0&&(module.exports={ContextDevTools,EmbeddedContextDevTools,ToggleEmbeddedContextDevTools});
498
+ `},a?(0,e.jsx)("div",{css:ke.css`
499
+ padding: var(--spacing-md);
500
+ `},(0,e.jsx)(H.Callout,{type:"danger",title:"This functionality is disabled."},(0,e.jsx)(H.Paragraph,null,"We detected you already use the Uniform Context browser extension. Using both tools is not supported. Please use the functionality of the browser extension instead."),(0,e.jsx)(H.Button,{css:ke.css`
501
+ margin-top: var(--spacing-md);
502
+ `,buttonType:"secondary",onClick:()=>m(!0)},"Disabled inline tools"))):(0,e.jsx)(Ee,{...t})):null):(0,e.jsx)("p",null,"Unable to find Uniform Context. Ensure the devtools plugin is activated.")}0&&(module.exports={ContextDevTools,EmbeddedContextDevTools,ToggleEmbeddedContextDevTools});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniformdev/context-devtools",
3
- "version": "16.2.1-nuxt.325+c1c2247c8",
3
+ "version": "17.0.0",
4
4
  "description": "Uniform Context developer tools components",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "main": "./dist/index.js",
@@ -30,8 +30,8 @@
30
30
  },
31
31
  "dependencies": {
32
32
  "@emotion/react": "11.9.3",
33
- "@uniformdev/context": "^16.2.1-nuxt.325+c1c2247c8",
34
- "@uniformdev/design-system": "^16.2.1-nuxt.325+c1c2247c8",
33
+ "@uniformdev/context": "^17.0.0",
34
+ "@uniformdev/design-system": "^17.0.0",
35
35
  "formik": "^2.2.9",
36
36
  "react-use": "^17.4.0",
37
37
  "reakit": "^1.3.11",
@@ -43,5 +43,5 @@
43
43
  "publishConfig": {
44
44
  "access": "public"
45
45
  },
46
- "gitHead": "c1c2247c820522de8ca9707a76e5697b0e3df334"
46
+ "gitHead": "d15f59e5cc80184d983b8c1ca67b1ee390158672"
47
47
  }