@digilogiclabs/saas-factory-ui 2.9.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30549,10 +30549,44 @@ function buildPolyhedron(sides) {
30549
30549
  })
30550
30550
  );
30551
30551
  const faceInradius = Math.min(...built.map((f) => edgeDist(f.pts)));
30552
- const result = { faces: built, faceRadius, faceInradius };
30552
+ const opposite = built.map((_, i) => oppOf(i));
30553
+ const result = {
30554
+ faces: built,
30555
+ opposite,
30556
+ faceRadius,
30557
+ faceInradius
30558
+ };
30553
30559
  polyhedronCache.set(sides, result);
30554
30560
  return result;
30555
30561
  }
30562
+ function dealFaceValues(geo, sides, rolled) {
30563
+ const n = geo.faces.length;
30564
+ const out = new Array(n).fill(0);
30565
+ const used = /* @__PURE__ */ new Set([rolled]);
30566
+ out[0] = rolled;
30567
+ const opp0 = geo.opposite[0];
30568
+ if (opp0 >= 0) {
30569
+ out[opp0] = sides + 1 - rolled;
30570
+ used.add(sides + 1 - rolled);
30571
+ }
30572
+ const values = [];
30573
+ for (let v = 1; v <= sides; v++) if (!used.has(v)) values.push(v);
30574
+ for (let i = values.length - 1; i > 0; i--) {
30575
+ const j = Math.floor(Math.random() * (i + 1));
30576
+ [values[i], values[j]] = [values[j], values[i]];
30577
+ }
30578
+ for (let fi = 1; fi < n; fi++) {
30579
+ if (out[fi] !== 0) continue;
30580
+ const v = values.shift();
30581
+ out[fi] = v;
30582
+ const o = geo.opposite[fi];
30583
+ if (o >= 0 && out[o] === 0) {
30584
+ out[o] = sides + 1 - v;
30585
+ values.splice(values.indexOf(sides + 1 - v), 1);
30586
+ }
30587
+ }
30588
+ return out;
30589
+ }
30556
30590
  function formatDieValue(v, sides) {
30557
30591
  return sides > 8 && (v === 6 || v === 9) ? `${v}.` : String(v);
30558
30592
  }
@@ -30738,7 +30772,7 @@ function DiceRoller({
30738
30772
  const dieWrapperRefs = useRef40([]);
30739
30773
  const cubeRefs = useRef40([]);
30740
30774
  const shadowRefs = useRef40([]);
30741
- const numeralRefs = useRef40([]);
30775
+ const faceTextRefs = useRef40([]);
30742
30776
  const currentPositionsRef = useRef40(null);
30743
30777
  const rollingRef = useRef40(false);
30744
30778
  const dieSetters = useRef40([]);
@@ -30768,14 +30802,16 @@ function DiceRoller({
30768
30802
  }
30769
30803
  return shadowSetters.current[i];
30770
30804
  };
30771
- const numeralSetters = useRef40([]);
30772
- const getNumeralSetter = (i) => {
30773
- if (!numeralSetters.current[i]) {
30774
- numeralSetters.current[i] = (el) => {
30775
- numeralRefs.current[i] = el;
30805
+ const faceTextSetters = useRef40([]);
30806
+ const getFaceTextSetter = (i, fi) => {
30807
+ if (!faceTextSetters.current[i]) faceTextSetters.current[i] = [];
30808
+ if (!faceTextSetters.current[i][fi]) {
30809
+ faceTextSetters.current[i][fi] = (el) => {
30810
+ if (!faceTextRefs.current[i]) faceTextRefs.current[i] = [];
30811
+ faceTextRefs.current[i][fi] = el;
30776
30812
  };
30777
30813
  }
30778
- return numeralSetters.current[i];
30814
+ return faceTextSetters.current[i][fi];
30779
30815
  };
30780
30816
  const sheenGradientId = useId3();
30781
30817
  const timersRef = useRef40([]);
@@ -30981,12 +31017,15 @@ function DiceRoller({
30981
31017
  for (let f = 1; f <= flickerTicks; f++) {
30982
31018
  const t = setTimeout(() => {
30983
31019
  for (let i = 0; i < clampedCount; i++) {
30984
- const el = numeralRefs.current[i];
30985
- if (el)
30986
- el.textContent = formatDieValue(
30987
- Math.floor(Math.random() * sides) + 1,
30988
- sides
30989
- );
31020
+ const texts = faceTextRefs.current[i];
31021
+ if (!texts) continue;
31022
+ for (const el of texts) {
31023
+ if (el)
31024
+ el.textContent = formatDieValue(
31025
+ Math.floor(Math.random() * sides) + 1,
31026
+ sides
31027
+ );
31028
+ }
30990
31029
  }
30991
31030
  }, f * flickerStep);
30992
31031
  timersRef.current.push(t);
@@ -31013,9 +31052,19 @@ function DiceRoller({
31013
31052
  });
31014
31053
  const settleTimer = setTimeout(() => {
31015
31054
  if (sides !== 6) {
31055
+ const geo = buildPolyhedron(sides);
31016
31056
  for (let i = 0; i < clampedCount; i++) {
31017
- const el = numeralRefs.current[i];
31018
- if (el) el.textContent = formatDieValue(vals[i], sides);
31057
+ const texts = faceTextRefs.current[i];
31058
+ if (!texts) continue;
31059
+ const dealt = dealFaceValues(
31060
+ geo,
31061
+ sides,
31062
+ vals[i]
31063
+ );
31064
+ for (let fi = 0; fi < dealt.length; fi++) {
31065
+ const el = texts[fi];
31066
+ if (el) el.textContent = formatDieValue(dealt[fi], sides);
31067
+ }
31019
31068
  }
31020
31069
  }
31021
31070
  setResults(vals);
@@ -31248,7 +31297,7 @@ function DiceRoller({
31248
31297
  /* @__PURE__ */ jsx113(
31249
31298
  "text",
31250
31299
  {
31251
- ref: fi === 0 ? getNumeralSetter(d) : void 0,
31300
+ ref: getFaceTextSetter(d, fi),
31252
31301
  x: S / 2,
31253
31302
  y: S / 2,
31254
31303
  textAnchor: "middle",
@@ -44262,6 +44311,7 @@ export {
44262
44311
  cssAnimations,
44263
44312
  d6LandingRotation,
44264
44313
  dailyTrendingConfig,
44314
+ dealFaceValues,
44265
44315
  detectAuthProvider,
44266
44316
  detectDelimiter,
44267
44317
  detectHeader,