@cardenelabs/cdl 0.113.0 → 0.114.0

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.
package/dist/react.cjs CHANGED
@@ -5122,7 +5122,7 @@ function \u63CF\u304F\u6A2A\u306E\u7AEF(n) {
5122
5122
  if (n.isRoot || !n.isLeaf) return [n.x - n.w / 2, n.x + n.w / 2];
5123
5123
  const \u8D77\u70B9 = n.x + (n.side === "right" ? -n.w / 2 : n.w / 2);
5124
5124
  const \u540D\u524D = \u653E\u5C04\u306E\u884C(n)[0];
5125
- const \u5E45 = measureTextWidth(\u540D\u524D.text, { fontSize: \u540D\u524D.fontSize});
5125
+ const \u5E45 = textWidth(\u540D\u524D.text, \u540D\u524D.fontSize);
5126
5126
  return n.side === "right" ? [\u8D77\u70B9, \u8D77\u70B9 + \u5E45] : [\u8D77\u70B9 - \u5E45, \u8D77\u70B9];
5127
5127
  }
5128
5128
  function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
@@ -5195,38 +5195,52 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
5195
5195
  if (kids.length === 0) return 1;
5196
5196
  return kids.reduce((sum, k) => sum + leafCountOf(k.id, seen), 0);
5197
5197
  };
5198
- const maxSubDepth = firstLevel.length > 0 ? Math.max(0, ...firstLevel.map((br) => subDepthOf(br.id, /* @__PURE__ */ new Set()))) : 0;
5198
+ const leftBranches = firstLevel.slice(0, leftCount);
5199
+ const rightBranches = firstLevel.slice(leftCount);
5199
5200
  const minLayer1XOffset = rootW / 2 + branchW / 2 + MIND_BOX_GAP;
5200
5201
  const preferredSubDx = subBranchW + 20;
5201
- const reserve = maxSubDepth > 0 ? branchW / 2 + maxSubDepth * preferredSubDx : 0;
5202
- const maxLayer1XOffset = Math.max(minLayer1XOffset, canvasW / 2 - reserve);
5203
- const \u8449\u306E\u540D\u524D\u306E\u6700\u5927\u5E45 = Math.max(
5204
- 0,
5205
- ...firstLevel.filter((br) => (childrenOf.get(br.id) ?? []).length === 0).map((br) => {
5206
- const \u540D\u524D = \u653E\u5C04\u306E\u884C({ title: br.title, isRoot: false })[0];
5207
- return measureTextWidth(\u540D\u524D.text, { fontSize: \u540D\u524D.fontSize});
5208
- })
5209
- );
5210
- const \u540D\u524D\u3067\u6C7A\u307E\u308B\u4E0A\u9650 = canvasW / 2 + branchW / 2 - \u8449\u306E\u540D\u524D\u306E\u6700\u5927\u5E45;
5211
- const layer1XOffset = Math.max(minLayer1XOffset, Math.min(\u540D\u524D\u3067\u6C7A\u307E\u308B\u4E0A\u9650, maxLayer1XOffset));
5212
- const room = canvasW / 2 - layer1XOffset;
5213
5202
  const MIN_SUB_W = 56;
5214
5203
  const PREFERRED_GAP = MIND_BOX_GAP;
5215
- const gapRoom = maxSubDepth > 0 ? (room - branchW / 2 - maxSubDepth * MIN_SUB_W) / maxSubDepth : 0;
5216
- const gap = Math.max(8, Math.min(PREFERRED_GAP, gapRoom));
5217
- const effSubW = maxSubDepth > 0 ? Math.max(1, Math.min(subBranchW, (room - branchW / 2 - maxSubDepth * gap) / maxSubDepth)) : subBranchW;
5218
- const step1 = (branchW + effSubW) / 2 + gap;
5219
- const stepN = effSubW + gap;
5220
- const subOffset = (subDepth) => subDepth <= 0 ? 0 : step1 + (subDepth - 1) * stepN;
5221
- const leftBranches = firstLevel.slice(0, leftCount);
5222
- const rightBranches = firstLevel.slice(leftCount);
5204
+ const \u679D\u306E\u540D\u524D\u306E\u5E45 = (title) => {
5205
+ const \u540D\u524D = \u653E\u5C04\u306E\u884C({ title, isRoot: false })[0];
5206
+ return textWidth(\u540D\u524D.text, \u540D\u524D.fontSize);
5207
+ };
5208
+ const \u679D\u306E\u6A2A\u3092\u6C7A\u3081\u308B = (br) => {
5209
+ const maxSubDepth = subDepthOf(br.id, /* @__PURE__ */ new Set());
5210
+ const \u4E0A\u9650 = maxSubDepth > 0 ? canvasW / 2 - (branchW / 2 + maxSubDepth * preferredSubDx) : canvasW / 2 + branchW / 2 - \u679D\u306E\u540D\u524D\u306E\u5E45(br.title);
5211
+ const layer1XOffset = Math.floor(Math.max(minLayer1XOffset, \u4E0A\u9650));
5212
+ const room = canvasW / 2 - layer1XOffset;
5213
+ const gapRoom = maxSubDepth > 0 ? (room - branchW / 2 - maxSubDepth * MIN_SUB_W) / maxSubDepth : 0;
5214
+ const gap = Math.floor(Math.max(8, Math.min(PREFERRED_GAP, gapRoom)));
5215
+ const effSubW = maxSubDepth > 0 ? Math.floor(
5216
+ Math.max(1, Math.min(subBranchW, (room - branchW / 2 - maxSubDepth * gap) / maxSubDepth))
5217
+ ) : subBranchW;
5218
+ const step1 = (branchW + effSubW) / 2 + gap;
5219
+ const stepN = effSubW + gap;
5220
+ return {
5221
+ layer1XOffset,
5222
+ effSubW,
5223
+ subOffset: (subDepth) => subDepth <= 0 ? 0 : step1 + (subDepth - 1) * stepN
5224
+ };
5225
+ };
5226
+ const \u6A2A\u306E\u5272\u4ED8\u8868 = new Map(
5227
+ firstLevel.map((br) => [br.id, \u679D\u306E\u6A2A\u3092\u6C7A\u3081\u308B(br)])
5228
+ );
5229
+ const \u4E00\u756A\u5185\u5074\u306E\u96E2\u308C = Math.min(
5230
+ ...firstLevel.length > 0 ? firstLevel.map((br) => \u6A2A\u306E\u5272\u4ED8\u8868.get(br.id).layer1XOffset) : [minLayer1XOffset]
5231
+ );
5223
5232
  const leavesOfSide = (brs) => Math.max(
5224
5233
  1,
5225
5234
  brs.reduce((sum, br) => sum + leafCountOf(br.id, /* @__PURE__ */ new Set()), 0)
5226
5235
  );
