ui-design-workbench-cli 0.6.3__tar.gz → 0.6.7__tar.gz
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.
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/PKG-INFO +5 -5
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/README.md +4 -4
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/SKILL.md +4 -2
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/pyproject.toml +3 -1
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/fidelity.md +3 -3
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/native-rendering.md +2 -2
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/fidelity_adapters.py +9 -4
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/fidelity_platform_adapters.py +408 -26
- ui_design_workbench_cli-0.6.7/scripts/layout_model.py +489 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/render_preview.py +99 -16
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/scan_ui.py +256 -11
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/scoped_context.py +11 -2
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/smoke_preview.js +6 -2
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/PKG-INFO +5 -5
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/SOURCES.txt +1 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/top_level.txt +1 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/uidw.py +206 -33
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/uidw_mcp.py +20 -3
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/adapter-api.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/agent-integrations.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/cache-protocol.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/component-catalog.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/component-catalog.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/component-inventory.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/design-modes.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/ir-schema.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/platform-profiles.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/platform-standards.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/platforms.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/quality-automation.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/review-workflow.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/ui-guidance-mode.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/ui-policy-schema.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/ui-reviewer.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/validation.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/workbench-ui.md +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/native-render-state.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/ui-agent-job.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/ui-graph.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/ui-ir.patch.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/ui-ir.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/schemas/uidw-config.schema.json +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/android_resource_resolver.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/android_xml_support.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/apple_resource_resolver.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/coverage_report.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/fidelity_adapter_api.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/fidelity_core.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/generate_interaction_matrix.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ir_contracts.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/merge_review_state.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/native_render_android.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/native_render_apple.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/native_render_contracts.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/native_render_registry.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/platform_component_catalog.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/quality_common.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/dependency_links.txt +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/entry_points.txt +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/ui_design_workbench_cli.egg-info/requires.txt +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/validate_platform_profiles.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/visual_regression.py +0 -0
- {ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ui-design-workbench-cli
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.7
|
|
4
4
|
Summary: Repository UI indexing, graph, preview, and deterministic review CLI
|
|
5
5
|
Author: Elgreed
|
|
6
6
|
Project-URL: Homepage, https://github.com/Elgreed/ui-design-workbench
|
|
@@ -82,7 +82,7 @@ uidw --repo <repo> review --output-dir <review-dir> --level full
|
|
|
82
82
|
- Incremental scans that reprocess only changed UI files.
|
|
83
83
|
- Property-level evidence and explicit unsupported gaps instead of guessed UI.
|
|
84
84
|
- Sparse review patches and a separate, authorized source-apply step.
|
|
85
|
-
-
|
|
85
|
+
- Runtime-free Android, Apple, and Flutter source projection with deterministic geometry for the supported subset; native evidence is required only before claiming visual or pixel parity and is never launched automatically.
|
|
86
86
|
|
|
87
87
|
Supported source families include Web, React, Vue, Svelte, Jetpack Compose, Android Views XML, SwiftUI, Storyboard/XIB, WinUI/WPF, and Flutter.
|
|
88
88
|
|
|
@@ -105,8 +105,8 @@ Run `uidw help overview`, `uidw help advanced`, or `uidw <command> --help` for d
|
|
|
105
105
|
|
|
106
106
|
## Accuracy and safety
|
|
107
107
|
|
|
108
|
-
- HTML is a
|
|
109
|
-
- Android and
|
|
108
|
+
- HTML is a deterministic runtime-free source projection for the supported shared layout subset, not proof of runtime or pixel parity.
|
|
109
|
+
- Android, Apple, and Flutter translation uses deterministic projection geometry for the supported shared layout subset; without separate native evidence it remains a structural projection, not proof of runtime or pixel parity.
|
|
110
110
|
- Unsupported bindings, custom drawing, runtime data, and platform behavior remain explicit gaps.
|
|
111
111
|
- Preview and review keep application source read-only; applying a proposal is a separate step.
|
|
112
112
|
- Derived cache and review state live outside the target repository by default.
|
|
@@ -131,4 +131,4 @@ A Windows `.exe` is not published yet. PyPI + `pipx` is the primary cross-platfo
|
|
|
131
131
|
- [IR schema](references/ir-schema.md)
|
|
132
132
|
- [Review workflow](references/review-workflow.md)
|
|
133
133
|
|
|
134
|
-
Current CLI version: `0.6.
|
|
134
|
+
Current CLI version: `0.6.7`.
|
|
@@ -63,7 +63,7 @@ uidw --repo <repo> review --output-dir <review-dir> --level full
|
|
|
63
63
|
- Incremental scans that reprocess only changed UI files.
|
|
64
64
|
- Property-level evidence and explicit unsupported gaps instead of guessed UI.
|
|
65
65
|
- Sparse review patches and a separate, authorized source-apply step.
|
|
66
|
-
-
|
|
66
|
+
- Runtime-free Android, Apple, and Flutter source projection with deterministic geometry for the supported subset; native evidence is required only before claiming visual or pixel parity and is never launched automatically.
|
|
67
67
|
|
|
68
68
|
Supported source families include Web, React, Vue, Svelte, Jetpack Compose, Android Views XML, SwiftUI, Storyboard/XIB, WinUI/WPF, and Flutter.
|
|
69
69
|
|
|
@@ -86,8 +86,8 @@ Run `uidw help overview`, `uidw help advanced`, or `uidw <command> --help` for d
|
|
|
86
86
|
|
|
87
87
|
## Accuracy and safety
|
|
88
88
|
|
|
89
|
-
- HTML is a
|
|
90
|
-
- Android and
|
|
89
|
+
- HTML is a deterministic runtime-free source projection for the supported shared layout subset, not proof of runtime or pixel parity.
|
|
90
|
+
- Android, Apple, and Flutter translation uses deterministic projection geometry for the supported shared layout subset; without separate native evidence it remains a structural projection, not proof of runtime or pixel parity.
|
|
91
91
|
- Unsupported bindings, custom drawing, runtime data, and platform behavior remain explicit gaps.
|
|
92
92
|
- Preview and review keep application source read-only; applying a proposal is a separate step.
|
|
93
93
|
- Derived cache and review state live outside the target repository by default.
|
|
@@ -112,4 +112,4 @@ A Windows `.exe` is not published yet. PyPI + `pipx` is the primary cross-platfo
|
|
|
112
112
|
- [IR schema](references/ir-schema.md)
|
|
113
113
|
- [Review workflow](references/review-workflow.md)
|
|
114
114
|
|
|
115
|
-
Current CLI version: `0.6.
|
|
115
|
+
Current CLI version: `0.6.7`.
|
|
@@ -26,12 +26,14 @@ If first-use context says `setupRequired`, ask only for `low`, `medium`, or `hig
|
|
|
26
26
|
|
|
27
27
|
## 2. Route the request
|
|
28
28
|
|
|
29
|
-
- Reconstruct/generate/redesign: read [references/design-modes.md](references/design-modes.md), then only the matching platform section from [references/platform-standards.md](references/platform-standards.md). Use cached evidence and `uidw workbench`; validate transfer fidelity, not product UX.
|
|
29
|
+
- Reconstruct/generate/redesign: read [references/design-modes.md](references/design-modes.md), then only the matching platform section from [references/platform-standards.md](references/platform-standards.md). Use cached evidence and `uidw workbench`; validate transfer fidelity, not product UX. Layout fidelity comes from the runtime-free deterministic projection; do not build or launch the source application.
|
|
30
30
|
- Explicit review/audit/critique: read [references/ui-reviewer.md](references/ui-reviewer.md) and [references/review-workflow.md](references/review-workflow.md). Review immutable Before only and work in bounded screen batches.
|
|
31
31
|
- Workbench chrome behavior: read [references/workbench-ui.md](references/workbench-ui.md).
|
|
32
32
|
- Ordinary UI source task with `uiMode.enabled=true`: read [references/ui-guidance-mode.md](references/ui-guidance-mode.md). Do not create a preview or review unless requested.
|
|
33
33
|
- Cache/install/agent integration question: read only [references/cache-protocol.md](references/cache-protocol.md) or [references/agent-integrations.md](references/agent-integrations.md), respectively.
|
|
34
34
|
|
|
35
|
+
Legacy provider discovery remains available through read-only MCP `ui_native_status` (or `uidw native status`). It is optional compatibility diagnostics and must not be called as part of reconstruction, deterministic layout, rendering, or fidelity gating.
|
|
36
|
+
|
|
35
37
|
## 3. Return sparse changes
|
|
36
38
|
|
|
37
39
|
Review/proposal agents write `ui-ir.patch.json`, never a replacement full IR:
|
|
@@ -49,6 +51,6 @@ Allowed operations are `upsert-findings`, `upsert-versions`, `merge-annotations`
|
|
|
49
51
|
- Do not run the target app, emulator, simulator, build, or dev server unless separately requested. Headless checks may open only generated local HTML.
|
|
50
52
|
- Preserve discovered screens, routes, project components, platform idioms, tokens, themes, states, provenance, and unsupported gaps. Do not invent polish or browser-default replacements.
|
|
51
53
|
- HTML is a projection. Base IR is immutable Before; proposal versions are sparse overrides.
|
|
52
|
-
- Android
|
|
54
|
+
- Android, Apple, Windows, and Flutter source translation uses deterministic projection geometry where the shared layout subset is known. Never call HTML a native render or claim runtime/pixel parity without matching native evidence.
|
|
53
55
|
- Applying a proposal to real source requires a separate explicit `Apply to project` or direct-fix authorization, bounded source targets, incremental sync, and targeted verification. Never repeat the full AI review automatically.
|
|
54
56
|
- Keep cache and review artifacts outside source control unless the user explicitly requests otherwise.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ui-design-workbench-cli"
|
|
7
|
-
version = "0.6.
|
|
7
|
+
version = "0.6.7"
|
|
8
8
|
description = "Repository UI indexing, graph, preview, and deterministic review CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -39,6 +39,7 @@ py-modules = [
|
|
|
39
39
|
"android_xml_support",
|
|
40
40
|
"scan_ui",
|
|
41
41
|
"ir_contracts",
|
|
42
|
+
"layout_model",
|
|
42
43
|
"fidelity_core",
|
|
43
44
|
"fidelity_adapter_api",
|
|
44
45
|
"fidelity_adapters",
|
|
@@ -71,6 +72,7 @@ py-modules = [
|
|
|
71
72
|
"scripts/fidelity_platform_adapters.py",
|
|
72
73
|
"scripts/generate_interaction_matrix.py",
|
|
73
74
|
"scripts/ir_contracts.py",
|
|
75
|
+
"scripts/layout_model.py",
|
|
74
76
|
"scripts/merge_review_state.py",
|
|
75
77
|
"scripts/native_render_android.py",
|
|
76
78
|
"scripts/native_render_apple.py",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Source-fidelity contract
|
|
2
2
|
|
|
3
|
-
## Fidelity Core v0.3 with
|
|
3
|
+
## Fidelity Core v0.3 with deterministic projection
|
|
4
4
|
|
|
5
5
|
The scanner uses the provider-neutral adapter registry described in [adapter-api.md](adapter-api.md). Built-in Web, React/Vue/Svelte, Compose, Android XML, SwiftUI, Storyboard/XIB, XAML, Flutter, and React Native adapters translate only deterministic supported subsets and record the rest in `fidelity.unsupported`. A strict artifact declares `fidelity.schemaVersion: "0.3"`.
|
|
6
6
|
|
|
7
7
|
Each translated property carries stable property-level provenance. Token aliases are resolved for rendering while their original references and source records remain in IR. The baseline is sealed with `review.baselineHash`; proposal versions remain sparse `nodeOverrides`. Editing baseline screens, nodes, tokens, themes, or fixtures without an explicit rescan invalidates the strict gate.
|
|
8
8
|
|
|
9
|
-
Use `uidw fidelity capabilities` for the installed support matrix, `uidw fidelity report` for the compact gate, and `uidw fidelity explain` for one node or evidence ID. Capabilities distinguish `structuralTier
|
|
9
|
+
Use `uidw fidelity capabilities` for the installed support matrix, `uidw fidelity report` for the compact gate, and `uidw fidelity explain` for one node or evidence ID. Capabilities distinguish `structuralTier` and `visualTier`; source adapters report `deterministic-projection`, require native evidence for native-platform visual verification, and never start that evidence collection automatically. Per-adapter fixtures prevent silent translation drift.
|
|
10
10
|
|
|
11
11
|
The HTML projection resolves recognized controls through the official-doc-first [platform component catalog](component-catalog.md). Catalog geometry is a render-only fallback: explicit source layout, theme, token, and style evidence always wins, and the source IR is not mutated.
|
|
12
12
|
|
|
@@ -52,4 +52,4 @@ Preserve `discoveredNavigationTargets`. Each target must map to a screen's `frag
|
|
|
52
52
|
|
|
53
53
|
The renderer enforces the minimum gate. `--allow-draft` is diagnostic and must not be used to solicit design approval.
|
|
54
54
|
|
|
55
|
-
For Android
|
|
55
|
+
For Android, Apple, Windows, and Flutter, the HTML workbench uses the same runtime-free layout model as every other source adapter. A partial context remains an explicit projection gap; it must not trigger a build, emulator, simulator, or native-capture calibration step.
|
{ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/references/native-rendering.md
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Native rendering contract
|
|
2
2
|
|
|
3
|
-
Source analysis and
|
|
3
|
+
Source analysis and deterministic HTML projection are the default Workbench reconstruction path. They remain buildless and runtime-free. Native-render discovery is optional and read-only during reconstruction, but matching native evidence is required before visual or pixel parity can be claimed. External screenshots, geometry, or semantic trees remain isolated in `native-render-state.json` and never modify the base UI IR.
|
|
4
4
|
|
|
5
|
-
The default
|
|
5
|
+
The default projection resolves source resources and supported layout semantics through the shared deterministic solver. Adapter capability `deterministic-projection` describes source-to-HTML transfer; the workbench reports native targets as `structural-projection` until matching native evidence exists.
|
|
6
6
|
|
|
7
7
|
## Fidelity levels
|
|
8
8
|
|
{ui_design_workbench_cli-0.6.3 → ui_design_workbench_cli-0.6.7}/scripts/fidelity_adapters.py
RENAMED
|
@@ -277,9 +277,10 @@ def _compose_length(value: str, tokens: dict[str, Any], group: str = "spacing")
|
|
|
277
277
|
dimension = re.fullmatch(r"(-?\d+(?:\.\d+)?)\.(?:dp|sp)", clean)
|
|
278
278
|
if dimension:
|
|
279
279
|
return f"{dimension.group(1)}px"
|
|
280
|
-
number = re.fullmatch(r"-?\d+(?:\.\d+)?", clean)
|
|
280
|
+
number = re.fullmatch(r"-?\d+(?:\.\d+)?[fF]?", clean)
|
|
281
281
|
if number:
|
|
282
|
-
|
|
282
|
+
normalized = clean.rstrip("fF")
|
|
283
|
+
return float(normalized) if "." in normalized else int(normalized)
|
|
283
284
|
token_name = _slug(clean).replace("-", "_")
|
|
284
285
|
if token_name in tokens.get(group, {}):
|
|
285
286
|
return f"${group}.{token_name}"
|
|
@@ -320,9 +321,9 @@ class ComposeAdapter:
|
|
|
320
321
|
extensions = (".kt", ".kts")
|
|
321
322
|
maturity = "structural"
|
|
322
323
|
structural_tier = "translated"
|
|
323
|
-
visual_tier = "
|
|
324
|
+
visual_tier = "deterministic-projection"
|
|
324
325
|
native_evidence_required = True
|
|
325
|
-
native_providers = ("
|
|
326
|
+
native_providers = ("paparazzi", "roborazzi", "android-emulator")
|
|
326
327
|
resource_resolution = ("R.string", "R.drawable", "R.mipmap", "common Material Icons")
|
|
327
328
|
layout_features = ("size/fill/weight/aspectRatio", "directional padding", "Row/Column arrangement", "Box alignment", "basic typography")
|
|
328
329
|
limitations = ("supported Compose primitives and modifiers only", "custom composables remain explicit unsupported entries")
|
|
@@ -420,11 +421,15 @@ class ComposeAdapter:
|
|
|
420
421
|
arrangement = _compose_named_value(args, "verticalArrangement")
|
|
421
422
|
if alignment in alignments: _set_compose(node, "layout.align", alignments[alignment], context, line, f"horizontalAlignment = {alignment}", self.id)
|
|
422
423
|
if arrangement in arrangements: _set_compose(node, "layout.justify", arrangements[arrangement], context, line, f"verticalArrangement = {arrangement}", self.id)
|
|
424
|
+
spaced = re.fullmatch(r"Arrangement\.spacedBy\s*\(\s*([^,)]+)\s*\)", arrangement or "")
|
|
425
|
+
if spaced: _set_compose(node, "layout.gap", _compose_length(spaced.group(1), result.tokens), context, line, f"verticalArrangement = {arrangement}", self.id)
|
|
423
426
|
if widget in {"Row", "LazyRow"}:
|
|
424
427
|
alignment = _compose_named_value(args, "verticalAlignment")
|
|
425
428
|
arrangement = _compose_named_value(args, "horizontalArrangement")
|
|
426
429
|
if alignment in alignments: _set_compose(node, "layout.align", alignments[alignment], context, line, f"verticalAlignment = {alignment}", self.id)
|
|
427
430
|
if arrangement in arrangements: _set_compose(node, "layout.justify", arrangements[arrangement], context, line, f"horizontalArrangement = {arrangement}", self.id)
|
|
431
|
+
spaced = re.fullmatch(r"Arrangement\.spacedBy\s*\(\s*([^,)]+)\s*\)", arrangement or "")
|
|
432
|
+
if spaced: _set_compose(node, "layout.gap", _compose_length(spaced.group(1), result.tokens), context, line, f"horizontalArrangement = {arrangement}", self.id)
|
|
428
433
|
if widget == "Box":
|
|
429
434
|
content_alignment = _compose_named_value(args, "contentAlignment")
|
|
430
435
|
if content_alignment and "Center" in content_alignment:
|