cubing 0.24.0-pre3 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/esm/{2x2x2.sgs.json-MBIRIUNC.js → 2x2x2.sgs.json-2QRQG2UF.js} +3 -3
  2. package/dist/esm/{2x2x2.sgs.json-MBIRIUNC.js.map → 2x2x2.sgs.json-2QRQG2UF.js.map} +0 -0
  3. package/dist/esm/{3d-dynamic-inside-THECRAH6.js → 3d-dynamic-inside-EQIKTTYZ.js} +4 -4
  4. package/dist/esm/{3d-dynamic-inside-THECRAH6.js.map → 3d-dynamic-inside-EQIKTTYZ.js.map} +0 -0
  5. package/dist/esm/bluetooth/index.js +3 -3
  6. package/dist/esm/{chunk-JAGBESDG.js → chunk-37CDJ45V.js} +3 -3
  7. package/dist/esm/chunk-37CDJ45V.js.map +7 -0
  8. package/dist/esm/{chunk-FK43AAW3.js → chunk-42DBDQQX.js} +2 -2
  9. package/dist/esm/{chunk-FK43AAW3.js.map → chunk-42DBDQQX.js.map} +0 -0
  10. package/dist/esm/{chunk-DLOXZJ66.js → chunk-B27E6KTE.js} +71 -63
  11. package/dist/esm/chunk-B27E6KTE.js.map +7 -0
  12. package/dist/esm/{chunk-WODHUD4F.js → chunk-B6IDD5MD.js} +2 -2
  13. package/dist/esm/{chunk-WODHUD4F.js.map → chunk-B6IDD5MD.js.map} +0 -0
  14. package/dist/esm/{chunk-42SLLJYT.js → chunk-BBEJTW6Z.js} +2 -2
  15. package/dist/esm/{chunk-42SLLJYT.js.map → chunk-BBEJTW6Z.js.map} +0 -0
  16. package/dist/esm/{chunk-HF5CTTHX.js → chunk-GBIDMAJS.js} +2 -2
  17. package/dist/esm/{chunk-HF5CTTHX.js.map → chunk-GBIDMAJS.js.map} +0 -0
  18. package/dist/esm/{chunk-ZRNC52YW.js → chunk-LR6VCMD2.js} +2 -2
  19. package/dist/esm/{chunk-ZRNC52YW.js.map → chunk-LR6VCMD2.js.map} +0 -0
  20. package/dist/esm/{chunk-5LJOQJWE.js → chunk-SLUMTYHP.js} +118 -92
  21. package/dist/esm/chunk-SLUMTYHP.js.map +7 -0
  22. package/dist/esm/{chunk-XDVGMF6J.js → chunk-YVHK2LDM.js} +3 -3
  23. package/dist/esm/{chunk-XDVGMF6J.js.map → chunk-YVHK2LDM.js.map} +0 -0
  24. package/dist/esm/{entry-EUJSLKH7.js → entry-UARUM747.js} +14 -14
  25. package/dist/esm/{entry-EUJSLKH7.js.map → entry-UARUM747.js.map} +0 -0
  26. package/dist/esm/{fto.sgs.json-57IZYBDK.js → fto.sgs.json-DKPRQRDL.js} +3 -3
  27. package/dist/esm/{fto.sgs.json-57IZYBDK.js.map → fto.sgs.json-DKPRQRDL.js.map} +0 -0
  28. package/dist/esm/kpuzzle/index.js +3 -1
  29. package/dist/esm/{megaminx.sgs.json-EMTPD7NM.js → megaminx.sgs.json-3UELYHNZ.js} +3 -3
  30. package/dist/esm/{megaminx.sgs.json-EMTPD7NM.js.map → megaminx.sgs.json-3UELYHNZ.js.map} +0 -0
  31. package/dist/esm/{module-entry-SOBSVDFF.js → module-entry-7NBG44KF.js} +2 -2
  32. package/dist/esm/{module-entry-SOBSVDFF.js.map → module-entry-7NBG44KF.js.map} +0 -0
  33. package/dist/esm/protocol/index.js +2 -2
  34. package/dist/esm/puzzles/index.js +2 -2
  35. package/dist/esm/{pyraminx.sgs.json-3AQMZVNC.js → pyraminx.sgs.json-KGPI57MS.js} +4 -4
  36. package/dist/esm/{pyraminx.sgs.json-3AQMZVNC.js.map → pyraminx.sgs.json-KGPI57MS.js.map} +0 -0
  37. package/dist/esm/scramble/index.js +4 -4
  38. package/dist/esm/{scramble_444-FRS754UI.js → scramble_444-M3Q3OZN3.js} +6 -5
  39. package/dist/esm/scramble_444-M3Q3OZN3.js.map +7 -0
  40. package/dist/esm/search/index.js +4 -4
  41. package/dist/esm/{skewb.sgs.json-LEHGU6WW.js → skewb.sgs.json-QVGBEYZV.js} +3 -3
  42. package/dist/esm/{skewb.sgs.json-LEHGU6WW.js.map → skewb.sgs.json-QVGBEYZV.js.map} +0 -0
  43. package/dist/esm/twisty/index.js +189 -16
  44. package/dist/esm/twisty/index.js.map +3 -3
  45. package/dist/esm/{worker-inside-generated-string-FB53K5T3.js → worker-inside-generated-string-6QDQTUCQ.js} +23 -23
  46. package/dist/esm/worker-inside-generated-string-6QDQTUCQ.js.map +7 -0
  47. package/dist/types/kpuzzle/KTransformation.d.ts +2 -0
  48. package/dist/types/kpuzzle/index.d.ts +2 -2
  49. package/dist/types/puzzles/async/async-pg3d.d.ts +23 -6
  50. package/dist/types/puzzles/async/lazy-cached.d.ts +1 -0
  51. package/dist/types/puzzles/implementations/fto/index.d.ts +11 -2
  52. package/dist/types/puzzles/implementations/megaminx/index.d.ts +11 -2
  53. package/dist/types/puzzles/implementations/pyraminx/index.d.ts +7 -2
  54. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  55. package/dist/types/twisty/index.d.ts +1 -0
  56. package/dist/types/twisty/model/props/puzzle/state/PuzzleAlgProp.d.ts +1 -0
  57. package/dist/types/twisty/model/props/viewer/ViewerLinkProp.d.ts +1 -0
  58. package/dist/types/twisty/views/twizzle/TwizzleLink.css.d.ts +2 -0
  59. package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +9 -0
  60. package/dist/types/twisty/views/twizzle/url-params.d.ts +18 -0
  61. package/package.json +2 -1
  62. package/dist/esm/chunk-5LJOQJWE.js.map +0 -7
  63. package/dist/esm/chunk-DLOXZJ66.js.map +0 -7
  64. package/dist/esm/chunk-JAGBESDG.js.map +0 -7
  65. package/dist/esm/scramble_444-FRS754UI.js.map +0 -7
  66. package/dist/esm/worker-inside-generated-string-FB53K5T3.js.map +0 -7
  67. package/dist/types/puzzles/async/lazy-cached-kpuzzle.d.ts +0 -2
