jbx 2.11.0 → 2.12.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreExperiments.d.ts","sourceRoot":"","sources":["../../src/components/MoreExperiments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MoreExperiments.d.ts","sourceRoot":"","sources":["../../src/components/MoreExperiments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAyDxC,KAAK,oBAAoB,GAAG;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,oBAAoB,qBAyBhE"}
|
|
@@ -37,12 +37,23 @@ const PROJECT_DATA = [
|
|
|
37
37
|
url: 'https://javier.xyz/cohesive-colors'
|
|
38
38
|
}
|
|
39
39
|
];
|
|
40
|
-
const seed = 0;
|
|
41
40
|
const maxItems = 5;
|
|
41
|
+
// Each site starts at a different point in the list, so the projects near the end
|
|
42
|
+
// get surfaced too instead of being cut off by maxItems on every single site. The
|
|
43
|
+
// offset is derived from the site's own name rather than randomized, so a given
|
|
44
|
+
// site always renders the same slice — no hydration mismatch, no build-to-build churn.
|
|
45
|
+
function seedFor(key) {
|
|
46
|
+
let hash = 0;
|
|
47
|
+
for (let idx = 0; idx < key.length; idx++) {
|
|
48
|
+
hash = (hash * 31 + key.charCodeAt(idx)) | 0;
|
|
49
|
+
}
|
|
50
|
+
return Math.abs(hash);
|
|
51
|
+
}
|
|
42
52
|
export function MoreExperiments({ exclude }) {
|
|
43
53
|
const projects = exclude
|
|
44
54
|
? PROJECT_DATA.filter((project) => !project.url.includes(exclude))
|
|
45
55
|
: PROJECT_DATA;
|
|
56
|
+
const seed = exclude ? seedFor(exclude) : 0;
|
|
46
57
|
const items = new Array(Math.min(maxItems, projects.length)).fill('').map((_0, idx) => {
|
|
47
58
|
const project = projects[(seed + idx) % projects.length];
|
|
48
59
|
return (React.createElement(Li, { key: project.url },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreExperiments.js","sourceRoot":"","sources":["../../src/components/MoreExperiments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6DAA6D;QAC1E,GAAG,EAAE,0BAA0B;KAChC;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,2DAA2D;QACxE,GAAG,EAAE,kCAAkC;KACxC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,wFAAwF;QAC1F,GAAG,EAAE,uBAAuB;KAC7B;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,2FAA2F;QAC7F,GAAG,EAAE,4BAA4B;KAClC;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gDAAgD;QAC7D,GAAG,EAAE,mCAAmC;KACzC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,6EAA6E;QAC1F,GAAG,EAAE,qBAAqB;KAC3B;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE,oCAAoC;KAC1C;CACO,CAAC;AAEX,MAAM,IAAI,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"MoreExperiments.js","sourceRoot":"","sources":["../../src/components/MoreExperiments.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,6DAA6D;QAC1E,GAAG,EAAE,0BAA0B;KAChC;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,2DAA2D;QACxE,GAAG,EAAE,kCAAkC;KACxC;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,wFAAwF;QAC1F,GAAG,EAAE,uBAAuB;KAC7B;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,2FAA2F;QAC7F,GAAG,EAAE,4BAA4B;KAClC;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gDAAgD;QAC7D,GAAG,EAAE,mCAAmC;KACzC;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,6EAA6E;QAC1F,GAAG,EAAE,qBAAqB;KAC3B;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,0DAA0D;QACvE,GAAG,EAAE,oCAAoC;KAC1C;CACO,CAAC;AAEX,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,kFAAkF;AAClF,kFAAkF;AAClF,gFAAgF;AAChF,uFAAuF;AACvF,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAMD,MAAM,UAAU,eAAe,CAAC,EAAE,OAAO,EAAwB;IAC/D,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClE,CAAC,CAAC,YAAY,CAAC;IAEjB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE;QACpF,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,CACL,oBAAC,EAAE,IAAC,GAAG,EAAE,OAAO,CAAC,GAAG;YAClB,oBAAC,CAAC,IAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAG,OAAO,CAAC,IAAI,CAAK;YACvC,IAAI;YACJ,OAAO,CAAC,WAAW;gBACjB,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,QAAQ;QACP,oBAAC,IAAI,2BAAwB;QAC7B,oBAAC,KAAK,IAAC,CAAC,EAAE,CAAC,GAAI;QACf,oBAAC,EAAE,QAAE,KAAK,CAAM,CACP,CACZ,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -41,9 +41,20 @@ const PROJECT_DATA = [
|
|
|
41
41
|
}
|
|
42
42
|
] as const;
|
|
43
43
|
|
|
44
|
-
const seed = 0;
|
|
45
44
|
const maxItems = 5;
|
|
46
45
|
|
|
46
|
+
// Each site starts at a different point in the list, so the projects near the end
|
|
47
|
+
// get surfaced too instead of being cut off by maxItems on every single site. The
|
|
48
|
+
// offset is derived from the site's own name rather than randomized, so a given
|
|
49
|
+
// site always renders the same slice — no hydration mismatch, no build-to-build churn.
|
|
50
|
+
function seedFor(key: string) {
|
|
51
|
+
let hash = 0;
|
|
52
|
+
for (let idx = 0; idx < key.length; idx++) {
|
|
53
|
+
hash = (hash * 31 + key.charCodeAt(idx)) | 0;
|
|
54
|
+
}
|
|
55
|
+
return Math.abs(hash);
|
|
56
|
+
}
|
|
57
|
+
|
|
47
58
|
type MoreExperimentsProps = {
|
|
48
59
|
exclude?: string;
|
|
49
60
|
};
|
|
@@ -53,6 +64,8 @@ export function MoreExperiments({ exclude }: MoreExperimentsProps) {
|
|
|
53
64
|
? PROJECT_DATA.filter((project) => !project.url.includes(exclude))
|
|
54
65
|
: PROJECT_DATA;
|
|
55
66
|
|
|
67
|
+
const seed = exclude ? seedFor(exclude) : 0;
|
|
68
|
+
|
|
56
69
|
const items = new Array(Math.min(maxItems, projects.length)).fill('').map((_0, idx) => {
|
|
57
70
|
const project = projects[(seed + idx) % projects.length];
|
|
58
71
|
return (
|