@flyingrobots/bijou 5.0.0 → 7.1.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.
Files changed (127) hide show
  1. package/README.md +64 -0
  2. package/dist/core/active-binding-collection.d.ts +49 -0
  3. package/dist/core/active-binding-collection.d.ts.map +1 -0
  4. package/dist/core/active-binding-collection.js +264 -0
  5. package/dist/core/active-binding-collection.js.map +1 -0
  6. package/dist/core/app-shell-composition.d.ts +44 -0
  7. package/dist/core/app-shell-composition.d.ts.map +1 -0
  8. package/dist/core/app-shell-composition.js +123 -0
  9. package/dist/core/app-shell-composition.js.map +1 -0
  10. package/dist/core/binding-frame-update.d.ts +18 -0
  11. package/dist/core/binding-frame-update.d.ts.map +1 -0
  12. package/dist/core/binding-frame-update.js +133 -0
  13. package/dist/core/binding-frame-update.js.map +1 -0
  14. package/dist/core/binding-lifecycle.d.ts +65 -0
  15. package/dist/core/binding-lifecycle.d.ts.map +1 -0
  16. package/dist/core/binding-lifecycle.js +357 -0
  17. package/dist/core/binding-lifecycle.js.map +1 -0
  18. package/dist/core/binding.d.ts +192 -0
  19. package/dist/core/binding.d.ts.map +1 -0
  20. package/dist/core/binding.js +587 -0
  21. package/dist/core/binding.js.map +1 -0
  22. package/dist/core/block-metadata.d.ts +113 -0
  23. package/dist/core/block-metadata.d.ts.map +1 -0
  24. package/dist/core/block-metadata.js +376 -0
  25. package/dist/core/block-metadata.js.map +1 -0
  26. package/dist/core/block-tree-render.d.ts +17 -0
  27. package/dist/core/block-tree-render.d.ts.map +1 -0
  28. package/dist/core/block-tree-render.js +186 -0
  29. package/dist/core/block-tree-render.js.map +1 -0
  30. package/dist/core/component-metadata.d.ts +63 -0
  31. package/dist/core/component-metadata.d.ts.map +1 -0
  32. package/dist/core/component-metadata.js +158 -0
  33. package/dist/core/component-metadata.js.map +1 -0
  34. package/dist/core/components/dag-edges.d.ts +9 -3
  35. package/dist/core/components/dag-edges.d.ts.map +1 -1
  36. package/dist/core/components/dag-edges.js +41 -10
  37. package/dist/core/components/dag-edges.js.map +1 -1
  38. package/dist/core/components/dag-render.d.ts +1 -1
  39. package/dist/core/components/dag-render.d.ts.map +1 -1
  40. package/dist/core/components/dag-render.js +193 -72
  41. package/dist/core/components/dag-render.js.map +1 -1
  42. package/dist/core/components/dag-source.d.ts +4 -0
  43. package/dist/core/components/dag-source.d.ts.map +1 -1
  44. package/dist/core/components/dag-source.js +10 -0
  45. package/dist/core/components/dag-source.js.map +1 -1
  46. package/dist/core/components/dag.d.ts +13 -0
  47. package/dist/core/components/dag.d.ts.map +1 -1
  48. package/dist/core/components/dag.js.map +1 -1
  49. package/dist/core/components/index.d.ts +2 -2
  50. package/dist/core/components/index.d.ts.map +1 -1
  51. package/dist/core/components/index.js.map +1 -1
  52. package/dist/core/components/table-v3.d.ts +1 -1
  53. package/dist/core/components/table-v3.d.ts.map +1 -1
  54. package/dist/core/components/table-v3.js +136 -21
  55. package/dist/core/components/table-v3.js.map +1 -1
  56. package/dist/core/components/table.d.ts +36 -6
  57. package/dist/core/components/table.d.ts.map +1 -1
  58. package/dist/core/components/table.js +530 -74
  59. package/dist/core/components/table.js.map +1 -1
  60. package/dist/core/fixture-promotion.d.ts +33 -0
  61. package/dist/core/fixture-promotion.d.ts.map +1 -0
  62. package/dist/core/fixture-promotion.js +62 -0
  63. package/dist/core/fixture-promotion.js.map +1 -0
  64. package/dist/core/graphql-bijou-block.d.ts +94 -0
  65. package/dist/core/graphql-bijou-block.d.ts.map +1 -0
  66. package/dist/core/graphql-bijou-block.js +570 -0
  67. package/dist/core/graphql-bijou-block.js.map +1 -0
  68. package/dist/core/layout/envelope.d.ts +174 -0
  69. package/dist/core/layout/envelope.d.ts.map +1 -0
  70. package/dist/core/layout/envelope.js +336 -0
  71. package/dist/core/layout/envelope.js.map +1 -0
  72. package/dist/core/mode-lowering.d.ts +48 -0
  73. package/dist/core/mode-lowering.d.ts.map +1 -0
  74. package/dist/core/mode-lowering.js +176 -0
  75. package/dist/core/mode-lowering.js.map +1 -0
  76. package/dist/core/render/differ.d.ts.map +1 -1
  77. package/dist/core/render/differ.js +10 -1
  78. package/dist/core/render/differ.js.map +1 -1
  79. package/dist/core/schema-block.d.ts +63 -0
  80. package/dist/core/schema-block.d.ts.map +1 -0
  81. package/dist/core/schema-block.js +361 -0
  82. package/dist/core/schema-block.js.map +1 -0
  83. package/dist/core/selection.d.ts +127 -0
  84. package/dist/core/selection.d.ts.map +1 -0
  85. package/dist/core/selection.js +350 -0
  86. package/dist/core/selection.js.map +1 -0
  87. package/dist/core/standard-blocks.d.ts +264 -0
  88. package/dist/core/standard-blocks.d.ts.map +1 -0
  89. package/dist/core/standard-blocks.js +2518 -0
  90. package/dist/core/standard-blocks.js.map +1 -0
  91. package/dist/core/story-capture.d.ts +48 -0
  92. package/dist/core/story-capture.d.ts.map +1 -0
  93. package/dist/core/story-capture.js +64 -0
  94. package/dist/core/story-capture.js.map +1 -0
  95. package/dist/core/text/wrap.d.ts.map +1 -1
  96. package/dist/core/text/wrap.js +37 -20
  97. package/dist/core/text/wrap.js.map +1 -1
  98. package/dist/core/theme/builder.d.ts +91 -0
  99. package/dist/core/theme/builder.d.ts.map +1 -0
  100. package/dist/core/theme/builder.js +238 -0
  101. package/dist/core/theme/builder.js.map +1 -0
  102. package/dist/core/theme/doctor.d.ts +52 -0
  103. package/dist/core/theme/doctor.d.ts.map +1 -0
  104. package/dist/core/theme/doctor.js +224 -0
  105. package/dist/core/theme/doctor.js.map +1 -0
  106. package/dist/core/theme/dtcg.d.ts.map +1 -1
  107. package/dist/core/theme/dtcg.js +10 -1
  108. package/dist/core/theme/dtcg.js.map +1 -1
  109. package/dist/core/theme/index.d.ts +5 -1
  110. package/dist/core/theme/index.d.ts.map +1 -1
  111. package/dist/core/theme/index.js +4 -1
  112. package/dist/core/theme/index.js.map +1 -1
  113. package/dist/core/theme/presets.d.ts +17 -1
  114. package/dist/core/theme/presets.d.ts.map +1 -1
  115. package/dist/core/theme/presets.js +139 -1
  116. package/dist/core/theme/presets.js.map +1 -1
  117. package/dist/core/theme/tokens.d.ts +1 -1
  118. package/dist/core/theme/tokens.d.ts.map +1 -1
  119. package/dist/core/ui-scene-ir.d.ts +195 -0
  120. package/dist/core/ui-scene-ir.d.ts.map +1 -0
  121. package/dist/core/ui-scene-ir.js +571 -0
  122. package/dist/core/ui-scene-ir.js.map +1 -0
  123. package/dist/index.d.ts +19 -2
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +21 -2
  126. package/dist/index.js.map +1 -1
  127. package/package.json +2 -2
