@cardenelabs/cdl 0.60.0 → 0.62.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/CHANGELOG.md +39 -1
- package/dist/index.cjs +221 -155
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +22 -8
- package/dist/index.d.ts +22 -8
- package/dist/index.js +221 -155
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +97 -34
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +1 -1
- package/dist/react.d.ts +1 -1
- package/dist/react.js +97 -34
- package/dist/react.js.map +1 -1
- package/dist/{render-MbIjRWdX.d.cts → render-Dk8_6ua6.d.cts} +21 -6
- package/dist/{render-MbIjRWdX.d.ts → render-Dk8_6ua6.d.ts} +21 -6
- package/package.json +1 -1
- package/src/builder.ts +17 -11
- package/src/index.ts +1 -1
- package/src/input-option.ts +62 -0
- package/src/kinds/generic.tsx +6 -2
- package/src/lang.ts +18 -0
- package/src/render/interactive-panel.tsx +43 -20
- package/src/render/nodes.tsx +13 -6
- package/src/render/stage.tsx +5 -0
- package/src/render/utils.ts +14 -2
- package/src/render.tsx +6 -1
- package/src/types.ts +18 -5
package/dist/index.js
CHANGED
|
@@ -558,6 +558,18 @@ var en = {
|
|
|
558
558
|
"readout.kanban.inprogress": "In Progress",
|
|
559
559
|
/** `kanban-board` の列の見出し (値は `done` で読む) */
|
|
560
560
|
"readout.kanban.done": "Done",
|
|
561
|
+
/** `status-timeline` の区間の字 (値は `active` で読む) */
|
|
562
|
+
"readout.statusTimeline.active": "ACTIVE",
|
|
563
|
+
/** `status-timeline` の区間の字 (値は `idle` で読む) */
|
|
564
|
+
"readout.statusTimeline.idle": "IDLE",
|
|
565
|
+
/** `status-timeline` の区間の字 (値は `error` で読む) */
|
|
566
|
+
"readout.statusTimeline.error": "ERROR",
|
|
567
|
+
/** `user-presence` の状態の字 (値は `online` で読む) */
|
|
568
|
+
"readout.presence.online": "online",
|
|
569
|
+
/** `user-presence` の状態の字 (値は `away` で読む) */
|
|
570
|
+
"readout.presence.away": "away",
|
|
571
|
+
/** `user-presence` の状態の字 (値は `offline` で読む) */
|
|
572
|
+
"readout.presence.offline": "offline",
|
|
561
573
|
/** `traffic-light` の赤の灯の見出し (値は `red` で読む) */
|
|
562
574
|
"readout.trafficLight.red": "red",
|
|
563
575
|
/** `traffic-light` の黄の灯の見出し (値は `yellow` / `amber` で読む) */
|
|
@@ -666,6 +678,12 @@ var ja = {
|
|
|
666
678
|
"readout.kanban.todo": "\u672A\u7740\u624B",
|
|
667
679
|
"readout.kanban.inprogress": "\u9032\u884C\u4E2D",
|
|
668
680
|
"readout.kanban.done": "\u5B8C\u4E86",
|
|
681
|
+
"readout.statusTimeline.active": "\u7A3C\u50CD",
|
|
682
|
+
"readout.statusTimeline.idle": "\u5F85\u6A5F",
|
|
683
|
+
"readout.statusTimeline.error": "\u7570\u5E38",
|
|
684
|
+
"readout.presence.online": "\u30AA\u30F3\u30E9\u30A4\u30F3",
|
|
685
|
+
"readout.presence.away": "\u96E2\u5E2D",
|
|
686
|
+
"readout.presence.offline": "\u30AA\u30D5\u30E9\u30A4\u30F3",
|
|
669
687
|
"readout.trafficLight.red": "\u8D64",
|
|
670
688
|
"readout.trafficLight.yellow": "\u9EC4",
|
|
671
689
|
"readout.trafficLight.green": "\u7DD1"
|
|
@@ -1589,6 +1607,34 @@ function warn(message) {
|
|
|
1589
1607
|
}
|
|
1590
1608
|
}
|
|
1591
1609
|
|
|
1610
|
+
// src/input-option.ts
|
|
1611
|
+
function \u9078\u629E\u80A2\u306E\u5024(option) {
|
|
1612
|
+
return typeof option === "string" ? option : option.value;
|
|
1613
|
+
}
|
|
1614
|
+
function \u9078\u629E\u80A2\u306E\u540D\u524D(option) {
|
|
1615
|
+
return typeof option === "string" || option.label === "" ? \u9078\u629E\u80A2\u306E\u5024(option) : option.label;
|
|
1616
|
+
}
|
|
1617
|
+
function \u5024\u306E\u540D\u524D\u306E\u8868\u3092\u4F5C\u308B(inputs) {
|
|
1618
|
+
const \u8868 = /* @__PURE__ */ new Map();
|
|
1619
|
+
for (const input of inputs ?? []) {
|
|
1620
|
+
const \u540D\u524D = /* @__PURE__ */ new Map();
|
|
1621
|
+
if (input.kind === "dropdown" || input.kind === "radio" || input.kind === "tabs" || input.kind === "multi-select") {
|
|
1622
|
+
for (const option of input.options) {
|
|
1623
|
+
if (typeof option !== "string" && option.label !== "") \u540D\u524D.set(option.value, option.label);
|
|
1624
|
+
}
|
|
1625
|
+
} else if (input.kind === "toggle") {
|
|
1626
|
+
if (input.onLabel) \u540D\u524D.set("true", input.onLabel);
|
|
1627
|
+
if (input.offLabel) \u540D\u524D.set("false", input.offLabel);
|
|
1628
|
+
}
|
|
1629
|
+
if (\u540D\u524D.size > 0) \u8868.set(input.id, { \u540D\u524D, \u8907\u6570: input.kind === "multi-select" });
|
|
1630
|
+
}
|
|
1631
|
+
return \u8868;
|
|
1632
|
+
}
|
|
1633
|
+
function \u5024\u3092\u540D\u524D\u3067\u8AAD\u3080(\u5165\u529B\u6B04, \u5024) {
|
|
1634
|
+
if (!\u5165\u529B\u6B04.\u8907\u6570) return \u5165\u529B\u6B04.\u540D\u524D.get(\u5024) ?? \u5024;
|
|
1635
|
+
return \u5024.split(",").map((v) => \u5165\u529B\u6B04.\u540D\u524D.get(v) ?? v).join(",");
|
|
1636
|
+
}
|
|
1637
|
+
|
|
1592
1638
|
// src/kinds/text-width.ts
|
|
1593
1639
|
var WIDE_RATIO = 1.04;
|
|
1594
1640
|
var NARROW_RATIO = 0.37;
|
|
@@ -1667,6 +1713,111 @@ function requiredRowsWidth(rows, kind) {
|
|
|
1667
1713
|
if (kind === void 0) return Math.ceil(Math.max(storage, generic));
|
|
1668
1714
|
return Math.ceil(kind === "storage" ? storage : generic);
|
|
1669
1715
|
}
|
|
1716
|
+
|
|
1717
|
+
// src/kinds/compact-title.ts
|
|
1718
|
+
function estimateTextWidth(text, fontSize) {
|
|
1719
|
+
let w = 0;
|
|
1720
|
+
for (const ch of text) {
|
|
1721
|
+
const isFullWidth = /[\u3000-\u9FFF\uFF00-\uFFEF]/.test(ch);
|
|
1722
|
+
w += fontSize * (isFullWidth ? 1.05 : 0.62);
|
|
1723
|
+
}
|
|
1724
|
+
return w;
|
|
1725
|
+
}
|
|
1726
|
+
function fitTextSize(text, maxWidth, targetSize, minSize) {
|
|
1727
|
+
let size = targetSize;
|
|
1728
|
+
while (size > minSize && estimateTextWidth(text, size) > maxWidth) {
|
|
1729
|
+
size -= 1;
|
|
1730
|
+
}
|
|
1731
|
+
return size;
|
|
1732
|
+
}
|
|
1733
|
+
var COMPACT_MAX_H = 100;
|
|
1734
|
+
var COMPACT_PADDING_X = 16;
|
|
1735
|
+
var MIN_TEXT_SIZE = 11;
|
|
1736
|
+
var ASCENT = 0.72;
|
|
1737
|
+
var DESCENT = 0.25;
|
|
1738
|
+
var MIN_BAND_H = MIN_TEXT_SIZE * (ASCENT + DESCENT);
|
|
1739
|
+
var EYEBROW_BASELINE = 38;
|
|
1740
|
+
var EYEBROW_SIZE = 18;
|
|
1741
|
+
var EYEBROW_GAP = 8;
|
|
1742
|
+
var BOTTOM_INSET = 4;
|
|
1743
|
+
var eyebrowBottom = () => EYEBROW_BASELINE + EYEBROW_SIZE * DESCENT;
|
|
1744
|
+
var titleBandTop = (hasEyebrow) => eyebrowBottom() + EYEBROW_GAP ;
|
|
1745
|
+
var isCompactBox = (h) => h < COMPACT_MAX_H;
|
|
1746
|
+
function titlePlacement(node, \u901A\u5E38, opts = {}) {
|
|
1747
|
+
if (!isCompactBox(node.h)) {
|
|
1748
|
+
return { x: \u901A\u5E38.x, y: \u901A\u5E38.y, size: \u901A\u5E38.size, anchor: "start" };
|
|
1749
|
+
}
|
|
1750
|
+
const \u9AD8\u3055 = Math.max(0, node.h);
|
|
1751
|
+
const \u76EE\u5370\u3042\u308A = opts.hasEyebrow === true;
|
|
1752
|
+
const \u4E0A = \u76EE\u5370\u3042\u308A && \u9AD8\u3055 >= eyebrowBottom() ? titleBandTop() : 0;
|
|
1753
|
+
const \u751F\u306E\u5E2F = Math.max(0, \u9AD8\u3055 - \u4E0A);
|
|
1754
|
+
const \u4E0B\u4F59\u767D = \u751F\u306E\u5E2F >= MIN_BAND_H + BOTTOM_INSET ? BOTTOM_INSET : 0;
|
|
1755
|
+
const \u5E2F = \u751F\u306E\u5E2F - \u4E0B\u4F59\u767D;
|
|
1756
|
+
const \u5E45\u3067 = fitTextSize(
|
|
1757
|
+
node.title,
|
|
1758
|
+
Math.max(0, node.w - COMPACT_PADDING_X),
|
|
1759
|
+
\u901A\u5E38.size,
|
|
1760
|
+
MIN_TEXT_SIZE
|
|
1761
|
+
);
|
|
1762
|
+
const \u5E2F\u3067 = Math.floor(\u5E2F / (ASCENT + DESCENT));
|
|
1763
|
+
const size = Math.max(MIN_TEXT_SIZE, Math.min(\u5E45\u3067, \u5E2F\u3067));
|
|
1764
|
+
const \u5B57\u9AD8 = size * (ASCENT + DESCENT);
|
|
1765
|
+
const y = \u5B57\u9AD8 <= \u5E2F ? \u4E0A + \u5E2F / 2 + size * (ASCENT - DESCENT) / 2 : \u4E0A > 0 ? \u4E0A + size * ASCENT : (\u9AD8\u3055 - \u5B57\u9AD8) / 2 + size * ASCENT;
|
|
1766
|
+
return { x: node.w / 2, y, size, anchor: "middle" };
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
// src/kinds/box-lines.ts
|
|
1770
|
+
var \u884C\u9001\u308A\u306E\u6BD4 = 1.15;
|
|
1771
|
+
var \u5B57\u306E\u9AD8\u3055\u306E\u6BD4 = 0.72;
|
|
1772
|
+
var \u4E0A\u4E0B\u306E\u4F59\u767D = 2;
|
|
1773
|
+
var \u5DE6\u53F3\u306E\u4F59\u767D = 8;
|
|
1774
|
+
function \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45) {
|
|
1775
|
+
return \u7BB1\u306E\u5E45 - \u5DE6\u53F3\u306E\u4F59\u767D * 2;
|
|
1776
|
+
}
|
|
1777
|
+
function \u5E45\u3067\u5207\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
1778
|
+
if (\u4F7F\u3048\u308B\u5E452 <= 0) return "";
|
|
1779
|
+
if (\u6E2C\u308B(text, fontSize) <= \u4F7F\u3048\u308B\u5E452) return text;
|
|
1780
|
+
const \u7701\u7565 = "\u2026";
|
|
1781
|
+
const \u7701\u7565\u306E\u5E45 = \u6E2C\u308B(\u7701\u7565, fontSize);
|
|
1782
|
+
if (\u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) return "";
|
|
1783
|
+
let \u51FA = "";
|
|
1784
|
+
let \u5E45 = 0;
|
|
1785
|
+
for (const c of \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text)) {
|
|
1786
|
+
const \u5B57\u306E\u5E452 = \u6E2C\u308B(c, fontSize);
|
|
1787
|
+
if (\u5E45 + \u5B57\u306E\u5E452 + \u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) break;
|
|
1788
|
+
\u5E45 += \u5B57\u306E\u5E452;
|
|
1789
|
+
\u51FA += c;
|
|
1790
|
+
}
|
|
1791
|
+
return `${\u51FA}${\u7701\u7565}`;
|
|
1792
|
+
}
|
|
1793
|
+
var \u7E2E\u3081\u306E\u4E0B\u9650 = MIN_TEXT_SIZE;
|
|
1794
|
+
function \u5E45\u306B\u53CE\u3081\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
1795
|
+
let size = fontSize;
|
|
1796
|
+
while (size > \u7E2E\u3081\u306E\u4E0B\u9650 && \u6E2C\u308B(text, size) > \u4F7F\u3048\u308B\u5E452) size -= 1;
|
|
1797
|
+
return { text: \u5E45\u3067\u5207\u308B(text, size, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B), fontSize: size };
|
|
1798
|
+
}
|
|
1799
|
+
function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
1800
|
+
const \u533A\u5207\u308A = Intl.Segmenter;
|
|
1801
|
+
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
1802
|
+
return [...new \u533A\u5207\u308A(void 0, { granularity: "grapheme" }).segment(text)].map((g) => g.segment);
|
|
1803
|
+
}
|
|
1804
|
+
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\u30553) {
|
|
1805
|
+
const \u5019\u88DC = \u884C.filter((r, i) => i === 0 || r.text.trim() !== "");
|
|
1806
|
+
if (\u5019\u88DC.length === 0) return [];
|
|
1807
|
+
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\u30553 - \u4E0A\u4E0B\u306E\u4F59\u767D * 2;
|
|
1808
|
+
const \u9AD8\u3055 = (rs) => rs.reduce((a, r) => a + r.fontSize * \u884C\u9001\u308A\u306E\u6BD4, 0);
|
|
1809
|
+
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
1810
|
+
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
1811
|
+
const \u5E45 = \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45);
|
|
1812
|
+
const \u53CE\u3081\u305F = \u6B8B\u3059.map((r) => ({ ...r, ...\u5E45\u306B\u53CE\u3081\u308B(r.text, r.fontSize, \u5E45) }));
|
|
1813
|
+
const \u7DCF\u9AD8 = \u9AD8\u3055(\u53CE\u3081\u305F);
|
|
1814
|
+
let \u7A4D\u307F = -\u7DCF\u9AD8 / 2;
|
|
1815
|
+
return \u53CE\u3081\u305F.map((r) => {
|
|
1816
|
+
const dy = \u7A4D\u307F + (\u884C\u9001\u308A\u306E\u6BD4 + \u5B57\u306E\u9AD8\u3055\u306E\u6BD4) / 2 * r.fontSize;
|
|
1817
|
+
\u7A4D\u307F += r.fontSize * \u884C\u9001\u308A\u306E\u6BD4;
|
|
1818
|
+
return { ...r, dy };
|
|
1819
|
+
});
|
|
1820
|
+
}
|
|
1670
1821
|
var \u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E = createContext("en");
|
|
1671
1822
|
function use\u5B57\u5F15() {
|
|
1672
1823
|
const lang = useContext(\u64CD\u4F5C\u90E8\u306E\u8A00\u8A9E);
|
|
@@ -2097,7 +2248,7 @@ function InputWidget({
|
|
|
2097
2248
|
},
|
|
2098
2249
|
"data-cdl-input": input.id,
|
|
2099
2250
|
className: "cdl-ip-dropdown-select",
|
|
2100
|
-
children: input.options.map((opt) => /* @__PURE__ */ jsx("option", { value: opt, children: opt }, opt))
|
|
2251
|
+
children: input.options.map((opt) => /* @__PURE__ */ jsx("option", { value: \u9078\u629E\u80A2\u306E\u5024(opt), children: \u9078\u629E\u80A2\u306E\u540D\u524D(opt) }, \u9078\u629E\u80A2\u306E\u5024(opt)))
|
|
2101
2252
|
}
|
|
2102
2253
|
)
|
|
2103
2254
|
] });
|
|
@@ -2114,17 +2265,17 @@ function InputWidget({
|
|
|
2114
2265
|
{
|
|
2115
2266
|
type: "radio",
|
|
2116
2267
|
name: input.id,
|
|
2117
|
-
value: opt,
|
|
2118
|
-
checked: value === opt,
|
|
2268
|
+
value: \u9078\u629E\u80A2\u306E\u5024(opt),
|
|
2269
|
+
checked: value === \u9078\u629E\u80A2\u306E\u5024(opt),
|
|
2119
2270
|
onChange: () => {
|
|
2120
|
-
signal2.value = opt;
|
|
2271
|
+
signal2.value = \u9078\u629E\u80A2\u306E\u5024(opt);
|
|
2121
2272
|
},
|
|
2122
2273
|
"data-cdl-input": input.id,
|
|
2123
2274
|
className: "cdl-ip-radio-input"
|
|
2124
2275
|
}
|
|
2125
2276
|
),
|
|
2126
|
-
/* @__PURE__ */ jsx("span", { className: "cdl-ip-radio-label", children: opt })
|
|
2127
|
-
] }, opt)) })
|
|
2277
|
+
/* @__PURE__ */ jsx("span", { className: "cdl-ip-radio-label", children: \u9078\u629E\u80A2\u306E\u540D\u524D(opt) })
|
|
2278
|
+
] }, \u9078\u629E\u80A2\u306E\u5024(opt))) })
|
|
2128
2279
|
] });
|
|
2129
2280
|
case "color":
|
|
2130
2281
|
return /* @__PURE__ */ jsxs("label", { className: "cdl-ip-item cdl-ip-color", "data-cdl-input-kind": "color", children: [
|
|
@@ -2174,14 +2325,14 @@ function InputWidget({
|
|
|
2174
2325
|
{
|
|
2175
2326
|
type: "button",
|
|
2176
2327
|
role: "tab",
|
|
2177
|
-
className: `cdl-ip-tabs-btn ${value === opt ? "cdl-ip-tabs-active" : ""}`,
|
|
2328
|
+
className: `cdl-ip-tabs-btn ${value === \u9078\u629E\u80A2\u306E\u5024(opt) ? "cdl-ip-tabs-active" : ""}`,
|
|
2178
2329
|
onClick: () => {
|
|
2179
|
-
signal2.value = opt;
|
|
2330
|
+
signal2.value = \u9078\u629E\u80A2\u306E\u5024(opt);
|
|
2180
2331
|
},
|
|
2181
2332
|
"data-cdl-input": input.id,
|
|
2182
|
-
children: opt
|
|
2333
|
+
children: \u9078\u629E\u80A2\u306E\u540D\u524D(opt)
|
|
2183
2334
|
},
|
|
2184
|
-
opt
|
|
2335
|
+
\u9078\u629E\u80A2\u306E\u5024(opt)
|
|
2185
2336
|
)) })
|
|
2186
2337
|
] });
|
|
2187
2338
|
case "datetime":
|
|
@@ -4236,13 +4387,13 @@ function MultiSelectWidget({
|
|
|
4236
4387
|
"button",
|
|
4237
4388
|
{
|
|
4238
4389
|
type: "button",
|
|
4239
|
-
className: `cdl-ip-multi-select-chip ${selected.has(opt) ? "cdl-ip-multi-select-active" : ""}`,
|
|
4240
|
-
onClick: () => toggle(opt),
|
|
4390
|
+
className: `cdl-ip-multi-select-chip ${selected.has(\u9078\u629E\u80A2\u306E\u5024(opt)) ? "cdl-ip-multi-select-active" : ""}`,
|
|
4391
|
+
onClick: () => toggle(\u9078\u629E\u80A2\u306E\u5024(opt)),
|
|
4241
4392
|
"data-cdl-input": input.id,
|
|
4242
|
-
"data-cdl-multi-value": opt,
|
|
4243
|
-
children: opt
|
|
4393
|
+
"data-cdl-multi-value": \u9078\u629E\u80A2\u306E\u5024(opt),
|
|
4394
|
+
children: \u9078\u629E\u80A2\u306E\u540D\u524D(opt)
|
|
4244
4395
|
},
|
|
4245
|
-
opt
|
|
4396
|
+
\u9078\u629E\u80A2\u306E\u5024(opt)
|
|
4246
4397
|
)) })
|
|
4247
4398
|
] });
|
|
4248
4399
|
}
|
|
@@ -7798,12 +7949,14 @@ function StatusTimelineReadout({
|
|
|
7798
7949
|
} catch {
|
|
7799
7950
|
}
|
|
7800
7951
|
}
|
|
7952
|
+
const \u5F15\u304F = use\u5B57\u5F15();
|
|
7801
7953
|
const colorLookup = new Map(colorMap.map((c) => [c.status.toLowerCase(), c.color]));
|
|
7802
7954
|
const shown = events.slice(0, max);
|
|
7803
7955
|
const stripHeight = 28;
|
|
7804
7956
|
const width = 320;
|
|
7805
7957
|
const cellW = shown.length > 0 ? (width - 20) / shown.length : 0;
|
|
7806
7958
|
const height = stripHeight + 40;
|
|
7959
|
+
const \u533A\u9593\u306E\u5B57 = (status) => status === "active" || status === "idle" || status === "error" ? \u5F15\u304F(`readout.statusTimeline.${status}`) : status.toUpperCase();
|
|
7807
7960
|
return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-status-timeline", "data-cdl-readout": id, children: [
|
|
7808
7961
|
/* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
|
|
7809
7962
|
/* @__PURE__ */ jsx(
|
|
@@ -7816,9 +7969,11 @@ function StatusTimelineReadout({
|
|
|
7816
7969
|
children: shown.map((ev, i) => {
|
|
7817
7970
|
const x = 10 + i * cellW;
|
|
7818
7971
|
const c = colorLookup.get(ev.status) ?? "#cbd5e1";
|
|
7819
|
-
|
|
7972
|
+
const \u5B572 = \u533A\u9593\u306E\u5B57(ev.status);
|
|
7973
|
+
const \u63CF\u304F\u5B57 = \u5E45\u3067\u5207\u308B(\u5B572, 10, cellW - 8);
|
|
7974
|
+
return /* @__PURE__ */ jsxs("g", { "data-cdl-status-event": i, "data-cdl-status": ev.status, children: [
|
|
7820
7975
|
/* @__PURE__ */ jsx("rect", { x, y: 10, width: cellW - 2, height: stripHeight, fill: c, rx: 2 }),
|
|
7821
|
-
/* @__PURE__ */
|
|
7976
|
+
/* @__PURE__ */ jsxs(
|
|
7822
7977
|
"text",
|
|
7823
7978
|
{
|
|
7824
7979
|
x: x + cellW / 2,
|
|
@@ -7828,7 +7983,10 @@ function StatusTimelineReadout({
|
|
|
7828
7983
|
fill: "#ffffff",
|
|
7829
7984
|
fontWeight: 600,
|
|
7830
7985
|
style: { userSelect: "none" },
|
|
7831
|
-
children:
|
|
7986
|
+
children: [
|
|
7987
|
+
\u63CF\u304F\u5B57 !== \u5B572 ? /* @__PURE__ */ jsx("title", { children: \u5B572 }) : null,
|
|
7988
|
+
\u63CF\u304F\u5B57
|
|
7989
|
+
]
|
|
7832
7990
|
}
|
|
7833
7991
|
),
|
|
7834
7992
|
/* @__PURE__ */ jsx(
|
|
@@ -8146,6 +8304,8 @@ function UserPresenceReadout({
|
|
|
8146
8304
|
const width = 260;
|
|
8147
8305
|
const height = shown.length * rowH + (overflow > 0 ? 20 : 0) + 8;
|
|
8148
8306
|
const statusColor = (s) => s === "online" ? "#22c55e" : s === "away" ? "#eab308" : "#94a3b8";
|
|
8307
|
+
const \u5F15\u304F = use\u5B57\u5F15();
|
|
8308
|
+
const \u72B6\u614B\u306E\u5B57 = (s) => s === "online" || s === "away" || s === "offline" ? \u5F15\u304F(`readout.presence.${s}`) : s;
|
|
8149
8309
|
return /* @__PURE__ */ jsxs("div", { className: "cdl-ip-item cdl-ip-readout-user-presence", "data-cdl-readout": id, children: [
|
|
8150
8310
|
/* @__PURE__ */ jsx("span", { className: "cdl-ip-label", children: label }),
|
|
8151
8311
|
/* @__PURE__ */ jsxs(
|
|
@@ -8158,7 +8318,7 @@ function UserPresenceReadout({
|
|
|
8158
8318
|
children: [
|
|
8159
8319
|
shown.map((u, i) => {
|
|
8160
8320
|
const y = 4 + i * rowH;
|
|
8161
|
-
return /* @__PURE__ */ jsxs("g", { "data-cdl-presence-user": i, children: [
|
|
8321
|
+
return /* @__PURE__ */ jsxs("g", { "data-cdl-presence-user": i, "data-cdl-presence-status": u.status, children: [
|
|
8162
8322
|
/* @__PURE__ */ jsx("circle", { cx: 12, cy: y + rowH / 2, r: 6, fill: statusColor(u.status) }),
|
|
8163
8323
|
/* @__PURE__ */ jsx(
|
|
8164
8324
|
"text",
|
|
@@ -8181,7 +8341,7 @@ function UserPresenceReadout({
|
|
|
8181
8341
|
textAnchor: "end",
|
|
8182
8342
|
fill: "#64748b",
|
|
8183
8343
|
style: { userSelect: "none" },
|
|
8184
|
-
children: u.status
|
|
8344
|
+
children: \u72B6\u614B\u306E\u5B57(u.status)
|
|
8185
8345
|
}
|
|
8186
8346
|
)
|
|
8187
8347
|
] }, i);
|
|
@@ -10128,9 +10288,9 @@ function diagram(id, options) {
|
|
|
10128
10288
|
if (opts.options.length === 0) {
|
|
10129
10289
|
throw new Error(`input.dropdown '${inputId}' \u306E options \u304C\u7A7A\u3067\u3059 (\u6700\u4F4E 1 \u4EF6\u5FC5\u8981)`);
|
|
10130
10290
|
}
|
|
10131
|
-
if (!opts.options.
|
|
10291
|
+
if (!opts.options.some((o) => \u9078\u629E\u80A2\u306E\u5024(o) === opts.defaultValue)) {
|
|
10132
10292
|
throw new Error(
|
|
10133
|
-
`input.dropdown '${inputId}' \u306E defaultValue '${opts.defaultValue}' \u304C options \u306B\u542B\u307E\u308C\u307E\u305B\u3093 (options: ${opts.options.join(", ")})`
|
|
10293
|
+
`input.dropdown '${inputId}' \u306E defaultValue '${opts.defaultValue}' \u304C options \u306E\u5024\u306B\u542B\u307E\u308C\u307E\u305B\u3093 (options: ${opts.options.map(\u9078\u629E\u80A2\u306E\u5024).join(", ")})`
|
|
10134
10294
|
);
|
|
10135
10295
|
}
|
|
10136
10296
|
inputs.push({
|
|
@@ -10148,6 +10308,9 @@ function diagram(id, options) {
|
|
|
10148
10308
|
id: inputId,
|
|
10149
10309
|
kind: "toggle",
|
|
10150
10310
|
defaultValue: opts.defaultValue,
|
|
10311
|
+
// 名前を渡さない切り替えは変更前と同じ形に保つ (空の名前も渡さないのと同じ)
|
|
10312
|
+
...opts.onLabel ? { onLabel: opts.onLabel } : {},
|
|
10313
|
+
...opts.offLabel ? { offLabel: opts.offLabel } : {},
|
|
10151
10314
|
label: opts.label
|
|
10152
10315
|
});
|
|
10153
10316
|
return api;
|
|
@@ -10215,9 +10378,9 @@ function diagram(id, options) {
|
|
|
10215
10378
|
if (opts.options.length === 0) {
|
|
10216
10379
|
throw new Error(`input.radio '${inputId}' \u306E options \u304C\u7A7A\u3067\u3059`);
|
|
10217
10380
|
}
|
|
10218
|
-
if (!opts.options.
|
|
10381
|
+
if (!opts.options.some((o) => \u9078\u629E\u80A2\u306E\u5024(o) === opts.defaultValue)) {
|
|
10219
10382
|
throw new Error(
|
|
10220
|
-
`input.radio '${inputId}' \u306E defaultValue '${opts.defaultValue}' \u304C options \u306B\u542B\u307E\u308C\u307E\u305B\u3093`
|
|
10383
|
+
`input.radio '${inputId}' \u306E defaultValue '${opts.defaultValue}' \u304C options \u306E\u5024\u306B\u542B\u307E\u308C\u307E\u305B\u3093`
|
|
10221
10384
|
);
|
|
10222
10385
|
}
|
|
10223
10386
|
inputs.push({
|
|
@@ -10302,8 +10465,8 @@ function diagram(id, options) {
|
|
|
10302
10465
|
if (opts.options.length === 0) {
|
|
10303
10466
|
throw new Error(`input.tabs '${inputId}' \u306E options \u304C\u7A7A\u3067\u3059`);
|
|
10304
10467
|
}
|
|
10305
|
-
if (!opts.options.
|
|
10306
|
-
throw new Error(`input.tabs '${inputId}' \u306E defaultValue \u304C options \u306B\u542B\u307E\u308C\u307E\u305B\u3093`);
|
|
10468
|
+
if (!opts.options.some((o) => \u9078\u629E\u80A2\u306E\u5024(o) === opts.defaultValue)) {
|
|
10469
|
+
throw new Error(`input.tabs '${inputId}' \u306E defaultValue \u304C options \u306E\u5024\u306B\u542B\u307E\u308C\u307E\u305B\u3093`);
|
|
10307
10470
|
}
|
|
10308
10471
|
inputs.push({
|
|
10309
10472
|
id: inputId,
|
|
@@ -14255,8 +14418,8 @@ var TITLE_RATIO = 0.17;
|
|
|
14255
14418
|
var SUB_RATIO = 0.72;
|
|
14256
14419
|
var LINE_GAP = 3;
|
|
14257
14420
|
var BOTTOM_PAD = 4;
|
|
14258
|
-
var
|
|
14259
|
-
var
|
|
14421
|
+
var ASCENT2 = 0.72;
|
|
14422
|
+
var DESCENT2 = 0.25;
|
|
14260
14423
|
var ART_GAP = 4;
|
|
14261
14424
|
var ART_MIN_BAND = 45;
|
|
14262
14425
|
var \u843D\u3068\u3057\u3066\u3082\u63CF\u304F\u7A2E\u5225 = {
|
|
@@ -14314,9 +14477,9 @@ function labelPlan(node) {
|
|
|
14314
14477
|
y -= \u540D\u524D\u5927 + LINE_GAP;
|
|
14315
14478
|
const \u80A9\u66F8 = \u80A9\u66F8\u3042\u308A2 ? { y, size: \u5C0F\u3055\u3044\u5B57 } : null;
|
|
14316
14479
|
const \u4E0A\u306E\u884C = \u80A9\u66F8 ?? \u540D\u524D;
|
|
14317
|
-
return { \u540D\u524D, \u8AAC\u660E, \u80A9\u66F8, \u4E0A\u7AEF: \u4E0A\u306E\u884C.y - \u4E0A\u306E\u884C.size *
|
|
14480
|
+
return { \u540D\u524D, \u8AAC\u660E, \u80A9\u66F8, \u4E0A\u7AEF: \u4E0A\u306E\u884C.y - \u4E0A\u306E\u884C.size * ASCENT2 };
|
|
14318
14481
|
};
|
|
14319
|
-
const \u5165\u308B = (\u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2) => \u7A4D\u3080(1, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, 1 *
|
|
14482
|
+
const \u5165\u308B = (\u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2) => \u7A4D\u3080(1, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, 1 * DESCENT2).\u4E0A\u7AEF >= \u5929;
|
|
14320
14483
|
let \u8AAC\u660E\u3042\u308A = Boolean(node.subtitle);
|
|
14321
14484
|
let \u80A9\u66F8\u3042\u308A = Boolean(node.eyebrow);
|
|
14322
14485
|
const \u843D\u3068\u3057\u305F = [];
|
|
@@ -14334,14 +14497,14 @@ function labelPlan(node) {
|
|
|
14334
14497
|
for (let size = \u4E0A\u9650; size >= 1; size--) {
|
|
14335
14498
|
const \u5C0F\u3055\u3044\u5B572 = Math.max(1, Math.round(size * SUB_RATIO));
|
|
14336
14499
|
const \u4E0B\u306E\u884C\u5927 = \u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B572 : size;
|
|
14337
|
-
if (\u7A4D\u3080(size, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u306E\u884C\u5927 *
|
|
14500
|
+
if (\u7A4D\u3080(size, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u306E\u884C\u5927 * DESCENT2).\u4E0A\u7AEF >= \u5929) {
|
|
14338
14501
|
\u540D\u524D\u5927 = size;
|
|
14339
14502
|
break;
|
|
14340
14503
|
}
|
|
14341
14504
|
}
|
|
14342
|
-
if (\u540D\u524D\u5927 === 0) \u540D\u524D\u5927 = \u9AD8\u3055 / (
|
|
14505
|
+
if (\u540D\u524D\u5927 === 0) \u540D\u524D\u5927 = \u9AD8\u3055 / (ASCENT2 + DESCENT2);
|
|
14343
14506
|
const \u5C0F\u3055\u3044\u5B57 = Math.max(1, Math.round(\u540D\u524D\u5927 * SUB_RATIO));
|
|
14344
|
-
const \u5F35\u308A\u51FA\u3057 = (\u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B57 : \u540D\u524D\u5927) *
|
|
14507
|
+
const \u5F35\u308A\u51FA\u3057 = (\u8AAC\u660E\u3042\u308A2 ? \u5C0F\u3055\u3044\u5B57 : \u540D\u524D\u5927) * DESCENT2;
|
|
14345
14508
|
const \u4F59\u308A = Math.max(0, \u7A4D\u3080(\u540D\u524D\u5927, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u5F35\u308A\u51FA\u3057).\u4E0A\u7AEF - \u5929);
|
|
14346
14509
|
const \u4E0B\u4F59\u767D = Math.min(Math.max(BOTTOM_PAD, \u5F35\u308A\u51FA\u3057), \u5F35\u308A\u51FA\u3057 + \u4F59\u308A);
|
|
14347
14510
|
return \u7A4D\u3080(\u540D\u524D\u5927, \u8AAC\u660E\u3042\u308A2, \u80A9\u66F8\u3042\u308A2, \u4E0B\u4F59\u767D);
|
|
@@ -14431,111 +14594,6 @@ function fitArt(region, extent, art) {
|
|
|
14431
14594
|
return /* @__PURE__ */ jsx("g", { transform: `translate(${dx} ${dy}) scale(${s})`, children: art });
|
|
14432
14595
|
}
|
|
14433
14596
|
|
|
14434
|
-
// src/kinds/compact-title.ts
|
|
14435
|
-
function estimateTextWidth(text, fontSize) {
|
|
14436
|
-
let w = 0;
|
|
14437
|
-
for (const ch of text) {
|
|
14438
|
-
const isFullWidth = /[\u3000-\u9FFF\uFF00-\uFFEF]/.test(ch);
|
|
14439
|
-
w += fontSize * (isFullWidth ? 1.05 : 0.62);
|
|
14440
|
-
}
|
|
14441
|
-
return w;
|
|
14442
|
-
}
|
|
14443
|
-
function fitTextSize(text, maxWidth, targetSize, minSize) {
|
|
14444
|
-
let size = targetSize;
|
|
14445
|
-
while (size > minSize && estimateTextWidth(text, size) > maxWidth) {
|
|
14446
|
-
size -= 1;
|
|
14447
|
-
}
|
|
14448
|
-
return size;
|
|
14449
|
-
}
|
|
14450
|
-
var COMPACT_MAX_H = 100;
|
|
14451
|
-
var COMPACT_PADDING_X = 16;
|
|
14452
|
-
var MIN_TEXT_SIZE = 11;
|
|
14453
|
-
var ASCENT2 = 0.72;
|
|
14454
|
-
var DESCENT2 = 0.25;
|
|
14455
|
-
var MIN_BAND_H = MIN_TEXT_SIZE * (ASCENT2 + DESCENT2);
|
|
14456
|
-
var EYEBROW_BASELINE = 38;
|
|
14457
|
-
var EYEBROW_SIZE = 18;
|
|
14458
|
-
var EYEBROW_GAP = 8;
|
|
14459
|
-
var BOTTOM_INSET = 4;
|
|
14460
|
-
var eyebrowBottom = () => EYEBROW_BASELINE + EYEBROW_SIZE * DESCENT2;
|
|
14461
|
-
var titleBandTop = (hasEyebrow) => eyebrowBottom() + EYEBROW_GAP ;
|
|
14462
|
-
var isCompactBox = (h) => h < COMPACT_MAX_H;
|
|
14463
|
-
function titlePlacement(node, \u901A\u5E38, opts = {}) {
|
|
14464
|
-
if (!isCompactBox(node.h)) {
|
|
14465
|
-
return { x: \u901A\u5E38.x, y: \u901A\u5E38.y, size: \u901A\u5E38.size, anchor: "start" };
|
|
14466
|
-
}
|
|
14467
|
-
const \u9AD8\u3055 = Math.max(0, node.h);
|
|
14468
|
-
const \u76EE\u5370\u3042\u308A = opts.hasEyebrow === true;
|
|
14469
|
-
const \u4E0A = \u76EE\u5370\u3042\u308A && \u9AD8\u3055 >= eyebrowBottom() ? titleBandTop() : 0;
|
|
14470
|
-
const \u751F\u306E\u5E2F = Math.max(0, \u9AD8\u3055 - \u4E0A);
|
|
14471
|
-
const \u4E0B\u4F59\u767D = \u751F\u306E\u5E2F >= MIN_BAND_H + BOTTOM_INSET ? BOTTOM_INSET : 0;
|
|
14472
|
-
const \u5E2F = \u751F\u306E\u5E2F - \u4E0B\u4F59\u767D;
|
|
14473
|
-
const \u5E45\u3067 = fitTextSize(
|
|
14474
|
-
node.title,
|
|
14475
|
-
Math.max(0, node.w - COMPACT_PADDING_X),
|
|
14476
|
-
\u901A\u5E38.size,
|
|
14477
|
-
MIN_TEXT_SIZE
|
|
14478
|
-
);
|
|
14479
|
-
const \u5E2F\u3067 = Math.floor(\u5E2F / (ASCENT2 + DESCENT2));
|
|
14480
|
-
const size = Math.max(MIN_TEXT_SIZE, Math.min(\u5E45\u3067, \u5E2F\u3067));
|
|
14481
|
-
const \u5B57\u9AD8 = size * (ASCENT2 + DESCENT2);
|
|
14482
|
-
const y = \u5B57\u9AD8 <= \u5E2F ? \u4E0A + \u5E2F / 2 + size * (ASCENT2 - DESCENT2) / 2 : \u4E0A > 0 ? \u4E0A + size * ASCENT2 : (\u9AD8\u3055 - \u5B57\u9AD8) / 2 + size * ASCENT2;
|
|
14483
|
-
return { x: node.w / 2, y, size, anchor: "middle" };
|
|
14484
|
-
}
|
|
14485
|
-
|
|
14486
|
-
// src/kinds/box-lines.ts
|
|
14487
|
-
var \u884C\u9001\u308A\u306E\u6BD4 = 1.15;
|
|
14488
|
-
var \u5B57\u306E\u9AD8\u3055\u306E\u6BD4 = 0.72;
|
|
14489
|
-
var \u4E0A\u4E0B\u306E\u4F59\u767D = 2;
|
|
14490
|
-
var \u5DE6\u53F3\u306E\u4F59\u767D = 8;
|
|
14491
|
-
function \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45) {
|
|
14492
|
-
return \u7BB1\u306E\u5E45 - \u5DE6\u53F3\u306E\u4F59\u767D * 2;
|
|
14493
|
-
}
|
|
14494
|
-
function \u5E45\u3067\u5207\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
14495
|
-
if (\u4F7F\u3048\u308B\u5E452 <= 0) return "";
|
|
14496
|
-
if (\u6E2C\u308B(text, fontSize) <= \u4F7F\u3048\u308B\u5E452) return text;
|
|
14497
|
-
const \u7701\u7565 = "\u2026";
|
|
14498
|
-
const \u7701\u7565\u306E\u5E45 = \u6E2C\u308B(\u7701\u7565, fontSize);
|
|
14499
|
-
if (\u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) return "";
|
|
14500
|
-
let \u51FA = "";
|
|
14501
|
-
let \u5E45 = 0;
|
|
14502
|
-
for (const c of \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text)) {
|
|
14503
|
-
const \u5B57\u306E\u5E452 = \u6E2C\u308B(c, fontSize);
|
|
14504
|
-
if (\u5E45 + \u5B57\u306E\u5E452 + \u7701\u7565\u306E\u5E45 > \u4F7F\u3048\u308B\u5E452) break;
|
|
14505
|
-
\u5E45 += \u5B57\u306E\u5E452;
|
|
14506
|
-
\u51FA += c;
|
|
14507
|
-
}
|
|
14508
|
-
return `${\u51FA}${\u7701\u7565}`;
|
|
14509
|
-
}
|
|
14510
|
-
var \u7E2E\u3081\u306E\u4E0B\u9650 = MIN_TEXT_SIZE;
|
|
14511
|
-
function \u5E45\u306B\u53CE\u3081\u308B(text, fontSize, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B = textWidth) {
|
|
14512
|
-
let size = fontSize;
|
|
14513
|
-
while (size > \u7E2E\u3081\u306E\u4E0B\u9650 && \u6E2C\u308B(text, size) > \u4F7F\u3048\u308B\u5E452) size -= 1;
|
|
14514
|
-
return { text: \u5E45\u3067\u5207\u308B(text, size, \u4F7F\u3048\u308B\u5E452, \u6E2C\u308B), fontSize: size };
|
|
14515
|
-
}
|
|
14516
|
-
function \u66F8\u8A18\u7D20\u306B\u5206\u3051\u308B(text) {
|
|
14517
|
-
const \u533A\u5207\u308A = Intl.Segmenter;
|
|
14518
|
-
if (typeof \u533A\u5207\u308A !== "function") return [...text];
|
|
14519
|
-
return [...new \u533A\u5207\u308A(void 0, { granularity: "grapheme" }).segment(text)].map((g) => g.segment);
|
|
14520
|
-
}
|
|
14521
|
-
function \u7BB1\u306B\u7A4D\u3080(\u884C, \u7BB1\u306E\u5E45, \u7BB1\u306E\u9AD8\u30553) {
|
|
14522
|
-
const \u5019\u88DC = \u884C.filter((r, i) => i === 0 || r.text.trim() !== "");
|
|
14523
|
-
if (\u5019\u88DC.length === 0) return [];
|
|
14524
|
-
const \u4F7F\u3048\u308B\u9AD8\u3055 = \u7BB1\u306E\u9AD8\u30553 - \u4E0A\u4E0B\u306E\u4F59\u767D * 2;
|
|
14525
|
-
const \u9AD8\u3055 = (rs) => rs.reduce((a, r) => a + r.fontSize * \u884C\u9001\u308A\u306E\u6BD4, 0);
|
|
14526
|
-
const \u6B8B\u3059 = [...\u5019\u88DC];
|
|
14527
|
-
while (\u6B8B\u3059.length > 1 && \u9AD8\u3055(\u6B8B\u3059) > \u4F7F\u3048\u308B\u9AD8\u3055) \u6B8B\u3059.pop();
|
|
14528
|
-
const \u5E45 = \u4F7F\u3048\u308B\u5E45(\u7BB1\u306E\u5E45);
|
|
14529
|
-
const \u53CE\u3081\u305F = \u6B8B\u3059.map((r) => ({ ...r, ...\u5E45\u306B\u53CE\u3081\u308B(r.text, r.fontSize, \u5E45) }));
|
|
14530
|
-
const \u7DCF\u9AD8 = \u9AD8\u3055(\u53CE\u3081\u305F);
|
|
14531
|
-
let \u7A4D\u307F = -\u7DCF\u9AD8 / 2;
|
|
14532
|
-
return \u53CE\u3081\u305F.map((r) => {
|
|
14533
|
-
const dy = \u7A4D\u307F + (\u884C\u9001\u308A\u306E\u6BD4 + \u5B57\u306E\u9AD8\u3055\u306E\u6BD4) / 2 * r.fontSize;
|
|
14534
|
-
\u7A4D\u307F += r.fontSize * \u884C\u9001\u308A\u306E\u6BD4;
|
|
14535
|
-
return { ...r, dy };
|
|
14536
|
-
});
|
|
14537
|
-
}
|
|
14538
|
-
|
|
14539
14597
|
// src/render/tone.ts
|
|
14540
14598
|
var TONE = {
|
|
14541
14599
|
accent: "var(--cdl-tone-accent, #2d6a8f)",
|
|
@@ -14934,11 +14992,14 @@ function mergeStateValues(base, overrides) {
|
|
|
14934
14992
|
}
|
|
14935
14993
|
return merged;
|
|
14936
14994
|
}
|
|
14937
|
-
function interpolate(template, values) {
|
|
14995
|
+
function interpolate(template, values, \u540D\u524D\u306E\u8868) {
|
|
14938
14996
|
return template.replace(TEMPLATE_REF_RE, (_, id, accessor) => {
|
|
14939
14997
|
const raw = Object.hasOwn(values, id) ? values[id] : void 0;
|
|
14940
14998
|
if (raw === void 0) return `{${id}${accessor ?? ""}}`;
|
|
14941
|
-
if (!accessor)
|
|
14999
|
+
if (!accessor) {
|
|
15000
|
+
const \u5165\u529B\u6B04 = \u540D\u524D\u306E\u8868?.get(id);
|
|
15001
|
+
return \u5165\u529B\u6B04 ? \u5024\u3092\u540D\u524D\u3067\u8AAD\u3080(\u5165\u529B\u6B04, raw) : raw;
|
|
15002
|
+
}
|
|
14942
15003
|
const arr = parseArraySignal(raw);
|
|
14943
15004
|
if (!arr) return `{${id}${accessor}}`;
|
|
14944
15005
|
if (accessor === ".length") return String(arr.length);
|
|
@@ -23830,7 +23891,7 @@ function CardNode({ node, active }) {
|
|
|
23830
23891
|
const textAnchor = compact ? "middle" : "start";
|
|
23831
23892
|
const subtitleY = 124 - \u305A\u3089\u3057;
|
|
23832
23893
|
const \u6700\u5927\u306E\u884C\u9001\u308A = SUBTITLE_SIZE * \u884C\u9001\u308A\u306E\u500D\u7387;
|
|
23833
|
-
const \u4E8C\u884C\u304C\u5165\u308B = !compact && subtitleY - \u6700\u5927\u306E\u884C\u9001\u308A / 2 - SUBTITLE_SIZE *
|
|
23894
|
+
const \u4E8C\u884C\u304C\u5165\u308B = !compact && subtitleY - \u6700\u5927\u306E\u884C\u9001\u308A / 2 - SUBTITLE_SIZE * ASCENT > titleY + titleSize * DESCENT && subtitleY + \u6700\u5927\u306E\u884C\u9001\u308A / 2 + SUBTITLE_SIZE * DESCENT <= node.h - 4;
|
|
23834
23895
|
const \u8AAC\u660E = node.subtitle ? \u8AAC\u660E\u6587\u3092\u5272\u308A\u4ED8\u3051\u308B(node.subtitle, availableW, { \u4E8C\u884C\u307E\u3067: \u4E8C\u884C\u304C\u5165\u308B }) : void 0;
|
|
23835
23896
|
const subtitleSize = \u8AAC\u660E?.size ?? 21;
|
|
23836
23897
|
const \u884C\u9001\u308A = subtitleSize * \u884C\u9001\u308A\u306E\u500D\u7387;
|
|
@@ -24582,7 +24643,8 @@ function GenericNode({
|
|
|
24582
24643
|
node,
|
|
24583
24644
|
active,
|
|
24584
24645
|
value,
|
|
24585
|
-
stateValues
|
|
24646
|
+
stateValues,
|
|
24647
|
+
\u5024\u306E\u540D\u524D
|
|
24586
24648
|
}) {
|
|
24587
24649
|
const base = STYLES[node.kind] ?? FALLBACK;
|
|
24588
24650
|
const toned = toneColor3(node.tone);
|
|
@@ -24668,7 +24730,7 @@ function GenericNode({
|
|
|
24668
24730
|
style.look === "ledger" && /* @__PURE__ */ jsx("line", { x1: 1, y1: h - 7, x2: w - 1, y2: h - 7, stroke: paint.stroke, strokeWidth: 1 })
|
|
24669
24731
|
] });
|
|
24670
24732
|
})();
|
|
24671
|
-
const resolvedValue = value !== void 0 ? interpolate(value, stateValues) : void 0;
|
|
24733
|
+
const resolvedValue = value !== void 0 ? interpolate(value, stateValues, \u5024\u306E\u540D\u524D) : void 0;
|
|
24672
24734
|
const hasRows = (node.rows?.length ?? 0) > 0;
|
|
24673
24735
|
const centered = genericTextCentered(node.kind, hasRows);
|
|
24674
24736
|
const textAnchor = centered ? "middle" : "start";
|
|
@@ -24718,7 +24780,7 @@ function GenericNode({
|
|
|
24718
24780
|
}
|
|
24719
24781
|
),
|
|
24720
24782
|
node.rows && node.rows.length > 0 && (() => {
|
|
24721
|
-
const resolved = node.rows.map((row) => interpolate(row, stateValues));
|
|
24783
|
+
const resolved = node.rows.map((row) => interpolate(row, stateValues, \u5024\u306E\u540D\u524D));
|
|
24722
24784
|
const splits = resolved.map(splitRow);
|
|
24723
24785
|
const leftMaxWidth = splits.reduce(
|
|
24724
24786
|
(m, s) => Math.max(m, rowColumnWidth(s.left, GENERIC_ROW_LEFT_SIZE_PX, false)),
|
|
@@ -27641,8 +27703,8 @@ var EYEBROW_TRACKING = 2;
|
|
|
27641
27703
|
var SUB_SIZE = 11;
|
|
27642
27704
|
var SUB_GAP = 4;
|
|
27643
27705
|
function labelBlock(node, pos, size, band) {
|
|
27644
|
-
const \u4E0A = node.eyebrow ? size + EYEBROW_GAP2 + EYEBROW_SIZE2 *
|
|
27645
|
-
const \u4E0B = node.subtitle ? size + SUB_GAP + SUB_SIZE *
|
|
27706
|
+
const \u4E0A = node.eyebrow ? size + EYEBROW_GAP2 + EYEBROW_SIZE2 * ASCENT2 : size * ASCENT2;
|
|
27707
|
+
const \u4E0B = node.subtitle ? size + SUB_GAP + SUB_SIZE * DESCENT2 : size * DESCENT2;
|
|
27646
27708
|
const \u5E45 = Math.max(
|
|
27647
27709
|
textWidth(node.title ?? "", size),
|
|
27648
27710
|
node.eyebrow ? textWidth(node.eyebrow, EYEBROW_SIZE2, EYEBROW_TRACKING) : 0,
|
|
@@ -31383,10 +31445,11 @@ function CdlNodeView({
|
|
|
31383
31445
|
currentPhaseId,
|
|
31384
31446
|
chartLineScale,
|
|
31385
31447
|
\u95A2\u4FC2\u306E\u53D7\u3051\u53E3,
|
|
31386
|
-
lang
|
|
31448
|
+
lang,
|
|
31449
|
+
\u5024\u306E\u540D\u524D
|
|
31387
31450
|
}) {
|
|
31388
|
-
const value = node.value ? interpolate(node.value, stateValues) : void 0;
|
|
31389
|
-
const rows = (node.rows ?? []).map((r) => interpolate(r, stateValues));
|
|
31451
|
+
const value = node.value ? interpolate(node.value, stateValues, \u5024\u306E\u540D\u524D) : void 0;
|
|
31452
|
+
const rows = (node.rows ?? []).map((r) => interpolate(r, stateValues, \u5024\u306E\u540D\u524D));
|
|
31390
31453
|
const boundW = node.wBind ? resolveNumericAttr(node.wBind, stateValues, node.w) : node.w;
|
|
31391
31454
|
const boundH = node.hBind ? resolveNumericAttr(node.hBind, stateValues, node.h) : node.h;
|
|
31392
31455
|
const boundOpacity = node.opacity !== void 0 ? Math.min(1, Math.max(0, resolveNumericAttr(node.opacity, stateValues, 1))) : void 0;
|
|
@@ -31400,9 +31463,9 @@ function CdlNodeView({
|
|
|
31400
31463
|
}
|
|
31401
31464
|
const resolvedNode = {
|
|
31402
31465
|
...node,
|
|
31403
|
-
title: interpolate(node.title, stateValues),
|
|
31404
|
-
subtitle: node.subtitle ? interpolate(node.subtitle, stateValues) : node.subtitle,
|
|
31405
|
-
eyebrow: node.eyebrow ? interpolate(node.eyebrow, stateValues) : node.eyebrow,
|
|
31466
|
+
title: interpolate(node.title, stateValues, \u5024\u306E\u540D\u524D),
|
|
31467
|
+
subtitle: node.subtitle ? interpolate(node.subtitle, stateValues, \u5024\u306E\u540D\u524D) : node.subtitle,
|
|
31468
|
+
eyebrow: node.eyebrow ? interpolate(node.eyebrow, stateValues, \u5024\u306E\u540D\u524D) : node.eyebrow,
|
|
31406
31469
|
w: boundW,
|
|
31407
31470
|
h: boundH
|
|
31408
31471
|
};
|
|
@@ -31683,7 +31746,7 @@ function CdlNodeView({
|
|
|
31683
31746
|
case "mark-end":
|
|
31684
31747
|
return /* @__PURE__ */ jsx(MarkEndNode, { node: resolvedNode, active });
|
|
31685
31748
|
default:
|
|
31686
|
-
return /* @__PURE__ */ jsx(GenericNode, { node: resolvedNode, active, value: node.value, stateValues });
|
|
31749
|
+
return /* @__PURE__ */ jsx(GenericNode, { node: resolvedNode, active, value: node.value, stateValues, \u5024\u306E\u540D\u524D });
|
|
31687
31750
|
}
|
|
31688
31751
|
})();
|
|
31689
31752
|
const offsetX = node.renderOffsetX !== void 0 ? resolveNumericAttr(node.renderOffsetX, stateValues, 0) : 0;
|
|
@@ -31765,7 +31828,8 @@ function CdlStage({
|
|
|
31765
31828
|
stateValues,
|
|
31766
31829
|
debug,
|
|
31767
31830
|
compact = false,
|
|
31768
|
-
svgRef
|
|
31831
|
+
svgRef,
|
|
31832
|
+
\u5024\u306E\u540D\u524D
|
|
31769
31833
|
}) {
|
|
31770
31834
|
const [\u7126\u70B9, set\u7126\u70B9] = useState(null);
|
|
31771
31835
|
const \u95A2\u4FC2\u3092\u5149\u3089\u305B\u308B = (laid.relationFocus ?? RELATION_FOCUS_DEFAULT) === "hover";
|
|
@@ -32045,6 +32109,7 @@ function CdlStage({
|
|
|
32045
32109
|
drawing: \u63CF\u304F,
|
|
32046
32110
|
progress: \u63CF\u304F ? \u63CF\u304F\u9032\u307F : progress,
|
|
32047
32111
|
stateValues,
|
|
32112
|
+
\u5024\u306E\u540D\u524D,
|
|
32048
32113
|
currentPhaseId: currentPhase?.id,
|
|
32049
32114
|
chartLineScale: chartLineScales.get(node.id)
|
|
32050
32115
|
}
|
|
@@ -32286,6 +32351,7 @@ function CdlDiagramView({ diagram: diagram2, laid: laidProp, hideHeader = false,
|
|
|
32286
32351
|
if (!isInteractive) return baseStateValues;
|
|
32287
32352
|
return mergeStateValues(baseStateValues, interactive.stateOverrides);
|
|
32288
32353
|
}, [isInteractive, baseStateValues, interactive.stateOverrides]);
|
|
32354
|
+
const \u5024\u306E\u540D\u524D = useMemo(() => \u5024\u306E\u540D\u524D\u306E\u8868\u3092\u4F5C\u308B(diagram2.inputs), [diagram2.inputs]);
|
|
32289
32355
|
return /* @__PURE__ */ jsxs(
|
|
32290
32356
|
"div",
|
|
32291
32357
|
{
|
|
@@ -32314,7 +32380,7 @@ function CdlDiagramView({ diagram: diagram2, laid: laidProp, hideHeader = false,
|
|
|
32314
32380
|
}
|
|
32315
32381
|
),
|
|
32316
32382
|
isInteractive && interactive.panel,
|
|
32317
|
-
/* @__PURE__ */ jsx(CdlStage, { laid, currentPhase, progress, drawProgress, stateValues, debug, compact: hideHeader, svgRef: isInteractive ? interactive.svgRef : void 0 }),
|
|
32383
|
+
/* @__PURE__ */ jsx(CdlStage, { laid, currentPhase, progress, drawProgress, stateValues, \u5024\u306E\u540D\u524D, debug, compact: hideHeader, svgRef: isInteractive ? interactive.svgRef : void 0 }),
|
|
32318
32384
|
hideHeader && !hideMiniPhaseIndicator && currentPhase && laid.phases.length > 1 && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 border-t border-[var(--cdl-divider,#d4d4d8)]/40 bg-[var(--cdl-stage-bg,#f1f5f9)]/50 px-3 py-2 text-xs", children: [
|
|
32319
32385
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
32320
32386
|
laid.phases.map((p, i) => /* @__PURE__ */ jsx(
|