@industry-theme/repository-composition-panels 0.6.7 → 0.6.8

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 (28) hide show
  1. package/dist/{BufferResource-cAcDbPe9.js → BufferResource-CJBT8_1D.js} +2 -2
  2. package/dist/{BufferResource-cAcDbPe9.js.map → BufferResource-CJBT8_1D.js.map} +1 -1
  3. package/dist/{CanvasRenderer-vrEt8Kvw.js → CanvasRenderer-Bjw_lWbh.js} +3 -3
  4. package/dist/{CanvasRenderer-vrEt8Kvw.js.map → CanvasRenderer-Bjw_lWbh.js.map} +1 -1
  5. package/dist/{Filter-xnpEahTO.js → Filter-CSP75jUD.js} +2 -2
  6. package/dist/{Filter-xnpEahTO.js.map → Filter-CSP75jUD.js.map} +1 -1
  7. package/dist/{RenderTargetSystem-NCEP5Jvy.js → RenderTargetSystem-D702bPBS.js} +3 -3
  8. package/dist/{RenderTargetSystem-NCEP5Jvy.js.map → RenderTargetSystem-D702bPBS.js.map} +1 -1
  9. package/dist/{WebGLRenderer-KCjes89V.js → WebGLRenderer-CxCLwJCl.js} +4 -4
  10. package/dist/{WebGLRenderer-KCjes89V.js.map → WebGLRenderer-CxCLwJCl.js.map} +1 -1
  11. package/dist/{WebGPURenderer-CBPe3ZFu.js → WebGPURenderer-DT7-x1xm.js} +4 -4
  12. package/dist/{WebGPURenderer-CBPe3ZFu.js.map → WebGPURenderer-DT7-x1xm.js.map} +1 -1
  13. package/dist/{browserAll-AfGuQn9U.js → browserAll-BMFz0tFK.js} +3 -3
  14. package/dist/{browserAll-AfGuQn9U.js.map → browserAll-BMFz0tFK.js.map} +1 -1
  15. package/dist/{index-BOgxBkoa.js → index-iJqxW9Dv.js} +146 -37
  16. package/dist/{index-BOgxBkoa.js.map → index-iJqxW9Dv.js.map} +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/{init-8y10xD3C.js → init-xJeeQHwI.js} +3 -3
  19. package/dist/{init-8y10xD3C.js.map → init-xJeeQHwI.js.map} +1 -1
  20. package/dist/panels/CollectionMapPanel.d.ts.map +1 -1
  21. package/dist/panels/SearchPanel.d.ts.map +1 -1
  22. package/dist/panels/TelemetryCoveragePanel.d.ts.map +1 -1
  23. package/dist/panels.bundle.js +1 -1
  24. package/dist/webworkerAll-DQUlWM-8.js +3 -0
  25. package/dist/webworkerAll-DQUlWM-8.js.map +1 -0
  26. package/package.json +1 -1
  27. package/dist/webworkerAll-Dc1Ywudq.js +0 -3
  28. package/dist/webworkerAll-Dc1Ywudq.js.map +0 -1
@@ -104205,7 +104205,7 @@ const browserExt = {
104205
104205
  },
104206
104206
  test: () => true,
104207
104207
  load: async () => {
104208
- await import("./browserAll-AfGuQn9U.js");
104208
+ await import("./browserAll-BMFz0tFK.js");
104209
104209
  }
104210
104210
  };
104211
104211
  const webworkerExt = {
@@ -104216,7 +104216,7 @@ const webworkerExt = {
104216
104216
  },
104217
104217
  test: () => typeof self !== "undefined" && self.WorkerGlobalScope !== void 0,
104218
104218
  load: async () => {
104219
- await import("./webworkerAll-Dc1Ywudq.js");
104219
+ await import("./webworkerAll-DQUlWM-8.js");
104220
104220
  }
104221
104221
  };