@@ -0,0 +1,186 @@
1
+ import { isBlockDefinition, } from './block-metadata.js';
2
+ const BLOCK_RENDER_NODE_BRAND = Symbol('BlockRenderNode');
3
+ const DEFAULT_MAX_DEPTH = 12;
4
+ export function blockRenderNode(block, input = {}) {
5
+ if (!isBlockDefinition(block)) {
6
+ throw new Error('block render node: block must be created by defineBlock()');
7
+ }
8
+ const node = {
9
+ block,
10
+ input: snapshotInput(input),
11
+ };
12
+ Object.defineProperty(node, BLOCK_RENDER_NODE_BRAND, { value: true });
13
+ return Object.freeze(node);
14
+ }
15
+ export function isBlockRenderNode(value) {
16
+ return Boolean(value
17
+ && typeof value === 'object'
18
+ && value[BLOCK_RENDER_NODE_BRAND] === true);
19
+ }
20
+ export function renderBlockTree(target, options = {}) {
21
+ const maxDepth = normalizeMaxDepth(options.maxDepth);
22
+ return renderTarget(target, {
23
+ maxDepth,
24
+ ...(options.mode === undefined ? {} : { optionMode: options.mode }),
25
+ }, undefined, 0);
26
+ }
27
+ function snapshotInput(input) {
28
+ return snapshotPlainRecord(input, 'input', new WeakSet());
29
+ }
30
+ function snapshotValue(value, path, seen) {
31
+ if (isBlockRenderNode(value) || isBlockDefinition(value)) {
32
+ return value;
33
+ }
34
+ if (Array.isArray(value)) {
35
+ if (seen.has(value)) {
36
+ throw new Error(`block render node: circular reference at ${path}`);
37
+ }
38
+ seen.add(value);
39
+ try {
40
+ return Object.freeze(value.map((item, index) => snapshotValue(item, `${path}[${index}]`, seen)));
41
+ }
42
+ finally {
43
+ seen.delete(value);
44
+ }
45
+ }
46
+ if (isPlainRecord(value)) {
47
+ return snapshotPlainRecord(value, path, seen);
48
+ }
49
+ return value;
50
+ }
51
+ function snapshotPlainRecord(input, path, seen) {
52
+ if (seen.has(input)) {
53
+ throw new Error(`block render node: circular reference at ${path}`);
54
+ }
55
+ seen.add(input);
56
+ const record = {};
57
+ try {
58
+ const descriptors = Object.getOwnPropertyDescriptors(input);
59
+ for (const [key, descriptor] of Object.entries(descriptors)) {
60
+ if (!('value' in descriptor)) {
61
+ continue;
62
+ }
63
+ record[key] = snapshotValue(descriptor.value, `${path}.${key}`, seen);
64
+ }
65
+ return Object.freeze(record);
66
+ }
67
+ finally {
68
+ seen.delete(input);
69
+ }
70
+ }
71
+ function renderTarget(target, context, inheritedMode, depth) {
72
+ const node = targetToNode(target);
73
+ if (depth > context.maxDepth) {
74
+ throw new Error(`block tree render: maximum depth ${context.maxDepth} exceeded at ${node.block.metadata.blockName}`);
75
+ }
76
+ const mode = node.input.mode ?? inheritedMode ?? context.optionMode;
77
+ const resolvedSlots = resolveSlots(node.input.slots, context, mode, depth);
78
+ const input = Object.freeze({
79
+ ...node.input,
80
+ ...(mode === undefined ? {} : { mode }),
81
+ ...(resolvedSlots.slots === undefined ? {} : { slots: resolvedSlots.slots }),
82
+ });
83
+ const rendered = node.block.render(input);
84
+ const facts = freezeFacts([
85
+ ...(rendered.facts ?? []),
86
+ ...resolvedSlots.facts,
87
+ ]);
88
+ return Object.freeze({
89
+ output: rendered.output,
90
+ facts,
91
+ });
92
+ }
93
+ function targetToNode(target) {
94
+ if (isBlockRenderNode(target)) {
95
+ return target;
96
+ }
97
+ if (isBlockDefinition(target)) {
98
+ return blockRenderNode(target);
99
+ }
100
+ throw new Error('block tree render: target must be a BlockDefinition or BlockRenderNode');
101
+ }
102
+ function resolveSlots(slots, context, inheritedMode, depth) {
103
+ if (!isPlainRecord(slots)) {
104
+ return {
105
+ slots: undefined,
106
+ facts: Object.freeze([]),
107
+ };
108
+ }
109
+ const facts = [];
110
+ const renderedSlots = {};
111
+ const descriptors = Object.getOwnPropertyDescriptors(slots);
112
+ for (const [key, descriptor] of Object.entries(descriptors)) {
113
+ if (!('value' in descriptor)) {
114
+ continue;
115
+ }
116
+ const resolved = resolveSlotValue(descriptor.value, context, inheritedMode, depth + 1);
117
+ renderedSlots[key] = resolved.value;
118
+ facts.push(...resolved.facts);
119
+ }
120
+ return {
121
+ slots: Object.freeze(renderedSlots),
122
+ facts: freezeFacts(facts),
123
+ };
124
+ }
125
+ function resolveSlotValue(value, context, inheritedMode, depth) {
126
+ if (isBlockRenderNode(value) || isBlockDefinition(value)) {
127
+ const rendered = renderTarget(value, context, inheritedMode, depth);
128
+ return {
129
+ value: rendered.output,
130
+ facts: rendered.facts ?? Object.freeze([]),
131
+ };
132
+ }
133
+ if (Array.isArray(value)) {
134
+ const facts = [];
135
+ const items = value.map((item) => {
136
+ const resolved = resolveSlotValue(item, context, inheritedMode, depth);
137
+ facts.push(...resolved.facts);
138
+ return resolved.value;
139
+ });
140
+ return {
141
+ value: Object.freeze(items),
142
+ facts: freezeFacts(facts),
143
+ };
144
+ }
145
+ if (isPlainRecord(value)) {
146
+ const facts = [];
147
+ const record = {};
148
+ const descriptors = Object.getOwnPropertyDescriptors(value);
149
+ for (const [key, descriptor] of Object.entries(descriptors)) {
150
+ if (!('value' in descriptor)) {
151
+ continue;
152
+ }
153
+ const resolved = resolveSlotValue(descriptor.value, context, inheritedMode, depth);
154
+ record[key] = resolved.value;
155
+ facts.push(...resolved.facts);
156
+ }
157
+ return {
158
+ value: Object.freeze(record),
159
+ facts: freezeFacts(facts),
160
+ };
161
+ }
162
+ return {
163
+ value,
164
+ facts: Object.freeze([]),
165
+ };
166
+ }
167
+ function freezeFacts(facts) {
168
+ return Object.freeze(facts.map((fact) => Object.freeze({ ...fact })));
169
+ }
170
+ function normalizeMaxDepth(maxDepth) {
171
+ if (maxDepth === undefined) {
172
+ return DEFAULT_MAX_DEPTH;
173
+ }
174
+ if (!Number.isFinite(maxDepth) || maxDepth < 0) {
175
+ throw new Error('block tree render: maxDepth must be a non-negative finite number');
176
+ }
177
+ return Math.floor(maxDepth);
178
+ }
179
+ function isPlainRecord(input) {
180
+ if (input === null || typeof input !== 'object' || Array.isArray(input)) {
181
+ return false;
182
+ }
183
+ const prototype = Object.getPrototypeOf(input);
184
+ return prototype === Object.prototype || prototype === null;
185
+ }
186
+ //# sourceMappingURL=block-tree-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-tree-render.js","sourceRoot":"","sources":["../../src/core/block-tree-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import type { OutputMode } from './detect/tty.js';
2
+ import type { ModeLoweringFact } from './mode-lowering.js';
3
+ export interface ComponentMetadataDocs {
4
+ readonly summary: string;
5
+ readonly useWhen?: readonly string[];
6
+ readonly avoidWhen?: readonly string[];
7
+ readonly relatedDocs?: readonly string[];
8
+ }
9
+ export interface ComponentMetadataArg {
10
+ readonly name: string;
11
+ readonly type: string;
12
+ readonly required?: boolean;
13
+ readonly description?: string;
14
+ }
15
+ export interface ComponentMetadataVariant {
16
+ readonly id: string;
17
+ readonly label: string;
18
+ readonly description?: string;
19
+ readonly facts?: readonly ModeLoweringFact[];
20
+ }
21
+ export interface ComponentMetadataInvariant {
22
+ readonly id: string;
23
+ readonly description: string;
24
+ readonly facts?: readonly ModeLoweringFact[];
25
+ }
26
+ export interface ComponentMetadataExample {
27
+ readonly id: string;
28
+ readonly label: string;
29
+ readonly path?: string;
30
+ readonly command?: string;
31
+ }
32
+ export interface ComponentMetadata {
33
+ readonly packageName: string;
34
+ readonly componentName: string;
35
+ readonly family: string;
36
+ readonly modes: readonly OutputMode[];
37
+ readonly docs: ComponentMetadataDocs;
38
+ readonly sourcePath?: string;
39
+ readonly args?: readonly ComponentMetadataArg[];
40
+ readonly variants?: readonly ComponentMetadataVariant[];
41
+ readonly invariants?: readonly ComponentMetadataInvariant[];
42
+ readonly examples?: readonly ComponentMetadataExample[];
43
+ readonly tags?: readonly string[];
44
+ }
45
+ export type ComponentMetadataIssueKind = 'missing-required-field' | 'empty-list' | 'duplicate-id';
46
+ export type ComponentMetadataSeverity = 'error' | 'warning';
47
+ export interface ComponentMetadataIssue {
48
+ readonly kind: ComponentMetadataIssueKind;
49
+ readonly severity: ComponentMetadataSeverity;
50
+ readonly path: string;
51
+ readonly message: string;
52
+ }
53
+ export interface ComponentMetadataReport {
54
+ readonly packageName: string;
55
+ readonly componentName: string;
56
+ readonly issues: readonly ComponentMetadataIssue[];
57
+ readonly passed: boolean;
58
+ }
59
+ export declare function defineComponentMetadata(metadata: ComponentMetadata): ComponentMetadata;
60
+ export declare function validateComponentMetadata(metadata: ComponentMetadata): ComponentMetadataReport;
61
+ export declare function componentMetadataSummary(metadata: ComponentMetadata): string;
62
+ export declare function componentMetadataReportText(report: ComponentMetadataReport): string;
63
+ //# sourceMappingURL=component-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-metadata.d.ts","sourceRoot":"","sources":["../../src/core/component-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ const LIST_SEPARATOR = ',';
2
+ const EMPTY_LABEL = '-';
3
+ export function defineComponentMetadata(metadata) {
4
+ const report = validateComponentMetadata(metadata);
5
+ const hasError = report.issues.some((issue) => issue.severity === 'error');
6
+ if (hasError) {
7
+ throw new Error(componentMetadataReportText(report));
8
+ }
9
+ return metadata;
10
+ }
11
+ export function validateComponentMetadata(metadata) {
12
+ const issues = [];
13
+ pushRequiredTextIssue(issues, 'packageName', metadata.packageName);
14
+ pushRequiredTextIssue(issues, 'componentName', metadata.componentName);
15
+ pushRequiredTextIssue(issues, 'family', metadata.family);
16
+ pushRequiredTextIssue(issues, 'docs.summary', metadata.docs.summary);
17
+ pushModesIssues(issues, metadata.modes);
18
+ pushArgsIssues(issues, metadata.args ?? []);
19
+ pushVariantIssues(issues, metadata.variants ?? []);
20
+ pushInvariantIssues(issues, metadata.invariants ?? []);
21
+ pushExampleIssues(issues, metadata.examples ?? []);
22
+ return {
23
+ packageName: metadata.packageName,
24
+ componentName: metadata.componentName,
25
+ issues,
26
+ passed: issues.length === 0,
27
+ };
28
+ }
29
+ export function componentMetadataSummary(metadata) {
30
+ return [
31
+ `component metadata: ${metadata.packageName}/${metadata.componentName}`,
32
+ `family=${metadata.family}`,
33
+ `modes=${joinLabels(metadata.modes)}`,
34
+ `args=${joinLabels((metadata.args ?? []).map((arg) => arg.name))}`,
35
+ `variants=${joinLabels((metadata.variants ?? []).map((variant) => variant.id))}`,
36
+ `invariants=${joinLabels((metadata.invariants ?? []).map((invariant) => invariant.id))}`,
37
+ `examples=${joinLabels((metadata.examples ?? []).map((example) => example.id))}`,
38
+ `source=${metadata.sourcePath ?? EMPTY_LABEL}`,
39
+ ].join('\n');
40
+ }
41
+ export function componentMetadataReportText(report) {
42
+ const status = report.passed ? 'passed' : 'failed';
43
+ const component = report.componentName.trim() === '' ? EMPTY_LABEL : report.componentName.trim();
44
+ const lines = [`component metadata: ${status} component=${component}`];
45
+ if (report.issues.length === 0) {
46
+ return lines.join('\n');
47
+ }
48
+ lines.push('issues:');
49
+ for (const issue of report.issues) {
50
+ lines.push(`- ${issue.severity} ${issue.kind} path=${issue.path}: ${issue.message}`);
51
+ }
52
+ return lines.join('\n');
53
+ }
54
+ function pushModesIssues(issues, modes) {
55
+ if (modes.length === 0) {
56
+ issues.push({
57
+ kind: 'empty-list',
58
+ severity: 'error',
59
+ path: 'modes',
60
+ message: 'modes must include at least one output mode',
61
+ });
62
+ return;
63
+ }
64
+ pushDuplicateIssues(issues, modes, {
65
+ label: 'mode',
66
+ pathPrefix: 'modes',
67
+ valuePath: '',
68
+ });
69
+ }
70
+ function pushArgsIssues(issues, args) {
71
+ args.forEach((arg, index) => {
72
+ pushRequiredTextIssue(issues, `args[${index}].name`, arg.name);
73
+ pushRequiredTextIssue(issues, `args[${index}].type`, arg.type);
74
+ });
75
+ pushDuplicateIssues(issues, args.map((arg) => arg.name), {
76
+ label: 'arg name',
77
+ pathPrefix: 'args',
78
+ valuePath: 'name',
79
+ });
80
+ }
81
+ function pushVariantIssues(issues, variants) {
82
+ variants.forEach((variant, index) => {
83
+ pushRequiredTextIssue(issues, `variants[${index}].id`, variant.id);
84
+ pushRequiredTextIssue(issues, `variants[${index}].label`, variant.label);
85
+ });
86
+ pushDuplicateIssues(issues, variants.map((variant) => variant.id), {
87
+ label: 'variant id',
88
+ pathPrefix: 'variants',
89
+ valuePath: 'id',
90
+ });
91
+ }
92
+ function pushInvariantIssues(issues, invariants) {
93
+ invariants.forEach((invariant, index) => {
94
+ pushRequiredTextIssue(issues, `invariants[${index}].id`, invariant.id);
95
+ pushRequiredTextIssue(issues, `invariants[${index}].description`, invariant.description);
96
+ });
97
+ pushDuplicateIssues(issues, invariants.map((invariant) => invariant.id), {
98
+ label: 'invariant id',
99
+ pathPrefix: 'invariants',
100
+ valuePath: 'id',
101
+ });
102
+ }
103
+ function pushExampleIssues(issues, examples) {
104
+ examples.forEach((example, index) => {
105
+ pushRequiredTextIssue(issues, `examples[${index}].id`, example.id);
106
+ pushRequiredTextIssue(issues, `examples[${index}].label`, example.label);
107
+ });
108
+ pushDuplicateIssues(issues, examples.map((example) => example.id), {
109
+ label: 'example id',
110
+ pathPrefix: 'examples',
111
+ valuePath: 'id',
112
+ });
113
+ }
114
+ function pushDuplicateIssues(issues, values, options) {
115
+ const seenValues = new Set();
116
+ const reportedValues = new Set();
117
+ values.forEach((value, index) => {
118
+ const normalized = value.trim();
119
+ if (normalized === '') {
120
+ return;
121
+ }
122
+ if (!seenValues.has(normalized)) {
123
+ seenValues.add(normalized);
124
+ return;
125
+ }
126
+ if (reportedValues.has(normalized)) {
127
+ return;
128
+ }
129
+ reportedValues.add(normalized);
130
+ issues.push({
131
+ kind: 'duplicate-id',
132
+ severity: 'error',
133
+ path: indexedPath(options.pathPrefix, index, options.valuePath),
134
+ message: `duplicate ${options.label} ${normalized}`,
135
+ });
136
+ });
137
+ }
138
+ function pushRequiredTextIssue(issues, path, value) {
139
+ if (value.trim() !== '') {
140
+ return;
141
+ }
142
+ issues.push({
143
+ kind: 'missing-required-field',
144
+ severity: 'error',
145
+ path,
146
+ message: `${path} is required`,
147
+ });
148
+ }
149
+ function indexedPath(pathPrefix, index, valuePath) {
150
+ if (valuePath === '') {
151
+ return `${pathPrefix}[${index}]`;
152
+ }
153
+ return `${pathPrefix}[${index}].${valuePath}`;
154
+ }
155
+ function joinLabels(values) {
156
+ return values.length === 0 ? EMPTY_LABEL : values.join(LIST_SEPARATOR);
157
+ }
158
+ //# sourceMappingURL=component-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-metadata.js","sourceRoot":"","sources":["../../src/core/component-metadata.ts"],"names":[],"mappings":"AAwEA,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,MAAM,MAAM,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;IAC3E,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,QAA2B;IACnE,MAAM,MAAM,GAA6B,EAAE,CAAC;IAE5C,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnE,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvE,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzD,qBAAqB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnD,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACvD,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAEnD,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,QAA2B;IAClE,OAAO;QACL,uBAAuB,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,aAAa,EAAE;QACvE,UAAU,QAAQ,CAAC,MAAM,EAAE;QAC3B,SAAS,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACrC,QAAQ,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;QAClE,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;QAChF,cAAc,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE;QACxF,YAAY,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE;QAChF,UAAU,QAAQ,CAAC,UAAU,IAAI,WAAW,EAAE;KAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAA+B;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACjG,MAAM,KAAK,GAAG,CAAC,uBAAuB,MAAM,cAAc,SAAS,EAAE,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CACtB,MAAgC,EAChC,KAA4B;IAE5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,6CAA6C;SACvD,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE;QACjC,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,EAAE;KACd,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,MAAgC,EAChC,IAAqC;IAErC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1B,qBAAqB,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/D,qBAAqB,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QACvD,KAAK,EAAE,UAAU;QACjB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAgC,EAChC,QAA6C;IAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAClC,qBAAqB,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACnE,qBAAqB,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACjE,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAgC,EAChC,UAAiD;IAEjD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACtC,qBAAqB,CAAC,MAAM,EAAE,cAAc,KAAK,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QACvE,qBAAqB,CAAC,MAAM,EAAE,cAAc,KAAK,eAAe,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;QACvE,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAgC,EAChC,QAA6C;IAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAClC,qBAAqB,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QACnE,qBAAqB,CAAC,MAAM,EAAE,YAAY,KAAK,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACjE,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,IAAI;KAChB,CAAC,CAAC;AACL,CAAC;AAQD,SAAS,mBAAmB,CAC1B,MAAgC,EAChC,MAAyB,EACzB,OAA8B;IAE9B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO;QACT,CAAC;QAED,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;YAC/D,OAAO,EAAE,aAAa,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE;SACpD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAgC,EAChC,IAAY,EACZ,KAAa;IAEb,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;QACV,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,OAAO;QACjB,IAAI;QACJ,OAAO,EAAE,GAAG,IAAI,cAAc;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB,EAAE,KAAa,EAAE,SAAiB;IACvE,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;QACrB,OAAO,GAAG,UAAU,IAAI,KAAK,GAAG,CAAC;IACnC,CAAC;IAED,OAAO,GAAG,UAAU,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,UAAU,CAAC,MAAyB;IAC3C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACzE,CAAC"}
@@ -7,6 +7,8 @@
7
7
  */
