@cardenelabs/dragon 0.13.0 → 0.14.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/README.md +46 -34
- package/dist/index.cjs +1511 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +402 -3
- package/dist/index.d.ts +402 -3
- package/dist/index.js +1512 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/color.ts +31 -6
- package/src/compile.ts +268 -9
- package/src/input-size.ts +12 -0
- package/src/json-parser.ts +456 -21
- package/src/schemas/diagram.json +356 -0
- package/src/types.ts +91 -0
- package/src/v05/input-table.generated.ts +136 -0
- package/src/v05/parser-types.ts +5 -1
- package/src/v05/parser.ts +695 -8
package/src/schemas/diagram.json
CHANGED
|
@@ -368,6 +368,36 @@
|
|
|
368
368
|
"required": ["sides"]
|
|
369
369
|
}
|
|
370
370
|
]
|
|
371
|
+
},
|
|
372
|
+
"wBind": {
|
|
373
|
+
"type": "string",
|
|
374
|
+
"minLength": 1,
|
|
375
|
+
"pattern": "\\S",
|
|
376
|
+
"description": "箱の幅を値に追随させる。 状態の名前を {名前} の形で書く。 配置計算は追随前の大きさを使う"
|
|
377
|
+
},
|
|
378
|
+
"hBind": {
|
|
379
|
+
"type": "string",
|
|
380
|
+
"minLength": 1,
|
|
381
|
+
"pattern": "\\S",
|
|
382
|
+
"description": "箱の高さを値に追随させる。 wBind と同じ読み方"
|
|
383
|
+
},
|
|
384
|
+
"opacity": {
|
|
385
|
+
"type": ["number", "string"],
|
|
386
|
+
"minLength": 1,
|
|
387
|
+
"pattern": "\\S",
|
|
388
|
+
"description": "箱の濃さ。 0 から 1 の数か、状態の名前。 書かなければ完全に見える"
|
|
389
|
+
},
|
|
390
|
+
"renderOffsetX": {
|
|
391
|
+
"type": ["number", "string"],
|
|
392
|
+
"minLength": 1,
|
|
393
|
+
"pattern": "\\S",
|
|
394
|
+
"description": "描く時だけ箱を横へずらす量。 配置計算と矢印はずらす前の位置を使う"
|
|
395
|
+
},
|
|
396
|
+
"renderOffsetY": {
|
|
397
|
+
"type": ["number", "string"],
|
|
398
|
+
"minLength": 1,
|
|
399
|
+
"pattern": "\\S",
|
|
400
|
+
"description": "描く時だけ箱を縦へずらす量。 renderOffsetX と同じ読み方"
|
|
371
401
|
}
|
|
372
402
|
}
|
|
373
403
|
}
|
|
@@ -459,6 +489,24 @@
|
|
|
459
489
|
"type": "number"
|
|
460
490
|
}
|
|
461
491
|
}
|
|
492
|
+
},
|
|
493
|
+
"widthBind": {
|
|
494
|
+
"type": "string",
|
|
495
|
+
"minLength": 1,
|
|
496
|
+
"pattern": "\\S",
|
|
497
|
+
"description": "線の太さを値に追随させる。 状態やつまみの名前を {名前} の形で書く"
|
|
498
|
+
},
|
|
499
|
+
"strokeBind": {
|
|
500
|
+
"type": "string",
|
|
501
|
+
"minLength": 1,
|
|
502
|
+
"pattern": "\\S",
|
|
503
|
+
"description": "線の色を値に追随させる。 widthBind と同じ読み方"
|
|
504
|
+
},
|
|
505
|
+
"dashOffsetBind": {
|
|
506
|
+
"type": "string",
|
|
507
|
+
"minLength": 1,
|
|
508
|
+
"pattern": "\\S",
|
|
509
|
+
"description": "破線の位置を値に追随させる (流れているように見せる)。 widthBind と同じ読み方"
|
|
462
510
|
}
|
|
463
511
|
}
|
|
464
512
|
}
|
|
@@ -1485,6 +1533,314 @@
|
|
|
1485
1533
|
}
|
|
1486
1534
|
]
|
|
1487
1535
|
}
|
|
1536
|
+
},
|
|
1537
|
+
"inputs": {
|
|
1538
|
+
"type": "array",
|
|
1539
|
+
"description": "読む人が動かすつまみ。 値を握り、箱の文字や部品がその値を追いかける。 箱ではないので縦列に載らず、図全体に 1 つの並びとして持つ。",
|
|
1540
|
+
"items": {
|
|
1541
|
+
"type": "object",
|
|
1542
|
+
"required": ["id", "kind"],
|
|
1543
|
+
"additionalProperties": false,
|
|
1544
|
+
"properties": {
|
|
1545
|
+
"id": {
|
|
1546
|
+
"type": "string",
|
|
1547
|
+
"minLength": 1
|
|
1548
|
+
},
|
|
1549
|
+
"kind": {
|
|
1550
|
+
"type": "string",
|
|
1551
|
+
"enum": [
|
|
1552
|
+
"color",
|
|
1553
|
+
"datetime",
|
|
1554
|
+
"dropdown",
|
|
1555
|
+
"multi-select",
|
|
1556
|
+
"number",
|
|
1557
|
+
"radio",
|
|
1558
|
+
"range",
|
|
1559
|
+
"slider",
|
|
1560
|
+
"stepper",
|
|
1561
|
+
"tabs",
|
|
1562
|
+
"text",
|
|
1563
|
+
"timeline",
|
|
1564
|
+
"toggle",
|
|
1565
|
+
"xypad"
|
|
1566
|
+
]
|
|
1567
|
+
},
|
|
1568
|
+
"autoplay": {
|
|
1569
|
+
"type": "boolean"
|
|
1570
|
+
},
|
|
1571
|
+
"defaultHi": {
|
|
1572
|
+
"type": "number"
|
|
1573
|
+
},
|
|
1574
|
+
"defaultLo": {
|
|
1575
|
+
"type": "number"
|
|
1576
|
+
},
|
|
1577
|
+
"defaultSpeedIdx": {
|
|
1578
|
+
"type": "number"
|
|
1579
|
+
},
|
|
1580
|
+
"defaultValue": {
|
|
1581
|
+
"type": ["boolean", "number", "string"]
|
|
1582
|
+
},
|
|
1583
|
+
"defaultValues": {
|
|
1584
|
+
"type": "array",
|
|
1585
|
+
"items": {
|
|
1586
|
+
"type": "string"
|
|
1587
|
+
}
|
|
1588
|
+
},
|
|
1589
|
+
"defaultX": {
|
|
1590
|
+
"type": "number"
|
|
1591
|
+
},
|
|
1592
|
+
"defaultY": {
|
|
1593
|
+
"type": "number"
|
|
1594
|
+
},
|
|
1595
|
+
"duration": {
|
|
1596
|
+
"type": "number"
|
|
1597
|
+
},
|
|
1598
|
+
"label": {
|
|
1599
|
+
"type": "string"
|
|
1600
|
+
},
|
|
1601
|
+
"loop": {
|
|
1602
|
+
"type": "boolean"
|
|
1603
|
+
},
|
|
1604
|
+
"max": {
|
|
1605
|
+
"type": "number"
|
|
1606
|
+
},
|
|
1607
|
+
"maxLength": {
|
|
1608
|
+
"type": "number"
|
|
1609
|
+
},
|
|
1610
|
+
"min": {
|
|
1611
|
+
"type": "number"
|
|
1612
|
+
},
|
|
1613
|
+
"options": {
|
|
1614
|
+
"type": "array",
|
|
1615
|
+
"items": {
|
|
1616
|
+
"type": "string"
|
|
1617
|
+
}
|
|
1618
|
+
},
|
|
1619
|
+
"placeholder": {
|
|
1620
|
+
"type": "string"
|
|
1621
|
+
},
|
|
1622
|
+
"speeds": {
|
|
1623
|
+
"type": "array",
|
|
1624
|
+
"items": {
|
|
1625
|
+
"type": "number"
|
|
1626
|
+
}
|
|
1627
|
+
},
|
|
1628
|
+
"step": {
|
|
1629
|
+
"type": "number"
|
|
1630
|
+
},
|
|
1631
|
+
"xMax": {
|
|
1632
|
+
"type": "number"
|
|
1633
|
+
},
|
|
1634
|
+
"xMin": {
|
|
1635
|
+
"type": "number"
|
|
1636
|
+
},
|
|
1637
|
+
"yMax": {
|
|
1638
|
+
"type": "number"
|
|
1639
|
+
},
|
|
1640
|
+
"yMin": {
|
|
1641
|
+
"type": "number"
|
|
1642
|
+
}
|
|
1643
|
+
},
|
|
1644
|
+
"oneOf": [
|
|
1645
|
+
{
|
|
1646
|
+
"properties": {
|
|
1647
|
+
"kind": {
|
|
1648
|
+
"enum": ["color", "datetime", "text"]
|
|
1649
|
+
},
|
|
1650
|
+
"defaultValue": {
|
|
1651
|
+
"type": "string"
|
|
1652
|
+
}
|
|
1653
|
+
},
|
|
1654
|
+
"required": ["defaultValue"]
|
|
1655
|
+
},
|
|
1656
|
+
{
|
|
1657
|
+
"properties": {
|
|
1658
|
+
"kind": {
|
|
1659
|
+
"enum": ["dropdown", "radio", "tabs"]
|
|
1660
|
+
},
|
|
1661
|
+
"defaultValue": {
|
|
1662
|
+
"type": "string"
|
|
1663
|
+
}
|
|
1664
|
+
},
|
|
1665
|
+
"required": ["options", "defaultValue"]
|
|
1666
|
+
},
|
|
1667
|
+
{
|
|
1668
|
+
"properties": {
|
|
1669
|
+
"kind": {
|
|
1670
|
+
"enum": ["multi-select"]
|
|
1671
|
+
}
|
|
1672
|
+
},
|
|
1673
|
+
"required": ["options", "defaultValues"]
|
|
1674
|
+
},
|
|
1675
|
+
{
|
|
1676
|
+
"properties": {
|
|
1677
|
+
"kind": {
|
|
1678
|
+
"enum": ["number", "stepper"]
|
|
1679
|
+
},
|
|
1680
|
+
"defaultValue": {
|
|
1681
|
+
"type": "number"
|
|
1682
|
+
}
|
|
1683
|
+
},
|
|
1684
|
+
"required": ["defaultValue"]
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
"properties": {
|
|
1688
|
+
"kind": {
|
|
1689
|
+
"enum": ["range"]
|
|
1690
|
+
}
|
|
1691
|
+
},
|
|
1692
|
+
"required": ["min", "max", "defaultLo", "defaultHi"]
|
|
1693
|
+
},
|
|
1694
|
+
{
|
|
1695
|
+
"properties": {
|
|
1696
|
+
"kind": {
|
|
1697
|
+
"enum": ["slider"]
|
|
1698
|
+
},
|
|
1699
|
+
"defaultValue": {
|
|
1700
|
+
"type": "number"
|
|
1701
|
+
}
|
|
1702
|
+
},
|
|
1703
|
+
"required": ["min", "max", "defaultValue"]
|
|
1704
|
+
},
|
|
1705
|
+
{
|
|
1706
|
+
"properties": {
|
|
1707
|
+
"kind": {
|
|
1708
|
+
"enum": ["timeline"]
|
|
1709
|
+
}
|
|
1710
|
+
},
|
|
1711
|
+
"required": ["duration"]
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
"properties": {
|
|
1715
|
+
"kind": {
|
|
1716
|
+
"enum": ["toggle"]
|
|
1717
|
+
},
|
|
1718
|
+
"defaultValue": {
|
|
1719
|
+
"type": "boolean"
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
"required": ["defaultValue"]
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
"properties": {
|
|
1726
|
+
"kind": {
|
|
1727
|
+
"enum": ["xypad"]
|
|
1728
|
+
}
|
|
1729
|
+
},
|
|
1730
|
+
"required": ["xMin", "xMax", "yMin", "yMax", "defaultX", "defaultY"]
|
|
1731
|
+
}
|
|
1732
|
+
]
|
|
1733
|
+
}
|
|
1734
|
+
},
|
|
1735
|
+
"formulas": {
|
|
1736
|
+
"type": "object",
|
|
1737
|
+
"description": "つまみの値から決まる値。 名前を鍵、式を値に書く。 `values` とは経路が別で、式は名前を中括弧で囲わない (例 \"input * 2\")。",
|
|
1738
|
+
"additionalProperties": {
|
|
1739
|
+
"type": "string",
|
|
1740
|
+
"minLength": 1,
|
|
1741
|
+
"pattern": "\\S"
|
|
1742
|
+
},
|
|
1743
|
+
"propertyNames": {
|
|
1744
|
+
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
1745
|
+
}
|
|
1746
|
+
},
|
|
1747
|
+
"events": {
|
|
1748
|
+
"type": "array",
|
|
1749
|
+
"description": "押下などの出来事で動く仕掛け。 相手は名前で指す (box / lane / arrow / diagram のどれか 1 つ)。",
|
|
1750
|
+
"items": {
|
|
1751
|
+
"type": "object",
|
|
1752
|
+
"required": ["on", "handler"],
|
|
1753
|
+
"additionalProperties": false,
|
|
1754
|
+
"properties": {
|
|
1755
|
+
"on": {
|
|
1756
|
+
"type": "string",
|
|
1757
|
+
"enum": [
|
|
1758
|
+
"click",
|
|
1759
|
+
"hover",
|
|
1760
|
+
"double-click",
|
|
1761
|
+
"long-press",
|
|
1762
|
+
"drag",
|
|
1763
|
+
"drop",
|
|
1764
|
+
"keydown",
|
|
1765
|
+
"focus",
|
|
1766
|
+
"blur"
|
|
1767
|
+
]
|
|
1768
|
+
},
|
|
1769
|
+
"handler": {
|
|
1770
|
+
"type": "string",
|
|
1771
|
+
"minLength": 1,
|
|
1772
|
+
"pattern": "\\S"
|
|
1773
|
+
},
|
|
1774
|
+
"box": {
|
|
1775
|
+
"type": "string",
|
|
1776
|
+
"minLength": 1,
|
|
1777
|
+
"description": "箱の名前"
|
|
1778
|
+
},
|
|
1779
|
+
"lane": {
|
|
1780
|
+
"type": "string",
|
|
1781
|
+
"minLength": 1,
|
|
1782
|
+
"description": "縦列の名前"
|
|
1783
|
+
},
|
|
1784
|
+
"arrow": {
|
|
1785
|
+
"type": "string",
|
|
1786
|
+
"minLength": 1,
|
|
1787
|
+
"pattern": "^(?!.*->.*->)\\s*\\S(?:.*\\S)?\\s*->\\s*\\S(?:.*\\S)?\\s*$",
|
|
1788
|
+
"description": "矢印。 `A -> B` の形で両端の名前を書く"
|
|
1789
|
+
},
|
|
1790
|
+
"diagram": {
|
|
1791
|
+
"const": true,
|
|
1792
|
+
"description": "図全体を指す"
|
|
1793
|
+
}
|
|
1794
|
+
},
|
|
1795
|
+
"oneOf": [
|
|
1796
|
+
{
|
|
1797
|
+
"required": ["box"]
|
|
1798
|
+
},
|
|
1799
|
+
{
|
|
1800
|
+
"required": ["lane"]
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"required": ["arrow"]
|
|
1804
|
+
},
|
|
1805
|
+
{
|
|
1806
|
+
"required": ["diagram"]
|
|
1807
|
+
}
|
|
1808
|
+
]
|
|
1809
|
+
}
|
|
1810
|
+
},
|
|
1811
|
+
"scrolls": {
|
|
1812
|
+
"type": "object",
|
|
1813
|
+
"description": "巻き上げに応じて進む値。 画面を巻き上げた量から 0 から 1 の進み具合を作る。",
|
|
1814
|
+
"propertyNames": {
|
|
1815
|
+
"pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
|
|
1816
|
+
},
|
|
1817
|
+
"additionalProperties": {
|
|
1818
|
+
"type": "object",
|
|
1819
|
+
"additionalProperties": false,
|
|
1820
|
+
"properties": {
|
|
1821
|
+
"start": {
|
|
1822
|
+
"type": "number",
|
|
1823
|
+
"minimum": 0,
|
|
1824
|
+
"maximum": 1,
|
|
1825
|
+
"description": "進み具合が 0 になる画面上の位置 (0 が上端、1 が下端)"
|
|
1826
|
+
},
|
|
1827
|
+
"end": {
|
|
1828
|
+
"type": "number",
|
|
1829
|
+
"minimum": 0,
|
|
1830
|
+
"maximum": 1,
|
|
1831
|
+
"description": "進み具合が 1 になる画面上の位置"
|
|
1832
|
+
},
|
|
1833
|
+
"scrub": {
|
|
1834
|
+
"type": "number",
|
|
1835
|
+
"minimum": 0,
|
|
1836
|
+
"maximum": 1,
|
|
1837
|
+
"description": "巻き上げへの追随度合い (0 が段階的、1 が連続)"
|
|
1838
|
+
},
|
|
1839
|
+
"label": {
|
|
1840
|
+
"type": "string"
|
|
1841
|
+
}
|
|
1842
|
+
}
|
|
1843
|
+
}
|
|
1488
1844
|
}
|
|
1489
1845
|
}
|
|
1490
1846
|
}
|
package/src/types.ts
CHANGED
|
@@ -16,6 +16,36 @@ export type DslDynShape = NonNullable<CdlDiagram["nodes"][number]["shape"]>;
|
|
|
16
16
|
/** 値を見せる部品 (#1374)。 図形と同じ理由で描画側の型をそのまま使う */
|
|
17
17
|
export type DslReadout = NonNullable<CdlDiagram["readouts"]>[number];
|
|
18
18
|
|
|
19
|
+
/** 読む人が動かすつまみ (#1389)。 部品と同じ理由で描画側の型をそのまま使う */
|
|
20
|
+
export type DslInput = NonNullable<CdlDiagram["inputs"]>[number];
|
|
21
|
+
|
|
22
|
+
/** つまみの値から決まる値 (#1391)。 描画側の型に、知らせ用の記述位置だけを足す。 */
|
|
23
|
+
export type DslFormula = NonNullable<CdlDiagram["formulas"]>[number] & { pos?: Position };
|
|
24
|
+
|
|
25
|
+
/** 巻き上げに応じて進む値 (#1393)。 描画側の型をそのまま使う */
|
|
26
|
+
export type DslScrollTrigger = NonNullable<CdlDiagram["scrollTriggers"]>[number];
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 押下などの出来事で動く仕掛け (`events:`、 #1393)。
|
|
30
|
+
*
|
|
31
|
+
* **描画側の型をそのまま使わない**。 描画側は相手を識別子で持つ (`{ kind: "node", id }`) が、
|
|
32
|
+
* 記法は識別子を書けず名前で指す。 名前から識別子への読み替えは組み立てが行うため、
|
|
33
|
+
* 記法の段階では「何をどう指したか」 だけを持つ。
|
|
34
|
+
*/
|
|
35
|
+
export type DslEventBinding = {
|
|
36
|
+
/** 出来事の種類 (`click` / `hover` など、描画側の `CdlEventKind` と同じ語) */
|
|
37
|
+
event: NonNullable<CdlDiagram["eventBindings"]>[number]["event"];
|
|
38
|
+
/** 何を指したか。 名前は記法に書かれたまま持ち、組み立てが識別子へ直す */
|
|
39
|
+
target:
|
|
40
|
+
| { kind: "node"; name: string }
|
|
41
|
+
| { kind: "lane"; name: string }
|
|
42
|
+
| { kind: "edge"; from: string; to: string }
|
|
43
|
+
| { kind: "diagram" };
|
|
44
|
+
/** 呼び出す仕掛けの名前。 実体は画面側が持つ */
|
|
45
|
+
handlerId: string;
|
|
46
|
+
pos: Position;
|
|
47
|
+
};
|
|
48
|
+
|
|
19
49
|
export type PresetType =
|
|
20
50
|
| "sequence"
|
|
21
51
|
| "flow"
|
|
@@ -112,6 +142,35 @@ export type DslDocument = {
|
|
|
112
142
|
* 箱ではないので縦列に載らない。 図全体に 1 つの並びとして持つ。
|
|
113
143
|
*/
|
|
114
144
|
readouts?: DslReadout[];
|
|
145
|
+
/**
|
|
146
|
+
* 読む人が動かすつまみ (`inputs:`、 #1389)。 つまみが握る値は状態と同じ名前で参照できる。
|
|
147
|
+
*
|
|
148
|
+
* 部品と同じく箱ではないので縦列に載らない。 図全体に 1 つの並びとして持つ。
|
|
149
|
+
*/
|
|
150
|
+
inputs?: DslInput[];
|
|
151
|
+
/**
|
|
152
|
+
* つまみの値から決まる値 (`formulas:`、 #1391)。
|
|
153
|
+
*
|
|
154
|
+
* **`values:` とは経路が別**。 あちらは段が動かす状態を読んで毎 frame 決まり直す
|
|
155
|
+
* (`derived`) のに対し、こちらはつまみが握る値を読む反応の網に載る (`formulas`)。
|
|
156
|
+
* 描画側がこの 2 つを別の欄として持つため、記法でも別の項目にする。
|
|
157
|
+
*
|
|
158
|
+
* 式は描画側の書き方。 名前は中括弧で囲っても囲わなくてもよい (描画側の parser が
|
|
159
|
+
* どちらも同じ名前として読む)。
|
|
160
|
+
*/
|
|
161
|
+
formulas?: DslFormula[];
|
|
162
|
+
/**
|
|
163
|
+
* 押下などの出来事で動く仕掛け (`events:`、 #1393)。
|
|
164
|
+
*
|
|
165
|
+
* 相手は名前で指す。 組み立てが識別子へ直し、指す先が無ければ知らせる。
|
|
166
|
+
*/
|
|
167
|
+
events?: DslEventBinding[];
|
|
168
|
+
/**
|
|
169
|
+
* 巻き上げに応じて進む値 (`scrolls:`、 #1393)。
|
|
170
|
+
*
|
|
171
|
+
* 画面を巻き上げた量から 0 から 1 の進み具合を作る。 描画側はこれを値として読む。
|
|
172
|
+
*/
|
|
173
|
+
scrolls?: DslScrollTrigger[];
|
|
115
174
|
/**
|
|
116
175
|
* canvas pivot (CAR-1693 Phase 1) diagram-level layout mode。 未指定は "auto" default で
|
|
117
176
|
* catalog 100+ backward compat。 "manual" は Phase 4 で drag → pos: 保存の完全 manual mode。
|
|
@@ -164,6 +223,29 @@ export type DslActor = {
|
|
|
164
223
|
* それ以外は真。 値だけを見せる図が、場所を空けるためだけの見えない箱を置くのに使う。
|
|
165
224
|
*/
|
|
166
225
|
visibleIf?: string;
|
|
226
|
+
/**
|
|
227
|
+
* 箱の幅と高さを値に追随させる (`wBind:` / `hBind:`、 #1392)。
|
|
228
|
+
*
|
|
229
|
+
* 状態の名前を `{名前}` の形で書く。 配置計算は追随前の `posW` / `posH` を使い、
|
|
230
|
+
* 描く時だけ値に合わせて伸び縮みする (矢印の通り道が動かないようにするための分離)。
|
|
231
|
+
*/
|
|
232
|
+
wBind?: string;
|
|
233
|
+
hBind?: string;
|
|
234
|
+
/**
|
|
235
|
+
* 箱の濃さ (`opacity:`、 #1392)。 0 から 1 の数か、状態の名前を書く。
|
|
236
|
+
*
|
|
237
|
+
* 書かなければ完全に見える状態になる。 `visibleIf` が出す / 出さないの 2 値なのに対し、
|
|
238
|
+
* こちらは途中の濃さを持てる。
|
|
239
|
+
*/
|
|
240
|
+
opacity?: number | string;
|
|
241
|
+
/**
|
|
242
|
+
* 描く時だけ箱をずらす量 (`renderOffsetX:` / `renderOffsetY:`、 #1392)。
|
|
243
|
+
*
|
|
244
|
+
* 配置計算と矢印はずらす前の位置を使うため、円周上に並べて見せる等の見た目専用。
|
|
245
|
+
* 数か、状態の名前を書く。
|
|
246
|
+
*/
|
|
247
|
+
renderOffsetX?: number | string;
|
|
248
|
+
renderOffsetY?: number | string;
|
|
167
249
|
/**
|
|
168
250
|
* 工程の並び (`type: gantt`) で、その工程の担当 (#1251)。
|
|
169
251
|
*
|
|
@@ -297,6 +379,15 @@ export type DslStep = {
|
|
|
297
379
|
/** v0.5+ inline option */
|
|
298
380
|
guard?: string;
|
|
299
381
|
cardinality?: string;
|
|
382
|
+
/**
|
|
383
|
+
* 矢印を値に追随させる欄 (`widthBind:` / `strokeBind:` / `dashOffsetBind:`、 #1396)。
|
|
384
|
+
*
|
|
385
|
+
* 箱の `wBind` (#1392) と同じ形で、状態やつまみの名前を `{名前}` で書く。
|
|
386
|
+
* 太さ / 色 / 破線の位置がその値に合わせて動く。 通り道そのものは動かない。
|
|
387
|
+
*/
|
|
388
|
+
widthBind?: string;
|
|
389
|
+
strokeBind?: string;
|
|
390
|
+
dashOffsetBind?: string;
|
|
300
391
|
/** 矢印がどの辺から出るか (#1385)。 書かなければ描画側が自動で選ぶ */
|
|
301
392
|
side?: "top" | "right" | "bottom" | "left";
|
|
302
393
|
labelOffsetX?: number;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
// このファイルは自動生成です。 手で編集しないでください。
|
|
2
|
+
//
|
|
3
|
+
// 出どころ = 描画側 (`@cardenelabs/cdl`) の型定義 `CdlInput`。
|
|
4
|
+
// 作り直す = `node packages/dragon/scripts/gen-input-table.mjs`
|
|
5
|
+
// ずれの検知 = `packages/dragon/test/input-table-generated.test.ts`
|
|
6
|
+
|
|
7
|
+
import type { 図形の定義 } from "./parser-types";
|
|
8
|
+
|
|
9
|
+
/** 記法が受けるつまみと、その欄 (`CdlInput` の全種を覆う) */
|
|
10
|
+
export const つまみの表: Record<string, 図形の定義> = {
|
|
11
|
+
color: {
|
|
12
|
+
必須: ["defaultValue"],
|
|
13
|
+
欄: {
|
|
14
|
+
defaultValue: "文字列",
|
|
15
|
+
label: "文字列",
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
datetime: {
|
|
19
|
+
必須: ["defaultValue"],
|
|
20
|
+
欄: {
|
|
21
|
+
defaultValue: "文字列",
|
|
22
|
+
label: "文字列",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
dropdown: {
|
|
26
|
+
必須: ["options", "defaultValue"],
|
|
27
|
+
欄: {
|
|
28
|
+
options: "文字列の並び",
|
|
29
|
+
defaultValue: "文字列",
|
|
30
|
+
label: "文字列",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
"multi-select": {
|
|
34
|
+
必須: ["options", "defaultValues"],
|
|
35
|
+
欄: {
|
|
36
|
+
options: "文字列の並び",
|
|
37
|
+
defaultValues: "文字列の並び",
|
|
38
|
+
label: "文字列",
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
number: {
|
|
42
|
+
必須: ["defaultValue"],
|
|
43
|
+
欄: {
|
|
44
|
+
min: "数",
|
|
45
|
+
max: "数",
|
|
46
|
+
defaultValue: "数",
|
|
47
|
+
label: "文字列",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
radio: {
|
|
51
|
+
必須: ["options", "defaultValue"],
|
|
52
|
+
欄: {
|
|
53
|
+
options: "文字列の並び",
|
|
54
|
+
defaultValue: "文字列",
|
|
55
|
+
label: "文字列",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
range: {
|
|
59
|
+
必須: ["min", "max", "defaultLo", "defaultHi"],
|
|
60
|
+
欄: {
|
|
61
|
+
min: "数",
|
|
62
|
+
max: "数",
|
|
63
|
+
step: "数",
|
|
64
|
+
defaultLo: "数",
|
|
65
|
+
defaultHi: "数",
|
|
66
|
+
label: "文字列",
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
slider: {
|
|
70
|
+
必須: ["min", "max", "defaultValue"],
|
|
71
|
+
欄: {
|
|
72
|
+
min: "数",
|
|
73
|
+
max: "数",
|
|
74
|
+
step: "数",
|
|
75
|
+
defaultValue: "数",
|
|
76
|
+
label: "文字列",
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
stepper: {
|
|
80
|
+
必須: ["defaultValue"],
|
|
81
|
+
欄: {
|
|
82
|
+
min: "数",
|
|
83
|
+
max: "数",
|
|
84
|
+
step: "数",
|
|
85
|
+
defaultValue: "数",
|
|
86
|
+
label: "文字列",
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
tabs: {
|
|
90
|
+
必須: ["options", "defaultValue"],
|
|
91
|
+
欄: {
|
|
92
|
+
options: "文字列の並び",
|
|
93
|
+
defaultValue: "文字列",
|
|
94
|
+
label: "文字列",
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
text: {
|
|
98
|
+
必須: ["defaultValue"],
|
|
99
|
+
欄: {
|
|
100
|
+
defaultValue: "文字列",
|
|
101
|
+
placeholder: "文字列",
|
|
102
|
+
maxLength: "数",
|
|
103
|
+
label: "文字列",
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
timeline: {
|
|
107
|
+
必須: ["duration"],
|
|
108
|
+
欄: {
|
|
109
|
+
duration: "数",
|
|
110
|
+
autoplay: "真偽",
|
|
111
|
+
loop: "真偽",
|
|
112
|
+
speeds: "数の並び",
|
|
113
|
+
defaultSpeedIdx: "数",
|
|
114
|
+
label: "文字列",
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
toggle: {
|
|
118
|
+
必須: ["defaultValue"],
|
|
119
|
+
欄: {
|
|
120
|
+
defaultValue: "真偽",
|
|
121
|
+
label: "文字列",
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
xypad: {
|
|
125
|
+
必須: ["xMin", "xMax", "yMin", "yMax", "defaultX", "defaultY"],
|
|
126
|
+
欄: {
|
|
127
|
+
xMin: "数",
|
|
128
|
+
xMax: "数",
|
|
129
|
+
yMin: "数",
|
|
130
|
+
yMax: "数",
|
|
131
|
+
defaultX: "数",
|
|
132
|
+
defaultY: "数",
|
|
133
|
+
label: "文字列",
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
};
|
package/src/v05/parser-types.ts
CHANGED
|
@@ -10,8 +10,12 @@
|
|
|
10
10
|
*
|
|
11
11
|
* `真偽` は #1385 で足した。 描画側の部品に `boolean` の欄が 2 つあり、それまでの 5 形では
|
|
12
12
|
* 書けなかった。
|
|
13
|
+
*
|
|
14
|
+
* `数の並び` は #1389 で足した。 描画側のつまみに `readonly number[]` の欄が 1 つあり
|
|
15
|
+
* (`timeline` の再生速度の候補)、`文字列の並び` として読むと数が文字列のまま図に載る。
|
|
13
16
|
*/
|
|
14
|
-
export type 欄の形 =
|
|
17
|
+
export type 欄の形 =
|
|
18
|
+
"数" | "文字列" | "数か文字列" | "文字列の並び" | "数の並び" | "向き" | "組の並び" | "真偽";
|
|
15
19
|
|
|
16
20
|
/** 1 つの種類が受ける、必須の欄と全欄の形 */
|
|
17
21
|
export type 図形の定義 = { 必須: readonly string[]; 欄: Record<string, 欄の形> };
|