worldorbit 3.2.1 → 3.2.2

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 (81) hide show
  1. package/dist/browser/obsidian-plugin/dist/diagnostics.d.ts +3 -0
  2. package/dist/browser/obsidian-plugin/dist/diagnostics.js +23 -0
  3. package/dist/browser/obsidian-plugin/dist/examples.d.ts +3 -0
  4. package/dist/browser/obsidian-plugin/dist/examples.js +77 -0
  5. package/dist/browser/obsidian-plugin/dist/index.d.ts +9 -0
  6. package/dist/browser/obsidian-plugin/dist/index.js +8 -0
  7. package/dist/browser/obsidian-plugin/dist/main.d.ts +2 -0
  8. package/dist/browser/obsidian-plugin/dist/main.js +2 -0
  9. package/dist/browser/obsidian-plugin/dist/navigation.d.ts +6 -0
  10. package/dist/browser/obsidian-plugin/dist/navigation.js +44 -0
  11. package/dist/browser/obsidian-plugin/dist/plugin.d.ts +8 -0
  12. package/dist/browser/obsidian-plugin/dist/plugin.js +508 -0
  13. package/dist/browser/obsidian-plugin/dist/positions.d.ts +7 -0
  14. package/dist/browser/obsidian-plugin/dist/positions.js +14 -0
  15. package/dist/browser/obsidian-plugin/dist/settings.d.ts +2 -0
  16. package/dist/browser/obsidian-plugin/dist/settings.js +5 -0
  17. package/dist/browser/obsidian-plugin/dist/theme.d.ts +2 -0
  18. package/dist/browser/obsidian-plugin/dist/theme.js +31 -0
  19. package/dist/browser/obsidian-plugin/dist/types.d.ts +42 -0
  20. package/dist/browser/obsidian-plugin/dist/types.js +1 -0
  21. package/dist/browser/obsidian-plugin/dist/viewer-host.d.ts +14 -0
  22. package/dist/browser/obsidian-plugin/dist/viewer-host.js +110 -0
  23. package/dist/browser/viewer/dist/index.d.ts +1 -0
  24. package/dist/browser/viewer/dist/index.js +1 -0
  25. package/dist/browser/viewer/dist/interactive-2d.d.ts +21 -0
  26. package/dist/browser/viewer/dist/interactive-2d.js +201 -0
  27. package/dist/browser/viewer/dist/render.d.ts +1 -1
  28. package/dist/browser/viewer/dist/render.js +2 -1
  29. package/dist/browser/viewer/dist/viewer-state.d.ts +1 -1
  30. package/dist/browser/viewer/dist/viewer-state.js +1 -1
  31. package/dist/obsidian-plugin/LICENSE +21 -0
  32. package/dist/obsidian-plugin/README.md +124 -0
  33. package/dist/obsidian-plugin/main.js +108 -0
  34. package/dist/obsidian-plugin/manifest.json +9 -0
  35. package/dist/obsidian-plugin/obsidian_scsh_1.png +0 -0
  36. package/dist/obsidian-plugin/obsidian_scsh_2.png +0 -0
  37. package/dist/obsidian-plugin/styles.css +164 -0
  38. package/dist/unpkg/obsidian-plugin/dist/diagnostics.d.ts +3 -0
  39. package/dist/unpkg/obsidian-plugin/dist/diagnostics.js +23 -0
  40. package/dist/unpkg/obsidian-plugin/dist/examples.d.ts +3 -0
  41. package/dist/unpkg/obsidian-plugin/dist/examples.js +77 -0
  42. package/dist/unpkg/obsidian-plugin/dist/index.d.ts +9 -0
  43. package/dist/unpkg/obsidian-plugin/dist/index.js +8 -0
  44. package/dist/unpkg/obsidian-plugin/dist/main.d.ts +2 -0
  45. package/dist/unpkg/obsidian-plugin/dist/main.js +2 -0
  46. package/dist/unpkg/obsidian-plugin/dist/navigation.d.ts +6 -0
  47. package/dist/unpkg/obsidian-plugin/dist/navigation.js +44 -0
  48. package/dist/unpkg/obsidian-plugin/dist/plugin.d.ts +8 -0
  49. package/dist/unpkg/obsidian-plugin/dist/plugin.js +508 -0
  50. package/dist/unpkg/obsidian-plugin/dist/positions.d.ts +7 -0
  51. package/dist/unpkg/obsidian-plugin/dist/positions.js +14 -0
  52. package/dist/unpkg/obsidian-plugin/dist/settings.d.ts +2 -0
  53. package/dist/unpkg/obsidian-plugin/dist/settings.js +5 -0
  54. package/dist/unpkg/obsidian-plugin/dist/theme.d.ts +2 -0
  55. package/dist/unpkg/obsidian-plugin/dist/theme.js +31 -0
  56. package/dist/unpkg/obsidian-plugin/dist/types.d.ts +42 -0
  57. package/dist/unpkg/obsidian-plugin/dist/types.js +1 -0
  58. package/dist/unpkg/obsidian-plugin/dist/viewer-host.d.ts +14 -0
  59. package/dist/unpkg/obsidian-plugin/dist/viewer-host.js +110 -0
  60. package/dist/unpkg/viewer/dist/index.d.ts +1 -0
  61. package/dist/unpkg/viewer/dist/index.js +1 -0
  62. package/dist/unpkg/viewer/dist/interactive-2d.d.ts +21 -0
  63. package/dist/unpkg/viewer/dist/interactive-2d.js +201 -0
  64. package/dist/unpkg/viewer/dist/render.d.ts +1 -1
  65. package/dist/unpkg/viewer/dist/render.js +2 -1
  66. package/dist/unpkg/viewer/dist/viewer-state.d.ts +1 -1
  67. package/dist/unpkg/viewer/dist/viewer-state.js +1 -1
  68. package/dist/unpkg/worldorbit-editor.min.js +56 -56
  69. package/dist/unpkg/worldorbit-markdown.min.js +15 -15
  70. package/dist/unpkg/worldorbit-viewer.min.js +207 -207
  71. package/dist/unpkg/worldorbit.js +200 -0
  72. package/dist/unpkg/worldorbit.min.js +210 -210
  73. package/package.json +18 -1
  74. package/packages/viewer/dist/index.d.ts +1 -0
  75. package/packages/viewer/dist/index.js +1 -0
  76. package/packages/viewer/dist/interactive-2d.d.ts +21 -0
  77. package/packages/viewer/dist/interactive-2d.js +201 -0
  78. package/packages/viewer/dist/render.d.ts +1 -1
  79. package/packages/viewer/dist/render.js +2 -1
  80. package/packages/viewer/dist/viewer-state.d.ts +1 -1
  81. package/packages/viewer/dist/viewer-state.js +1 -1