8
8
  /** Cardinal direction for edge routing through grid cells. */
9
9
  export type Dir = 'U' | 'D' | 'L' | 'R';
10
+ /** Glyph family used when converting routed edges into Unicode characters. */
11
+ export type EdgeGlyphStyle = 'single' | 'heavy' | 'double' | 'dashed';
10
12
  /**
11
13
  * Mutable grid state used during edge routing.
12
14
  *
@@ -60,7 +62,11 @@ export declare function decodeArrowPos(encoded: number): {
60
62
  * @returns The appropriate box-drawing character, or `' '` (space) for an empty
61
63
  * direction set (no edge traffic through this cell).
62
64
  */
63
- export declare function junctionChar(dirs: Set<Dir>): string;
65
+ export declare function junctionChar(dirs: Set<Dir>, style?: EdgeGlyphStyle): string;
66
+ /**
67
+ * Select the arrowhead character for an edge style.
68
+ */
69
+ export declare function arrowChar(style?: EdgeGlyphStyle): string;
64
70
  /**
65
71
  * Allocate an empty edge-routing grid.
66
72
  *
@@ -84,12 +90,12 @@ export declare function createGrid(rows: number, cols: number): GridState;
84
90
  * @param RS - Row stride (number of grid rows per layer).
85
91
  * @param colCenter - Function mapping a column index to its center grid column.
86
92
  */