104222
104222
  class ObservablePoint {
@@ -116459,19 +116459,19 @@ async function autoDetectRenderer(options) {
116459
116459
  for (let i2 = 0; i2 < preferredOrder.length; i2++) {
116460
116460
  const rendererType = preferredOrder[i2];
116461
116461
  if (rendererType === "webgpu" && await isWebGPUSupported()) {
116462
- const { WebGPURenderer } = await import("./WebGPURenderer-CBPe3ZFu.js");
116462
+ const { WebGPURenderer } = await import("./WebGPURenderer-DT7-x1xm.js");
116463
116463
  RendererClass = WebGPURenderer;
116464
116464
  finalOptions = { ...options, ...options.webgpu };
116465
116465
  break;
116466
116466
  } else if (rendererType === "webgl" && isWebGLSupported(
116467
116467
  options.failIfMajorPerformanceCaveat ?? AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat
116468
116468
  )) {
116469
- const { WebGLRenderer } = await import("./WebGLRenderer-KCjes89V.js");
116469
+ const { WebGLRenderer } = await import("./WebGLRenderer-CxCLwJCl.js");
116470
116470
  RendererClass = WebGLRenderer;
116471
116471
  finalOptions = { ...options, ...options.webgl };
116472
116472
  break;
116473
116473
  } else if (rendererType === "canvas") {
116474
- const { CanvasRenderer } = await import("./CanvasRenderer-vrEt8Kvw.js");
116474
+ const { CanvasRenderer } = await import("./CanvasRenderer-Bjw_lWbh.js");
116475
116475
  RendererClass = CanvasRenderer;
116476
116476
  finalOptions = { ...options, ...options.canvasOptions };
116477
116477
  break;
@@ -132872,8 +132872,8 @@ This indicates a sprite was rendered without valid backing data.`
132872
132872
  console.log("[nodes memo] Created nodes:", { total: memberNodes.length });
132873
132873
  return memberNodes;
132874
132874
  }, [collection.id, memberships, repositories, dependencies]);
132875
- const validatedNodes = useMemo(() => {
132876
- console.log("[validatedNodes] Validating nodes:", nodes.length);
132875
+ const { validNodes, unplacedNodes } = useMemo(() => {
132876
+ console.log("[nodeValidation] Validating nodes:", nodes.length);
132877
132877
  const nodesWithPositions = nodes.filter(
132878
132878
  (n2) => {
132879
132879
  var _a2, _b;
@@ -132882,41 +132882,29 @@ This indicates a sprite was rendered without valid backing data.`
132882
132882
  );
132883
132883
  const isInitialLoad = nodesWithPositions.length === 0 && nodes.length > 0;
132884
132884
  if (isInitialLoad) {
132885
- console.log("[validatedNodes] Initial load detected, skipping validation (auto-layout will run)");
132886
- return nodes;
132885
+ console.log("[nodeValidation] Initial load detected, skipping validation (auto-layout will run)");
132886
+ return { validNodes: nodes, unplacedNodes: [] };
132887
132887
  }
132888
- const invalidNodes = [];
132888
+ const valid2 = [];
132889
+ const unplaced = [];
132889
132890
  nodes.forEach((node2) => {
132890
- var _a2, _b;
132891
132891
  const hasRegion = !!node2.regionId;
132892
- const hasPosition = ((_a2 = node2.layout) == null ? void 0 : _a2.gridX) !== void 0 && ((_b = node2.layout) == null ? void 0 : _b.gridY) !== void 0;
132893
- if (!hasRegion) {
132894
- invalidNodes.push({
132895
- id: node2.id,
132896
- reason: `Missing regionId (has layout: ${hasPosition})`
132897
- });
132892
+ if (hasRegion) {
132893
+ valid2.push(node2);
132894
+ } else {
132895
+ unplaced.push(node2);
132898
132896
  }
132899
132897
  });
132900
- if (invalidNodes.length > 0) {
132901
- const error = new Error(
132902
- `[CollectionMapPanel] FATAL: Attempting to render nodes without regionId!
132903
- This should never happen. All nodes must have a regionId before rendering.
132904
- (Nodes without layout positions will be auto-positioned using circle packing)
132905
-
132906
- Invalid nodes (${invalidNodes.length}):
132907
- ` + invalidNodes.map((n2) => ` - ${n2.id}: ${n2.reason}`).join("\n") + `
132908
-
132909
- Total nodes: ${nodes.length}
132910
- Collection: ${collection.id}
132911
-
132912
- This is not initial load - auto-assignment should have already run.`
132898
+ if (unplaced.length > 0) {
132899
+ console.warn(
132900
+ `[nodeValidation] Found ${unplaced.length} unplaced nodes (no regionId):
132901
+ ` + unplaced.map((n2) => ` - ${n2.id}`).join("\n")
132913
132902
  );
132914
- console.error(error);
132915
- throw error;
132903
+ } else {
132904
+ console.log("[nodeValidation] ✓ All nodes have regionId");
132916
132905
  }
132917
- console.log("[validatedNodes] All nodes valid");
132918
- return nodes;
132919
- }, [nodes, collection.id]);
132906
+ return { validNodes: valid2, unplacedNodes: unplaced };
132907
+ }, [nodes]);
132920
132908
  const hasComputedLayout = useRef(false);
132921
132909
  const prevCollectionIdRef = useRef(null);
132922
132910
  useEffect(() => {
@@ -132994,6 +132982,24 @@ This is not initial load - auto-assignment should have already run.`
132994
132982
  console.log("[CollectionMapPanel] Viewport ready for coordinate conversion");
132995
132983
  viewportRef.current = viewport;
132996
132984
  }, []);
132985
+ const handleDrawerDrop = useCallback(async (event) => {
132986
+ const unplacedNodeData = event.dataTransfer.getData("application/x-unplaced-node");
132987
+ if (!unplacedNodeData) return;
132988
+ event.preventDefault();
132989
+ event.stopPropagation();
132990
+ const { nodeId } = JSON.parse(unplacedNodeData);
132991
+ console.log("[handleDrawerDrop] Dropping unplaced node:", nodeId);
132992
+ const gridCoords = domEventToGridCoords(
132993
+ event.clientX,
132994
+ event.clientY,
132995
+ viewportRef.current,
132996
+ canvasRef.current
132997
+ );
132998
+ const gridX = Math.round(gridCoords.gridX);
132999
+ const gridY = Math.round(gridCoords.gridY);
133000
+ console.log("[handleDrawerDrop] Placing at:", { gridX, gridY });
133001
+ await handleProjectMoved(nodeId, gridX, gridY);
133002
+ }, [handleProjectMoved]);
132997
133003
  return /* @__PURE__ */ jsxs(
132998
133004
  "div",
132999
133005
  {
@@ -133008,6 +133014,12 @@ This is not initial load - auto-assignment should have already run.`
133008
133014
  transition: "border-color 0.2s ease"
133009
133015
  },
133010
133016
  ...dropZoneProps,
133017
+ onDragOver: (e2) => {
133018
+ if (e2.dataTransfer.types.includes("application/x-unplaced-node")) {
133019
+ e2.preventDefault();
133020
+ }
133021
+ },
133022
+ onDrop: handleDrawerDrop,
133011
133023
  children: [
133012
133024
  /* @__PURE__ */ jsx(
133013
133025
  "button",
@@ -133042,7 +133054,7 @@ This is not initial load - auto-assignment should have already run.`
133042
133054
  /* @__PURE__ */ jsx(
133043
133055
  OverworldMapPanelContent,
133044
133056
  {
133045
- nodes: validatedNodes,
133057
+ nodes: validNodes,
133046
133058
  regionLayout,
133047
133059
  isLoading,
133048
133060
  isEditingRegions,
@@ -133058,6 +133070,103 @@ This is not initial load - auto-assignment should have already run.`
133058
133070
  onRenameRegion: handleRenameRegion,
133059
133071
  onDeleteRegion: handleDeleteRegion
133060
133072
  }
133073
+ ),
133074
+ unplacedNodes.length > 0 && /* @__PURE__ */ jsxs(
133075
+ "div",
133076
+ {
133077
+ style: {
133078
+ position: "absolute",
133079
+ bottom: 0,
133080
+ left: 0,
133081
+ right: 0,
133082
+ backgroundColor: "rgba(20, 20, 30, 0.95)",
133083
+ borderTop: "2px solid #ef4444",
133084
+ padding: "12px 16px",
133085
+ display: "flex",
133086
+ flexDirection: "column",
133087
+ gap: "8px",
133088
+ maxHeight: "180px",
133089
+ zIndex: 200,
133090
+ boxShadow: "0 -4px 6px rgba(0, 0, 0, 0.3)"
133091
+ },
133092
+ children: [
133093
+ /* @__PURE__ */ jsxs(
133094
+ "div",
133095
+ {
133096
+ style: {
133097
+ display: "flex",
133098
+ alignItems: "center",
133099
+ justifyContent: "space-between",
133100
+ color: "#ef4444",
133101
+ fontSize: "13px",
133102
+ fontWeight: 600,
133103
+ fontFamily: "monospace"
133104
+ },
133105
+ children: [
133106
+ /* @__PURE__ */ jsxs("span", { children: [
133107
+ "⚠️ Unplaced Repositories (",
133108
+ unplacedNodes.length,
133109
+ ")"
133110
+ ] }),
133111
+ /* @__PURE__ */ jsx("span", { style: { fontSize: "11px", color: "#999" }, children: "Drag onto map to place" })
133112
+ ]
133113
+ }
133114
+ ),
133115
+ /* @__PURE__ */ jsx(
133116
+ "div",
133117
+ {
133118
+ style: {
133119
+ display: "flex",
133120
+ gap: "8px",
133121
+ overflowX: "auto",
133122
+ overflowY: "hidden",
133123
+ paddingBottom: "4px"
133124
+ },
133125
+ children: unplacedNodes.map((node2) => /* @__PURE__ */ jsxs(
133126
+ "div",
133127
+ {
133128
+ draggable: true,
133129
+ onDragStart: (e2) => {
133130
+ e2.dataTransfer.setData("text/plain", node2.id);
133131
+ e2.dataTransfer.setData("application/x-unplaced-node", JSON.stringify({
133132
+ nodeId: node2.id,
133133
+ name: node2.name
133134
+ }));
133135
+ },
133136
+ style: {
133137
+ flexShrink: 0,
133138
+ minWidth: "120px",
133139
+ padding: "10px 12px",
133140
+ backgroundColor: "#2a2a3e",
133141
+ border: "1px solid #444",
133142
+ borderRadius: "6px",
133143
+ cursor: "grab",
133144
+ transition: "all 0.2s",
133145
+ color: "#fff",
133146
+ fontSize: "12px",
133147
+ fontWeight: 500
133148
+ },
133149
+ onMouseEnter: (e2) => {
133150
+ e2.currentTarget.style.backgroundColor = "#353548";
133151
+ e2.currentTarget.style.borderColor = "#666";
133152
+ e2.currentTarget.style.transform = "translateY(-2px)";
133153
+ },
133154
+ onMouseLeave: (e2) => {
133155
+ e2.currentTarget.style.backgroundColor = "#2a2a3e";
133156
+ e2.currentTarget.style.borderColor = "#444";
133157
+ e2.currentTarget.style.transform = "translateY(0)";
133158
+ },
133159
+ children: [
133160
+ /* @__PURE__ */ jsx("div", { style: { fontWeight: 600, marginBottom: "2px" }, children: node2.name }),
133161
+ /* @__PURE__ */ jsx("div", { style: { fontSize: "10px", color: "#888" }, children: node2.category || "repository" })
133162
+ ]
133163
+ },
133164
+ node2.id
133165
+ ))
133166
+ }
133167
+ )
133168
+ ]
133169
+ }
133061
133170
  )
133062
133171
  ]
133063
133172
  }
@@ -134159,4 +134268,4 @@ export {
134159
134268
  UPDATE_PRIORITY as y,
134160
134269
  removeItems as z
134161
134270
  };
134162
- //# sourceMappingURL=index-BOgxBkoa.js.map
134271
+ //# sourceMappingURL=index-iJqxW9Dv.js.map