5227
5236
  const sideLaneCount = Math.max(leavesOfSide(leftBranches), leavesOfSide(rightBranches));
5228
5237
  const laneBandH = Math.max(0, canvasH - BRANCH_BOX_H_MAX);
5229
- const rowGap = sideLaneCount > 1 ? Math.min(laneBandH / (sideLaneCount - 1), \u7E26\u306E\u9593\u9694\u306E\u4E0A\u9650(layer1XOffset)) : subBranchH + 14;
5238
+ const rowGap = sideLaneCount > 1 ? Math.min(
5239
+ laneBandH / (sideLaneCount - 1),
5240
+ // 帯は図で 1 つなので、**一番内側の枝** から上限を取る (#966)。
5241
+ // 外へ出た枝に合わせると、内側に残った枝の傾きが 45 度を超える
5242
+ \u7E26\u306E\u9593\u9694\u306E\u4E0A\u9650(\u4E00\u756A\u5185\u5074\u306E\u96E2\u308C)
5243
+ ) : subBranchH + 14;
5230
5244
  const effSubH = Math.min(SUB_BOX_H_MAX, rowGap * 0.7);
5231
5245
  const effBranchH = Math.min(BRANCH_BOX_H_MAX, rowGap * 0.7);
5232
5246
  const \u7AEF\u306E\u4F59\u308A = Math.max(effSubH, effBranchH) / 2;
@@ -5242,11 +5256,11 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
5242
5256
  const half = nodeHalfW.get(mindData.rootId) ?? rootW / 2;
5243
5257
  return \u4E2D\u5FC3\u306Ex + (isLeft ? -half : half);
5244
5258
  };
5245
- const placeSubtree = (node, subDepth, isLeft, tone, placed, laneRef) => {
5259
+ const placeSubtree = (node, subDepth, isLeft, tone, placed, laneRef, \u6A2A) => {
5246
5260
  placed.add(node.id);
5247
5261
  const dirX = isLeft ? -1 : 1;
5248
- const x = cx + dirX * (layer1XOffset + subOffset(subDepth));
5249
- const w = subDepth === 0 ? branchW : effSubW;
5262
+ const x = cx + dirX * (\u6A2A.layer1XOffset + \u6A2A.subOffset(subDepth));
5263
+ const w = subDepth === 0 ? branchW : \u6A2A.effSubW;
5250
5264
  const h = subDepth === 0 ? effBranchH : effSubH;
5251
5265
  const myTone = node.tone ?? tone;
5252
5266
  const kids = (childrenOf.get(node.id) ?? []).filter((k) => !placed.has(k.id));
@@ -5262,7 +5276,8 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
5262
5276
  isLeft,
5263
5277
  myTone ?? MIND_TONES[i % MIND_TONES.length],
5264
5278
  placed,
5265
- laneRef
5279
+ laneRef,
5280
+ \u6A2A
5266
5281
  )
5267
5282
  );
5268
5283
  y = (ys[0] + ys[ys.length - 1]) / 2;
@@ -5295,7 +5310,7 @@ function computeMindMapLayout(mindData, cx, cy, canvasW, canvasH) {
5295
5310
  const placed = /* @__PURE__ */ new Set();
5296
5311
  brs.forEach((br, i) => {
5297
5312
  const tone = br.tone ?? MIND_TONES[(toneBase + i) % MIND_TONES.length];
5298
- placeSubtree(br, 0, isLeft, tone, placed, laneRef);
5313
+ placeSubtree(br, 0, isLeft, tone, placed, laneRef, \u6A2A\u306E\u5272\u4ED8\u8868.get(br.id) ?? \u679D\u306E\u6A2A\u3092\u6C7A\u3081\u308B(br));
5299
5314
  });
5300
5315
  };
5301
5316
  placeSide(leftBranches, true, 0);