87
- export declare function markEdge(g: GridState, fromCol: number, fromLayer: number, toCol: number, toLayer: number, RS: number, colCenter: (c: number) => number, nodeWidth: number): void;
93
+ export declare function markEdge(g: GridState, fromCol: number, fromLayer: number, toCol: number, toLayer: number, rowStride: number, colCenter: (layer: number, col: number) => number, nodeWidth: number, nodeHeight: number): void;
88
94
  /**
89
95
  * Build the routed cell path for an edge, including the destination arrow cell.
90
96
  *
91
97
  * Same-column skip edges are detoured into the gap beside the node column so
92
98
  * they do not disappear under intermediate node boxes.
93
99
  */
94
- export declare function buildEdgeRoute(fromCol: number, fromLayer: number, toCol: number, toLayer: number, RS: number, colCenter: (c: number) => number, nodeWidth: number, gridCols: number): EdgeRoute;
100
+ export declare function buildEdgeRoute(fromCol: number, fromLayer: number, toCol: number, toLayer: number, rowStride: number, colCenter: (layer: number, col: number) => number, nodeWidth: number, nodeHeight: number, gridCols: number): EdgeRoute;
95
101
  //# sourceMappingURL=dag-edges.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dag-edges.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag-edges.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8DAA8D;AAC9D,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAExC;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACnB,4DAA4D;IAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE5E;AAgBD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAKnD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAUhE;AAiBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAChC,SAAS,EAAE,MAAM,GAChB,IAAI,CA+BN;AA+BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,EAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,SAAS,CA8BX"}
