@markdy/renderer-dom 0.8.15 → 0.8.16

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 (2) hide show
  1. package/dist/index.js +19 -17
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -1930,15 +1930,6 @@ function createDiagram(opts) {
1930
1930
  }
1931
1931
  ensureSceneStyles(document);
1932
1932
  ensureNodeStyles(document);
1933
- const viewportTransform = document.createElement("div");
1934
- viewportTransform.className = "markdy-viewport-transform";
1935
- Object.assign(viewportTransform.style, {
1936
- position: "absolute",
1937
- inset: "0",
1938
- transformOrigin: "0 0",
1939
- willChange: interactiveViewport ? "transform" : "auto"
1940
- });
1941
- viewport.appendChild(viewportTransform);
1942
1933
  const scene = document.createElement("div");
1943
1934
  scene.className = "markdy-scene-root";
1944
1935
  Object.assign(scene.style, {
@@ -1952,11 +1943,20 @@ function createDiagram(opts) {
1952
1943
  transformOrigin: "0 0"
1953
1944
  });
1954
1945
  applyThemeToScene(scene, plan.theme);
1955
- viewportTransform.appendChild(scene);
1946
+ viewport.appendChild(scene);
1947
+ const viewportTransform = document.createElement("div");
1948
+ viewportTransform.className = "markdy-viewport-transform";
1949
+ Object.assign(viewportTransform.style, {
1950
+ position: "absolute",
1951
+ inset: "0",
1952
+ transformOrigin: "0 0",
1953
+ willChange: interactiveViewport ? "transform" : "auto"
1954
+ });
1955
+ scene.appendChild(viewportTransform);
1956
1956
  const sceneContent = document.createElement("div");
1957
1957
  sceneContent.className = "markdy-scene-content";
1958
1958
  Object.assign(sceneContent.style, { position: "absolute", inset: "0" });
1959
- scene.appendChild(sceneContent);
1959
+ viewportTransform.appendChild(sceneContent);
1960
1960
  const titleEl = createTitleEl(plan.title);
1961
1961
  sceneContent.appendChild(titleEl);
1962
1962
  const cameraLayer = document.createElement("div");
@@ -2014,9 +2014,11 @@ function createDiagram(opts) {
2014
2014
  nodeLayer.appendChild(el);
2015
2015
  nodeEls.set(node.id, el);
2016
2016
  }
2017
+ let fitScale = 1;
2017
2018
  function scaleScene() {
2018
- const s = viewport.clientWidth / plan.meta.width;
2019
- scene.style.transform = `scale(${s})`;
2019
+ const width = viewport.clientWidth || plan.meta.width;
2020
+ fitScale = width / plan.meta.width;
2021
+ scene.style.transform = `scale(${fitScale})`;
2020
2022
  }
2021
2023
  scaleScene();
2022
2024
  const resizeObserver = new ResizeObserver(scaleScene);
@@ -2078,8 +2080,8 @@ function createDiagram(opts) {
2078
2080
  function handleViewportWheel(event) {
2079
2081
  event.preventDefault();
2080
2082
  const rect = viewport.getBoundingClientRect();
2081
- const pointerX = event.clientX - rect.left;
2082
- const pointerY = event.clientY - rect.top;
2083
+ const pointerX = (event.clientX - rect.left) / fitScale;
2084
+ const pointerY = (event.clientY - rect.top) / fitScale;
2083
2085
  const nextScale = Math.min(MAX_VIEWPORT_ZOOM, Math.max(MIN_VIEWPORT_ZOOM, viewportScale * Math.exp(-event.deltaY * VIEWPORT_ZOOM_STEP)));
2084
2086
  if (nextScale === viewportScale) return;
2085
2087
  const sceneX = (pointerX - viewportPanX) / viewportScale;
@@ -2102,8 +2104,8 @@ function createDiagram(opts) {
2102
2104
  }
2103
2105
  function handleViewportPointerMove(event) {
2104
2106
  if (event.pointerId !== activePointerId) return;
2105
- const deltaX = event.clientX - dragLastX;
2106
- const deltaY = event.clientY - dragLastY;
2107
+ const deltaX = (event.clientX - dragLastX) / fitScale;
2108
+ const deltaY = (event.clientY - dragLastY) / fitScale;
2107
2109
  const totalX = event.clientX - dragStartX;
2108
2110
  const totalY = event.clientY - dragStartY;
2109
2111
  if (!dragMoved && Math.hypot(totalX, totalY) >= DRAG_CLICK_THRESHOLD_PX) dragMoved = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markdy/renderer-dom",
3
- "version": "0.8.15",
3
+ "version": "0.8.16",
4
4
  "description": "Browser renderer for diagram-native animated MarkdyScript architecture diagrams, built on the Web Animations API.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -44,14 +44,14 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@markdy/core": "0.8.15"
47
+ "@markdy/core": "0.8.16"
48
48
  },
49
49
  "devDependencies": {
50
50
  "jsdom": "^29.1.1",
51
51
  "tsup": "^8.5.1",
52
52
  "typescript": "^5.9.3",
53
53
  "vitest": "^4.1.7",
54
- "@markdy/stdlib-systems": "0.8.15"
54
+ "@markdy/stdlib-systems": "0.8.16"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "tsup",