@@ -10,7 +10,7 @@ import {
10
10
  TwistyPropDerived,
11
11
  TwistyPropSource,
12
12
  proxy3D
13
- } from "../chunk-FK43AAW3.js";
13
+ } from "../chunk-42DBDQQX.js";
14
14
  import {
15
15
  countAnimatedLeaves,
16
16
  countMoves
@@ -20,8 +20,8 @@ import {
20
20
  cubeAppearance,
21
21
  customPGPuzzleLoader,
22
22
  puzzles
23
- } from "../chunk-5LJOQJWE.js";
24
- import "../chunk-DLOXZJ66.js";
23
+ } from "../chunk-SLUMTYHP.js";
24
+ import "../chunk-B27E6KTE.js";
25
25
  import {
26
26
  Alg,
27
27
  AlgBuilder,
@@ -1656,11 +1656,14 @@ var Twisty3DSceneWrapper = class extends ManagedCustomElement {
1656
1656
  }
1657
1657
  async setCurrentTwisty3DPuzzleWrapper(scene, twisty3DPuzzleWrapper) {
1658
1658
  const old = __privateGet(this, _currentTwisty3DPuzzleWrapper);
1659
- __privateSet(this, _currentTwisty3DPuzzleWrapper, twisty3DPuzzleWrapper);
1660
- old?.disconnect();
1661
- scene.add(await twisty3DPuzzleWrapper.twisty3DPuzzle());
1662
- if (old) {
1663
- scene.remove(await old.twisty3DPuzzle());
1659
+ try {
1660
+ __privateSet(this, _currentTwisty3DPuzzleWrapper, twisty3DPuzzleWrapper);
1661
+ old?.disconnect();
1662
+ scene.add(await twisty3DPuzzleWrapper.twisty3DPuzzle());
1663
+ } finally {
1664
+ if (old) {
1665
+ scene.remove(await old.twisty3DPuzzle());
1666
+ }
1664
1667
  }
1665
1668
  }
1666
1669
  async onPuzzle(inputs) {
@@ -2051,12 +2054,14 @@ input {
2051
2054
  var SLOW_DOWN_SCRUBBING = false;
2052
2055
  var isMouseDown = false;
2053
2056
  globalSafeDocument?.addEventListener("mousedown", function(event) {
2054
- if (event.which)
2057
+ if (event.which) {
2055
2058
  isMouseDown = true;
2059
+ }
2056
2060
  }, true);
2057
2061
  globalSafeDocument?.addEventListener("mouseup", function(event) {
2058
- if (event.which)
2062
+ if (event.which) {
2059
2063
  isMouseDown = false;
2064
+ }
2060
2065
  }, true);
2061
2066
  var y = 0;
2062
2067
  var clickNum = 0;
@@ -2776,8 +2781,9 @@ var LocalSimulMoves = class extends TraversalUp {
2776
2781
  return [];
2777
2782
  }
2778
2783
  for (const unit of alg.units()) {
2779
- if (!unit.is(Move))
2784
+ if (!unit.is(Move)) {
2780
2785
  return this.traverseAlg(alg);
2786
+ }
2781
2787
  }
2782
2788
  const moves = Array.from(alg.units());
2783
2789
  let maxSimulDur = defaultDurationForAmount(moves[0].amount);
@@ -3433,10 +3439,13 @@ var IndexerConstructorProp = class extends TwistyPropDerived {
3433
3439
  };
3434
3440
 
3435
3441
  // src/cubing/twisty/model/props/puzzle/state/PuzzleAlgProp.ts
3442
+ var validate = true;
3436
3443
  var PuzzleAlgProp = class extends TwistyPropDerived {
3437
3444
  async derive(inputs) {
3438
3445
  try {
3439
- inputs.kpuzzle.algToTransformation(inputs.algWithIssues.alg);
3446
+ if (validate) {
3447
+ inputs.kpuzzle.algToTransformation(inputs.algWithIssues.alg);
3448
+ }
3440
3449
  return inputs.algWithIssues;
3441
3450
  } catch (e) {
3442
3451
  return {
@@ -3816,14 +3825,26 @@ var TwistyPlayerModel = class {
3816
3825
  });
3817
3826
  }
3818
3827
  async twizzleLink() {
3819
- const url = new URL("https://alpha.twizzle.net/edit/");
3820
- const [puzzle, alg, setup, anchor, experimentalStickering] = await Promise.all([
3828
+ const [
3829
+ viewerLink,
3830
+ puzzleID,
3831
+ puzzleDescription,
3832
+ alg,
3833
+ setup,
3834
+ anchor,
3835
+ experimentalStickering
3836
+ ] = await Promise.all([
3837
+ this.viewerLinkProp.get(),
3821
3838
  this.puzzleIDProp.get(),
3839
+ this.puzzleDescriptionRequestProp.get(),
3822
3840
  this.algProp.get(),
3823
3841
  this.setupProp.get(),
3824
3842
  this.setupAnchorProp.get(),
3825
3843
  this.stickeringProp.get()
3826
3844
  ]);
3845
+ const isExplorer = viewerLink === "experimental-twizzle-explorer";
3846
+ console.log({ isExplorer, viewerLink });
3847
+ const url = new URL(`https://alpha.twizzle.net/${isExplorer ? "explore" : "edit"}/`);
3827
3848
  if (!alg.alg.experimentalIsEmpty()) {
3828
3849
  url.searchParams.set("alg", alg.alg.toString());
3829
3850
  }
@@ -3836,8 +3857,10 @@ var TwistyPlayerModel = class {
3836
3857
  if (experimentalStickering !== "full") {
3837
3858
  url.searchParams.set("experimental-stickering", experimentalStickering);
3838
3859
  }
3839
- if (puzzle !== "3x3x3") {
3840
- url.searchParams.set("puzzle", puzzle);
3860
+ if (isExplorer && puzzleDescription !== NO_VALUE) {
3861
+ url.searchParams.set("puzzle-description", puzzleDescription);
3862
+ } else if (puzzleID !== "3x3x3") {
3863
+ url.searchParams.set("puzzle", puzzleID);
3841
3864
  }
3842
3865
  return url.toString();
3843
3866
  }
@@ -5009,6 +5032,155 @@ padSuffix_fn = function(s) {
5009
5032
  };
5010
5033
  _highlightedLeaf = new WeakMap();
5011
5034
  customElementsShim.define("twisty-alg-editor", TwistyAlgEditor);
5035
+
5036
+ // src/cubing/twisty/views/twizzle/TwizzleLink.css.ts
5037
+ var twizzleLinkCSS = new CSSSource(`
5038
+ .wrapper {
5039
+ background: rgb(255, 245, 235);
5040
+ display: grid;
5041
+ grid-template-columns: 1fr;
5042
+ border: 1px solid rgba(0, 0, 0, 0.25);
5043
+ }
5044
+
5045
+ .setup-alg, twisty-alg-viewer {
5046
+ padding: 0.5em 1em;
5047
+ }
5048
+
5049
+ .heading {
5050
+ background: rgba(255, 230, 210, 1);
5051
+ font-weight: bold;
5052
+ padding: 0.25em 0.5em;
5053
+ }
5054
+
5055
+ twisty-player {
5056
+ width: 100%;
5057
+ }
5058
+
5059
+ twisty-player + .heading {
5060
+ padding-top: 0.5em;
5061
+ }
5062
+ `);
5063
+
5064
+ // src/cubing/twisty/views/twizzle/url-params.ts
5065
+ function updateURL(url) {
5066
+ window.history.replaceState("", "", url.toString());
5067
+ }
5068
+ var _prefix;
5069
+ var URLParamUpdater = class {
5070
+ constructor(model, options) {
5071
+ __privateAdd(this, _prefix, void 0);
5072
+ __privateSet(this, _prefix, options?.prefix ?? "");
5073
+ this.listenToAlgProp(model.algProp, "alg");
5074
+ this.listenToAlgProp(model.setupProp, "setup-alg");
5075
+ this.listenToStringSourceProp(model.stickeringProp, "stickering");
5076
+ this.listenToStringSourceProp(model.setupAnchorProp, "setup-anchor");
5077
+ this.listenToStringOrNoValueProp(model.puzzleIDRequestProp, "puzzle", NO_VALUE);
5078
+ this.listenToStringOrNoValueProp(model.puzzleDescriptionRequestProp, "puzzle-description", NO_VALUE);
5079
+ }
5080
+ setURLParam(unprefixedKey, value, defaultString) {
5081
+ const prefixedKey = __privateGet(this, _prefix) + unprefixedKey;
5082
+ const url = new URL(location.href);
5083
+ if (value === defaultString) {
5084
+ url.searchParams.delete(prefixedKey);
5085
+ } else {
5086
+ url.searchParams.set(prefixedKey, value);
5087
+ }
5088
+ updateURL(url);
5089
+ }
5090
+ async listenToStringSourceProp(prop, key, defaultString) {
5091
+ const actualDefaultString = defaultString ?? await prop.getDefaultValue();
5092
+ prop.addFreshListener((s) => {
5093
+ this.setURLParam(key, s, actualDefaultString);
5094
+ });
5095
+ }
5096
+ async listenToStringOrNoValueProp(prop, key, defaultString) {
5097
+ prop.addFreshListener((s) => {
5098
+ if (s === NO_VALUE) {
5099
+ s = defaultString;
5100
+ }
5101
+ if (s === NO_VALUE) {
5102
+ this.setURLParam(key, "", "");
5103
+ } else {
5104
+ this.setURLParam(key, s, "");
5105
+ }
5106
+ });
5107
+ }
5108
+ listenToAlgProp(prop, key) {
5109
+ prop.addFreshListener((algWithIssues) => {
5110
+ this.setURLParam(key, algWithIssues.alg.toString(), "");
5111
+ });
5112
+ }
5113
+ };
5114
+ _prefix = new WeakMap();
5115
+ function getConfigFromURL(prefix = "", url = location.href) {
5116
+ const paramMapping = {
5117
+ "alg": "alg",
5118
+ "setup-alg": "experimental-setup-alg",
5119
+ "setup-anchor": "experimental-setup-anchor",
5120
+ "puzzle": "puzzle",
5121
+ "stickering": "experimental-stickering",
5122
+ "puzzle-description": "experimental-puzzle-description"
5123
+ };
5124
+ const params = new URL(url).searchParams;
5125
+ const config = {};
5126
+ for (const [ourParam, twistyPlayerParam] of Object.entries(paramMapping)) {
5127
+ const paramValue = params.get(prefix + ourParam);
5128
+ if (paramValue !== null) {
5129
+ const configKey = twistyPlayerAttributeMap[twistyPlayerParam];
5130
+ config[configKey] = paramValue;
5131
+ }
5132
+ }
5133
+ return config;
5134
+ }
5135
+
5136
+ // src/cubing/twisty/views/twizzle/TwizzleLink.ts
5137
+ var TwizzleLink = class extends ManagedCustomElement {
5138
+ constructor() {
5139
+ super({ mode: "open" });
5140
+ this.twistyPlayer = null;
5141
+ this.a = null;
5142
+ }
5143
+ async connectedCallback() {
5144
+ this.addCSS(twizzleLinkCSS);
5145
+ this.a = this.querySelector("a");
5146
+ if (!this.a) {
5147
+ return;
5148
+ }
5149
+ const config = getConfigFromURL("", this.a.href);
5150
+ const href = this.a?.href;
5151
+ const { hostname, pathname } = new URL(href);
5152
+ if (hostname !== "alpha.twizzle.net") {
5153
+ return;
5154
+ }
5155
+ if (["/edit/", "/explore/"].includes(pathname)) {
5156
+ const isExplorer = pathname === "/explore/";
5157
+ if (config.puzzle && !(config.puzzle in puzzles)) {
5158
+ const puzzleDescription = (await import("../puzzle-geometry/index.js")).getPuzzleDescriptionString(config.puzzle);
5159
+ delete config.puzzle;
5160
+ config.experimentalPuzzleDescription = puzzleDescription;
5161
+ }
5162
+ this.twistyPlayer = this.addElement(new TwistyPlayer({
5163
+ ...config,
5164
+ viewerLink: isExplorer ? "experimental-twizzle-explorer" : "auto"
5165
+ }));
5166
+ if (config.experimentalSetupAlg) {
5167
+ this.addHeading("Setup");
5168
+ const setupAlgDiv = this.addElement(document.createElement("div"));
5169
+ setupAlgDiv.classList.add("setup-alg");
5170
+ setupAlgDiv.textContent = new Alg(config.experimentalSetupAlg).toString();
5171
+ }
5172
+ this.addHeading("Moves");
5173
+ const twistyAlgViewer = this.addElement(new TwistyAlgViewer({ twistyPlayer: this.twistyPlayer }));
5174
+ twistyAlgViewer.part.add("twisty-alg-viewer");
5175
+ }
5176
+ }
5177
+ addHeading(text) {
5178
+ const headingDiv = this.addElement(document.createElement("div"));
5179
+ headingDiv.classList.add("heading");
5180
+ headingDiv.textContent = text;
5181
+ }
5182
+ };
5183
+ customElementsShim.define("twizzle-link", TwizzleLink);
5012
5184
  export {
5013
5185
  NO_VALUE as EXPERIMENTAL_PROP_NO_VALUE,
5014
5186
  KPuzzleSVGWrapper as ExperimentalKPuzzleSVGWrapper,
@@ -5017,6 +5189,7 @@ export {
5017
5189
  TwistyAlgEditor,
5018
5190
  TwistyAlgViewer,
5019
5191
  TwistyPlayer,
5192
+ TwizzleLink,
5020
5193
  backViewLayouts,
5021
5194
  debugShowRenderStats as experimentalDebugShowRenderStats,
5022
5195
  experimentalForceNewRendererSharing