1
+ {"version":3,"file":"dag-edges.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag-edges.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8DAA8D;AAC9D,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAExC,8EAA8E;AAC9E,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,qDAAqD;IACrD,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACnB,4DAA4D;IAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B;AAID;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE5E;AA6CD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAE,cAAyB,GAAG,MAAM,CAKrF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAE,cAAyB,GAAG,MAAM,CAElE;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAUhE;AAiBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CACtB,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACjD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,IAAI,CAgCN;AA+BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EACjD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,SAAS,CA8BX"}
@@ -31,13 +31,38 @@ export function decodeArrowPos(encoded) {
31
31
  * Lookup table mapping sorted direction-set keys to Unicode box-drawing characters.
32
32
  * For example, `'DR'` maps to `\u250c` (top-left corner).
33
33
  */
34
- const JUNCTION = {
34
+ const SINGLE_JUNCTION = {
35
35
  'D': '\u2502', 'U': '\u2502', 'DU': '\u2502',
36
36
  'L': '\u2500', 'R': '\u2500', 'LR': '\u2500',
37
37
  'DR': '\u250c', 'DL': '\u2510', 'RU': '\u2514', 'LU': '\u2518',
38
38
  'DRU': '\u251c', 'DLU': '\u2524', 'DLR': '\u252c', 'LRU': '\u2534',
39
39
  'DLRU': '\u253c',
40
40
  };
41
+ const HEAVY_JUNCTION = {
42
+ 'D': '\u2503', 'U': '\u2503', 'DU': '\u2503',
43
+ 'L': '\u2501', 'R': '\u2501', 'LR': '\u2501',
44
+ 'DR': '\u250f', 'DL': '\u2513', 'RU': '\u2517', 'LU': '\u251b',
45
+ 'DRU': '\u2523', 'DLU': '\u252b', 'DLR': '\u2533', 'LRU': '\u253b',
46
+ 'DLRU': '\u254b',
47
+ };
48
+ const DOUBLE_JUNCTION = {
49
+ 'D': '\u2551', 'U': '\u2551', 'DU': '\u2551',
50
+ 'L': '\u2550', 'R': '\u2550', 'LR': '\u2550',
51
+ 'DR': '\u2554', 'DL': '\u2557', 'RU': '\u255a', 'LU': '\u255d',
52
+ 'DRU': '\u2560', 'DLU': '\u2563', 'DLR': '\u2566', 'LRU': '\u2569',
53
+ 'DLRU': '\u256c',
54
+ };
55
+ const DASHED_JUNCTION = {
56
+ ...SINGLE_JUNCTION,
57
+ 'D': '\u254e', 'U': '\u254e', 'DU': '\u254e',
58
+ 'L': '\u254c', 'R': '\u254c', 'LR': '\u254c',
59
+ };
60
+ const JUNCTIONS = {
61
+ single: SINGLE_JUNCTION,
62
+ heavy: HEAVY_JUNCTION,
63
+ double: DOUBLE_JUNCTION,
64
+ dashed: DASHED_JUNCTION,
65
+ };
41
66
  // ── Functions ──────────────────────────────────────────────────────
42
67
  /**
43
68
  * Select the Unicode box-drawing character for a cell based on its edge directions.
@@ -46,12 +71,18 @@ const JUNCTION = {
46
71
  * @returns The appropriate box-drawing character, or `' '` (space) for an empty
47
72
  * direction set (no edge traffic through this cell).
48
73
  */
49
- export function junctionChar(dirs) {
74
+ export function junctionChar(dirs, style = 'single') {
50
75
  if (dirs.size === 0)
51
76
  return ' ';
52
77
  // Alphabetical sort of D,L,R,U matches JUNCTION table keys
53
78
  const key = [...dirs].sort().join('');
54
- return JUNCTION[key] ?? '\u253c';
79
+ return JUNCTIONS[style][key] ?? JUNCTIONS[style]['DLRU'] ?? '\u253c';
80
+ }
81
+ /**
82
+ * Select the arrowhead character for an edge style.
83
+ */
84
+ export function arrowChar(style = 'single') {
85
+ return style === 'dashed' ? '\u25be' : '\u25bc';
55
86
  }
56
87
  /**
57
88
  * Allocate an empty edge-routing grid.
@@ -101,8 +132,8 @@ function markDir(g, r, c, ...ds) {
101
132
  * @param RS - Row stride (number of grid rows per layer).
102
133
  * @param colCenter - Function mapping a column index to its center grid column.
103
134
  */
104
- export function markEdge(g, fromCol, fromLayer, toCol, toLayer, RS, colCenter, nodeWidth) {
105
- const route = buildEdgeRoute(fromCol, fromLayer, toCol, toLayer, RS, colCenter, nodeWidth, g.cols);
135
+ export function markEdge(g, fromCol, fromLayer, toCol, toLayer, rowStride, colCenter, nodeWidth, nodeHeight) {
136
+ const route = buildEdgeRoute(fromCol, fromLayer, toCol, toLayer, rowStride, colCenter, nodeWidth, nodeHeight, g.cols);
106
137
  for (let i = 0; i < route.path.length - 1; i++) {
107
138
  const current = route.path[i];
108
139
  const next = route.path[i + 1];
@@ -155,11 +186,11 @@ function appendHorizontal(path, row, fromCol, toCol) {
155
186
  * Same-column skip edges are detoured into the gap beside the node column so
156
187
  * they do not disappear under intermediate node boxes.
157
188
  */
158
- export function buildEdgeRoute(fromCol, fromLayer, toCol, toLayer, RS, colCenter, nodeWidth, gridCols) {
159
- const srcC = colCenter(fromCol);
160
- const dstC = colCenter(toCol);
161
- const sRow = fromLayer * RS + 3;
162
- const dRow = toLayer * RS - 1;
189
+ export function buildEdgeRoute(fromCol, fromLayer, toCol, toLayer, rowStride, colCenter, nodeWidth, nodeHeight, gridCols) {
190
+ const srcC = colCenter(fromLayer, fromCol);
191
+ const dstC = colCenter(toLayer, toCol);
192
+ const sRow = fromLayer * rowStride + nodeHeight;
193
+ const dRow = toLayer * rowStride - 1;
163
194
  const mid = sRow + 1;
164
195
  const path = [];
165
196
  if (srcC === dstC && toLayer - fromLayer > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"dag-edges.js","sourceRoot":"","sources":["../../../src/core/components/dag-edges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dag-edges.js","sourceRoot":"","sources":["../../../src/core/components/dag-edges.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * Imports layout functions from `dag-layout.ts` and edge primitives from `dag-edges.ts`.
9
9
  */
10
10
  import type { BijouContext } from '../../ports/context.js';
11
- import type { DagNode, DagOptions, DagNodePosition } from './dag.js';
11
+ import type { DagNode, DagNodePosition, DagOptions } from './dag.js';
12
12
  /**
13
13
  * Render the full interactive (styled) DAG layout.
14
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dag-render.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAkKrE;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,YAAY,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA0PxF;AAID;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAgBnD;AAID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA8BxF"}
1
+ {"version":3,"file":"dag-render.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag-render.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,KAAK,EAAiC,OAAO,EAAE,eAAe,EAAgB,UAAU,EAAE,MAAM,UAAU,CAAC;AAqSlH;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,EAAE,EAChB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,YAAY,GAChB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAwSxF;AAID;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAgBnD;AAID;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA8BxF"}