@@ -30712,6 +30712,7 @@ void main() {
30712
30712
  createEmbedPayload: () => createEmbedPayload,
30713
30713
  createEmptyAtlasDocument: () => createEmptyAtlasDocument,
30714
30714
  createInteractiveViewer: () => createInteractiveViewer,
30715
+ createInteractiveViewer2D: () => createInteractiveViewer2D,
30715
30716
  createWorldOrbitEmbedMarkup: () => createWorldOrbitEmbedMarkup,
30716
30717
  defineWorldOrbitViewerElement: () => defineWorldOrbitViewerElement,
30717
30718
  deserializeViewerAtlasState: () => deserializeViewerAtlasState,
@@ -42503,6 +42504,205 @@ void main() {
42503
42504
  function parseSource(source) {
42504
42505
  return loadWorldOrbitSource(source).document;
42505
42506
  }
42507
+
42508
+ // packages/viewer/dist/interactive-2d.js
42509
+ var DEFAULT_VIEWER_LIMITS2 = {
42510
+ minScale: 0.2,
42511
+ maxScale: 8,
42512
+ fitPadding: 48
42513
+ };
42514
+ function createInteractiveViewer2D(container, scene, options = {}) {
42515
+ const constraints = {
42516
+ minScale: options.minScale ?? DEFAULT_VIEWER_LIMITS2.minScale,
42517
+ maxScale: options.maxScale ?? DEFAULT_VIEWER_LIMITS2.maxScale,
42518
+ fitPadding: options.fitPadding ?? DEFAULT_VIEWER_LIMITS2.fitPadding
42519
+ };
42520
+ const behavior = {
42521
+ pointer: options.pointer ?? true,
42522
+ touch: options.touch ?? true,
42523
+ selection: options.selection ?? true
42524
+ };
42525
+ let renderOptions = {
42526
+ width: options.width,
42527
+ height: options.height,
42528
+ padding: options.padding,
42529
+ preset: options.preset,
42530
+ theme: options.theme,
42531
+ layers: options.layers,
42532
+ subtitle: options.subtitle,
42533
+ pointer: behavior.pointer,
42534
+ touch: behavior.touch,
42535
+ selection: behavior.selection,
42536
+ minScale: constraints.minScale,
42537
+ maxScale: constraints.maxScale,
42538
+ fitPadding: constraints.fitPadding
42539
+ };
42540
+ let state = fitViewerState(scene, DEFAULT_VIEWER_STATE, constraints);
42541
+ let svgElement = null;
42542
+ let cameraRoot = null;
42543
+ let destroyed = false;
42544
+ let activePointerId = null;
42545
+ let lastPointerClientPoint = null;
42546
+ let dragDistance = 0;
42547
+ const previousTabIndex = container.getAttribute("tabindex");
42548
+ const previousTouchAction = container.style.touchAction;
42549
+ if (previousTabIndex === null) {
42550
+ container.tabIndex = 0;
42551
+ }
42552
+ container.classList.add("wo-viewer-container");
42553
+ container.style.touchAction = behavior.touch ? "none" : previousTouchAction;
42554
+ const handleWheel = (event) => {
42555
+ if (!behavior.pointer || destroyed || !svgElement) {
42556
+ return;
42557
+ }
42558
+ event.preventDefault();
42559
+ container.focus();
42560
+ const anchor = getScenePointFromClient(event.clientX, event.clientY);
42561
+ const factor = clamp2(Math.exp(-event.deltaY * 2e-3), 0.6, 1.6);
42562
+ updateState(zoomViewerStateAt(scene, state, factor, anchor, constraints));
42563
+ };
42564
+ const handlePointerDown = (event) => {
42565
+ if (destroyed) {
42566
+ return;
42567
+ }
42568
+ const isTouch = event.pointerType === "touch";
42569
+ if (isTouch && !behavior.touch || !isTouch && !behavior.pointer) {
42570
+ return;
42571
+ }
42572
+ if (!isTouch && event.button !== 0) {
42573
+ return;
42574
+ }
42575
+ activePointerId = event.pointerId;
42576
+ lastPointerClientPoint = { x: event.clientX, y: event.clientY };
42577
+ dragDistance = 0;
42578
+ container.setPointerCapture?.(event.pointerId);
42579
+ container.focus();
42580
+ };
42581
+ const handlePointerMove = (event) => {
42582
+ if (destroyed || activePointerId !== event.pointerId || !lastPointerClientPoint) {
42583
+ return;
42584
+ }
42585
+ const rect = svgElement?.getBoundingClientRect();
42586
+ if (!rect || rect.width <= 0 || rect.height <= 0) {
42587
+ return;
42588
+ }
42589
+ const dx = event.clientX - lastPointerClientPoint.x;
42590
+ const dy = event.clientY - lastPointerClientPoint.y;
42591
+ lastPointerClientPoint = { x: event.clientX, y: event.clientY };
42592
+ dragDistance += Math.hypot(dx, dy);
42593
+ updateState(panViewerState(state, dx * (scene.width / rect.width), dy * (scene.height / rect.height)));
42594
+ };
42595
+ const stopPointer = (event) => {
42596
+ if (activePointerId !== event.pointerId) {
42597
+ return;
42598
+ }
42599
+ activePointerId = null;
42600
+ lastPointerClientPoint = null;
42601
+ container.releasePointerCapture?.(event.pointerId);
42602
+ };
42603
+ const handleClick = (event) => {
42604
+ if (destroyed || !behavior.selection || dragDistance > 6) {
42605
+ return;
42606
+ }
42607
+ const objectEl = event.target?.closest(".wo-object[data-object-id]");
42608
+ if (!objectEl) {
42609
+ return;
42610
+ }
42611
+ updateState({
42612
+ ...state,
42613
+ selectedObjectId: objectEl.dataset.objectId ?? null
42614
+ });
42615
+ renderSvg();
42616
+ };
42617
+ container.addEventListener("wheel", handleWheel, { passive: false });
42618
+ container.addEventListener("pointerdown", handlePointerDown);
42619
+ container.addEventListener("pointermove", handlePointerMove);
42620
+ container.addEventListener("pointerup", stopPointer);
42621
+ container.addEventListener("pointercancel", stopPointer);
42622
+ container.addEventListener("click", handleClick);
42623
+ renderSvg();
42624
+ return {
42625
+ getState() {
42626
+ return { ...state };
42627
+ },
42628
+ setState(nextState) {
42629
+ updateState({
42630
+ ...state,
42631
+ ...nextState
42632
+ });
42633
+ if ("selectedObjectId" in nextState) {
42634
+ renderSvg();
42635
+ }
42636
+ },
42637
+ setRenderOptions(nextOptions) {
42638
+ renderOptions = {
42639
+ ...renderOptions,
42640
+ ...nextOptions
42641
+ };
42642
+ renderSvg();
42643
+ },
42644
+ fitToSystem() {
42645
+ updateState(fitViewerState(scene, state, constraints));
42646
+ },
42647
+ destroy() {
42648
+ if (destroyed) {
42649
+ return;
42650
+ }
42651
+ destroyed = true;
42652
+ container.removeEventListener("wheel", handleWheel);
42653
+ container.removeEventListener("pointerdown", handlePointerDown);
42654
+ container.removeEventListener("pointermove", handlePointerMove);
42655
+ container.removeEventListener("pointerup", stopPointer);
42656
+ container.removeEventListener("pointercancel", stopPointer);
42657
+ container.removeEventListener("click", handleClick);
42658
+ if (previousTabIndex === null) {
42659
+ container.removeAttribute("tabindex");
42660
+ }
42661
+ container.style.touchAction = previousTouchAction;
42662
+ container.replaceChildren();
42663
+ svgElement = null;
42664
+ cameraRoot = null;
42665
+ }
42666
+ };
42667
+ function renderSvg() {
42668
+ if (destroyed) {
42669
+ return;
42670
+ }
42671
+ container.innerHTML = renderSceneToSvg(scene, {
42672
+ width: renderOptions.width,
42673
+ height: renderOptions.height,
42674
+ padding: renderOptions.padding,
42675
+ preset: renderOptions.preset,
42676
+ theme: renderOptions.theme,
42677
+ layers: renderOptions.layers,
42678
+ subtitle: renderOptions.subtitle,
42679
+ selectedObjectId: state.selectedObjectId
42680
+ });
42681
+ svgElement = container.querySelector("svg");
42682
+ cameraRoot = container.querySelector(`[data-worldorbit-camera-root="${WORLD_LAYER_ID}"]`);
42683
+ applyTransform();
42684
+ }
42685
+ function applyTransform() {
42686
+ cameraRoot?.setAttribute("transform", composeViewerTransform(scene, state));
42687
+ }
42688
+ function updateState(nextState) {
42689
+ state = nextState;
42690
+ applyTransform();
42691
+ }
42692
+ function getScenePointFromClient(clientX, clientY) {
42693
+ const rect = svgElement?.getBoundingClientRect();
42694
+ if (!rect || rect.width <= 0 || rect.height <= 0) {
42695
+ return { x: scene.width / 2, y: scene.height / 2 };
42696
+ }
42697
+ return {
42698
+ x: (clientX - rect.left) / rect.width * scene.width,
42699
+ y: (clientY - rect.top) / rect.height * scene.height
42700
+ };
42701
+ }
42702
+ }
42703
+ function clamp2(value, min, max) {
42704
+ return Math.min(Math.max(value, min), max);
42705
+ }
42506
42706
  return __toCommonJS(worldorbit_esm_exports);
42507
42707
  })();
42508
42708
  /**