diff --git a/CHANGELOG.md b/CHANGELOG.md
index ec1df37fbc..8587d08554 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,22 +7,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## Unreleased
+### Changed
-### Fixed
-
-- Fixed `Pilot.click` not working with `times` parameter https://github.com/Textualize/textual/pull/5398
-- Fixed select refocusing itself too late https://github.com/Textualize/textual/pull/5420
+- Footer can now be scrolled horizontally without holding `shift` https://github.com/Textualize/textual/pull/5404
+- The content of an `Input` will now only be automatically selected when the widget is focused by the user, not when the app itself has regained focus (similar to web browsers). https://github.com/Textualize/textual/pull/5379
+- `Pilot.mouse_down` and `Pilot.mouse_up` now issue a prior `MouseMove` event, to more closely reflect real mouse actions. https://github.com/Textualize/textual/pull/5409
+- Snapshots tests now discard meta, which should reduce test breaking with no visual differences https://github.com/Textualize/textual/pull/5409
### Added
+- Added `Select.type_to_search` which allows you to type to move the cursor to a matching option https://github.com/Textualize/textual/pull/5403
+- Updated `TextArea` and `Input` behavior when there is a selection and the user presses left or right https://github.com/Textualize/textual/pull/5400
- Added `from_app_focus` to `Focus` event to indicate if a widget is being focused because the app itself has regained focus or not https://github.com/Textualize/textual/pull/5379
-- - Added `Select.type_to_search` which allows you to type to move the cursor to a matching option https://github.com/Textualize/textual/pull/5403
+- Added `Offset.transpose` https://github.com/Textualize/textual/pull/5409
+- Added `screen--selection` component class to define style for selection https://github.com/Textualize/textual/pull/5409
+- Added `Widget.select_container` property https://github.com/Textualize/textual/pull/5409
+- Added `Widget.select_all` https://github.com/Textualize/textual/pull/5409
+- Added `Region.bottom_right_inclusive` https://github.com/Textualize/textual/pull/5409
+- Added double click to select, triple click to select all in container https://github.com/Textualize/textual/pull/5409
+- Added arbitrary text selection https://github.com/Textualize/textual/pull/5409
+- Added Widget.ALLOW_SELECT classvar for a per-widget switch to disable text selection https://github.com/Textualize/textual/pull/5409
+- Added Widget.allow_select method for programmatic control of text selection https://github.com/Textualize/textual/pull/5409
+- Added App.ALLOW_SELECT for a global switch to disable text selection https://github.com/Textualize/textual/pull/5409
+- Added `DOMNode.query_ancestor` https://github.com/Textualize/textual/pull/5409
-### Changed
+### Fixed
-- The content of an `Input` will now only be automatically selected when the widget is focused by the user, not when the app itself has regained focus (similar to web browsers). https://github.com/Textualize/textual/pull/5379
-- Updated `TextArea` and `Input` behavior when there is a selection and the user presses left or right https://github.com/Textualize/textual/pull/5400
-- Footer can now be scrolled horizontally without holding `shift` https://github.com/Textualize/textual/pull/5404
+- Fixed `Pilot.click` not working with `times` parameter https://github.com/Textualize/textual/pull/5398
+- Fixed select refocusing itself too late https://github.com/Textualize/textual/pull/5420
## [1.0.0] - 2024-12-12
diff --git a/poetry.lock b/poetry.lock
index 8ca5e8e13b..278fd3d3f7 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1,4 +1,4 @@
-# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
+# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
[[package]]
name = "aiohappyeyeballs"
@@ -187,19 +187,19 @@ files = [
[[package]]
name = "attrs"
-version = "24.2.0"
+version = "24.3.0"
description = "Classes Without Boilerplate"
optional = false
-python-versions = ">=3.7"
+python-versions = ">=3.8"
files = [
- {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"},
- {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"},
+ {file = "attrs-24.3.0-py3-none-any.whl", hash = "sha256:ac96cd038792094f438ad1f6ff80837353805ac950cd2aa0e0625ef19850c308"},
+ {file = "attrs-24.3.0.tar.gz", hash = "sha256:8f5c07333d543103541ba7be0e2ce16eeee8130cb0b3f9238ab904ce1e85baff"},
]
[package.extras]
benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
-dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"]
@@ -290,13 +290,13 @@ redis = ["redis (>=2.10.5)"]
[[package]]
name = "certifi"
-version = "2024.8.30"
+version = "2024.12.14"
description = "Python package for providing Mozilla's CA Bundle."
optional = false
python-versions = ">=3.6"
files = [
- {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"},
- {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
+ {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"},
+ {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"},
]
[[package]]
@@ -312,127 +312,114 @@ files = [
[[package]]
name = "charset-normalizer"
-version = "3.4.0"
+version = "3.4.1"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
optional = false
-python-versions = ">=3.7.0"
-files = [
- {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"},
- {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"},
- {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"},
- {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"},
- {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"},
- {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"},
- {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"},
- {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"},
- {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"},
- {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"},
+python-versions = ">=3.7"
+files = [
+ {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"},
+ {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"},
+ {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"},
+ {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"},
+ {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"},
+ {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"},
+ {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"},
+ {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"},
+ {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"},
+ {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"},
]
[[package]]
name = "click"
-version = "8.1.7"
+version = "8.1.8"
description = "Composable command line interface toolkit"
optional = false
python-versions = ">=3.7"
files = [
- {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
- {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
+ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"},
+ {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"},
]
[package.dependencies]
@@ -711,13 +698,13 @@ dev = ["flake8", "markdown", "twine", "wheel"]
[[package]]
name = "gitdb"
-version = "4.0.11"
+version = "4.0.12"
description = "Git Object Database"
optional = false
python-versions = ">=3.7"
files = [
- {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"},
- {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"},
+ {file = "gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf"},
+ {file = "gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571"},
]
[package.dependencies]
@@ -725,20 +712,20 @@ smmap = ">=3.0.1,<6"
[[package]]
name = "gitpython"
-version = "3.1.43"
+version = "3.1.44"
description = "GitPython is a Python library used to interact with Git repositories"
optional = false
python-versions = ">=3.7"
files = [
- {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"},
- {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"},
+ {file = "GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110"},
+ {file = "gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269"},
]
[package.dependencies]
gitdb = ">=4.0.1,<5"
[package.extras]
-doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"]
+doc = ["sphinx (>=7.1.2,<7.2)", "sphinx-autodoc-typehints", "sphinx_rtd_theme"]
test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"]
[[package]]
@@ -888,13 +875,13 @@ colors = ["colorama (>=0.4.6)"]
[[package]]
name = "jinja2"
-version = "3.1.4"
+version = "3.1.5"
description = "A very fast and expressive template engine."
optional = false
python-versions = ">=3.7"
files = [
- {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"},
- {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"},
+ {file = "jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb"},
+ {file = "jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb"},
]
[package.dependencies]
@@ -1178,13 +1165,13 @@ dev = ["click", "codecov", "mkdocs-gen-files", "mkdocs-git-authors-plugin", "mkd
[[package]]
name = "mkdocs-material"
-version = "9.5.47"
+version = "9.5.49"
description = "Documentation that simply works"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mkdocs_material-9.5.47-py3-none-any.whl", hash = "sha256:53fb9c9624e7865da6ec807d116cd7be24b3cb36ab31b1d1d1a9af58c56009a2"},
- {file = "mkdocs_material-9.5.47.tar.gz", hash = "sha256:fc3b7a8e00ad896660bd3a5cc12ca0cb28bdc2bcbe2a946b5714c23ac91b0ede"},
+ {file = "mkdocs_material-9.5.49-py3-none-any.whl", hash = "sha256:c3c2d8176b18198435d3a3e119011922f3e11424074645c24019c2dcf08a360e"},
+ {file = "mkdocs_material-9.5.49.tar.gz", hash = "sha256:3671bb282b4f53a1c72e08adbe04d2481a98f85fed392530051f80ff94a9621d"},
]
[package.dependencies]
@@ -1459,49 +1446,55 @@ typing-extensions = {version = ">=4.1.0", markers = "python_version < \"3.11\""}
[[package]]
name = "mypy"
-version = "1.13.0"
+version = "1.14.1"
description = "Optional static typing for Python"
optional = false
python-versions = ">=3.8"
files = [
- {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"},
- {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"},
- {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"},
- {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"},
- {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"},
- {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"},
- {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"},
- {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"},
- {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"},
- {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"},
- {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"},
- {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"},
- {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"},
- {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"},
- {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"},
- {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"},
- {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"},
- {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"},
- {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"},
- {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"},
- {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"},
- {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"},
- {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"},
- {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"},
- {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"},
- {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"},
- {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"},
- {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"},
- {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"},
- {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"},
- {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"},
- {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"},
+ {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"},
+ {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"},
+ {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"},
+ {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"},
+ {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"},
+ {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"},
+ {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"},
+ {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"},
+ {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"},
+ {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"},
+ {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"},
+ {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"},
+ {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"},
+ {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"},
+ {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"},
+ {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"},
+ {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"},
+ {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"},
+ {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"},
+ {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"},
+ {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"},
+ {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"},
+ {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"},
+ {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"},
+ {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"},
+ {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"},
+ {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"},
+ {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"},
+ {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"},
+ {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"},
+ {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"},
+ {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"},
+ {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"},
+ {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"},
+ {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"},
+ {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"},
+ {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"},
+ {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"},
]
[package.dependencies]
-mypy-extensions = ">=1.0.0"
+mypy_extensions = ">=1.0.0"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
-typing-extensions = ">=4.6.0"
+typing_extensions = ">=4.6.0"
[package.extras]
dmypy = ["psutil (>=4.0)"]
@@ -1741,13 +1734,13 @@ windows-terminal = ["colorama (>=0.4.6)"]
[[package]]
name = "pymdown-extensions"
-version = "10.12"
+version = "10.13"
description = "Extension pack for Python Markdown."
optional = false
python-versions = ">=3.8"
files = [
- {file = "pymdown_extensions-10.12-py3-none-any.whl", hash = "sha256:49f81412242d3527b8b4967b990df395c89563043bc51a3d2d7d500e52123b77"},
- {file = "pymdown_extensions-10.12.tar.gz", hash = "sha256:b0ee1e0b2bef1071a47891ab17003bfe5bf824a398e13f49f8ed653b699369a7"},
+ {file = "pymdown_extensions-10.13-py3-none-any.whl", hash = "sha256:80bc33d715eec68e683e04298946d47d78c7739e79d808203df278ee8ef89428"},
+ {file = "pymdown_extensions-10.13.tar.gz", hash = "sha256:e0b351494dc0d8d14a1f52b39b1499a00ef1566b4ba23dc74f1eba75c736f5dd"},
]
[package.dependencies]
@@ -2116,24 +2109,24 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"]
[[package]]
name = "six"
-version = "1.16.0"
+version = "1.17.0"
description = "Python 2 and 3 compatibility utilities"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
- {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
- {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
+ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"},
+ {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"},
]
[[package]]
name = "smmap"
-version = "5.0.1"
+version = "5.0.2"
description = "A pure Python implementation of a sliding window memory map manager"
optional = false
python-versions = ">=3.7"
files = [
- {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"},
- {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"},
+ {file = "smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e"},
+ {file = "smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5"},
]
[[package]]
@@ -2375,19 +2368,19 @@ core = ["tree-sitter (>=0.22,<1.0)"]
[[package]]
name = "tree-sitter-java"
-version = "0.23.4"
+version = "0.23.5"
description = "Java grammar for tree-sitter"
optional = true
python-versions = ">=3.9"
files = [
- {file = "tree_sitter_java-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91cf4507a64529737639941e82d901891edb33e594daced2d75de829ac50962f"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:3f74e9c2f01b4c511cdf99e5a947642f37e8d621804d65ec7858a321bdcb1ba6"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:874d489bffc8c418a48f899ae75d3b774b999013840b6591f60b882ff03f9aa3"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79107666639d6a531565fbf6f4a00a06df1589c61101b832f5315f1969899184"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ff8aaccedaf484db9be41ddf1c44cdc4805556f0607de29c22300f14db693616"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-win_amd64.whl", hash = "sha256:e7477ffd19e0d0121e340fd7320efe028d2ae04784ffe13bec9a189cdeff0744"},
- {file = "tree_sitter_java-0.23.4-cp39-abi3-win_arm64.whl", hash = "sha256:c7688f1b004bdf390e7c0bf05384485866086675bf24caf4b2781353552b48a1"},
- {file = "tree_sitter_java-0.23.4.tar.gz", hash = "sha256:611857a92a232143ee20a4eb7cb46d6ff212b2d21cc7e3377b2943282c16a366"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:355ce0308672d6f7013ec913dee4a0613666f4cda9044a7824240d17f38209df"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:24acd59c4720dedad80d548fe4237e43ef2b7a4e94c8549b0ca6e4c4d7bf6e69"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9401e7271f0b333df39fc8a8336a0caf1b891d9a2b89ddee99fae66b794fc5b7"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:370b204b9500b847f6d0c5ad584045831cee69e9a3e4d878535d39e4a7e4c4f1"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:aae84449e330363b55b14a2af0585e4e0dae75eb64ea509b7e5b0e1de536846a"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-win_amd64.whl", hash = "sha256:1ee45e790f8d31d416bc84a09dac2e2c6bc343e89b8a2e1d550513498eedfde7"},
+ {file = "tree_sitter_java-0.23.5-cp39-abi3-win_arm64.whl", hash = "sha256:402efe136104c5603b429dc26c7e75ae14faaca54cfd319ecc41c8f2534750f4"},
+ {file = "tree_sitter_java-0.23.5.tar.gz", hash = "sha256:f5cd57b8f1270a7f0438878750d02ccc79421d45cca65ff284f1527e9ef02e38"},
]
[package.extras]
@@ -2456,19 +2449,19 @@ core = ["tree-sitter (>=0.23,<1.0)"]
[[package]]
name = "tree-sitter-python"
-version = "0.23.4"
+version = "0.23.6"
description = "Python grammar for tree-sitter"
optional = true
python-versions = ">=3.9"
files = [
- {file = "tree_sitter_python-0.23.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:188d70f36190cee62808b614de6ecc20e5e79f7c44a2653f41056fddae6bb003"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:a84227000c5d5e8ebc4ba5eb5ef9f7b92c7db5cfca02da593c2f41891a607333"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cbeaa9424a61794b98cefa6e364395ed529c39f3c0c65fda5f71a8974dd8e2c"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3735b77a07975a00a142431ecf16ad0de4033b8398ff23954c227a68603caf84"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7570eaf258bb1a6399aa56ee2679f1d48a156477e77660220c02fddd4af588ce"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-win_amd64.whl", hash = "sha256:785e4ac3d5e34e8012b26ea9baef7ab80f8d31703d3511e901064c4deac02cd4"},
- {file = "tree_sitter_python-0.23.4-cp39-abi3-win_arm64.whl", hash = "sha256:8acbd1345c57a3e10add8bb21713ea07eae25595b9d38c7e7034c542962851f9"},
- {file = "tree_sitter_python-0.23.4.tar.gz", hash = "sha256:da1752137c86a3ba42e646367fbc939df61fb1b48de239a74e1e5e0b1b7f163e"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:28fbec8f74eeb2b30292d97715e60fac9ccf8a8091ce19b9d93e9b580ed280fb"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:680b710051b144fedf61c95197db0094f2245e82551bf7f0c501356333571f7a"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a9dcef55507b6567207e8ee0a6b053d0688019b47ff7f26edc1764b7f4dc0a4"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29dacdc0cd2f64e55e61d96c6906533ebb2791972bec988450c46cce60092f5d"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7e048733c36f564b379831689006801feb267d8194f9e793fbb395ef1723335d"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-win_amd64.whl", hash = "sha256:a24027248399fb41594b696f929f9956828ae7cc85596d9f775e6c239cd0c2be"},
+ {file = "tree_sitter_python-0.23.6-cp39-abi3-win_arm64.whl", hash = "sha256:71334371bd73d5fe080aed39fbff49ed8efb9506edebe16795b0c7567ed6a272"},
+ {file = "tree_sitter_python-0.23.6.tar.gz", hash = "sha256:354bfa0a2f9217431764a631516f85173e9711af2c13dbd796a8815acfe505d9"},
]
[package.extras]
@@ -2576,22 +2569,23 @@ core = ["tree-sitter (>=0.22,<1.0)"]
[[package]]
name = "tree-sitter-yaml"
-version = "0.6.0"
+version = "0.7.0"
description = "YAML grammar for tree-sitter"
optional = true
-python-versions = ">=3.8"
+python-versions = ">=3.9"
files = [
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:62d53ef380d6f0ae731818be4e236d3006abede6331d1b727fe6a5476601cff9"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:7e7ccc5666336dabf3bfbffd6333c3df7ab8c8b6564fd550fe443d4a09609f57"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0b5c0a4db1834e8066fe011f6a9e9a7dbd03eb70321a59c74b079dd6ca8389e"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ea2cc2857982c4e2102032fadf186d9c8d5b53706f5963c5470234eac39fc4"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:c07c297e515af4c11912d32ad8115261c1999570f6cee0af96850ed9daacda6d"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f20b99ee3b11c7307d80698ac71a3c9b1284760cd205d6575e796e0285a172a7"},
- {file = "tree_sitter_yaml-0.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:5cd6a603303c3c3a8f1e79245d202fb1156baff48000c7a01de085767eba9253"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e21553ac190ae05bf82796df8beb4d9158ba195b5846018cb36fbc3a35bd0679"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:c022054f1f9b54201082ea83073a6c24c42d0436ad8ee99ff2574cba8f928c28"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cd1725142f19e41c51d27c99cfc60780f596e069eb181cfa6433d993a19aa3d"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d1b268378254f75bb27396d83c96d886ccbfcda6bd8c2778e94e3e1d2459085"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:27c2e7f4f49ddf410003abbb82a7b00ec77ea263d8ef08dbce1a15d293eed2fd"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-win_amd64.whl", hash = "sha256:98dce0d6bc376f842cfb1d3c32512eea95b37e61cd2c87074bb4b05c999917c8"},
+ {file = "tree_sitter_yaml-0.7.0-cp39-abi3-win_arm64.whl", hash = "sha256:f0f8d8e05fa8e70f08d0f18a209d6026e171844f4ea7090e7c779b9c375b3a31"},
+ {file = "tree_sitter_yaml-0.7.0.tar.gz", hash = "sha256:9c8bb17d9755c3b0e757260917240c0d19883cd3b59a5d74f205baa8bf8435a4"},
]
[package.extras]
-core = ["tree-sitter (>=0.21,<1.0)"]
+core = ["tree-sitter (>=0.22,<1.0)"]
[[package]]
name = "types-setuptools"
@@ -2659,13 +2653,13 @@ zstd = ["zstandard (>=0.18.0)"]
[[package]]
name = "virtualenv"
-version = "20.28.0"
+version = "20.28.1"
description = "Virtual Python Environment builder"
optional = false
python-versions = ">=3.8"
files = [
- {file = "virtualenv-20.28.0-py3-none-any.whl", hash = "sha256:23eae1b4516ecd610481eda647f3a7c09aea295055337331bb4e6892ecce47b0"},
- {file = "virtualenv-20.28.0.tar.gz", hash = "sha256:2c9c3262bb8e7b87ea801d715fae4495e6032450c71d2309be9550e7364049aa"},
+ {file = "virtualenv-20.28.1-py3-none-any.whl", hash = "sha256:412773c85d4dab0409b83ec36f7a6499e72eaf08c80e81e9576bca61831c71cb"},
+ {file = "virtualenv-20.28.1.tar.gz", hash = "sha256:5d34ab240fdb5d21549b76f9e8ff3af28252f5499fb6d6f031adac4e5a8c5329"},
]
[package.dependencies]
diff --git a/src/textual/_ansi_theme.py b/src/textual/_ansi_theme.py
index f53f40ca78..c3418d2227 100644
--- a/src/textual/_ansi_theme.py
+++ b/src/textual/_ansi_theme.py
@@ -1,52 +1,71 @@
+from __future__ import annotations
+
from rich.terminal_theme import TerminalTheme
+
+def rgb(red: int, green: int, blue: int) -> tuple[int, int, int]:
+ """Define an RGB color.
+
+ This exists mainly so that a VSCode extension can render the colors inline.
+
+ Args:
+ red: Red component.
+ green: Green component.
+ blue: Blue component.
+
+ Returns:
+ Color triplet.
+ """
+ return red, green, blue
+
+
MONOKAI = TerminalTheme(
- (12, 12, 12),
- (217, 217, 217),
+ rgb(12, 12, 12),
+ rgb(217, 217, 217),
[
- (26, 26, 26),
- (244, 0, 95),
- (152, 224, 36),
- (253, 151, 31),
- (157, 101, 255),
- (244, 0, 95),
- (88, 209, 235),
- (196, 197, 181),
- (98, 94, 76),
+ rgb(26, 26, 26),
+ rgb(244, 0, 95),
+ rgb(152, 224, 36),
+ rgb(253, 151, 31),
+ rgb(157, 101, 255),
+ rgb(244, 0, 95),
+ rgb(88, 209, 235),
+ rgb(196, 197, 181),
+ rgb(98, 94, 76),
],
[
- (244, 0, 95),
- (152, 224, 36),
- (224, 213, 97),
- (157, 101, 255),
- (244, 0, 95),
- (88, 209, 235),
- (246, 246, 239),
+ rgb(244, 0, 95),
+ rgb(152, 224, 36),
+ rgb(224, 213, 97),
+ rgb(157, 101, 255),
+ rgb(244, 0, 95),
+ rgb(88, 209, 235),
+ rgb(246, 246, 239),
],
)
ALABASTER = TerminalTheme(
- (247, 247, 247),
- (0, 0, 0),
+ rgb(247, 247, 247),
+ rgb(0, 0, 0),
[
- (0, 0, 0),
- (170, 55, 49),
- (68, 140, 39),
- (203, 144, 0),
- (50, 92, 192),
- (122, 62, 157),
- (0, 131, 178),
- (247, 247, 247),
- (119, 119, 119),
+ rgb(0, 0, 0),
+ rgb(170, 55, 49),
+ rgb(68, 140, 39),
+ rgb(203, 144, 0),
+ rgb(50, 92, 192),
+ rgb(122, 62, 157),
+ rgb(0, 131, 178),
+ rgb(247, 247, 247),
+ rgb(119, 119, 119),
],
[
- (240, 80, 80),
- (96, 203, 0),
- (255, 188, 93),
- (0, 122, 204),
- (230, 76, 230),
- (0, 170, 203),
- (247, 247, 247),
+ rgb(240, 80, 80),
+ rgb(96, 203, 0),
+ rgb(255, 188, 93),
+ rgb(0, 122, 204),
+ rgb(230, 76, 230),
+ rgb(0, 170, 203),
+ rgb(247, 247, 247),
],
)
diff --git a/src/textual/_compositor.py b/src/textual/_compositor.py
index f35e22f1c4..221cf354bf 100644
--- a/src/textual/_compositor.py
+++ b/src/textual/_compositor.py
@@ -844,11 +844,11 @@ def get_style_at(self, x: int, y: int) -> Style:
"""Get the Style at the given cell or Style.null()
Args:
- x: X position within the Layout
- y: Y position within the Layout
+ x: X position within the Layout.
+ y: Y position within the Layout.
Returns:
- The Style at the cell (x, y) within the Layout
+ The Style at the cell (x, y) within the Layout.
"""
try:
widget, region = self.get_widget_at(x, y)
@@ -866,12 +866,70 @@ def get_style_at(self, x: int, y: int) -> Style:
if not lines:
return Style.null()
end = 0
+
for segment in lines[0]:
end += segment.cell_length
if x < end:
return segment.style or Style.null()
+
return Style.null()
+ def get_widget_and_offset_at(
+ self, x: int, y: int
+ ) -> tuple[Widget | None, Offset | None]:
+ """Get the Style at the given cell, the offset within the content.
+
+ Args:
+ x: X position within the Layout.
+ y: Y position within the Layout.
+
+ Returns:
+ A tuple of the widget at (x, y) and the offset within the widget.
+ """
+ try:
+ widget, region = self.get_widget_at(x, y)
+ except errors.NoWidget:
+ return None, None
+ if widget not in self.visible_widgets:
+ return None, None
+
+ if y >= widget.content_region.bottom:
+ x, y = widget.content_region.bottom_right_inclusive
+
+ x -= region.x
+ y -= region.y
+
+ visible_screen_stack.set(widget.app._background_screens)
+ lines = widget.render_lines(Region(0, y, region.width, 1))
+
+ if not lines:
+ return widget, None
+ end = 0
+ start = 0
+
+ offset_y: int | None = None
+ offset_x = 0
+ offset_x2 = 0
+
+ for segment in lines[0]:
+ end += segment.cell_length
+ style = segment.style
+ if style is not None and style._meta is not None:
+ meta = style.meta
+ if "offset" in meta:
+ offset_x, offset_y = style.meta["offset"]
+ offset_x2 = offset_x + segment.cell_length
+
+ if x <= end:
+ return widget, (
+ None
+ if offset_y is None
+ else Offset(offset_x + (x - start), offset_y)
+ )
+ start = end
+
+ return widget, (None if offset_y is None else Offset(offset_x2, offset_y))
+
def find_widget(self, widget: Widget) -> MapGeometry:
"""Get information regarding the relative position of a widget in the Compositor.
@@ -1056,7 +1114,9 @@ def render_full_update(self, simplify: bool = False) -> LayoutUpdate:
crop = screen_region
chops = self._render_chops(crop, lambda y: True)
if simplify:
- render_strips = [Strip.join(chop.values()).simplify() for chop in chops]
+ render_strips = [
+ Strip.join(chop.values()).simplify().discard_meta() for chop in chops
+ ]
else:
render_strips = [Strip.join(chop.values()) for chop in chops]
diff --git a/src/textual/_styles_cache.py b/src/textual/_styles_cache.py
index 8f3680c314..660bea52fb 100644
--- a/src/textual/_styles_cache.py
+++ b/src/textual/_styles_cache.py
@@ -7,6 +7,7 @@
from rich.console import Console
from rich.segment import Segment
from rich.style import Style
+from rich.terminal_theme import TerminalTheme
from rich.text import Text
from textual import log
@@ -144,6 +145,7 @@ def render_widget(self, widget: Widget, crop: Region) -> list[Strip]:
crop=crop,
filters=widget.app._filters,
opacity=widget.opacity,
+ ansi_theme=widget.app.ansi_theme,
)
if widget.auto_links:
hover_style = widget.hover_style
@@ -176,6 +178,7 @@ def render(
crop: Region | None = None,
filters: Sequence[LineFilter] | None = None,
opacity: float = 1.0,
+ ansi_theme: TerminalTheme = DEFAULT_TERMINAL_THEME,
) -> list[Strip]:
"""Render a widget content plus CSS styles.
@@ -231,6 +234,7 @@ def render(
border_title,
border_subtitle,
opacity,
+ ansi_theme,
)
self._cache[y] = strip
else:
@@ -267,6 +271,7 @@ def render_line(
border_title: tuple[Text, Color, Color, Style] | None,
border_subtitle: tuple[Text, Color, Color, Style] | None,
opacity: float,
+ ansi_theme: TerminalTheme,
) -> Strip:
"""Render a styled line.
@@ -447,7 +452,9 @@ def post(segments: Iterable[Segment]) -> Iterable[Segment]:
if inner:
line = Segment.apply_style(line, inner)
if styles.text_opacity != 1.0:
- line = TextOpacity.process_segments(line, styles.text_opacity)
+ line = TextOpacity.process_segments(
+ line, styles.text_opacity, ansi_theme
+ )
line = line_post(line_pad(line, pad_left, pad_right, inner))
if border_left or border_right:
diff --git a/src/textual/app.py b/src/textual/app.py
index 346cfcff0f..e750dc7389 100644
--- a/src/textual/app.py
+++ b/src/textual/app.py
@@ -396,6 +396,12 @@ class MyApp(App[None]):
Setting to `None` or `""` disables auto focus.
"""
+ ALLOW_SELECT: ClassVar[bool] = True
+ """A switch to toggle arbitrary text selection for the app.
+
+ Note that this doesn't apply to Input and TextArea which have builtin support for selection.
+ """
+
_BASE_PATH: str | None = None
CSS_PATH: ClassVar[CSSPathType | None] = None
"""File paths to load CSS from."""
@@ -1531,7 +1537,6 @@ def copy_to_clipboard(self, text: str) -> None:
self._clipboard = text
if self._driver is None:
return
-
import base64
base64_text = base64.b64encode(text.encode("utf-8")).decode("utf-8")
diff --git a/src/textual/color.py b/src/textual/color.py
index e0ddf3b944..dc44a967f5 100644
--- a/src/textual/color.py
+++ b/src/textual/color.py
@@ -177,6 +177,7 @@ def automatic(cls, alpha_percentage: float = 100.0) -> Color:
return cls(0, 0, 0, alpha_percentage / 100.0, auto=True)
@classmethod
+ @lru_cache(maxsize=1024)
def from_rich_color(
cls, rich_color: RichColor | None, theme: TerminalTheme | None = None
) -> Color:
@@ -192,7 +193,9 @@ def from_rich_color(
if rich_color is None:
return TRANSPARENT
r, g, b = rich_color.get_truecolor(theme)
- return cls(r, g, b)
+ return cls(
+ r, g, b, ansi=rich_color.number if rich_color.is_system_defined else None
+ )
@classmethod
def from_hsl(cls, h: float, s: float, l: float) -> Color:
diff --git a/src/textual/content.py b/src/textual/content.py
index 7b402de45e..059eb240ad 100644
--- a/src/textual/content.py
+++ b/src/textual/content.py
@@ -11,6 +11,7 @@
from __future__ import annotations
import re
+from functools import lru_cache
from operator import itemgetter
from typing import TYPE_CHECKING, Callable, Iterable, NamedTuple, Sequence
@@ -27,6 +28,7 @@
from textual._loop import loop_last
from textual.color import Color
from textual.css.types import TextAlign
+from textual.selection import Selection
from textual.strip import Strip
from textual.visual import Style, Visual
@@ -36,58 +38,6 @@
_re_whitespace = re.compile(r"\s+$")
-def _align_lines(
- lines: list[Content],
- width: int,
- align: TextAlign = "left",
- overflow: "OverflowMethod" = "fold",
-) -> list[Content]:
- """Align and overflow text.
-
- Args:
- width (int): Number of cells available per line.
- align (str, optional): Desired text alignment.
- overflow (str, optional): Default overflow for text: "crop", "fold", or "ellipsis". Defaults to "fold".
-
- Returns:
- List of new lines.
-
- """
-
- for line in lines:
- assert isinstance(line._spans, list)
-
- if align == "left":
- lines = [line.truncate(width, overflow=overflow, pad=True) for line in lines]
- elif align == "center":
- lines = [line.center(width) for line in lines]
- elif align == "right":
- lines = [line.right(width) for line in lines]
- elif align == "full":
- new_lines = lines.copy()
- for line_index, line in enumerate(new_lines):
- if line_index == len(lines) - 1:
- break
- words = line.split(" ", include_separator=True)
- words_size = sum(cell_len(word.plain.rstrip(" ")) for word in words)
- num_spaces = len(words) - 1
- spaces = [0 for _ in range(num_spaces)]
- index = 0
- if spaces:
- while words_size + num_spaces < width:
- spaces[len(spaces) - index - 1] += 1
- num_spaces += 1
- index = (index + 1) % len(spaces)
- tokens = [
- word.extend_right(spaces[index]) if index < len(spaces) else word
- for index, word in enumerate(words)
- ]
- new_lines[line_index] = Content("").join(tokens)
-
- return new_lines
- return lines
-
-
ANSI_DEFAULT = Style(
background=Color(0, 0, 0, 0, ansi=-1), foreground=Color(0, 0, 0, 0, ansi=-1)
)
@@ -132,7 +82,7 @@ class Content(Visual):
"""
- __slots__ = ["_text", "_spans", "_cell_length"]
+ __slots__ = ["_text", "_spans", "_cell_length", "_align", "_no_wrap", "_ellipsis"]
_NORMALIZE_TEXT_ALIGN = {"start": "left", "end": "right", "justify": "full"}
@@ -162,6 +112,9 @@ def __init__(
self._no_wrap = no_wrap
self._ellipsis = ellipsis
+ def __str__(self) -> str:
+ return self._text
+
@classmethod
def from_rich_text(
cls,
@@ -183,8 +136,10 @@ def from_rich_text(
"""
if isinstance(text, str):
text = Text.from_markup(text)
+
+ ansi_theme: TerminalTheme | None = None
+
if text._spans:
- ansi_theme: TerminalTheme | None
try:
ansi_theme = active_app.get().ansi_theme
except LookupError:
@@ -204,13 +159,24 @@ def from_rich_text(
else:
spans = []
- return cls(
+ content = cls(
text.plain,
spans,
align=align,
no_wrap=no_wrap,
ellipsis=ellipsis,
)
+ if text.style:
+ try:
+ ansi_theme = active_app.get().ansi_theme
+ except LookupError:
+ ansi_theme = None
+ content = content.stylize_before(
+ text.style
+ if isinstance(text.style, str)
+ else Style.from_rich_style(text.style, ansi_theme)
+ )
+ return content
@classmethod
def styled(
@@ -252,6 +218,67 @@ def get_optimal_width(self, container_width: int) -> int:
lines = self.without_spans.split("\n")
return max(line.cell_length for line in lines)
+ def _wrap_and_format(
+ self,
+ width: int,
+ align: TextAlign = "left",
+ overflow: OverflowMethod = "fold",
+ no_wrap: bool = False,
+ tab_size: int = 8,
+ selection: Selection | None = None,
+ selection_style: Style | None = None,
+ ) -> list[FormattedLine]:
+ """Wraps the text and applies formatting.
+
+ Args:
+ width: Desired width.
+ align: Text alignment.
+ overflow: Overflow method.
+ no_wrap: Disabled wrapping.
+ tab_size: Cell with of tabs.
+ selection: Selection information or `None` if no selection.
+ selection_style: Selection style, or `None` if no selection.
+
+ Returns:
+ List of formatted lines.
+ """
+ output_lines: list[FormattedLine] = []
+
+ if selection is not None:
+ get_span = selection.get_span
+ else:
+
+ def get_span(y: int) -> tuple[int, int] | None:
+ return None
+
+ for y, line in enumerate(self.split(allow_blank=True)):
+ if selection_style is not None and (span := get_span(y)) is not None:
+ start, end = span
+ if end == -1:
+ end = len(line.plain)
+ line = line.stylize(selection_style, start, end)
+
+ content_line = FormattedLine(
+ line.expand_tabs(tab_size), width, y=y, align=align
+ )
+
+ if no_wrap:
+ new_lines = [content_line]
+ else:
+ offsets = divide_line(line.plain, width, fold=overflow == "fold")
+ divided_lines = content_line.content.divide(offsets)
+ new_lines = [
+ FormattedLine(
+ content.rstrip_end(width), width, offset, y, align=align
+ )
+ for content, offset in zip(divided_lines, [0, *offsets])
+ ]
+ new_lines[-1].line_end = True
+
+ output_lines.extend(new_lines)
+
+ return output_lines
+
def render_strips(
self,
widget: Widget,
@@ -262,22 +289,36 @@ def render_strips(
if not width:
return []
- lines = self.wrap(
+ selection = widget.selection
+ if selection is not None:
+ selection_style = Style.from_rich_style(
+ widget.screen.get_component_rich_style("screen--selection")
+ )
+
+ else:
+ selection_style = None
+
+ align = self._align
+ lines = self._wrap_and_format(
width,
- align=self._align,
+ align=align,
overflow=(
("ellipsis" if self._ellipsis else "crop") if self._no_wrap else "fold"
),
no_wrap=False,
tab_size=8,
+ selection=widget.selection,
+ selection_style=selection_style,
)
+
if height is not None:
lines = lines[:height]
- return [Strip(line.render_segments(style), line.cell_length) for line in lines]
+ strip_lines = [line.to_strip(widget, style) for line in lines]
+ return strip_lines
def get_height(self, width: int) -> int:
- lines = self.wrap(width)
+ lines = self._wrap_and_format(width)
return len(lines)
def __len__(self) -> int:
@@ -529,11 +570,13 @@ def pad_left(self, count: int, character: str = " ") -> Content:
_Span(start + count, end + count, style)
for start, end, style in self._spans
]
- return Content(
+ content = Content(
text,
spans,
None if self._cell_length is None else self._cell_length + count,
)
+ return content
+
return self
def extend_right(self, count: int, character: str = " ") -> Content:
@@ -588,8 +631,8 @@ def center(self, width: int, ellipsis: bool = False) -> Content:
content = self.rstrip().truncate(
width, overflow="ellipsis" if ellipsis else "fold"
)
- left = (content.cell_length - width) // 2
- right = width = left
+ left = (width - content.cell_length) // 2
+ right = width - left
content = content.pad_left(left).pad_right(right)
return content
@@ -690,7 +733,7 @@ def render(
parse_style: Callable[[str], Style] | None = None,
) -> Iterable[tuple[str, Style]]:
if not self._spans:
- yield self._text, base_style
+ yield (self._text, base_style)
if end:
yield end, base_style
return
@@ -699,12 +742,12 @@ def render(
app = active_app.get()
# TODO: Update when we add Content.from_markup
+ @lru_cache(maxsize=1024)
def get_style(style: str, /) -> Style:
- return (
- Style.from_rich_style(app.console.get_style(style), app.ansi_theme)
- if isinstance(style, str)
- else style
+ visual_style = Style.from_rich_style(
+ app.console.get_style(style), app.ansi_theme
)
+ return visual_style
else:
get_style = parse_style
@@ -758,13 +801,14 @@ def get_current_style() -> Style:
def render_segments(self, base_style: Style, end: str = "") -> list[Segment]:
_Segment = Segment
- segments = [
- _Segment(text, style.rich_style)
- for text, style in self.render(base_style, end)
- ]
+ render = list(self.render(base_style, end))
+ segments = [_Segment(text, style.get_rich_style()) for text, style in render]
return segments
- def divide(self, offsets: Sequence[int]) -> list[Content]:
+ def divide(
+ self,
+ offsets: Sequence[int],
+ ) -> list[Content]:
if not offsets:
return [self]
@@ -774,6 +818,7 @@ def divide(self, offsets: Sequence[int]) -> list[Content]:
line_ranges = list(zip(divide_offsets, divide_offsets[1:]))
new_lines = [Content(text[start:end]) for start, end in line_ranges]
+
if not self._spans:
return new_lines
@@ -846,7 +891,7 @@ def split(
if include_separator:
lines = self.divide(
- [match.end() for match in re.finditer(re.escape(separator), text)]
+ [match.end() for match in re.finditer(re.escape(separator), text)],
)
else:
@@ -941,29 +986,6 @@ def expand_tabs(self, tab_size: int = 8) -> Content:
content = Content("").join(new_text)
return content
- def wrap(
- self,
- width: int,
- align: TextAlign = "left",
- overflow: OverflowMethod = "fold",
- no_wrap: bool = False,
- tab_size: int = 8,
- ) -> list[Content]:
- lines: list[Content] = []
- for line in self.split(allow_blank=True):
- if "\t" in line._text:
- line = line.expand_tabs(tab_size)
- if no_wrap:
- new_lines = [line]
- else:
- offsets = divide_line(line._text, width, fold=overflow == "fold")
- new_lines = line.divide(offsets)
- new_lines = [line.rstrip_end(width) for line in new_lines]
- new_lines = _align_lines(new_lines, width, align=align, overflow=overflow)
- new_lines = [line.truncate(width, overflow=overflow) for line in new_lines]
- lines.extend(new_lines)
- return lines
-
def highlight_regex(
self,
re_highlight: re.Pattern[str] | str,
@@ -982,6 +1004,123 @@ def highlight_regex(
return Content(self._text, spans)
+class FormattedLine:
+ """A line of content with additional formatting information."""
+
+ def __init__(
+ self,
+ content: Content,
+ width: int,
+ x: int = 0,
+ y: int = 0,
+ align: TextAlign = "left",
+ line_end: bool = False,
+ link_style: Style | None = None,
+ ) -> None:
+ self.content = content
+ self.width = width
+ self.x = x
+ self.y = y
+ self.align = align
+ self.line_end = line_end
+ self.link_style = link_style
+
+ @property
+ def plain(self) -> str:
+ return self.content.plain
+
+ def to_strip(self, widget: Widget, style: Style) -> Strip:
+ _Segment = Segment
+ align = self.align
+ width = self.width
+ pad_left = pad_right = 0
+ content = self.content
+ x = self.x
+ y = self.y
+
+ if align in ("start", "left") or (align == "justify" and self.line_end):
+ pass
+
+ elif align == "center":
+ excess_space = width - self.content.cell_length
+ pad_left = excess_space // 2
+ pad_right = excess_space - pad_left
+
+ elif align in ("end", "right"):
+ pad_left = width - self.content.cell_length
+
+ elif align == "justify":
+ words = content.split(" ", include_separator=False)
+ words_size = sum(cell_len(word.plain.rstrip(" ")) for word in words)
+ num_spaces = len(words) - 1
+ spaces = [1] * num_spaces
+ index = 0
+ if spaces:
+ while words_size + num_spaces < width:
+ spaces[len(spaces) - index - 1] += 1
+ num_spaces += 1
+ index = (index + 1) % len(spaces)
+
+ segments: list[Segment] = []
+ add_segment = segments.append
+ x = self.x
+ for index, word in enumerate(words):
+ for text, text_style in word.render(style, end=""):
+ add_segment(
+ _Segment(
+ text, (style + text_style).rich_style_with_offset(x, y)
+ )
+ )
+ x += len(text) + 1
+ if index < len(spaces) and (pad := spaces[index]):
+ add_segment(_Segment(" " * pad, (style + text_style).rich_style))
+
+ strip = Strip(self._apply_link_style(widget, segments), width)
+ return strip
+
+ segments = (
+ [Segment(" " * pad_left, style.background_style.rich_style)]
+ if pad_left
+ else []
+ )
+ add_segment = segments.append
+ for text, text_style in content.render(style, end=""):
+ add_segment(
+ _Segment(text, (style + text_style).rich_style_with_offset(x, y))
+ )
+ x += len(text)
+
+ if pad_right:
+ segments.append(
+ _Segment(" " * pad_right, style.background_style.rich_style)
+ )
+ strip = Strip(
+ self._apply_link_style(widget, segments),
+ content.cell_length + pad_left + pad_right,
+ )
+ return strip
+
+ def _apply_link_style(
+ self, widget: Widget, segments: list[Segment]
+ ) -> list[Segment]:
+ link_style = widget.link_style
+ _Segment = Segment
+ segments = [
+ _Segment(
+ text,
+ (
+ style
+ if style._meta is None
+ else (style + link_style if "@click" in style.meta else style)
+ ),
+ control,
+ )
+ for text, style, control in segments
+ if style is not None
+ ]
+ return segments
+
+
if __name__ == "__main__":
from rich import print
@@ -1014,7 +1153,7 @@ def highlight_regex(
"will", Style(background=Color.parse("rgba(255, 255, 20, 0.3)"))
)
- lines = content.wrap(40, align="full")
+ lines = content._wrap_and_format(40, align="full")
print(lines)
print("x" * 40)
for line in lines:
diff --git a/src/textual/dom.py b/src/textual/dom.py
index d7218c6029..3bfa75b301 100644
--- a/src/textual/dom.py
+++ b/src/textual/dom.py
@@ -1023,6 +1023,12 @@ def text_style(self) -> Style:
node.styles.text_style for node in reversed(self.ancestors_with_self)
)
+ @property
+ def selection_style(self) -> Style:
+ """The style of selected text."""
+ style = self.screen.get_component_rich_style("screen--selection")
+ return style
+
@property
def rich_style(self) -> Style:
"""Get a Rich Style object for this DOMNode.
@@ -1550,6 +1556,57 @@ def query_exactly_one(
raise NoMatches(f"No nodes match {selector!r} on {self!r}")
+ if TYPE_CHECKING:
+
+ @overload
+ def query_ancestor(self, selector: str) -> DOMNode: ...
+
+ @overload
+ def query_ancestor(self, selector: type[QueryType]) -> QueryType: ...
+
+ @overload
+ def query_ancestor(
+ self, selector: str, expect_type: type[QueryType]
+ ) -> QueryType: ...
+
+ def query_ancestor(
+ self,
+ selector: str | type[QueryType],
+ expect_type: type[QueryType] | None = None,
+ ) -> DOMNode | None:
+ """Get an ancestor which matches a query.
+
+ Args:
+ selector: A TCSS selector.
+ expect_type: Expected type, or `None` for any DOMNode.
+
+ Raises:
+ InvalidQueryFormat: If the selector is invalid.
+ NoMatches: If there are no matching ancestors.
+
+ Returns:
+ A DOMNode or subclass if `expect_type` is provided.
+ """
+ if isinstance(selector, str):
+ query_selector = selector
+ else:
+ query_selector = selector.__name__
+
+ try:
+ selector_set = parse_selectors(query_selector)
+ except TokenError:
+ raise InvalidQueryFormat(
+ f"Unable to parse {query_selector!r} as a query; check for syntax errors"
+ ) from None
+ if self.parent is not None:
+ for node in self.parent.ancestors_with_self:
+ if not match(selector_set, node):
+ continue
+ if expect_type is not None and not isinstance(node, expect_type):
+ continue
+ return node
+ raise NoMatches(f"No ancestor matches {selector!r} on {self!r}")
+
def set_styles(self, css: str | None = None, **update_styles: Any) -> Self:
"""Set custom styles on this object.
diff --git a/src/textual/events.py b/src/textual/events.py
index bede774dc4..a7f5db0fa3 100644
--- a/src/textual/events.py
+++ b/src/textual/events.py
@@ -431,6 +431,8 @@ def __rich_repr__(self) -> rich.repr.Result:
yield "shift", self.shift, False
yield "meta", self.meta, False
yield "ctrl", self.ctrl, False
+ if self.style:
+ yield "style", self.style
@property
def control(self) -> Widget | None:
diff --git a/src/textual/geometry.py b/src/textual/geometry.py
index e6d190f939..f2a6bf2125 100644
--- a/src/textual/geometry.py
+++ b/src/textual/geometry.py
@@ -105,6 +105,12 @@ def clamped(self) -> Offset:
x, y = self
return Offset(0 if x < 0 else x, 0 if y < 0 else y)
+ @property
+ def transpose(self) -> tuple[int, int]:
+ """A tuple of x and y, in reverse order, i.e. (y, x)."""
+ x, y = self
+ return y, x
+
def __bool__(self) -> bool:
return self != (0, 0)
@@ -542,6 +548,12 @@ def bottom_right(self) -> Offset:
x, y, width, height = self
return Offset(x + width, y + height)
+ @property
+ def bottom_right_inclusive(self) -> Offset:
+ """Bottom right corner of the region, within its boundaries."""
+ x, y, width, height = self
+ return Offset(x + width - 1, y + height - 1)
+
@property
def size(self) -> Size:
"""Get the size of the region."""
diff --git a/src/textual/pilot.py b/src/textual/pilot.py
index 2554bf3b8d..115c10cb70 100644
--- a/src/textual/pilot.py
+++ b/src/textual/pilot.py
@@ -131,7 +131,7 @@ async def mouse_down(
"""
try:
return await self._post_mouse_events(
- [MouseDown],
+ [MouseMove, MouseDown],
widget=widget,
offset=offset,
button=1,
@@ -176,7 +176,7 @@ async def mouse_up(
"""
try:
return await self._post_mouse_events(
- [MouseUp],
+ [MouseMove, MouseUp],
widget=widget,
offset=offset,
button=1,
diff --git a/src/textual/renderables/digits.py b/src/textual/renderables/digits.py
index bcea3ed612..8d44f7114d 100644
--- a/src/textual/renderables/digits.py
+++ b/src/textual/renderables/digits.py
@@ -230,7 +230,7 @@ def render(self, style: Style) -> RenderResult:
new_line = Segment.line()
for line in digit_pieces:
- yield Segment("".join(line), style)
+ yield Segment("".join(line), style + Style(meta={"offset": (0, 0)}))
yield new_line
@classmethod
diff --git a/src/textual/renderables/text_opacity.py b/src/textual/renderables/text_opacity.py
index a5b7790180..9c9ba9aec5 100644
--- a/src/textual/renderables/text_opacity.py
+++ b/src/textual/renderables/text_opacity.py
@@ -6,7 +6,12 @@
from rich.console import Console, ConsoleOptions, RenderableType, RenderResult
from rich.segment import Segment
from rich.style import Style
+from rich.terminal_theme import TerminalTheme
+from textual._ansi_theme import DEFAULT_TERMINAL_THEME
+from textual._context import active_app
+from textual.color import TRANSPARENT
+from textual.filter import ANSIToTruecolor
from textual.renderables._blend_colors import blend_colors
@@ -47,17 +52,19 @@ def __init__(self, renderable: RenderableType, opacity: float = 1.0) -> None:
@classmethod
def process_segments(
- cls, segments: Iterable[Segment], opacity: float
+ cls, segments: Iterable[Segment], opacity: float, ansi_theme: TerminalTheme
) -> Iterable[Segment]:
"""Apply opacity to segments.
Args:
segments: Incoming segments.
opacity: Opacity to apply.
+ ansi_theme: Terminal theme.
Returns:
Segments with applied opacity.
"""
+
_Segment = Segment
_from_color = Style.from_color
if opacity == 0:
@@ -69,7 +76,8 @@ def process_segments(
invisible_style = _from_color(bgcolor=style.bgcolor)
yield _Segment(cell_len(text) * " ", invisible_style)
else:
- for segment in segments:
+ filter = ANSIToTruecolor(ansi_theme)
+ for segment in filter.apply(list(segments), TRANSPARENT):
# use Tuple rather than tuple so Python 3.7 doesn't complain
text, style, control = cast(Tuple[str, Style, object], segment)
if not style:
@@ -87,5 +95,11 @@ def process_segments(
def __rich_console__(
self, console: Console, options: ConsoleOptions
) -> RenderResult:
+ try:
+ app = active_app.get()
+ except LookupError:
+ ansi_theme = DEFAULT_TERMINAL_THEME
+ else:
+ ansi_theme = app.ansi_theme
segments = console.render(self.renderable, options)
- return self.process_segments(segments, self.opacity)
+ return self.process_segments(segments, self.opacity, ansi_theme)
diff --git a/src/textual/screen.py b/src/textual/screen.py
index b8d79116f2..12d9479312 100644
--- a/src/textual/screen.py
+++ b/src/textual/screen.py
@@ -39,6 +39,7 @@
_css_path_type_as_list,
_make_path_object_relative,
)
+from textual._spatial_map import SpatialMap
from textual._types import CallbackType
from textual.await_complete import AwaitComplete
from textual.binding import ActiveBinding, Binding, BindingsMap
@@ -47,12 +48,13 @@
from textual.css.query import NoMatches, QueryType
from textual.dom import DOMNode
from textual.errors import NoWidget
-from textual.geometry import Offset, Region, Size
+from textual.geometry import NULL_OFFSET, Offset, Region, Size
from textual.keys import key_to_character
from textual.layout import DockArrangeResult
-from textual.reactive import Reactive
+from textual.reactive import Reactive, var
from textual.renderables.background_screen import BackgroundScreen
from textual.renderables.blank import Blank
+from textual.selection import SELECT_ALL, Selection
from textual.signal import Signal
from textual.timer import Timer
from textual.widget import Widget
@@ -145,6 +147,8 @@ class Screen(Generic[ScreenResultType], Widget):
This CSS applies to the whole app.
"""
+ COMPONENT_CLASSES = {"screen--selection"}
+
DEFAULT_CSS = """
Screen {
layout: vertical;
@@ -169,6 +173,9 @@ class Screen(Generic[ScreenResultType], Widget):
}
}
}
+ .screen--selection {
+ background: $primary 50%;
+ }
}
"""
@@ -213,9 +220,24 @@ class Screen(Generic[ScreenResultType], Widget):
maximized: Reactive[Widget | None] = Reactive(None, layout=True)
"""The currently maximized widget, or `None` for no maximized widget."""
+ selections: var[dict[Widget, Selection]] = var(dict)
+ """Map of widgets and selected ranges."""
+
+ _selecting = var(False)
+ """Indicates mouse selection is in progress."""
+
+ _select_start: Reactive[tuple[Widget, Offset, Offset] | None] = Reactive(None)
+ """Tuple of (widget, screen offset, text offset) where selection started."""
+ _select_end: Reactive[tuple[Widget, Offset, Offset] | None] = Reactive(None)
+ """Tuple of (widget, screen offset, text offset) where selection ends."""
+
+ _mouse_down_offset: var[Offset | None] = var(None)
+ """Last mouse down screen offset, or `None` if the mouse is up."""
+
BINDINGS = [
Binding("tab", "app.focus_next", "Focus Next", show=False),
Binding("shift+tab", "app.focus_previous", "Focus Previous", show=False),
+ Binding("ctrl+c", "screen.copy_text", "Copy selected text", show=False),
]
def __init__(
@@ -311,6 +333,14 @@ def _watch_focused(self):
def _watch_stack_updates(self):
self.refresh_bindings()
+ async def _watch_selections(
+ self,
+ old_selections: dict[Widget, Selection],
+ selections: dict[Widget, Selection],
+ ):
+ for widget in old_selections.keys() | selections.keys():
+ widget.refresh()
+
def refresh_bindings(self) -> None:
"""Call to request a refresh of bindings."""
self.bindings_updated_signal.publish(self)
@@ -481,6 +511,11 @@ def is_active(self) -> bool:
except Exception:
return False
+ @property
+ def allow_select(self) -> bool:
+ """Check if this widget permits text selection."""
+ return self.ALLOW_SELECT
+
def render(self) -> RenderableType:
"""Render method inherited from widget, used to render the screen's background.
@@ -580,6 +615,20 @@ def get_style_at(self, x: int, y: int) -> Style:
"""
return self._compositor.get_style_at(x, y)
+ def get_widget_and_offset_at(
+ self, x: int, y: int
+ ) -> tuple[Widget | None, Offset | None]:
+ """Get the widget under a given coordinate, and an offset within the original content.
+
+ Args:
+ x: X Coordinate.
+ y: Y Coordinate.
+
+ Returns:
+ Tuple of Widget and Offset, both of which may be None.
+ """
+ return self._compositor.get_widget_and_offset_at(x, y)
+
def find_widget(self, widget: Widget) -> MapGeometry:
"""Get the screen region of a Widget.
@@ -594,6 +643,24 @@ def find_widget(self, widget: Widget) -> MapGeometry:
"""
return self._compositor.find_widget(widget)
+ def clear_selection(self) -> None:
+ """Clear any selected text."""
+ self.selections = {}
+ self._select_start = None
+ self._select_end = None
+
+ def _select_all_in_widget(self, widget: Widget) -> None:
+ """Select a widget and all it's children.
+
+ Args:
+ widget: Widget to select.
+ """
+ select_all = SELECT_ALL
+ self.selections = {
+ widget: select_all,
+ **{child: select_all for child in widget.query("*")},
+ }
+
@property
def focus_chain(self) -> list[Widget]:
"""A list of widgets that may receive focus, in focus order."""
@@ -777,6 +844,30 @@ def minimize(self) -> None:
self.scroll_to_widget, self.focused, animate=False, center=True
)
+ def get_selected_text(self) -> str | None:
+ """Get text under selection.
+
+ Returns:
+ Selected text, or `None` if no text was selected.
+ """
+ if not self.selections:
+ return None
+
+ widget_text: list[str] = []
+ for widget, selection in self.selections.items():
+ selected_text_in_widget = widget.get_selection(selection)
+ if selected_text_in_widget is not None:
+ widget_text.extend(selected_text_in_widget)
+
+ selected_text = "".join(widget_text)
+ return selected_text
+
+ def action_copy_text(self) -> None:
+ """Copy selected text to clipboard."""
+ selection = self.get_selected_text()
+ if selection is not None:
+ self.app.copy_to_clipboard(selection)
+
def action_maximize(self) -> None:
"""Action to maximize the currently focused widget."""
if self.focused is not None:
@@ -1399,7 +1490,57 @@ def _forward_event(self, event: events.Event) -> None:
event.style = self.get_style_at(event.screen_x, event.screen_y)
self._handle_mouse_move(event)
+ if self._selecting:
+ select_widget, select_offset = self.get_widget_and_offset_at(
+ event.x, event.y
+ )
+ if (
+ self._select_end is not None
+ and select_offset is None
+ and event.y > self._select_end[1].y
+ ):
+ end_widget = self._select_end[0]
+ select_offset = end_widget.content_region.bottom_right_inclusive
+ self._select_end = (end_widget, event.offset, select_offset)
+
+ elif (
+ select_widget is not None
+ and select_widget.allow_select
+ and select_offset is not None
+ ):
+ self._select_end = (select_widget, event.offset, select_offset)
+
elif isinstance(event, events.MouseEvent):
+ if isinstance(event, events.MouseUp):
+ if (
+ self._mouse_down_offset is not None
+ and self._mouse_down_offset == event.screen_offset
+ ):
+ self.clear_selection()
+ self._mouse_down_offset = None
+ self._selecting = False
+
+ elif isinstance(event, events.MouseDown) and not self.app.mouse_captured:
+ self._mouse_down_offset = event.screen_offset
+ select_widget, select_offset = self.get_widget_and_offset_at(
+ event.screen_x, event.screen_y
+ )
+ if (
+ select_widget is not None
+ and select_widget.allow_select
+ and self.screen.allow_select
+ and self.app.ALLOW_SELECT
+ ):
+ self._selecting = True
+ if select_widget is not None and select_offset is not None:
+ self._select_start = (
+ select_widget,
+ event.screen_offset,
+ select_offset,
+ )
+ else:
+ self._selecting = False
+
try:
if self.app.mouse_captured:
widget = self.app.mouse_captured
@@ -1425,6 +1566,109 @@ def _forward_event(self, event: events.Event) -> None:
else:
self.post_message(event)
+ def _key_escape(self) -> None:
+ self.clear_selection()
+
+ def _watch__select_end(
+ self, select_end: tuple[Widget, Offset, Offset] | None
+ ) -> None:
+ """When select_end changes, we need to compute which widgets and regions are selected.
+
+ Args:
+ select_end: The end selection.
+ """
+
+ if select_end is None or self._select_start is None:
+ # Nothing to select
+ return
+
+ select_start = self._select_start
+ start_widget, screen_start, start_offset = select_start
+ end_widget, screen_end, end_offset = select_end
+ if start_widget is end_widget:
+ # Simplest case, selection starts and ends on the same widget
+ self.selections = {
+ start_widget: Selection.from_offsets(start_offset, end_offset)
+ }
+ return
+
+ select_start, select_end = sorted(
+ [select_start, select_end],
+ key=lambda selection: (selection[0].region.offset.transpose),
+ )
+
+ start_widget, _screen_start, start_offset = select_start
+ end_widget, _screen_end, end_offset = select_end
+
+ select_regions: list[Region] = []
+ start_region = start_widget.content_region
+ end_region = end_widget.content_region
+ if end_region.y <= start_region.bottom:
+ select_regions.append(Region.union(start_region, end_region))
+ else:
+ container_region = Region.from_union(
+ [
+ start_widget.select_container.content_region,
+ end_widget.select_container.content_region,
+ ]
+ )
+
+ start_region = Region.from_corners(
+ start_region.x,
+ start_region.y,
+ container_region.right,
+ start_region.bottom,
+ )
+ end_region = Region.from_corners(
+ container_region.x,
+ end_region.y,
+ end_region.right,
+ end_region.bottom,
+ )
+ select_regions.append(start_region)
+ select_regions.append(end_region)
+ mid_height = end_region.y - start_region.bottom
+ if mid_height > 0:
+ mid_region = Region.from_corners(
+ container_region.x,
+ start_region.bottom,
+ container_region.right,
+ start_region.bottom + mid_height,
+ )
+ select_regions.append(mid_region)
+
+ spatial_map: SpatialMap[Widget] = SpatialMap()
+ spatial_map.insert(
+ [
+ (widget.region, NULL_OFFSET, False, False, widget)
+ for widget in self._compositor.visible_widgets.keys()
+ ]
+ )
+
+ highlighted_widgets: set[Widget] = set()
+ for region in select_regions:
+ covered_widgets = spatial_map.get_values_in_region(region)
+ covered_widgets = [
+ widget
+ for widget in covered_widgets
+ if region.overlaps(widget.content_region)
+ ]
+ highlighted_widgets.update(covered_widgets)
+ highlighted_widgets -= {self, start_widget, end_widget}
+
+ select_all = SELECT_ALL
+ self.selections = {
+ start_widget: Selection(start_offset, None),
+ **{
+ widget: select_all
+ for widget in sorted(
+ highlighted_widgets,
+ key=lambda widget: widget.content_region.offset.transpose,
+ )
+ },
+ end_widget: Selection(None, end_offset),
+ }
+
def dismiss(self, result: ScreenResultType | None = None) -> AwaitComplete:
"""Dismiss the screen, optionally with a result.
diff --git a/src/textual/scrollbar.py b/src/textual/scrollbar.py
index 78aa968d00..a9e1bddcb4 100644
--- a/src/textual/scrollbar.py
+++ b/src/textual/scrollbar.py
@@ -248,6 +248,9 @@ class MyScrollBarRender(ScrollBarRender): ...
DEFAULT_CLASSES = "-textual-system"
+ # Nothing to select in scrollbars
+ ALLOW_SELECT = False
+
def __init__(
self, vertical: bool = True, name: str | None = None, *, thickness: int = 1
) -> None:
diff --git a/src/textual/selection.py b/src/textual/selection.py
new file mode 100644
index 0000000000..94166838aa
--- /dev/null
+++ b/src/textual/selection.py
@@ -0,0 +1,113 @@
+from __future__ import annotations
+
+from typing import NamedTuple
+
+from textual.geometry import Offset
+
+
+class Selection(NamedTuple):
+ """A selected range of lines."""
+
+ start: Offset | None
+ """Offset or None for `start`."""
+ end: Offset | None
+ """Offset or None for `end`."""
+
+ @classmethod
+ def from_offsets(cls, offset1: Offset, offset2: Offset) -> Selection:
+ """Create selection from 2 offsets.
+
+ Args:
+ offset1: First offset.
+ offset2: Second offset.
+
+ Returns:
+ New Selection.
+ """
+ offsets = sorted([offset1, offset2], key=(lambda offset: (offset.y, offset.x)))
+ return cls(*offsets)
+
+ def extract(self, text: str) -> str:
+ """Extract selection from text.
+
+ Args:
+ text: Raw text pulled from widget.
+
+ Returns:
+ Extracted text.
+ """
+ lines = text.splitlines()
+ if not lines:
+ return ""
+ if self.start is None:
+ start_line = 0
+ start_offset = 0
+ else:
+ start_line, start_offset = self.start.transpose
+
+ if self.end is None:
+ end_line = len(lines) - 1
+ end_offset = len(lines[end_line])
+ else:
+ end_line, end_offset = self.end.transpose
+
+ if start_line == end_line:
+ return lines[start_line][start_offset:end_offset]
+
+ selection: list[str] = []
+ selected_lines = lines[start_line:end_line]
+ if len(selected_lines) >= 2:
+ first_line, *mid_lines, last_line = selected_lines
+ selection.append(first_line[start_offset:])
+ selection.extend(mid_lines)
+ selection.append(last_line[: end_offset + 1])
+ else:
+ return lines[start_line][start_offset:end_offset]
+ return "\n".join(selection)
+
+ def get_span(self, y: int) -> tuple[int, int] | None:
+ """Get the selected span in a given line.
+
+ Args:
+ y: Offset of the line.
+
+ Returns:
+ A tuple of x start and end offset, or None for no selection.
+ """
+ start, end = self
+ if start is None and end is None:
+ # Selection covers everything
+ return 0, -1
+
+ if start is not None and end is not None:
+ if y < start.y or y > end.y:
+ # Outside
+ return None
+ if y == start.y and start.y == end.y:
+ # Same line
+ return start.x, end.x
+ if y == end.y:
+ # Last line
+ return 0, end.x
+ if y == start.y:
+ return start.x, -1
+ # Remaining lines
+ return 0, -1
+
+ if start is None and end is not None:
+ if y == end.y:
+ return 0, end.x
+ if y > end.y:
+ return None
+ return 0, -1
+
+ if end is None and start is not None:
+ if y == start.y:
+ return start.x, -1
+ if y > start.y:
+ return 0, -1
+ return None
+ return 0, -1
+
+
+SELECT_ALL = Selection(None, None)
diff --git a/src/textual/strip.py b/src/textual/strip.py
index 0147cc3acb..5f9eabba61 100644
--- a/src/textual/strip.py
+++ b/src/textual/strip.py
@@ -164,7 +164,7 @@ def align(
strips: list[Strip],
style: Style,
width: int,
- height: int,
+ height: int | None,
horizontal: AlignHorizontal,
vertical: AlignVertical,
) -> Iterable[Strip]:
@@ -202,18 +202,19 @@ def blank_lines(count: int) -> Iterable[Strip]:
yield blank
top_blank_lines = bottom_blank_lines = 0
- vertical_excess_space = max(0, height - shape_height)
+ if height is not None:
+ vertical_excess_space = max(0, height - shape_height)
- if vertical == "top":
- bottom_blank_lines = vertical_excess_space
- elif vertical == "middle":
- top_blank_lines = vertical_excess_space // 2
- bottom_blank_lines = vertical_excess_space - top_blank_lines
- elif vertical == "bottom":
- top_blank_lines = vertical_excess_space
+ if vertical == "top":
+ bottom_blank_lines = vertical_excess_space
+ elif vertical == "middle":
+ top_blank_lines = vertical_excess_space // 2
+ bottom_blank_lines = vertical_excess_space - top_blank_lines
+ elif vertical == "bottom":
+ top_blank_lines = vertical_excess_space
- if top_blank_lines:
- yield from blank_lines(top_blank_lines)
+ if top_blank_lines:
+ yield from blank_lines(top_blank_lines)
if horizontal == "left":
for strip in strips:
@@ -393,6 +394,34 @@ def simplify(self) -> Strip:
)
return line
+ def discard_meta(self) -> Strip:
+ """Remove all meta from segments.
+
+ Returns:
+ New strip.
+ """
+
+ def remove_meta_from_segment(segment: Segment) -> Segment:
+ """Build a Segment with no meta.
+
+ Args:
+ segment: Segment.
+
+ Returns:
+ Segment, sans meta.
+ """
+ text, style, control = segment
+ if style is None:
+ return segment
+ style = style.copy()
+ style._meta = None
+ return Segment(text, style, control)
+
+ return Strip(
+ [remove_meta_from_segment(segment) for segment in self._segments],
+ self._cell_length,
+ )
+
def apply_filter(self, filter: LineFilter, background: Color) -> Strip:
"""Apply a filter to all segments in the strip.
@@ -609,3 +638,37 @@ def crop_pad(self, cell_length: int, left: int, right: int, style: Style) -> Str
if right:
segments.append(Segment(" " * right, style))
return Strip(segments, cell_length + left + right)
+
+ def text_align(self, width: int, align: AlignHorizontal) -> Strip:
+ if align == "left":
+ if self.cell_length == width:
+ return self
+ else:
+ return Strip(
+ line_pad(self._segments, 0, width - self.cell_length, Style.null()),
+ width,
+ )
+ elif align == "center":
+ left_space = max(0, width - self.cell_length) // 2
+
+ if self.cell_length == width:
+ return self
+ else:
+ return Strip(
+ line_pad(
+ self._segments,
+ left_space,
+ width - self.cell_length - left_space,
+ Style.null(),
+ ),
+ width,
+ )
+
+ elif align == "right":
+ if self.cell_length == width:
+ return self
+ else:
+ return Strip(
+ line_pad(self._segments, width - self.cell_length, 0, Style.null()),
+ width,
+ )
diff --git a/src/textual/visual.py b/src/textual/visual.py
index 29303b8d3a..ba3e29d357 100644
--- a/src/textual/visual.py
+++ b/src/textual/visual.py
@@ -4,8 +4,8 @@
from dataclasses import dataclass
from functools import cached_property, lru_cache
from itertools import islice
-from marshal import loads
-from typing import TYPE_CHECKING, Any, Iterable, Protocol, cast
+from marshal import dumps, loads
+from typing import TYPE_CHECKING, Any, Iterable, Protocol
import rich.repr
from rich.console import Console, ConsoleOptions, RenderableType
@@ -19,7 +19,6 @@
from textual._context import active_app
from textual.color import TRANSPARENT, Color
from textual.css.styles import StylesBase
-from textual.css.types import AlignHorizontal, AlignVertical
from textual.geometry import Spacing
from textual.render import measure
from textual.strip import Strip
@@ -80,11 +79,18 @@ def visualize(widget: Widget, obj: object) -> Visual:
visualize = getattr(obj, "visualize", None)
if visualize is None:
# Doesn't expose the textualize protocol
+ from textual.content import Content
+
if is_renderable(obj):
# If it is a string, render it to Text
if isinstance(obj, str):
obj = widget.render_str(obj)
+ if isinstance(obj, Text) and widget.allow_select:
+ return Content.from_rich_text(
+ obj, align=obj.justify or widget.styles.text_align
+ )
+
# If its is a Rich renderable, wrap it with a RichVisual
return RichVisual(widget, rich_cast(obj))
else:
@@ -110,19 +116,25 @@ class Style:
dim: bool | None = None
italic: bool | None = None
underline: bool | None = None
+ reverse: bool | None = None
strike: bool | None = None
link: str | None = None
_meta: bytes | None = None
auto_color: bool = False
def __rich_repr__(self) -> rich.repr.Result:
- yield None, self.background
- yield None, self.foreground
+ yield None, self.background, TRANSPARENT
+ yield None, self.foreground, TRANSPARENT
yield "bold", self.bold, None
yield "dim", self.dim, None
yield "italic", self.italic, None
yield "underline", self.underline, None
+ yield "reverse", self.reverse, None
yield "strike", self.strike, None
+ yield "link", self.link, None
+
+ if self._meta is not None:
+ yield "meta", self.meta
@lru_cache(maxsize=1024)
def __add__(self, other: object) -> Style:
@@ -135,6 +147,7 @@ def __add__(self, other: object) -> Style:
self.dim if other.dim is None else other.dim,
self.italic if other.italic is None else other.italic,
self.underline if other.underline is None else other.underline,
+ self.reverse if other.reverse is None else other.reverse,
self.strike if other.strike is None else other.strike,
self.link if other.link is None else other.link,
self._meta if other._meta is None else other._meta,
@@ -161,7 +174,10 @@ def from_rich_style(
dim=rich_style.dim,
italic=rich_style.italic,
underline=rich_style.underline,
+ reverse=rich_style.reverse,
strike=rich_style.strike,
+ link=rich_style.link,
+ _meta=rich_style._meta,
)
@classmethod
@@ -184,10 +200,23 @@ def from_styles(cls, styles: StylesBase) -> Style:
dim=text_style.italic,
italic=text_style.italic,
underline=text_style.underline,
+ reverse=text_style.reverse,
strike=text_style.strike,
auto_color=styles.auto_color,
)
+ @classmethod
+ def from_meta(cls, meta: dict[str, object]) -> Style:
+ """Create a Visual Style containing meta information.
+
+ Args:
+ meta: A dictionary of meta information.
+
+ Returns:
+ A new Style.
+ """
+ return Style(_meta=dumps(meta))
+
@cached_property
def rich_style(self) -> RichStyle:
"""Convert this Styles in to a Rich style.
@@ -202,22 +231,59 @@ def rich_style(self) -> RichStyle:
dim=self.dim,
italic=self.italic,
underline=self.underline,
+ reverse=self.reverse,
strike=self.strike,
link=self.link,
meta=self.meta,
)
+ def rich_style_with_offset(self, x: int, y: int) -> RichStyle:
+ return RichStyle(
+ color=(self.background + self.foreground).rich_color,
+ bgcolor=self.background.rich_color,
+ bold=self.bold,
+ dim=self.dim,
+ italic=self.italic,
+ underline=self.underline,
+ reverse=self.reverse,
+ strike=self.strike,
+ link=self.link,
+ meta={**self.meta, "offset": (x, y)},
+ )
+
+ def get_rich_style(self) -> RichStyle:
+ rich_style = RichStyle(
+ color=(self.background + self.foreground).rich_color,
+ bgcolor=self.background.rich_color,
+ bold=self.bold,
+ dim=self.dim,
+ italic=self.italic,
+ underline=self.underline,
+ reverse=self.reverse,
+ strike=self.strike,
+ link=self.link,
+ meta=self.meta,
+ )
+ return rich_style
+
@cached_property
def without_color(self) -> Style:
+ """The style with no color."""
return Style(
bold=self.bold,
dim=self.dim,
italic=self.italic,
+ reverse=self.reverse,
strike=self.strike,
link=self.link,
_meta=self._meta,
)
+ @cached_property
+ def background_style(self) -> Style:
+ """Just the background color, with no other attributes."""
+ return Style(self.background, _meta=self._meta)
+
@classmethod
def combine(cls, styles: Iterable[Style]) -> Style:
"""Add a number of styles and get the result."""
@@ -227,7 +293,7 @@ def combine(cls, styles: Iterable[Style]) -> Style:
@property
def meta(self) -> dict[str, Any]:
"""Get meta information (can not be changed after construction)."""
- return {} if self._meta is None else cast(dict[str, Any], loads(self._meta))
+ return {} if self._meta is None else loads(self._meta)
class Visual(ABC):
@@ -239,7 +305,11 @@ class Visual(ABC):
@abstractmethod
def render_strips(
- self, widget: Widget, width: int, height: int | None, style: Style
+ self,
+ widget: Widget,
+ width: int,
+ height: int | None,
+ style: Style,
) -> list[Strip]:
"""Render the visual in to an iterable of strips.
@@ -283,7 +353,6 @@ def to_strips(
style: Style,
*,
pad: bool = False,
- align: tuple[AlignHorizontal, AlignVertical] = ("left", "top"),
) -> list[Strip]:
"""High level function to render a visual to strips.
@@ -294,7 +363,6 @@ def to_strips(
height: Desired height (in lines) or `None` for no limit.
style: A (Visual) Style instance.
pad: Pad to desired width?
- align: Tuple of horizontal and vertical alignment.
Returns:
A list of Strips containing the render.
@@ -305,8 +373,9 @@ def to_strips(
rich_style = style.rich_style
if pad:
strips = [strip.extend_cell_length(width, rich_style) for strip in strips]
- if align != ("left", "top"):
- align_horizontal, align_vertical = align
+ content_align = widget.styles.content_align
+ if content_align != ("left", "top"):
+ align_horizontal, align_vertical = content_align
strips = list(
Strip.align(
strips,
@@ -403,6 +472,7 @@ def render_strips(
height,
)
]
+
return strips
@@ -442,6 +512,7 @@ def render_strips(
render_width = width - (left + right)
if render_width <= 0:
return []
+
strips = self._visual.render_strips(
widget,
render_width,
@@ -463,3 +534,19 @@ def render_strips(
]
return strips
+
+
+def pick_bool(*values: bool | None) -> bool:
+ """Pick the first non-none bool or return the last value.
+
+ Args:
+ *values (bool): Any number of boolean or None values.
+
+ Returns:
+ bool: First non-none boolean.
+ """
+ assert values, "1 or more values required"
+ for value in values:
+ if value is not None:
+ return value
+ return bool(value)
diff --git a/src/textual/widget.py b/src/textual/widget.py
index d71d311715..752a76c3da 100644
--- a/src/textual/widget.py
+++ b/src/textual/widget.py
@@ -61,6 +61,7 @@
from textual.box_model import BoxModel
from textual.cache import FIFOCache
from textual.color import Color
+from textual.content import Content
from textual.css.match import match
from textual.css.parse import parse_selectors
from textual.css.query import NoMatches, WrongType
@@ -84,6 +85,7 @@
from textual.reactive import Reactive
from textual.renderables.blank import Blank
from textual.rlock import RLock
+from textual.selection import Selection
from textual.strip import Strip
from textual.visual import Style as VisualStyle
from textual.visual import Visual, visualize
@@ -109,7 +111,6 @@
}
-_NULL_STYLE = Style()
_MOUSE_EVENTS_DISALLOW_IF_DISABLED = (events.MouseEvent, events.Enter, events.Leave)
_MOUSE_EVENTS_ALLOW_IF_DISABLED = (events.MouseScrollDown, events.MouseScrollUp)
@@ -313,6 +314,9 @@ class Widget(DOMNode):
"""
+ ALLOW_SELECT: ClassVar[bool] = True
+ """Does this widget support automatic text selection? May be further refined with [Widget.allow_select][textual.widget.Widget.allow_select]"""
+
can_focus: bool = False
"""Widget may receive focus."""
can_focus_children: bool = True
@@ -636,6 +640,11 @@ def _render_widget(self) -> Widget:
# Will return the "cover widget" if one is set, otherwise self.
return self._cover_widget if self._cover_widget is not None else self
+ @property
+ def selection(self) -> Selection | None:
+ """Text selection information, or `None` if no text is selected in this widget."""
+ return self.screen.selections.get(self, None)
+
def _cover(self, widget: Widget) -> None:
"""Set a widget used to replace the visuals of this widget (used for loading indicator).
@@ -2281,7 +2290,7 @@ def link_style(self) -> Style:
)
style = styles.link_style + Style.from_color(
link_color.rich_color,
- link_background.rich_color,
+ link_background.rich_color if styles.link_background.a else None,
)
return style
@@ -2306,6 +2315,19 @@ def link_style_hover(self) -> Style:
)
return style
+ @property
+ def select_container(self) -> Widget:
+ """The widget's container used when selecting text..
+
+ Returns:
+ A widget which contains this widget.
+ """
+ container: Widget = self
+ for widget in self.ancestors:
+ if isinstance(widget, Widget) and widget.is_scrollable:
+ return widget
+ return container
+
def _set_dirty(self, *regions: Region) -> None:
"""Set the Widget as 'dirty' (requiring re-paint).
@@ -2440,6 +2462,15 @@ def _animate_on_complete() -> None:
return scrolled_x or scrolled_y
+ @property
+ def allow_select(self) -> bool:
+ """Check if this widget permits text selection.
+
+ Returns:
+ `True` if the widget supports text selection, otherwise `False`.
+ """
+ return self.ALLOW_SELECT and not self.is_container
+
def pre_layout(self, layout: Layout) -> None:
"""This method id called prior to a layout operation.
@@ -3785,18 +3816,27 @@ def visual_style(self) -> VisualStyle:
strike=style.strike,
)
+ def get_selection(self, selection: Selection) -> tuple[str, str] | None:
+ """Get the text under the selection.
+
+ Args:
+ selection: Selection information.
+
+ Returns:
+ Tuple of extracted text and ending (typically "\n" or " "), or `None` if no text could be extracted.
+ """
+ visual = self._render()
+ if isinstance(visual, (Text, Content)):
+ text = str(visual)
+ else:
+ return None
+ return selection.extract(text), "\n"
+
def _render_content(self) -> None:
"""Render all lines."""
width, height = self.size
visual = self._render()
- strips = Visual.to_strips(
- self,
- visual,
- width,
- height,
- self.visual_style,
- align=self.styles.content_align,
- )
+ strips = Visual.to_strips(self, visual, width, height, self.visual_style)
self._render_cache = _RenderCache(self.size, strips)
self._dirty_regions.clear()
@@ -4157,6 +4197,10 @@ def release_mouse(self) -> None:
"""
self.app.capture_mouse(None)
+ def select_all(self) -> None:
+ """Select the entire widget."""
+ self.screen._select_all_in_widget(self)
+
def begin_capture_print(self, stdout: bool = True, stderr: bool = True) -> None:
"""Capture text from print statements (or writes to stdout / stderr).
@@ -4214,6 +4258,12 @@ async def _on_mouse_up(self, event: events.MouseUp) -> None:
await self.broker_event("mouse.up", event)
async def _on_click(self, event: events.Click) -> None:
+ if event.widget is self:
+ if event.chain == 2:
+ self.select_all()
+ elif event.chain == 3 and self.parent is not None:
+ self.select_container.select_all()
+
await self.broker_event("click", event)
async def _on_key(self, event: events.Key) -> None:
diff --git a/src/textual/widgets/_collapsible.py b/src/textual/widgets/_collapsible.py
index 24c1f34eb5..80b9872a92 100644
--- a/src/textual/widgets/_collapsible.py
+++ b/src/textual/widgets/_collapsible.py
@@ -16,6 +16,7 @@
class CollapsibleTitle(Static, can_focus=True):
"""Title and symbol for the Collapsible."""
+ ALLOW_SELECT = False
DEFAULT_CSS = """
CollapsibleTitle {
width: auto;
diff --git a/src/textual/widgets/_digits.py b/src/textual/widgets/_digits.py
index 86492ebe8f..431e196847 100644
--- a/src/textual/widgets/_digits.py
+++ b/src/textual/widgets/_digits.py
@@ -9,6 +9,7 @@
from textual.geometry import Size
from textual.renderables.digits import Digits as DigitsRenderable
+from textual.selection import Selection
from textual.widget import Widget
@@ -53,6 +54,9 @@ def value(self) -> str:
"""The current value displayed in the Digits."""
return self._value
+ def get_selection(self, selection: Selection) -> str | None:
+ return self._value
+
def update(self, value: str) -> None:
"""Update the Digits with a new value.
@@ -73,6 +77,8 @@ def update(self, value: str) -> None:
def render(self) -> RenderResult:
"""Render digits."""
rich_style = self.rich_style
+ if self.selection:
+ rich_style += self.selection_style
digits = DigitsRenderable(self._value, rich_style)
text_align = self.styles.text_align
align = "left" if text_align not in {"left", "center", "right"} else text_align
diff --git a/src/textual/widgets/_footer.py b/src/textual/widgets/_footer.py
index 050624b809..4f75bd4001 100644
--- a/src/textual/widgets/_footer.py
+++ b/src/textual/widgets/_footer.py
@@ -19,6 +19,7 @@
@rich.repr.auto
class FooterKey(Widget):
+ ALLOW_SELECT = False
COMPONENT_CLASSES = {
"footer-key--key",
"footer-key--description",
@@ -121,6 +122,7 @@ def _watch_compact(self, compact: bool) -> None:
@rich.repr.auto
class Footer(ScrollableContainer, can_focus=False, can_focus_children=False):
+ ALLOW_SELECT = False
DEFAULT_CSS = """
Footer {
layout: grid;
diff --git a/src/textual/widgets/_markdown.py b/src/textual/widgets/_markdown.py
index 839046014f..ad796b173f 100644
--- a/src/textual/widgets/_markdown.py
+++ b/src/textual/widgets/_markdown.py
@@ -121,6 +121,10 @@ def __init__(self, markdown: Markdown, *args, **kwargs) -> None:
self._blocks: list[MarkdownBlock] = []
super().__init__(*args, **kwargs)
+ @property
+ def select_container(self) -> Widget:
+ return self.query_ancestor(Markdown)
+
def compose(self) -> ComposeResult:
yield from self._blocks
self._blocks.clear()
@@ -562,6 +566,9 @@ class MarkdownBullet(Widget):
symbol = reactive("\u25cf")
"""The symbol for the bullet."""
+ def get_selection(self, _selection) -> tuple[str, str] | None:
+ return self.symbol, " "
+
def render(self) -> Text:
return Text(self.symbol)
diff --git a/src/textual/widgets/_option_list.py b/src/textual/widgets/_option_list.py
index 6aeac230ce..1d0aa71058 100644
--- a/src/textual/widgets/_option_list.py
+++ b/src/textual/widgets/_option_list.py
@@ -119,6 +119,7 @@ class OptionLineSpan(NamedTuple):
class OptionList(ScrollView, can_focus=True):
"""A vertical option list with bounce-bar highlighting."""
+ ALLOW_SELECT = False
BINDINGS: ClassVar[list[BindingType]] = [
Binding("down", "cursor_down", "Down", show=False),
Binding("end", "last", "Last", show=False),
@@ -410,6 +411,7 @@ def _on_mouse_move(self, event: events.MouseMove) -> None:
event: The mouse movement event.
"""
self._mouse_hovering_over = event.style.meta.get("option")
+ self.refresh()
def _on_leave(self, _: events.Leave) -> None:
"""React to the mouse leaving the widget."""
diff --git a/src/textual/widgets/_radio_set.py b/src/textual/widgets/_radio_set.py
index eb47af19fc..edb6eb7525 100644
--- a/src/textual/widgets/_radio_set.py
+++ b/src/textual/widgets/_radio_set.py
@@ -25,6 +25,7 @@ class RadioSet(VerticalScroll, can_focus=True, can_focus_children=False):
turned off.
"""
+ ALLOW_SELECT = False
ALLOW_MAXIMIZE = True
DEFAULT_CSS = """
diff --git a/src/textual/widgets/_toggle_button.py b/src/textual/widgets/_toggle_button.py
index 865dca3ea5..0b35ca2a8e 100644
--- a/src/textual/widgets/_toggle_button.py
+++ b/src/textual/widgets/_toggle_button.py
@@ -32,6 +32,7 @@ class ToggleButton(Static, can_focus=True):
[RadioButton][textual.widgets.RadioButton].
"""
+ ALLOW_SELECT = False
BINDINGS: ClassVar[list[BindingType]] = [
Binding("enter,space", "toggle_button", "Toggle", show=False),
]
diff --git a/tests/renderables/test_text_opacity.py b/tests/renderables/test_text_opacity.py
index 877f5b4593..8f1ed4377f 100644
--- a/tests/renderables/test_text_opacity.py
+++ b/tests/renderables/test_text_opacity.py
@@ -29,13 +29,6 @@ def test_text_opacity_value_of_one_noop(text):
assert render(TextOpacity(text, opacity=1)) == render(text)
-def test_ansi_colors_noop():
- ansi_colored_text = Text("Hello, world!", style="red on green", end="")
- assert render(TextOpacity(ansi_colored_text, opacity=0.5)) == render(
- ansi_colored_text
- )
-
-
def test_text_opacity_no_style_noop():
text_no_style = Text("Hello, world!", end="")
assert render(TextOpacity(text_no_style, opacity=0.2)) == render(text_no_style)
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_add_remove_tabs.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_add_remove_tabs.svg
index 7f987a7129..77f8df43c7 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_add_remove_tabs.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_add_remove_tabs.svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-43154064-matrix {
+ .terminal-1023300182-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-43154064-title {
+ .terminal-1023300182-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-43154064-r1 { fill: #c5c8c6 }
-.terminal-43154064-r2 { fill: #ddedf9;font-weight: bold }
-.terminal-43154064-r3 { fill: #797979 }
-.terminal-43154064-r4 { fill: #e0e0e0 }
-.terminal-43154064-r5 { fill: #4f4f4f }
-.terminal-43154064-r6 { fill: #0178d4 }
-.terminal-43154064-r7 { fill: #ffa62b;font-weight: bold }
-.terminal-43154064-r8 { fill: #495259 }
+ .terminal-1023300182-r1 { fill: #c5c8c6 }
+.terminal-1023300182-r2 { fill: #ddedf9;font-weight: bold }
+.terminal-1023300182-r3 { fill: #797979 }
+.terminal-1023300182-r4 { fill: #e0e0e0 }
+.terminal-1023300182-r5 { fill: #4f4f4f }
+.terminal-1023300182-r6 { fill: #0178d4 }
+.terminal-1023300182-r7 { fill: #ffa62b;font-weight: bold }
+.terminal-1023300182-r8 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ExampleApp
+ ExampleApp
-
-
-
- tab-2New tabNew tab
-╸━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-tab-2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- r Remove first pane a Add pane ▏^p palette
+
+
+
+ tab-2New tabNew tab
+╸━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+tab-2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ r Remove first pane a Add pane ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_alignment_containers.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_alignment_containers.svg
index ba67962e0b..f37598c58c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_alignment_containers.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_alignment_containers.svg
@@ -19,139 +19,139 @@
font-weight: 700;
}
- .terminal-2775477330-matrix {
+ .terminal-1179311675-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2775477330-title {
+ .terminal-1179311675-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2775477330-r1 { fill: #c9d5de }
-.terminal-2775477330-r2 { fill: #7ae998 }
-.terminal-2775477330-r3 { fill: #c5c8c6 }
-.terminal-2775477330-r4 { fill: #55c076;font-weight: bold }
-.terminal-2775477330-r5 { fill: #008139 }
-.terminal-2775477330-r6 { fill: #e3dacd }
-.terminal-2775477330-r7 { fill: #e0e0e0 }
-.terminal-2775477330-r8 { fill: #e76580 }
-.terminal-2775477330-r9 { fill: #f5e5e9;font-weight: bold }
-.terminal-2775477330-r10 { fill: #780028 }
+ .terminal-1179311675-r1 { fill: #c9d5de }
+.terminal-1179311675-r2 { fill: #7ae998 }
+.terminal-1179311675-r3 { fill: #c5c8c6 }
+.terminal-1179311675-r4 { fill: #55c076;font-weight: bold }
+.terminal-1179311675-r5 { fill: #008139 }
+.terminal-1179311675-r6 { fill: #e3dacd }
+.terminal-1179311675-r7 { fill: #e0e0e0 }
+.terminal-1179311675-r8 { fill: #e76580 }
+.terminal-1179311675-r9 { fill: #f5e5e9;font-weight: bold }
+.terminal-1179311675-r10 { fill: #780028 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AlignContainersApp
+ AlignContainersApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- center
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- middle
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ center
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ middle
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi.svg
index 91ece73e2f..270bd414d5 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi.svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-946490559-matrix {
+ .terminal-896989350-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-946490559-title {
+ .terminal-896989350-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-946490559-r1 { fill: #c5c8c6 }
-.terminal-946490559-r2 { fill: #cc555a }
-.terminal-946490559-r3 { fill: #98729f }
+ .terminal-896989350-r1 { fill: #c5c8c6 }
+.terminal-896989350-r2 { fill: #cc555a }
+.terminal-896989350-r3 { fill: #98729f }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ANSIApp
+ ANSIApp
-
+
-
- ┌───────────┐
-│RedMagenta│
-└───────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ┌───────────┐
+│RedMagenta│
+└───────────┘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-dark].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-dark].svg
index ba92199c51..5832e07584 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-dark].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-dark].svg
@@ -19,145 +19,145 @@
font-weight: 700;
}
- .terminal-1816037992-matrix {
+ .terminal-6377278-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1816037992-title {
+ .terminal-6377278-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1816037992-r1 { fill: #e0e0e0 }
-.terminal-1816037992-r2 { fill: #c5c8c6 }
-.terminal-1816037992-r3 { fill: #f4005f }
-.terminal-1816037992-r4 { fill: #990740 }
-.terminal-1816037992-r5 { fill: #98e024 }
-.terminal-1816037992-r6 { fill: #628d1c }
-.terminal-1816037992-r7 { fill: #fd971f }
-.terminal-1816037992-r8 { fill: #9f6119 }
-.terminal-1816037992-r9 { fill: #9d65ff }
-.terminal-1816037992-r10 { fill: #6543a0 }
-.terminal-1816037992-r11 { fill: #58d1eb }
-.terminal-1816037992-r12 { fill: #3c8494 }
-.terminal-1816037992-r13 { fill: #c4c5b5 }
-.terminal-1816037992-r14 { fill: #7c7d73 }
-.terminal-1816037992-r15 { fill: #1a1a1a }
-.terminal-1816037992-r16 { fill: #161616 }
+ .terminal-6377278-r1 { fill: #e0e0e0 }
+.terminal-6377278-r2 { fill: #c5c8c6 }
+.terminal-6377278-r3 { fill: #f4005f }
+.terminal-6377278-r4 { fill: #990740 }
+.terminal-6377278-r5 { fill: #98e024 }
+.terminal-6377278-r6 { fill: #628d1c }
+.terminal-6377278-r7 { fill: #fd971f }
+.terminal-6377278-r8 { fill: #9f6119 }
+.terminal-6377278-r9 { fill: #9d65ff }
+.terminal-6377278-r10 { fill: #6543a0 }
+.terminal-6377278-r11 { fill: #58d1eb }
+.terminal-6377278-r12 { fill: #3c8494 }
+.terminal-6377278-r13 { fill: #c4c5b5 }
+.terminal-6377278-r14 { fill: #7c7d73 }
+.terminal-6377278-r15 { fill: #1a1a1a }
+.terminal-6377278-r16 { fill: #161616 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AnsiMappingApp
+ AnsiMappingApp
-
-
-
- Foreground & background
-red
-dim red
-green
-dim green
-yellow
-dim yellow
-blue
-dim blue
-magenta
-dim magenta
-cyan
-dim cyan
-white
-dim white
-black
-dim black
-
-
-
-
-
-
+
+
+
+ Foreground & background
+red
+dim red
+green
+dim green
+yellow
+dim yellow
+blue
+dim blue
+magenta
+dim magenta
+cyan
+dim cyan
+white
+dim white
+black
+dim black
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-light].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-light].svg
index 358fc63d86..81fa4f5a23 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-light].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_color_mapping[textual-light].svg
@@ -19,147 +19,147 @@
font-weight: 700;
}
- .terminal-3826230564-matrix {
+ .terminal-1262643847-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3826230564-title {
+ .terminal-1262643847-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3826230564-r1 { fill: #1f1f1f }
-.terminal-3826230564-r2 { fill: #c5c8c6 }
-.terminal-3826230564-r3 { fill: #aa3731 }
-.terminal-3826230564-r4 { fill: #bf7a77 }
-.terminal-3826230564-r5 { fill: #448c27 }
-.terminal-3826230564-r6 { fill: #82ad71 }
-.terminal-3826230564-r7 { fill: #cb9000 }
-.terminal-3826230564-r8 { fill: #d3b059 }
-.terminal-3826230564-r9 { fill: #325cc0 }
-.terminal-3826230564-r10 { fill: #7790cc }
-.terminal-3826230564-r11 { fill: #7a3e9d }
-.terminal-3826230564-r12 { fill: #a27eb7 }
-.terminal-3826230564-r13 { fill: #0083b2 }
-.terminal-3826230564-r14 { fill: #59a8c4 }
-.terminal-3826230564-r15 { fill: #f7f7f7 }
-.terminal-3826230564-r16 { fill: #ededed }
-.terminal-3826230564-r17 { fill: #000000 }
-.terminal-3826230564-r18 { fill: #595959 }
+ .terminal-1262643847-r1 { fill: #1f1f1f }
+.terminal-1262643847-r2 { fill: #c5c8c6 }
+.terminal-1262643847-r3 { fill: #aa3731 }
+.terminal-1262643847-r4 { fill: #bf7a77 }
+.terminal-1262643847-r5 { fill: #448c27 }
+.terminal-1262643847-r6 { fill: #82ad71 }
+.terminal-1262643847-r7 { fill: #cb9000 }
+.terminal-1262643847-r8 { fill: #d3b059 }
+.terminal-1262643847-r9 { fill: #325cc0 }
+.terminal-1262643847-r10 { fill: #7790cc }
+.terminal-1262643847-r11 { fill: #7a3e9d }
+.terminal-1262643847-r12 { fill: #a27eb7 }
+.terminal-1262643847-r13 { fill: #0083b2 }
+.terminal-1262643847-r14 { fill: #59a8c4 }
+.terminal-1262643847-r15 { fill: #f7f7f7 }
+.terminal-1262643847-r16 { fill: #ededed }
+.terminal-1262643847-r17 { fill: #000000 }
+.terminal-1262643847-r18 { fill: #595959 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AnsiMappingApp
+ AnsiMappingApp
-
-
-
- Foreground & background
-red
-dim red
-green
-dim green
-yellow
-dim yellow
-blue
-dim blue
-magenta
-dim magenta
-cyan
-dim cyan
-white
-dim white
-black
-dim black
-
-
-
-
-
-
+
+
+
+ Foreground & background
+red
+dim red
+green
+dim green
+yellow
+dim yellow
+blue
+dim blue
+magenta
+dim magenta
+cyan
+dim cyan
+white
+dim white
+black
+dim black
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_command_palette.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_command_palette.svg
index e59b654c94..665565b457 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_command_palette.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_ansi_command_palette.svg
@@ -19,144 +19,144 @@
font-weight: 700;
}
- .terminal-2040446711-matrix {
+ .terminal-2909242669-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2040446711-title {
+ .terminal-2909242669-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2040446711-r1 { fill: #8a4346 }
-.terminal-2040446711-r2 { fill: #868887 }
-.terminal-2040446711-r3 { fill: #6b546f }
-.terminal-2040446711-r4 { fill: #e0e0e0 }
-.terminal-2040446711-r5 { fill: #292929 }
-.terminal-2040446711-r6 { fill: #c5c8c6 }
-.terminal-2040446711-r7 { fill: #0178d4 }
-.terminal-2040446711-r8 { fill: #00ff00 }
-.terminal-2040446711-r9 { fill: #000000 }
-.terminal-2040446711-r10 { fill: #8d8d8d }
-.terminal-2040446711-r11 { fill: #7e8486 }
-.terminal-2040446711-r12 { fill: #e0e0e0;font-weight: bold }
-.terminal-2040446711-r13 { fill: #9eafbd }
-.terminal-2040446711-r14 { fill: #a1a5a8 }
+ .terminal-2909242669-r1 { fill: #8a4346 }
+.terminal-2909242669-r2 { fill: #868887 }
+.terminal-2909242669-r3 { fill: #6b546f }
+.terminal-2909242669-r4 { fill: #e0e0e0 }
+.terminal-2909242669-r5 { fill: #292929 }
+.terminal-2909242669-r6 { fill: #c5c8c6 }
+.terminal-2909242669-r7 { fill: #0178d4 }
+.terminal-2909242669-r8 { fill: #00ff00 }
+.terminal-2909242669-r9 { fill: #000000 }
+.terminal-2909242669-r10 { fill: #8d8d8d }
+.terminal-2909242669-r11 { fill: #7e8486 }
+.terminal-2909242669-r12 { fill: #e0e0e0;font-weight: bold }
+.terminal-2909242669-r13 { fill: #9eafbd }
+.terminal-2909242669-r14 { fill: #a1a5a8 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CommandPaletteApp
+ CommandPaletteApp
-
-
-
- RedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-🔎Search for commands…
-
-
- Quit the application
-Quit the application as soon as possible
- Save screenshot
-Save an SVG 'screenshot' of the current screen
- Show keys and help panel
-Show help for the focused widget and a summary of available keys
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
-MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+
+
+
+ RedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+🔎Search for commands…
+
+
+Quit the application
+Quit the application as soon as possible
+Save screenshot
+Save an SVG 'screenshot' of the current screen
+Show keys and help panel
+Show help for the focused widget and a summary of available keys
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
+MagentaRedMagentaRedMagentaRedMagentaRedMagentaRedMagentaRed
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_blur.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_blur.svg
index 800319e269..f063da5765 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_blur.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_blur.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3758502277-matrix {
+ .terminal-3772043974-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3758502277-title {
+ .terminal-3772043974-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3758502277-r1 { fill: #e0e0e0 }
-.terminal-3758502277-r2 { fill: #c5c8c6 }
-.terminal-3758502277-r3 { fill: #121212 }
-.terminal-3758502277-r4 { fill: #191919 }
+ .terminal-3772043974-r1 { fill: #e0e0e0 }
+.terminal-3772043974-r2 { fill: #c5c8c6 }
+.terminal-3772043974-r3 { fill: #121212 }
+.terminal-3772043974-r4 { fill: #191919 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AppBlurApp
+ AppBlurApp
-
+
-
-
-
-
-
-
-
-
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊This should be the blur style ▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊This should also be the blur style▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊This should be the blur style ▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊This should also be the blur style▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_focus_style.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_focus_style.svg
index f794dee133..81b4aef655 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_focus_style.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_focus_style.svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-3005510614-matrix {
+ .terminal-1754273062-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3005510614-title {
+ .terminal-1754273062-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3005510614-r1 { fill: #e0e0e0 }
-.terminal-3005510614-r2 { fill: #c5c8c6 }
-.terminal-3005510614-r3 { fill: #0178d4 }
+ .terminal-1754273062-r1 { fill: #e0e0e0 }
+.terminal-1754273062-r2 { fill: #c5c8c6 }
+.terminal-1754273062-r3 { fill: #0178d4 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- FocusApp
+ FocusApp
-
+
-
-
-┌───────────┐
-││
-│BLURRED│
-││
-└───────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+┌───────────┐
+││
+│BLURRED│
+││
+└───────────┘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_resize_order.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_resize_order.svg
index 88b119eec7..0195083eeb 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_resize_order.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_resize_order.svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-2632811175-matrix {
+ .terminal-1524417212-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2632811175-title {
+ .terminal-1524417212-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2632811175-r1 { fill: #ffffff }
-.terminal-2632811175-r2 { fill: #e0e0e0 }
-.terminal-2632811175-r3 { fill: #c5c8c6 }
-.terminal-2632811175-r4 { fill: #eae2e4 }
-.terminal-2632811175-r5 { fill: #121212 }
+ .terminal-1524417212-r1 { fill: #ffffff }
+.terminal-1524417212-r2 { fill: #e0e0e0 }
+.terminal-1524417212-r3 { fill: #c5c8c6 }
+.terminal-1524417212-r4 { fill: #eae2e4 }
+.terminal-1524417212-r5 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- SCApp
+ SCApp
-
-
-
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃ BAR ┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
+
+
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃BAR┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_search_commands_opens_and_displays_search_list.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_search_commands_opens_and_displays_search_list.svg
index f0764cf128..e9607773c5 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_search_commands_opens_and_displays_search_list.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_app_search_commands_opens_and_displays_search_list.svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-3618916115-matrix {
+ .terminal-3836047034-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3618916115-title {
+ .terminal-3836047034-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3618916115-r1 { fill: #646464 }
-.terminal-3618916115-r2 { fill: #c5c8c6 }
-.terminal-3618916115-r3 { fill: #0178d4 }
-.terminal-3618916115-r4 { fill: #e0e0e0 }
-.terminal-3618916115-r5 { fill: #00ff00 }
-.terminal-3618916115-r6 { fill: #000000 }
-.terminal-3618916115-r7 { fill: #121212 }
-.terminal-3618916115-r8 { fill: #e0e0e0;font-weight: bold }
-.terminal-3618916115-r9 { fill: #e0e0e0;font-weight: bold;text-decoration: underline; }
+ .terminal-3836047034-r1 { fill: #646464 }
+.terminal-3836047034-r2 { fill: #c5c8c6 }
+.terminal-3836047034-r3 { fill: #0178d4 }
+.terminal-3836047034-r4 { fill: #e0e0e0 }
+.terminal-3836047034-r5 { fill: #00ff00 }
+.terminal-3836047034-r6 { fill: #000000 }
+.terminal-3836047034-r7 { fill: #121212 }
+.terminal-3836047034-r8 { fill: #e0e0e0;font-weight: bold }
+.terminal-3836047034-r9 { fill: #e0e0e0;font-weight: bold;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- SearchApp
+ SearchApp
-
-
-
- Search Commands
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-🔎b
-
-
-bar
-baz
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Search Commands
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+🔎b
+
+
+bar
+baz
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_arbitrary_selection.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_arbitrary_selection.svg
new file mode 100644
index 0000000000..d667dba2cd
--- /dev/null
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_arbitrary_selection.svg
@@ -0,0 +1,256 @@
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_fr.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_fr.svg
index 7c7df6d961..90b0d034c3 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_fr.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_fr.svg
@@ -19,140 +19,140 @@
font-weight: 700;
}
- .terminal-3408867725-matrix {
+ .terminal-3764895916-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3408867725-title {
+ .terminal-3764895916-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3408867725-r1 { fill: #00ffff }
-.terminal-3408867725-r2 { fill: #c5c8c6 }
-.terminal-3408867725-r3 { fill: #e0e0e0 }
-.terminal-3408867725-r4 { fill: #008000 }
-.terminal-3408867725-r5 { fill: #ff0000 }
-.terminal-3408867725-r6 { fill: #e0e0e0;font-weight: bold }
+ .terminal-3764895916-r1 { fill: #00ffff }
+.terminal-3764895916-r2 { fill: #c5c8c6 }
+.terminal-3764895916-r3 { fill: #e0e0e0 }
+.terminal-3764895916-r4 { fill: #008000 }
+.terminal-3764895916-r5 { fill: #ff0000 }
+.terminal-3764895916-r6 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- FRApp
+ FRApp
-
-
-
- ┌──────────────────────────────────────────────────────────────────────────────┐
-│┌────────────────────────────┐│
-││Hello one line ││
-││┌──────────────────────────┐││
-│││Widget#child│││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││└──────────────────────────┘││
-││││
-││Two││
-││Lines with 1x2 margin││
-││││
-│└────────────────────────────┘│
-└──────────────────────────────────────────────────────────────────────────────┘
+
+
+
+ ┌──────────────────────────────────────────────────────────────────────────────┐
+│┌────────────────────────────┐│
+││Hello one line││
+││┌──────────────────────────┐││
+│││Widget#child│││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││└──────────────────────────┘││
+││││
+││Two││
+││Lines with 1x2 margin││
+││││
+│└────────────────────────────┘│
+└──────────────────────────────────────────────────────────────────────────────┘
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid.svg
index cb49a7cd50..80002db810 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid.svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-84069957-matrix {
+ .terminal-3084000176-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-84069957-title {
+ .terminal-3084000176-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-84069957-r1 { fill: #008000 }
-.terminal-84069957-r2 { fill: #c5c8c6 }
-.terminal-84069957-r3 { fill: #e0e0e0 }
-.terminal-84069957-r4 { fill: #121212 }
-.terminal-84069957-r5 { fill: #191919 }
+ .terminal-3084000176-r1 { fill: #008000 }
+.terminal-3084000176-r2 { fill: #c5c8c6 }
+.terminal-3084000176-r3 { fill: #e0e0e0 }
+.terminal-3084000176-r4 { fill: #121212 }
+.terminal-3084000176-r5 { fill: #191919 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- GridApp
+ GridApp
-
-
-
- ┌──────────────────────────────────────────────────────────────────────────────┐
-│foo ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│▊▎│
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-│Longer label▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│▊▎│
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-└──────────────────────────────────────────────────────────────────────────────┘
-┌──────────────────────────────────────────────────────────────────────────────┐
-│foo▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│▊▎│
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-│Longer label▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│▊▎│
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-└──────────────────────────────────────────────────────────────────────────────┘
-┌──────────────────────────────────────────────────────────────────────────────┐
-│foo bar foo bar foo bar foo ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│bar foo bar foo bar foo bar ▊▎│
-│foo bar foo bar foo bar ▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-│Longer label ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
-│▊▎│
-│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
-└──────────────────────────────────────────────────────────────────────────────┘
+
+
+
+ ┌──────────────────────────────────────────────────────────────────────────────┐
+│foo▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│▊▎│
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+│Longer label▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│▊▎│
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+└──────────────────────────────────────────────────────────────────────────────┘
+┌──────────────────────────────────────────────────────────────────────────────┐
+│foo▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│▊▎│
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+│Longer label▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│▊▎│
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+└──────────────────────────────────────────────────────────────────────────────┘
+┌──────────────────────────────────────────────────────────────────────────────┐
+│foo bar foo bar foo bar foo ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│bar foo bar foo bar foo bar ▊▎│
+│foo bar foo bar foo bar ▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+│Longer label▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎│
+│▊▎│
+│▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎│
+└──────────────────────────────────────────────────────────────────────────────┘
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid_default_height.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid_default_height.svg
index a97fda68df..5218ed8b45 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid_default_height.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_grid_default_height.svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-3053184149-matrix {
+ .terminal-607042364-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3053184149-title {
+ .terminal-607042364-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3053184149-r1 { fill: #c5c8c6 }
-.terminal-3053184149-r2 { fill: #e0e0e0 }
-.terminal-3053184149-r3 { fill: #ff0000 }
-.terminal-3053184149-r4 { fill: #ffa62b;font-weight: bold }
-.terminal-3053184149-r5 { fill: #495259 }
+ .terminal-607042364-r1 { fill: #c5c8c6 }
+.terminal-607042364-r2 { fill: #e0e0e0 }
+.terminal-607042364-r3 { fill: #ff0000 }
+.terminal-607042364-r4 { fill: #ffa62b;font-weight: bold }
+.terminal-607042364-r5 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- GridHeightAuto
+ GridHeightAuto
-
-
-
- ⭘ GridHeightAuto
-Here is some text before the grid
-┌──────────────────────────────────────────────────────────────────────────────┐
-│Cell #0 Cell #1 Cell #2 │
-│Cell #3 Cell #4 Cell #5 │
-│Cell #6 Cell #7 Cell #8 │
-└──────────────────────────────────────────────────────────────────────────────┘
-Here is some text after the grid
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- g Grid v Vertical h Horizontal c Container ▏^p palette
+
+
+
+ ⭘GridHeightAuto
+Here is some text before the grid
+┌──────────────────────────────────────────────────────────────────────────────┐
+│Cell #0Cell #1Cell #2│
+│Cell #3Cell #4Cell #5│
+│Cell #6Cell #7Cell #8│
+└──────────────────────────────────────────────────────────────────────────────┘
+Here is some text after the grid
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ g Grid v Vertical h Horizontal c Container ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_height_scrollbar.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_height_scrollbar.svg
index 468559e41e..4ef6d2e2b2 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_height_scrollbar.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_height_scrollbar.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-2688155709-matrix {
+ .terminal-476643304-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2688155709-title {
+ .terminal-476643304-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2688155709-r1 { fill: #e0e0e0 }
-.terminal-2688155709-r2 { fill: #c5c8c6 }
-.terminal-2688155709-r3 { fill: #ffffff }
-.terminal-2688155709-r4 { fill: #e0e0e0;font-weight: bold }
-.terminal-2688155709-r5 { fill: #ddedf9;font-weight: bold }
-.terminal-2688155709-r6 { fill: #1e1e1e }
-.terminal-2688155709-r7 { fill: #003054 }
+ .terminal-476643304-r1 { fill: #e0e0e0 }
+.terminal-476643304-r2 { fill: #c5c8c6 }
+.terminal-476643304-r3 { fill: #ffffff }
+.terminal-476643304-r4 { fill: #e0e0e0;font-weight: bold }
+.terminal-476643304-r5 { fill: #ddedf9;font-weight: bold }
+.terminal-476643304-r6 { fill: #1e1e1e }
+.terminal-476643304-r7 { fill: #003054 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ExampleApp
+ ExampleApp
-
-
-
- automatic scrollbar
-┌──────────────────────────────────────────────────────────────────────────────┐
-│ Column 1 │
-│ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempo│
-│▍│
-└──────────────────────────────────────────────────────────────────────────────┘
-no automatic scrollbar
-┌──────────────────────────────────────────────────────────────────────────────┐
-│ Column 1 Column 2 │
-│ Paul Jessica │
-└──────────────────────────────────────────────────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ automatic scrollbar
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ Column 1 │
+│ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempo│
+│▍│
+└──────────────────────────────────────────────────────────────────────────────┘
+no automatic scrollbar
+┌──────────────────────────────────────────────────────────────────────────────┐
+│ Column 1 Column 2 │
+│ Paul Jessica │
+└──────────────────────────────────────────────────────────────────────────────┘
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_parent_with_alignment.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_parent_with_alignment.svg
index b0626bddff..1303a9d8b0 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_parent_with_alignment.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_parent_with_alignment.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-2425072027-matrix {
+ .terminal-1159880155-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2425072027-title {
+ .terminal-1159880155-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2425072027-r1 { fill: #e0e0e0 }
-.terminal-2425072027-r2 { fill: #ffffff }
-.terminal-2425072027-r3 { fill: #c5c8c6 }
-.terminal-2425072027-r4 { fill: #2d2d2d }
-.terminal-2425072027-r5 { fill: #272727;font-weight: bold }
-.terminal-2425072027-r6 { fill: #0d0d0d }
-.terminal-2425072027-r7 { fill: #e0e0e0;font-weight: bold }
+ .terminal-1159880155-r1 { fill: #e0e0e0 }
+.terminal-1159880155-r2 { fill: #ffffff }
+.terminal-1159880155-r3 { fill: #c5c8c6 }
+.terminal-1159880155-r4 { fill: #2d2d2d }
+.terminal-1159880155-r5 { fill: #272727;font-weight: bold }
+.terminal-1159880155-r6 { fill: #0d0d0d }
+.terminal-1159880155-r7 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- FloatSidebarApp
+ FloatSidebarApp
-
+
-
- ┌────────────────┐
-│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
-│ Start │
-│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
-│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
-│ Stop │
-│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
-└────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ┌────────────────┐
+│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
+│ Start │
+│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
+│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
+│ Stop │
+│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
+└────────────────┘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_tab_active.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_tab_active.svg
index 00c3743045..31bd03f5a8 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_tab_active.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_tab_active.svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-2567291719-matrix {
+ .terminal-481645775-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2567291719-title {
+ .terminal-481645775-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2567291719-r1 { fill: #c5c8c6 }
-.terminal-2567291719-r2 { fill: #f4005f }
-.terminal-2567291719-r3 { fill: #98e024 }
-.terminal-2567291719-r4 { fill: #e0e0e0 }
-.terminal-2567291719-r5 { fill: #262626 }
-.terminal-2567291719-r6 { fill: #0178d4 }
-.terminal-2567291719-r7 { fill: #7ae998 }
-.terminal-2567291719-r8 { fill: #55c076;font-weight: bold }
-.terminal-2567291719-r9 { fill: #008139 }
-.terminal-2567291719-r10 { fill: #ffa62b;font-weight: bold }
-.terminal-2567291719-r11 { fill: #495259 }
+ .terminal-481645775-r1 { fill: #c5c8c6 }
+.terminal-481645775-r2 { fill: #f4005f }
+.terminal-481645775-r3 { fill: #98e024 }
+.terminal-481645775-r4 { fill: #e0e0e0 }
+.terminal-481645775-r5 { fill: #262626 }
+.terminal-481645775-r6 { fill: #0178d4 }
+.terminal-481645775-r7 { fill: #7ae998 }
+.terminal-481645775-r8 { fill: #55c076;font-weight: bold }
+.terminal-481645775-r9 { fill: #008139 }
+.terminal-481645775-r10 { fill: #ffa62b;font-weight: bold }
+.terminal-481645775-r11 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ExampleApp
+ ExampleApp
-
+
-
- Parent 1Parent 2
-━━━━━━━━━━╸━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-Child 2.1Child 2.2
-━━━━━━━━━━━╸━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Button 2.2
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- space Focus button 2.2 ▏^p palette
+
+ Parent 1Parent 2
+━━━━━━━━━━╸━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+Child 2.1Child 2.2
+━━━━━━━━━━━╸━━━━━━━━━╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Button 2.2
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ space Focus button 2.2 ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_table.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_table.svg
index d4a304ecd6..1c45439678 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_table.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_table.svg
@@ -19,203 +19,203 @@
font-weight: 700;
}
- .terminal-2473590037-matrix {
+ .terminal-3221695927-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2473590037-title {
+ .terminal-3221695927-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2473590037-r1 { fill: #c5c8c6 }
-.terminal-2473590037-r2 { fill: #e0e0e0 }
-.terminal-2473590037-r3 { fill: #0178d4 }
-.terminal-2473590037-r4 { fill: #632ca6 }
-.terminal-2473590037-r5 { fill: #e0e0e0;font-weight: bold }
-.terminal-2473590037-r6 { fill: #1e1e1e }
-.terminal-2473590037-r7 { fill: #000000 }
-.terminal-2473590037-r8 { fill: #121212 }
-.terminal-2473590037-r9 { fill: #003054 }
+ .terminal-3221695927-r1 { fill: #c5c8c6 }
+.terminal-3221695927-r2 { fill: #e0e0e0 }
+.terminal-3221695927-r3 { fill: #0178d4 }
+.terminal-3221695927-r4 { fill: #632ca6 }
+.terminal-3221695927-r5 { fill: #e0e0e0;font-weight: bold }
+.terminal-3221695927-r6 { fill: #1e1e1e }
+.terminal-3221695927-r7 { fill: #000000 }
+.terminal-3221695927-r8 { fill: #121212 }
+.terminal-3221695927-r9 { fill: #003054 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ⭘ MyApp
-╭──────────────────╮╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
-│ok ││test │
-│╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍││╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍│
-│││╭─ 0 ────────────────────────────────────────╮╭─ 1 ────────────────────────────────────────╮╭─ 2 ─│
-│││││││││
-││││ Foo Bar Baz ││ Foo Bar Baz ││ Foo │
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ▁▁││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ▁▁││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
-│││╰────────────────────────────────────────────╯╰────────────────────────────────────────────╯╰─────│
-│││▎│
-╰──────────────────╯╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
+
+
+
+ ⭘MyApp
+╭──────────────────╮╭──────────────────────────────────────────────────────────────────────────────────────────────────╮
+│ok││test│
+│╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍││╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍│
+│││╭─ 0 ────────────────────────────────────────╮╭─ 1 ────────────────────────────────────────╮╭─ 2 ─│
+│││││││││
+││││ Foo Bar Baz ││ Foo Bar Baz ││ Foo │
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ▁▁││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ▁▁││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+││││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCDEFGH 0123456789 IJKLMNOPQRSTUVWXYZ ││ ABCD│
+│││╰────────────────────────────────────────────╯╰────────────────────────────────────────────╯╰─────│
+│││▎│
+╰──────────────────╯╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_width_input.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_width_input.svg
index d38c62c1bd..ec4524e35c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_width_input.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_auto_width_input.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-1608004871-matrix {
+ .terminal-1741661877-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1608004871-title {
+ .terminal-1741661877-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1608004871-r1 { fill: #c5c8c6 }
-.terminal-1608004871-r2 { fill: #e0e0e0 }
-.terminal-1608004871-r3 { fill: #121212 }
-.terminal-1608004871-r4 { fill: #0178d4 }
-.terminal-1608004871-r5 { fill: #495259 }
-.terminal-1608004871-r6 { fill: #ffa62b;font-weight: bold }
+ .terminal-1741661877-r1 { fill: #c5c8c6 }
+.terminal-1741661877-r2 { fill: #e0e0e0 }
+.terminal-1741661877-r3 { fill: #121212 }
+.terminal-1741661877-r4 { fill: #0178d4 }
+.terminal-1741661877-r5 { fill: #495259 }
+.terminal-1741661877-r6 { fill: #ffa62b;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- InputWidthAutoApp
+ InputWidthAutoApp
-
-
-
- ⭘ InputWidthAutoApp
-▊▔▔▔▔▔▔▔▔▔▔▎
-▊Hello▎
-▊▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-▏^p palette
+
+
+
+ ⭘InputWidthAutoApp
+▊▔▔▔▔▔▔▔▔▔▔▎
+▊Hello▎
+▊▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_background_tint.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_background_tint.svg
index 105677cffc..5ae8a6ccd1 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_background_tint.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_background_tint.svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-3723227197-matrix {
+ .terminal-1383969048-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3723227197-title {
+ .terminal-1383969048-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3723227197-r1 { fill: #e0e0e0 }
-.terminal-3723227197-r2 { fill: #c5c8c6 }
+ .terminal-1383969048-r1 { fill: #e0e0e0 }
+.terminal-1383969048-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BackgroundTintApp
+ BackgroundTintApp
-
-
-
- 0%
-
-
-
-
-
-33%
-
-
-
-
-
-66%
-
-
-
-
-
-100%
-
-
-
-
+
+
+
+ 0%
+
+
+
+
+
+33%
+
+
+
+
+
+66%
+
+
+
+
+
+100%
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_big_buttons.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_big_buttons.svg
index 2c28f7f3d5..e0738fff61 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_big_buttons.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_big_buttons.svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-2219269165-matrix {
+ .terminal-3400658342-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2219269165-title {
+ .terminal-3400658342-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2219269165-r1 { fill: #2d2d2d }
-.terminal-2219269165-r2 { fill: #e0e0e0 }
-.terminal-2219269165-r3 { fill: #c5c8c6 }
-.terminal-2219269165-r4 { fill: #e0e0e0;font-weight: bold }
-.terminal-2219269165-r5 { fill: #272727;font-weight: bold }
-.terminal-2219269165-r6 { fill: #0d0d0d }
+ .terminal-3400658342-r1 { fill: #2d2d2d }
+.terminal-3400658342-r2 { fill: #e0e0e0 }
+.terminal-3400658342-r3 { fill: #c5c8c6 }
+.terminal-3400658342-r4 { fill: #e0e0e0;font-weight: bold }
+.terminal-3400658342-r5 { fill: #272727;font-weight: bold }
+.terminal-3400658342-r6 { fill: #0d0d0d }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ButtonApp
+ ButtonApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-
-
- Hello
-
-
-
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-
- Hello
- World !!
-
-
-
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+
+
+ Hello
+
+
+
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+
+ Hello
+ World !!
+
+
+
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_bind_override.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_bind_override.svg
index 0f7c2beec6..2eb68562d8 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_bind_override.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_bind_override.svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-910881990-matrix {
+ .terminal-610697973-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-910881990-title {
+ .terminal-610697973-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-910881990-r1 { fill: #008000 }
-.terminal-910881990-r2 { fill: #c5c8c6 }
-.terminal-910881990-r3 { fill: #e0e0e0 }
-.terminal-910881990-r4 { fill: #121212 }
-.terminal-910881990-r5 { fill: #191919 }
-.terminal-910881990-r6 { fill: #1e1e1e }
-.terminal-910881990-r7 { fill: #ffa62b;font-weight: bold }
-.terminal-910881990-r8 { fill: #495259 }
+ .terminal-610697973-r1 { fill: #008000 }
+.terminal-610697973-r2 { fill: #c5c8c6 }
+.terminal-610697973-r3 { fill: #e0e0e0 }
+.terminal-610697973-r4 { fill: #121212 }
+.terminal-610697973-r5 { fill: #191919 }
+.terminal-610697973-r6 { fill: #1e1e1e }
+.terminal-610697973-r7 { fill: #ffa62b;font-weight: bold }
+.terminal-610697973-r8 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BindApp
+ BindApp
-
+
-
- ┌──────────────────────────────────────────────────────────────────────────────┐
-│MyWidget│
-││
-││
-└──────────────────────────────────────────────────────────────────────────────┘
-▊▔▔▔▔▔▔▔▔▎
-▊▎
-▊▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- space Bell (Widget) a widget b widget c app ▏^p palette
+
+ ┌──────────────────────────────────────────────────────────────────────────────┐
+│MyWidget│
+││
+││
+└──────────────────────────────────────────────────────────────────────────────┘
+▊▔▔▔▔▔▔▔▔▎
+▊▎
+▊▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ space Bell (Widget) a widget b widget c app ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_bindings_screen_overrides_show.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_bindings_screen_overrides_show.svg
index 4c050ff92f..2c5fcd570c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_bindings_screen_overrides_show.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_bindings_screen_overrides_show.svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-2175023028-matrix {
+ .terminal-2966741613-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2175023028-title {
+ .terminal-2966741613-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2175023028-r1 { fill: #e0e0e0 }
-.terminal-2175023028-r2 { fill: #c5c8c6 }
-.terminal-2175023028-r3 { fill: #ffa62b;font-weight: bold }
-.terminal-2175023028-r4 { fill: #495259 }
+ .terminal-2966741613-r1 { fill: #e0e0e0 }
+.terminal-2966741613-r2 { fill: #c5c8c6 }
+.terminal-2966741613-r3 { fill: #ffa62b;font-weight: bold }
+.terminal-2966741613-r4 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HideBindingApp
+ HideBindingApp
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- p Binding shown ▏^p palette
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ p Binding shown ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_blur_on_disabled.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_blur_on_disabled.svg
index 6ecdc017a4..263ddecee2 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_blur_on_disabled.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_blur_on_disabled.svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-4138202186-matrix {
+ .terminal-938783234-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-4138202186-title {
+ .terminal-938783234-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-4138202186-r1 { fill: #121212 }
-.terminal-4138202186-r2 { fill: #141414 }
-.terminal-4138202186-r3 { fill: #c5c8c6 }
-.terminal-4138202186-r4 { fill: #a2a2a2 }
-.terminal-4138202186-r5 { fill: #e0e0e0 }
+ .terminal-938783234-r1 { fill: #121212 }
+.terminal-938783234-r2 { fill: #141414 }
+.terminal-938783234-r3 { fill: #c5c8c6 }
+.terminal-938783234-r4 { fill: #a2a2a2 }
+.terminal-938783234-r5 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BlurApp
+ BlurApp
-
+
-
- ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊foo ▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊foo ▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_alpha.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_alpha.svg
index 3146cbd333..3a1dc2017e 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_alpha.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_alpha.svg
@@ -19,137 +19,137 @@
font-weight: 700;
}
- .terminal-890546820-matrix {
+ .terminal-3439428772-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-890546820-title {
+ .terminal-3439428772-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-890546820-r1 { fill: #121212 }
-.terminal-890546820-r2 { fill: #c5c8c6 }
-.terminal-890546820-r3 { fill: #e0e0e0 }
-.terminal-890546820-r4 { fill: #0e280e }
-.terminal-890546820-r5 { fill: #0a3e0a }
-.terminal-890546820-r6 { fill: #075407 }
-.terminal-890546820-r7 { fill: #036a03 }
-.terminal-890546820-r8 { fill: #008000 }
+ .terminal-3439428772-r1 { fill: #121212 }
+.terminal-3439428772-r2 { fill: #c5c8c6 }
+.terminal-3439428772-r3 { fill: #e0e0e0 }
+.terminal-3439428772-r4 { fill: #0e280e }
+.terminal-3439428772-r5 { fill: #0a3e0a }
+.terminal-3439428772-r6 { fill: #075407 }
+.terminal-3439428772-r7 { fill: #036a03 }
+.terminal-3439428772-r8 { fill: #008000 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderAlphaApp
+ BorderAlphaApp
-
+
-
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-
-
-
-
-
+
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_tab.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_tab.svg
index 3dcb22b6db..043d051f83 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_tab.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_border_tab.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3475013634-matrix {
+ .terminal-1882069762-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3475013634-title {
+ .terminal-1882069762-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3475013634-r1 { fill: #e0e0e0 }
-.terminal-3475013634-r2 { fill: #c5c8c6 }
-.terminal-3475013634-r3 { fill: #0178d4 }
-.terminal-3475013634-r4 { fill: #121212 }
+ .terminal-1882069762-r1 { fill: #e0e0e0 }
+.terminal-1882069762-r2 { fill: #c5c8c6 }
+.terminal-1882069762-r3 { fill: #0178d4 }
+.terminal-1882069762-r4 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- TabApp
+ TabApp
-
+
-
-
-
-
-
-
-
-
-
-▁▁ Tab Border ▁▁▁▁▁▁▁▁
-▎▊
-▎▊
-▎Hello, World▊
-▎▊
-▎▊
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ :-) ▔▔
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+▁▁ Tab Border ▁▁▁▁▁▁▁▁
+▎▊
+▎▊
+▎Hello, World▊
+▎▊
+▎▊
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ :-) ▔▔
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_outline.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_outline.svg
index 8443e9e090..735972c128 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_outline.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_outline.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3074608726-matrix {
+ .terminal-2223669910-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3074608726-title {
+ .terminal-2223669910-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3074608726-r1 { fill: #ffffff }
-.terminal-3074608726-r2 { fill: #e0e0e0 }
-.terminal-3074608726-r3 { fill: #c5c8c6 }
-.terminal-3074608726-r4 { fill: #e0e0e0;font-weight: bold }
+ .terminal-2223669910-r1 { fill: #ffffff }
+.terminal-2223669910-r2 { fill: #e0e0e0 }
+.terminal-2223669910-r3 { fill: #c5c8c6 }
+.terminal-2223669910-r4 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ButtonIssue
+ ButtonIssue
-
+
-
- ┌──────────────┐
-│ Test │
-└──────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ┌──────────────┐
+│ Test │
+└──────────────┘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_widths.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_widths.svg
index d7e5b158c3..d09e09b7c1 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_widths.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_widths.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-2132302462-matrix {
+ .terminal-182128318-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2132302462-title {
+ .terminal-182128318-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2132302462-r1 { fill: #ff0000 }
-.terminal-2132302462-r2 { fill: #e0e0e0 }
-.terminal-2132302462-r3 { fill: #c5c8c6 }
-.terminal-2132302462-r4 { fill: #2d2d2d }
-.terminal-2132302462-r5 { fill: #272727;font-weight: bold }
-.terminal-2132302462-r6 { fill: #0d0d0d }
-.terminal-2132302462-r7 { fill: #e0e0e0;font-weight: bold }
+ .terminal-182128318-r1 { fill: #ff0000 }
+.terminal-182128318-r2 { fill: #e0e0e0 }
+.terminal-182128318-r3 { fill: #c5c8c6 }
+.terminal-182128318-r4 { fill: #2d2d2d }
+.terminal-182128318-r5 { fill: #272727;font-weight: bold }
+.terminal-182128318-r6 { fill: #0d0d0d }
+.terminal-182128318-r7 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HorizontalWidthAutoApp
+ HorizontalWidthAutoApp
-
+
-
- ┌────────────────────────────┐
-│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
-│ This is a very wide button │
-│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
-└────────────────────────────┘
-┌────────────────────────────────────────────────────────┐
-│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
-│ This is a very wide button This is a very wide button │
-│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
-└────────────────────────────────────────────────────────┘
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ┌────────────────────────────┐
+│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
+│ This is a very wide button │
+│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
+└────────────────────────────┘
+┌────────────────────────────────────────────────────────┐
+│▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔│
+│ This is a very wide button This is a very wide button │
+│▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁│
+└────────────────────────────────────────────────────────┘
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_console_markup.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_console_markup.svg
index d264449edf..cc94bf1816 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_console_markup.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_console_markup.svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-1193991823-matrix {
+ .terminal-3204420437-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1193991823-title {
+ .terminal-3204420437-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1193991823-r1 { fill: #2d2d2d }
-.terminal-1193991823-r2 { fill: #e0e0e0 }
-.terminal-1193991823-r3 { fill: #c5c8c6 }
-.terminal-1193991823-r4 { fill: #272727;font-weight: bold }
-.terminal-1193991823-r5 { fill: #272727;font-weight: bold;font-style: italic; }
-.terminal-1193991823-r6 { fill: #0d0d0d }
-.terminal-1193991823-r7 { fill: #e0e0e0;font-weight: bold }
-.terminal-1193991823-r8 { fill: #f4005f;font-weight: bold;font-style: italic; }
-.terminal-1193991823-r9 { fill: #1e1e1e }
-.terminal-1193991823-r10 { fill: #6a6a6a;font-weight: bold }
-.terminal-1193991823-r11 { fill: #5f0505;font-weight: bold;font-style: italic; }
-.terminal-1193991823-r12 { fill: #0f0f0f }
+ .terminal-3204420437-r1 { fill: #2d2d2d }
+.terminal-3204420437-r2 { fill: #e0e0e0 }
+.terminal-3204420437-r3 { fill: #c5c8c6 }
+.terminal-3204420437-r4 { fill: #272727;font-weight: bold }
+.terminal-3204420437-r5 { fill: #272727;font-weight: bold;font-style: italic; }
+.terminal-3204420437-r6 { fill: #0d0d0d }
+.terminal-3204420437-r7 { fill: #e0e0e0;font-weight: bold }
+.terminal-3204420437-r8 { fill: #f4005f;font-weight: bold;font-style: italic; }
+.terminal-3204420437-r9 { fill: #1e1e1e }
+.terminal-3204420437-r10 { fill: #6a6a6a;font-weight: bold }
+.terminal-3204420437-r11 { fill: #720c34;font-weight: bold;font-style: italic; }
+.terminal-3204420437-r12 { fill: #0f0f0f }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ButtonsWithMarkupApp
+ ButtonsWithMarkupApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Focused Button
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Blurred Button
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-Disabled Button
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+Focused Button
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+Blurred Button
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+Disabled Button
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_multiline_label.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_multiline_label.svg
index 0845ed08db..5c5479962f 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_multiline_label.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_button_with_multiline_label.svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-2859339487-matrix {
+ .terminal-1423164176-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2859339487-title {
+ .terminal-1423164176-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2859339487-r1 { fill: #2d2d2d }
-.terminal-2859339487-r2 { fill: #e0e0e0 }
-.terminal-2859339487-r3 { fill: #c5c8c6 }
-.terminal-2859339487-r4 { fill: #272727;font-weight: bold }
-.terminal-2859339487-r5 { fill: #0d0d0d }
+ .terminal-1423164176-r1 { fill: #2d2d2d }
+.terminal-1423164176-r2 { fill: #e0e0e0 }
+.terminal-1423164176-r3 { fill: #c5c8c6 }
+.terminal-1423164176-r4 { fill: #272727;font-weight: bold }
+.terminal-1423164176-r5 { fill: #0d0d0d }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ButtonWithMultilineLabelApp
+ ButtonWithMultilineLabelApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Button
- with
- multi-line
- label
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Button
+ with
+ multi-line
+ label
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_buttons_render.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_buttons_render.svg
index 3585fe3987..a2de3a1832 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_buttons_render.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_buttons_render.svg
@@ -19,162 +19,162 @@
font-weight: 700;
}
- .terminal-622193266-matrix {
+ .terminal-3698537314-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-622193266-title {
+ .terminal-3698537314-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-622193266-r1 { fill: #e0e0e0 }
-.terminal-622193266-r2 { fill: #c5c8c6 }
-.terminal-622193266-r3 { fill: #e0e0e0;font-weight: bold }
-.terminal-622193266-r4 { fill: #2d2d2d }
-.terminal-622193266-r5 { fill: #1e1e1e }
-.terminal-622193266-r6 { fill: #272727;font-weight: bold }
-.terminal-622193266-r7 { fill: #6a6a6a;font-weight: bold }
-.terminal-622193266-r8 { fill: #0d0d0d }
-.terminal-622193266-r9 { fill: #0f0f0f }
-.terminal-622193266-r10 { fill: #6db2ff }
-.terminal-622193266-r11 { fill: #3e6085 }
-.terminal-622193266-r12 { fill: #ddedf9;font-weight: bold }
-.terminal-622193266-r13 { fill: #637f94;font-weight: bold }
-.terminal-622193266-r14 { fill: #004295 }
-.terminal-622193266-r15 { fill: #082951 }
-.terminal-622193266-r16 { fill: #7ae998 }
-.terminal-622193266-r17 { fill: #447b53 }
-.terminal-622193266-r18 { fill: #0a180e;font-weight: bold }
-.terminal-622193266-r19 { fill: #193320;font-weight: bold }
-.terminal-622193266-r20 { fill: #008139 }
-.terminal-622193266-r21 { fill: #084724 }
-.terminal-622193266-r22 { fill: #ffcf56 }
-.terminal-622193266-r23 { fill: #856e32 }
-.terminal-622193266-r24 { fill: #211505;font-weight: bold }
-.terminal-622193266-r25 { fill: #422d10;font-weight: bold }
-.terminal-622193266-r26 { fill: #b86b00 }
-.terminal-622193266-r27 { fill: #633d08 }
-.terminal-622193266-r28 { fill: #e76580 }
-.terminal-622193266-r29 { fill: #7a3a47 }
-.terminal-622193266-r30 { fill: #f5e5e9;font-weight: bold }
-.terminal-622193266-r31 { fill: #8f7178;font-weight: bold }
-.terminal-622193266-r32 { fill: #780028 }
-.terminal-622193266-r33 { fill: #43081c }
+ .terminal-3698537314-r1 { fill: #e0e0e0 }
+.terminal-3698537314-r2 { fill: #c5c8c6 }
+.terminal-3698537314-r3 { fill: #e0e0e0;font-weight: bold }
+.terminal-3698537314-r4 { fill: #2d2d2d }
+.terminal-3698537314-r5 { fill: #1e1e1e }
+.terminal-3698537314-r6 { fill: #272727;font-weight: bold }
+.terminal-3698537314-r7 { fill: #6a6a6a;font-weight: bold }
+.terminal-3698537314-r8 { fill: #0d0d0d }
+.terminal-3698537314-r9 { fill: #0f0f0f }
+.terminal-3698537314-r10 { fill: #6db2ff }
+.terminal-3698537314-r11 { fill: #3e6085 }
+.terminal-3698537314-r12 { fill: #ddedf9;font-weight: bold }
+.terminal-3698537314-r13 { fill: #637f94;font-weight: bold }
+.terminal-3698537314-r14 { fill: #004295 }
+.terminal-3698537314-r15 { fill: #082951 }
+.terminal-3698537314-r16 { fill: #7ae998 }
+.terminal-3698537314-r17 { fill: #447b53 }
+.terminal-3698537314-r18 { fill: #0a180e;font-weight: bold }
+.terminal-3698537314-r19 { fill: #193320;font-weight: bold }
+.terminal-3698537314-r20 { fill: #008139 }
+.terminal-3698537314-r21 { fill: #084724 }
+.terminal-3698537314-r22 { fill: #ffcf56 }
+.terminal-3698537314-r23 { fill: #856e32 }
+.terminal-3698537314-r24 { fill: #211505;font-weight: bold }
+.terminal-3698537314-r25 { fill: #422d10;font-weight: bold }
+.terminal-3698537314-r26 { fill: #b86b00 }
+.terminal-3698537314-r27 { fill: #633d08 }
+.terminal-3698537314-r28 { fill: #e76580 }
+.terminal-3698537314-r29 { fill: #7a3a47 }
+.terminal-3698537314-r30 { fill: #f5e5e9;font-weight: bold }
+.terminal-3698537314-r31 { fill: #8f7178;font-weight: bold }
+.terminal-3698537314-r32 { fill: #780028 }
+.terminal-3698537314-r33 { fill: #43081c }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ButtonsApp
+ ButtonsApp
-
+
-
-
-Standard ButtonsDisabled Buttons
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Default Default
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Primary! Primary!
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Success! Success!
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Warning! Warning!
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Error! Error!
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
+
+
+Standard ButtonsDisabled Buttons
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Default Default
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Primary! Primary!
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Success! Success!
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Warning! Warning!
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Error! Error!
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_check_consume_keys.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_check_consume_keys.svg
index 97b7ba33f9..315a14379d 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_check_consume_keys.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_check_consume_keys.svg
@@ -19,140 +19,140 @@
font-weight: 700;
}
- .terminal-18154040-matrix {
+ .terminal-3735727296-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-18154040-title {
+ .terminal-3735727296-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-18154040-r1 { fill: #121212 }
-.terminal-18154040-r2 { fill: #0178d4 }
-.terminal-18154040-r3 { fill: #c5c8c6 }
-.terminal-18154040-r4 { fill: #797979 }
-.terminal-18154040-r5 { fill: #e0e0e0 }
-.terminal-18154040-r6 { fill: #191919 }
-.terminal-18154040-r7 { fill: #737373 }
-.terminal-18154040-r8 { fill: #1e1e1e }
-.terminal-18154040-r9 { fill: #495259 }
-.terminal-18154040-r10 { fill: #ffa62b;font-weight: bold }
+ .terminal-3735727296-r1 { fill: #121212 }
+.terminal-3735727296-r2 { fill: #0178d4 }
+.terminal-3735727296-r3 { fill: #c5c8c6 }
+.terminal-3735727296-r4 { fill: #797979 }
+.terminal-3735727296-r5 { fill: #e0e0e0 }
+.terminal-3735727296-r6 { fill: #191919 }
+.terminal-3735727296-r7 { fill: #737373 }
+.terminal-3735727296-r8 { fill: #1e1e1e }
+.terminal-3735727296-r9 { fill: #495259 }
+.terminal-3735727296-r10 { fill: #ffa62b;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
+
-
- ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊First Name▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊Last Name▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▎
-▊▎
-▊▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-▏^p palette
+
+ ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊First Name▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊Last Name▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▎
+▊▎
+▊▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_checkbox_example.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_checkbox_example.svg
index 34ec4e461b..d84339b5d5 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_checkbox_example.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_checkbox_example.svg
@@ -19,143 +19,143 @@
font-weight: 700;
}
- .terminal-817186996-matrix {
+ .terminal-4290255817-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-817186996-title {
+ .terminal-4290255817-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-817186996-r1 { fill: #e0e0e0 }
-.terminal-817186996-r2 { fill: #c5c8c6 }
-.terminal-817186996-r3 { fill: #121212 }
-.terminal-817186996-r4 { fill: #1b1b1b }
-.terminal-817186996-r5 { fill: #191919 }
-.terminal-817186996-r6 { fill: #242f38 }
-.terminal-817186996-r7 { fill: #000f18 }
-.terminal-817186996-r8 { fill: #e0e0e0;font-weight: bold }
-.terminal-817186996-r9 { fill: #f4005f }
-.terminal-817186996-r10 { fill: #8ad4a1 }
-.terminal-817186996-r11 { fill: #0178d4 }
-.terminal-817186996-r12 { fill: #000000 }
-.terminal-817186996-r13 { fill: #ddedf9;font-weight: bold }
+ .terminal-4290255817-r1 { fill: #e0e0e0 }
+.terminal-4290255817-r2 { fill: #c5c8c6 }
+.terminal-4290255817-r3 { fill: #121212 }
+.terminal-4290255817-r4 { fill: #1b1b1b }
+.terminal-4290255817-r5 { fill: #191919 }
+.terminal-4290255817-r6 { fill: #242f38 }
+.terminal-4290255817-r7 { fill: #000f18 }
+.terminal-4290255817-r8 { fill: #e0e0e0;font-weight: bold }
+.terminal-4290255817-r9 { fill: #f4005f }
+.terminal-4290255817-r10 { fill: #8ad4a1 }
+.terminal-4290255817-r11 { fill: #0178d4 }
+.terminal-4290255817-r12 { fill: #000000 }
+.terminal-4290255817-r13 { fill: #ddedf9;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CheckboxApp
+ CheckboxApp
-
+
-
-
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌ Arrakis 😓▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌ Caladan▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌ Chusuk▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌Giedi Prime▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌Ginaz▎
-▊▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▐X▌ Grumman▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎▃▃
-▊▐X▌Kaitain▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+
+
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌ Arrakis 😓▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌ Caladan▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌ Chusuk▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌Giedi Prime▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌Ginaz▎
+▊▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▐X▌ Grumman▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▎▃▃
+▊▐X▌Kaitain▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_click_expand.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_click_expand.svg
index 2a2661a62b..52efcdf6aa 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_click_expand.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_click_expand.svg
@@ -19,139 +19,139 @@
font-weight: 700;
}
- .terminal-737823773-matrix {
+ .terminal-2892528411-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-737823773-title {
+ .terminal-2892528411-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-737823773-r1 { fill: #121212 }
-.terminal-737823773-r2 { fill: #191919 }
-.terminal-737823773-r3 { fill: #c5c8c6 }
-.terminal-737823773-r4 { fill: #e0e0e0 }
-.terminal-737823773-r5 { fill: #7f7f7f }
-.terminal-737823773-r6 { fill: #0178d4 }
-.terminal-737823773-r7 { fill: #003054 }
-.terminal-737823773-r8 { fill: #272727 }
-.terminal-737823773-r9 { fill: #000000 }
-.terminal-737823773-r10 { fill: #ddedf9;font-weight: bold }
+ .terminal-2892528411-r1 { fill: #121212 }
+.terminal-2892528411-r2 { fill: #191919 }
+.terminal-2892528411-r3 { fill: #c5c8c6 }
+.terminal-2892528411-r4 { fill: #e0e0e0 }
+.terminal-2892528411-r5 { fill: #7f7f7f }
+.terminal-2892528411-r6 { fill: #0178d4 }
+.terminal-2892528411-r7 { fill: #003054 }
+.terminal-2892528411-r8 { fill: #272727 }
+.terminal-2892528411-r9 { fill: #000000 }
+.terminal-2892528411-r10 { fill: #ddedf9;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- SelectApp
+ SelectApp
-
+
-
- ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊15▲▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊ 6 ▎
-▊ 7 ▎
-▊ 8 ▎
-▊ 9 ▆▆▎
-▊ 10 ▎
-▊ 11 ▎
-▊ 12 ▎
-▊ 13 ▎
-▊ 14 ▇▇▎
-▊ 15 ▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
-
-
-
+
+ ▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊15▲▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊ 6 ▎
+▊ 7 ▎
+▊ 8 ▎
+▊ 9 ▆▆▎
+▊ 10 ▎
+▊ 11 ▎
+▊ 12 ▎
+▊ 13 ▎
+▊ 14 ▇▇▎
+▊ 15 ▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_collapsed.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_collapsed.svg
index b8e923c125..bf8d3e8479 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_collapsed.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_collapsed.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-3792833681-matrix {
+ .terminal-1258928754-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3792833681-title {
+ .terminal-1258928754-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3792833681-r1 { fill: #121212 }
-.terminal-3792833681-r2 { fill: #c5c8c6 }
-.terminal-3792833681-r3 { fill: #ddedf9;font-weight: bold }
-.terminal-3792833681-r4 { fill: #e0e0e0 }
-.terminal-3792833681-r5 { fill: #ffa62b;font-weight: bold }
-.terminal-3792833681-r6 { fill: #495259 }
+ .terminal-1258928754-r1 { fill: #121212 }
+.terminal-1258928754-r2 { fill: #c5c8c6 }
+.terminal-1258928754-r3 { fill: #ddedf9;font-weight: bold }
+.terminal-1258928754-r4 { fill: #e0e0e0 }
+.terminal-1258928754-r5 { fill: #ffa62b;font-weight: bold }
+.terminal-1258928754-r6 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CollapsibleApp
+ CollapsibleApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ Leto
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ Jessica
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ Paul
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- c Collapse All e Expand All ▏^p palette
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ Leto
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ Jessica
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ Paul
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ c Collapse All e Expand All ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_custom_symbol.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_custom_symbol.svg
index 07000d9aec..a9c1b64f6c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_custom_symbol.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_custom_symbol.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-128905071-matrix {
+ .terminal-2702565628-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-128905071-title {
+ .terminal-2702565628-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-128905071-r1 { fill: #121212 }
-.terminal-128905071-r2 { fill: #c5c8c6 }
-.terminal-128905071-r3 { fill: #ddedf9;font-weight: bold }
-.terminal-128905071-r4 { fill: #e0e0e0 }
+ .terminal-2702565628-r1 { fill: #121212 }
+.terminal-2702565628-r2 { fill: #c5c8c6 }
+.terminal-2702565628-r3 { fill: #ddedf9;font-weight: bold }
+.terminal-2702565628-r4 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CollapsibleApp
+ CollapsibleApp
-
-
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
->>> Togglev Toggle
-
-Hello, world.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+>>> Togglev Toggle
+
+Hello, world.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_expanded.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_expanded.svg
index cc2931cf8a..5ca7bd5735 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_expanded.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_expanded.svg
@@ -19,137 +19,137 @@
font-weight: 700;
}
- .terminal-3331674105-matrix {
+ .terminal-2425433765-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3331674105-title {
+ .terminal-2425433765-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3331674105-r1 { fill: #c5c8c6 }
-.terminal-3331674105-r2 { fill: #e0e0e0 }
-.terminal-3331674105-r3 { fill: #121212 }
-.terminal-3331674105-r4 { fill: #003054 }
-.terminal-3331674105-r5 { fill: #0178d4;font-weight: bold }
-.terminal-3331674105-r6 { fill: #ffa62b;font-weight: bold }
-.terminal-3331674105-r7 { fill: #495259 }
+ .terminal-2425433765-r1 { fill: #c5c8c6 }
+.terminal-2425433765-r2 { fill: #e0e0e0 }
+.terminal-2425433765-r3 { fill: #121212 }
+.terminal-2425433765-r4 { fill: #003054 }
+.terminal-2425433765-r5 { fill: #0178d4;font-weight: bold }
+.terminal-2425433765-r6 { fill: #ffa62b;font-weight: bold }
+.terminal-2425433765-r7 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CollapsibleApp
+ CollapsibleApp
-
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▼ Jessica
-
-▂▂
-
- Lady Jessica
-
-Bene Gesserit and concubine of Leto, and mother of Paul and Alia.
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▼ Paul
-
-
-
- Paul Atreides
-
-Son of Leto and Jessica.
-
-
-
- c Collapse All e Expand All ▏^p palette
+
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▼ Jessica
+
+▂▂
+
+Lady Jessica
+
+Bene Gesserit and concubine of Leto, and mother of Paul and Alia.
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▼ Paul
+
+
+
+Paul Atreides
+
+Son of Leto and Jessica.
+
+
+
+ c Collapse All e Expand All ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_nested.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_nested.svg
index 66cfb113aa..6287cbf059 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_nested.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_nested.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-1308387884-matrix {
+ .terminal-233121764-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1308387884-title {
+ .terminal-233121764-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1308387884-r1 { fill: #121212 }
-.terminal-1308387884-r2 { fill: #c5c8c6 }
-.terminal-1308387884-r3 { fill: #ddedf9;font-weight: bold }
-.terminal-1308387884-r4 { fill: #e0e0e0 }
+ .terminal-233121764-r1 { fill: #121212 }
+.terminal-233121764-r2 { fill: #c5c8c6 }
+.terminal-233121764-r3 { fill: #ddedf9;font-weight: bold }
+.terminal-233121764-r4 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CollapsibleApp
+ CollapsibleApp
-
+
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▼ Toggle
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ Toggle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▼ Toggle
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ Toggle
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_render.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_render.svg
index 004b99688a..3d82a4b0f4 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_render.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_collapsible_render.svg
@@ -19,137 +19,137 @@
font-weight: 700;
}
- .terminal-3262208809-matrix {
+ .terminal-2079344511-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3262208809-title {
+ .terminal-2079344511-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3262208809-r1 { fill: #121212 }
-.terminal-3262208809-r2 { fill: #c5c8c6 }
-.terminal-3262208809-r3 { fill: #ddedf9;font-weight: bold }
-.terminal-3262208809-r4 { fill: #e0e0e0 }
-.terminal-3262208809-r5 { fill: #0178d4;font-weight: bold }
-.terminal-3262208809-r6 { fill: #ffa62b;font-weight: bold }
-.terminal-3262208809-r7 { fill: #495259 }
+ .terminal-2079344511-r1 { fill: #121212 }
+.terminal-2079344511-r2 { fill: #c5c8c6 }
+.terminal-2079344511-r3 { fill: #ddedf9;font-weight: bold }
+.terminal-2079344511-r4 { fill: #e0e0e0 }
+.terminal-2079344511-r5 { fill: #0178d4;font-weight: bold }
+.terminal-2079344511-r6 { fill: #ffa62b;font-weight: bold }
+.terminal-2079344511-r7 { fill: #495259 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CollapsibleApp
+ CollapsibleApp
-
-
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▼ Leto
-
-# Duke Leto I Atreides
-
-Head of House Atreides.
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▼ Jessica
-
-
-
- Lady Jessica
-
-Bene Gesserit and concubine of Leto, and mother of Paul and Alia.
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-▶ Paul
-
-
-
- c Collapse All e Expand All ▏^p palette
+
+
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▼ Leto
+
+# Duke Leto I Atreides
+
+Head of House Atreides.
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▼ Jessica
+
+
+
+Lady Jessica
+
+Bene Gesserit and concubine of Leto, and mother of Paul and Alia.
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+▶ Paul
+
+
+
+ c Collapse All e Expand All ▏^p palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_columns_height.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_columns_height.svg
index 59dc1daf44..c58012b870 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_columns_height.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_columns_height.svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-882278702-matrix {
+ .terminal-1425738046-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-882278702-title {
+ .terminal-1425738046-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-882278702-r1 { fill: #ff0000 }
-.terminal-882278702-r2 { fill: #c5c8c6 }
-.terminal-882278702-r3 { fill: #008000 }
-.terminal-882278702-r4 { fill: #e0e0e0 }
+ .terminal-1425738046-r1 { fill: #ff0000 }
+.terminal-1425738046-r2 { fill: #c5c8c6 }
+.terminal-1425738046-r3 { fill: #008000 }
+.terminal-1425738046-r4 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HeightApp
+ HeightApp
-
+
-
- ┌──────────────────────────────────────────────────────────────────────────────┐
-│┌────────────────────┐┌────────────────┐┌──────────────────────┐│
-││As tall as container││This has default││I have a static height││
-││││height││││
-││││but a││││
-││││few lines││││
-│││└────────────────┘│││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-││││││
-│└────────────────────┘└──────────────────────┘│
-└──────────────────────────────────────────────────────────────────────────────┘
-
-
-
-
-
+
+ ┌──────────────────────────────────────────────────────────────────────────────┐
+│┌────────────────────┐┌────────────────┐┌──────────────────────┐│
+││As tall as container││This has default││I have a static height││
+││││height││││
+││││but a││││
+││││few lines││││
+│││└────────────────┘│││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+││││││
+│└────────────────────┘└──────────────────────┘│
+└──────────────────────────────────────────────────────────────────────────────┘
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette.svg
index 2a74b50053..543a9c6205 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette.svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-1343671750-matrix {
+ .terminal-243232684-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1343671750-title {
+ .terminal-243232684-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1343671750-r1 { fill: #646464 }
-.terminal-1343671750-r2 { fill: #c5c8c6 }
-.terminal-1343671750-r3 { fill: #0178d4 }
-.terminal-1343671750-r4 { fill: #e0e0e0 }
-.terminal-1343671750-r5 { fill: #00ff00 }
-.terminal-1343671750-r6 { fill: #000000 }
-.terminal-1343671750-r7 { fill: #121212 }
-.terminal-1343671750-r8 { fill: #e0e0e0;font-weight: bold }
-.terminal-1343671750-r9 { fill: #e0e0e0;font-weight: bold;text-decoration: underline; }
+ .terminal-243232684-r1 { fill: #646464 }
+.terminal-243232684-r2 { fill: #c5c8c6 }
+.terminal-243232684-r3 { fill: #0178d4 }
+.terminal-243232684-r4 { fill: #e0e0e0 }
+.terminal-243232684-r5 { fill: #00ff00 }
+.terminal-243232684-r6 { fill: #000000 }
+.terminal-243232684-r7 { fill: #121212 }
+.terminal-243232684-r8 { fill: #e0e0e0;font-weight: bold }
+.terminal-243232684-r9 { fill: #e0e0e0;font-weight: bold;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CommandPaletteApp
+ CommandPaletteApp
-
-
-
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-🔎A
-
-
- This is a test of this code 9
- This is a test of this code 8
- This is a test of this code 7
- This is a test of this code 6
- This is a test of this code 5
- This is a test of this code 4
- This is a test of this code 3
- This is a test of this code 2
- This is a test of this code 1
- This is a test of this code 0
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
+
+
+
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+🔎A
+
+
+This is a test of this code 9
+This is a test of this code 8
+This is a test of this code 7
+This is a test of this code 6
+This is a test of this code 5
+This is a test of this code 4
+This is a test of this code 3
+This is a test of this code 2
+This is a test of this code 1
+This is a test of this code 0
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_discovery.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_discovery.svg
index 2a244bfd76..7ac7c98329 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_discovery.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_discovery.svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-1364756002-matrix {
+ .terminal-1842850902-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1364756002-title {
+ .terminal-1842850902-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1364756002-r1 { fill: #646464 }
-.terminal-1364756002-r2 { fill: #c5c8c6 }
-.terminal-1364756002-r3 { fill: #0178d4 }
-.terminal-1364756002-r4 { fill: #e0e0e0 }
-.terminal-1364756002-r5 { fill: #00ff00 }
-.terminal-1364756002-r6 { fill: #000000 }
-.terminal-1364756002-r7 { fill: #121212 }
-.terminal-1364756002-r8 { fill: #6d7479 }
-.terminal-1364756002-r9 { fill: #e0e0e0;font-weight: bold }
+ .terminal-1842850902-r1 { fill: #646464 }
+.terminal-1842850902-r2 { fill: #c5c8c6 }
+.terminal-1842850902-r3 { fill: #0178d4 }
+.terminal-1842850902-r4 { fill: #e0e0e0 }
+.terminal-1842850902-r5 { fill: #00ff00 }
+.terminal-1842850902-r6 { fill: #000000 }
+.terminal-1842850902-r7 { fill: #121212 }
+.terminal-1842850902-r8 { fill: #6d7479 }
+.terminal-1842850902-r9 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CommandPaletteApp
+ CommandPaletteApp
-
-
-
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-🔎Search for commands…
-
-
- This is a test of this code 0
- This is a test of this code 1
- This is a test of this code 2
- This is a test of this code 3
- This is a test of this code 4
- This is a test of this code 5
- This is a test of this code 6
- This is a test of this code 7
- This is a test of this code 8
- This is a test of this code 9
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
-
-
-
+
+
+
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+🔎Search for commands…
+
+
+This is a test of this code 0
+This is a test of this code 1
+This is a test of this code 2
+This is a test of this code 3
+This is a test of this code 4
+This is a test of this code 5
+This is a test of this code 6
+This is a test of this code 7
+This is a test of this code 8
+This is a test of this code 9
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape.svg
index d6bc8b1dc6..55a785423e 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape.svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-3691179873-matrix {
+ .terminal-2997872311-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3691179873-title {
+ .terminal-2997872311-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3691179873-r1 { fill: #e0e0e0 }
-.terminal-3691179873-r2 { fill: #c5c8c6 }
+ .terminal-2997872311-r1 { fill: #e0e0e0 }
+.terminal-2997872311-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CPApp
+ CPApp
-
-
-
- Command palette test app
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Command palette test app
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape_no_results.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape_no_results.svg
index d6bc8b1dc6..55a785423e 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape_no_results.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_dismiss_escape_no_results.svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-3691179873-matrix {
+ .terminal-2997872311-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3691179873-title {
+ .terminal-2997872311-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3691179873-r1 { fill: #e0e0e0 }
-.terminal-3691179873-r2 { fill: #c5c8c6 }
+ .terminal-2997872311-r1 { fill: #e0e0e0 }
+.terminal-2997872311-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- CPApp
+ CPApp
-
-
-
- Command palette test app
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Command palette test app
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_key_change.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_key_change.svg
index b1c58fd8e1..d55638ed44 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_key_change.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_command_palette_key_change.svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-1003810136-matrix {
+ .terminal-4132084552-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1003810136-title {
+ .terminal-4132084552-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1003810136-r1 { fill: #e0e0e0 }
-.terminal-1003810136-r2 { fill: #c5c8c6 }
-.terminal-1003810136-r3 { fill: #495259 }
-.terminal-1003810136-r4 { fill: #ffa62b;font-weight: bold }
+ .terminal-4132084552-r1 { fill: #e0e0e0 }
+.terminal-4132084552-r2 { fill: #c5c8c6 }
+.terminal-4132084552-r3 { fill: #495259 }
+.terminal-4132084552-r4 { fill: #ffa62b;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- NewPaletteBindingApp
+ NewPaletteBindingApp
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-▏ctrl+\ palette
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+▏ctrl+\ palette
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_initial.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_initial.svg
index 286d2444f7..9bc91e0c83 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_initial.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_initial.svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-4210760974-matrix {
+ .terminal-3579900787-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-4210760974-title {
+ .terminal-3579900787-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-4210760974-r1 { fill: #c5c8c6 }
-.terminal-4210760974-r2 { fill: #e0e0e0 }
-.terminal-4210760974-r3 { fill: #2d2d2d }
-.terminal-4210760974-r4 { fill: #272727;font-weight: bold }
-.terminal-4210760974-r5 { fill: #e0e0e0;font-weight: bold }
-.terminal-4210760974-r6 { fill: #0d0d0d }
-.terminal-4210760974-r7 { fill: #0178d4 }
+ .terminal-3579900787-r1 { fill: #c5c8c6 }
+.terminal-3579900787-r2 { fill: #e0e0e0 }
+.terminal-3579900787-r3 { fill: #2d2d2d }
+.terminal-3579900787-r4 { fill: #272727;font-weight: bold }
+.terminal-3579900787-r5 { fill: #e0e0e0;font-weight: bold }
+.terminal-3579900787-r6 { fill: #0d0d0d }
+.terminal-3579900787-r7 { fill: #0178d4 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ContentSwitcherApp
+ ContentSwitcherApp
-
+
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- DataTable Markdown
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-╭────────────────────────────────────────────────────────────────────╮
-│ Book Year │
-│ Dune 1965 │
-│ Dune Messiah 1969 │
-│ Children of Dune 1976 │
-│ God Emperor of Dune 1981 │
-│ Heretics of Dune 1984 │
-│ Chapterhouse: Dune 1985 │
-││
-││
-││
-││
-││
-││
-││
-││
-││
-││
-╰────────────────────────────────────────────────────────────────────╯
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ DataTable Markdown
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+╭────────────────────────────────────────────────────────────────────╮
+│ Book Year │
+│ Dune 1965 │
+│ Dune Messiah 1969 │
+│ Children of Dune 1976 │
+│ God Emperor of Dune 1981 │
+│ Heretics of Dune 1984 │
+│ Chapterhouse: Dune 1985 │
+││
+││
+││
+││
+││
+││
+││
+││
+││
+││
+╰────────────────────────────────────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_switch.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_switch.svg
index 47d9133b43..eaea543529 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_switch.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_content_switcher_example_switch.svg
@@ -19,242 +19,242 @@
font-weight: 700;
}
- .terminal-585644071-matrix {
+ .terminal-1247649819-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-585644071-title {
+ .terminal-1247649819-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-585644071-r1 { fill: #c5c8c6 }
-.terminal-585644071-r2 { fill: #e0e0e0 }
-.terminal-585644071-r3 { fill: #2d2d2d }
-.terminal-585644071-r4 { fill: #e0e0e0;font-weight: bold }
-.terminal-585644071-r5 { fill: #272727;font-weight: bold }
-.terminal-585644071-r6 { fill: #0d0d0d }
-.terminal-585644071-r7 { fill: #0178d4 }
-.terminal-585644071-r8 { fill: #0178d4;font-weight: bold }
-.terminal-585644071-r9 { fill: #ffff00;text-decoration: underline; }
+ .terminal-1247649819-r1 { fill: #c5c8c6 }
+.terminal-1247649819-r2 { fill: #e0e0e0 }
+.terminal-1247649819-r3 { fill: #2d2d2d }
+.terminal-1247649819-r4 { fill: #e0e0e0;font-weight: bold }
+.terminal-1247649819-r5 { fill: #272727;font-weight: bold }
+.terminal-1247649819-r6 { fill: #0d0d0d }
+.terminal-1247649819-r7 { fill: #0178d4 }
+.terminal-1247649819-r8 { fill: #0178d4;font-weight: bold }
+.terminal-1247649819-r9 { fill: #ffff00;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ContentSwitcherApp
+ ContentSwitcherApp
-
-
-
-
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- DataTable Markdown
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-╭─────────────────────────────────────────╮
-││
-││
-│ Three Flavours Cornetto │
-││
-│The Three Flavours Cornetto trilogy │
-│is an anthology series of British │
-│comedic genre films directed by Edgar│
-│Wright.│
-││
-││
-│Shaun of the Dead│
-││
-││
-│UK Release │
-│Flavour Date Director │
-│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
-│ Strawberry 2004-04-09 Edgar │
-│ Wright │
-││
-││
-││
-│Hot Fuzz│
-││
-││
-│UK Release │
-│Flavour Date Director │
-│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
-│ Classico 2007-02-17 Edgar Wright │
-││
-││
-││
-│The World's End│
-││
-││
-│UK Release │
-│FlavourDate Director │
-│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
-│ Mint 2013-07-19 Edgar Wright │
-││
-││
-││
-││
-││
-╰─────────────────────────────────────────╯
+
+
+
+
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ DataTable Markdown
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+╭─────────────────────────────────────────╮
+││
+││
+│Three Flavours Cornetto│
+││
+│The Three Flavours Cornetto trilogy │
+│is an anthology series of British │
+│comedic genre films directed by Edgar│
+│Wright.│
+││
+││
+│Shaun of the Dead│
+││
+││
+│UK Release │
+│Flavour Date Director │
+│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
+│ Strawberry 2004-04-09 Edgar │
+│ Wright │
+││
+││
+││
+│Hot Fuzz│
+││
+││
+│UK Release │
+│Flavour Date Director │
+│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
+│ Classico 2007-02-17 Edgar Wright │
+││
+││
+││
+│The World's End│
+││
+││
+│UK Release │
+│FlavourDate Director │
+│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
+│ Mint 2013-07-19 Edgar Wright │
+││
+││
+││
+││
+││
+╰─────────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading.svg
index 810030337b..ec5aa0a986 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading.svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-837152872-matrix {
+ .terminal-2173560766-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-837152872-title {
+ .terminal-2173560766-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-837152872-r1 { fill: #e0e0e0 }
-.terminal-837152872-r2 { fill: #c5c8c6 }
+ .terminal-2173560766-r1 { fill: #e0e0e0 }
+.terminal-2173560766-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HotReloadingApp
+ HotReloadingApp
-
-
-
- Hello, world!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Hello, world!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading_on_screen.svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading_on_screen.svg
index 810030337b..ec5aa0a986 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading_on_screen.svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_hot_reloading_on_screen.svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-837152872-matrix {
+ .terminal-2173560766-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-837152872-title {
+ .terminal-2173560766-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-837152872-r1 { fill: #e0e0e0 }
-.terminal-837152872-r2 { fill: #c5c8c6 }
+ .terminal-2173560766-r1 { fill: #e0e0e0 }
+.terminal-2173560766-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HotReloadingApp
+ HotReloadingApp
-
-
-
- Hello, world!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Hello, world!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align.py].svg
index a3ffb76ebd..4dcc612d5c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-269820525-matrix {
+ .terminal-3866865046-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-269820525-title {
+ .terminal-3866865046-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-269820525-r1 { fill: #e0e0e0 }
-.terminal-269820525-r2 { fill: #c5c8c6 }
-.terminal-269820525-r3 { fill: #ffffff }
-.terminal-269820525-r4 { fill: #e5f2e5 }
-.terminal-269820525-r5 { fill: #e5f2e5;font-weight: bold }
+ .terminal-3866865046-r1 { fill: #e0e0e0 }
+.terminal-3866865046-r2 { fill: #c5c8c6 }
+.terminal-3866865046-r3 { fill: #ffffff }
+.terminal-3866865046-r4 { fill: #e5f2e5 }
+.terminal-3866865046-r5 { fill: #e5f2e5;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AlignApp
+ AlignApp
-
+
-
-
-
-
-
-
-
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┃Vertical alignment with Textual┃
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃
-┃Take note, browsers.┃
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-
-
-
-
-
-
+
+
+
+
+
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┃Vertical alignment with Textual┃
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃
+┃Take note, browsers.┃
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align_all.py].svg
index 4adfe7c52a..710fe5d178 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[align_all.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-365340562-matrix {
+ .terminal-3624294643-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-365340562-title {
+ .terminal-3624294643-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-365340562-r1 { fill: #808080 }
-.terminal-365340562-r2 { fill: #e0e0e0 }
-.terminal-365340562-r3 { fill: #c5c8c6 }
+ .terminal-3624294643-r1 { fill: #808080 }
+.terminal-3624294643-r2 { fill: #e0e0e0 }
+.terminal-3624294643-r3 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AlignAllApp
+ AlignAllApp
-
+
-
- ┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
-│left top││center top││right top│
-││││││
-││││││
-││││││
-││││││
-└────────────────────────┘└────────────────────────┘└────────────────────────┘
-
-┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
-││││││
-││││││
-│left middle││center middle││right middle│
-││││││
-││││││
-└────────────────────────┘└────────────────────────┘└────────────────────────┘
-
-┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
-││││││
-││││││
-││││││
-││││││
-││││││
-│left bottom││center bottom││right bottom│
-└────────────────────────┘└────────────────────────┘└────────────────────────┘
+
+ ┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
+│left top││center top││right top│
+││││││
+││││││
+││││││
+││││││
+└────────────────────────┘└────────────────────────┘└────────────────────────┘
+
+┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
+││││││
+││││││
+│left middle││center middle││right middle│
+││││││
+││││││
+└────────────────────────┘└────────────────────────┘└────────────────────────┘
+
+┌────────────────────────┐┌────────────────────────┐┌────────────────────────┐
+││││││
+││││││
+││││││
+││││││
+││││││
+│left bottom││center bottom││right bottom│
+└────────────────────────┘└────────────────────────┘└────────────────────────┘
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background.py].svg
index f0e32625af..2087347827 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background.py].svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-2384528872-matrix {
+ .terminal-3477688761-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2384528872-title {
+ .terminal-3477688761-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2384528872-r1 { fill: #ffffff }
-.terminal-2384528872-r2 { fill: #c5c8c6 }
+ .terminal-3477688761-r1 { fill: #ffffff }
+.terminal-3477688761-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BackgroundApp
+ BackgroundApp
-
-
-
-
-
-
- Widget 1
-
-
-
-
-
-
-
- Widget 2
-
-
-
-
-
-
-
- Widget 3
-
-
-
+
+
+
+
+
+
+Widget 1
+
+
+
+
+
+
+
+Widget 2
+
+
+
+
+
+
+
+Widget 3
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_tint.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_tint.py].svg
index 94a5784a8b..1f9300f465 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_tint.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_tint.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-4101306393-matrix {
+ .terminal-326434242-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-4101306393-title {
+ .terminal-326434242-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-4101306393-r1 { fill: #e9eaeb }
-.terminal-4101306393-r2 { fill: #c5c8c6 }
-.terminal-4101306393-r3 { fill: #edeeef }
-.terminal-4101306393-r4 { fill: #0d0d0e }
-.terminal-4101306393-r5 { fill: #111112 }
-.terminal-4101306393-r6 { fill: #161616 }
+ .terminal-326434242-r1 { fill: #e9eaeb }
+.terminal-326434242-r2 { fill: #c5c8c6 }
+.terminal-326434242-r3 { fill: #edeeef }
+.terminal-326434242-r4 { fill: #0d0d0e }
+.terminal-326434242-r5 { fill: #111112 }
+.terminal-326434242-r6 { fill: #161616 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BackgroundTintApp
+ BackgroundTintApp
-
-
-
- 0%
-
-
-
-25%
-
-
-
-
-50%
-
-
-
-
-75%
-
-
-
-
-100%
-
-
-
+
+
+
+ 0%
+
+
+
+25%
+
+
+
+
+50%
+
+
+
+
+75%
+
+
+
+
+100%
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_transparency.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_transparency.py].svg
index 4e35f6abd4..cd6125f7bd 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_transparency.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[background_transparency.py].svg
@@ -19,131 +19,131 @@
font-weight: 700;
}
- .terminal-172055925-matrix {
+ .terminal-3887573157-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-172055925-title {
+ .terminal-3887573157-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-172055925-r1 { fill: #e0e0e0 }
-.terminal-172055925-r2 { fill: #c5c8c6 }
+ .terminal-3887573157-r1 { fill: #e0e0e0 }
+.terminal-3887573157-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BackgroundTransparencyApp
+ BackgroundTransparencyApp
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+10%20%30%40%50%60%70%80%90%100%
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border.py].svg
index 3777a1248a..e8bc237cc1 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-1521347888-matrix {
+ .terminal-2006576005-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1521347888-title {
+ .terminal-2006576005-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1521347888-r1 { fill: #e0e0e0 }
-.terminal-1521347888-r2 { fill: #c5c8c6 }
-.terminal-1521347888-r3 { fill: #ff0000 }
-.terminal-1521347888-r4 { fill: #008000 }
-.terminal-1521347888-r5 { fill: #ffffff }
-.terminal-1521347888-r6 { fill: #0000ff }
+ .terminal-2006576005-r1 { fill: #e0e0e0 }
+.terminal-2006576005-r2 { fill: #c5c8c6 }
+.terminal-2006576005-r3 { fill: #ff0000 }
+.terminal-2006576005-r4 { fill: #008000 }
+.terminal-2006576005-r5 { fill: #ffffff }
+.terminal-2006576005-r6 { fill: #0000ff }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderApp
+ BorderApp
-
-
-
-
-┌────────────────────────────────────────────────────────────────────────────┐
-││
-│ My border is solid red │
-││
-└────────────────────────────────────────────────────────────────────────────┘
-
-┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
-╏╏
-╏ My border is dashed green ╏
-╏╏
-┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▎
-▊ My border is tall blue ▎
-▊▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
+
+
+
+
+┌────────────────────────────────────────────────────────────────────────────┐
+││
+│My border is solid red│
+││
+└────────────────────────────────────────────────────────────────────────────┘
+
+┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
+╏╏
+╏My border is dashed green╏
+╏╏
+┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▎
+▊My border is tall blue▎
+▊▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_all.py].svg
index 551c70d3c6..f6bf2f9336 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_all.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-455821912-matrix {
+ .terminal-2049110049-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-455821912-title {
+ .terminal-2049110049-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-455821912-r1 { fill: #e0e0e0 }
-.terminal-455821912-r2 { fill: #c5c8c6 }
-.terminal-455821912-r3 { fill: #fea62b }
-.terminal-455821912-r4 { fill: #121212 }
+ .terminal-2049110049-r1 { fill: #e0e0e0 }
+.terminal-2049110049-r2 { fill: #c5c8c6 }
+.terminal-2049110049-r3 { fill: #fea62b }
+.terminal-2049110049-r4 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AllBordersApp
+ AllBordersApp
-
-
-
-
-+----------------+┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓╔═════════════════╗
-| ascii | blank ╏ dashed ╏║ double ║
-+----------------+┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛╚═════════════════╝
-
-
-
-┏━━━━━━━━━━━━━━━━┓▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▗▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▖
-┃ heavy ┃ hidden/none hkey ▐ inner ▌
-┗━━━━━━━━━━━━━━━━┛▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
-
-
-
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜▊█████████████████▎╭────────────────╮┌─────────────────┐
-▌ outer ▐▊ panel ▎│ round ││ solid │
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎╰────────────────╯└─────────────────┘
-
-
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▏ ▕▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▊ tall ▎█ thick █▏ vkey ▕▎ wide ▊
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▏ ▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
+
+
+
+
++----------------+┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓╔═════════════════╗
+|ascii|blank╏dashed╏║double║
++----------------+┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛╚═════════════════╝
+
+
+
+┏━━━━━━━━━━━━━━━━┓▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▗▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▖
+┃heavy┃hidden/nonehkey▐inner▌
+┗━━━━━━━━━━━━━━━━┛▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
+
+
+
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜▊█████████████████▎╭────────────────╮┌─────────────────┐
+▌outer▐▊panel▎│round││solid│
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎╰────────────────╯└─────────────────┘
+
+
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█▏ ▕▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▊tall▎█thick█▏vkey▕▎wide▊
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█▏ ▕▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_sub_title_align_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_sub_title_align_all.py].svg
index 7a0b94f69e..bfe9daa325 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_sub_title_align_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_sub_title_align_all.py].svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-1542744441-matrix {
+ .terminal-2613505504-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1542744441-title {
+ .terminal-2613505504-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1542744441-r1 { fill: #e0e0e0 }
-.terminal-1542744441-r2 { fill: #c5c8c6 }
-.terminal-1542744441-r3 { fill: #004578 }
-.terminal-1542744441-r4 { fill: #004578;font-weight: bold }
-.terminal-1542744441-r5 { fill: #004578;font-weight: bold;font-style: italic; }
-.terminal-1542744441-r6 { fill: #f4005f;font-weight: bold }
-.terminal-1542744441-r7 { fill: #121212 }
-.terminal-1542744441-r8 { fill: #121212;text-decoration: underline; }
-.terminal-1542744441-r9 { fill: #004578;text-decoration: underline; }
-.terminal-1542744441-r10 { fill: #1a1a1a;text-decoration: underline; }
-.terminal-1542744441-r11 { fill: #4ebf71 }
-.terminal-1542744441-r12 { fill: #b93c5b }
+ .terminal-2613505504-r1 { fill: #e0e0e0 }
+.terminal-2613505504-r2 { fill: #c5c8c6 }
+.terminal-2613505504-r3 { fill: #004578 }
+.terminal-2613505504-r4 { fill: #004578;font-weight: bold }
+.terminal-2613505504-r5 { fill: #004578;font-weight: bold;font-style: italic; }
+.terminal-2613505504-r6 { fill: #f4005f;font-weight: bold }
+.terminal-2613505504-r7 { fill: #121212 }
+.terminal-2613505504-r8 { fill: #121212;text-decoration: underline; }
+.terminal-2613505504-r9 { fill: #004578;text-decoration: underline; }
+.terminal-2613505504-r10 { fill: #1a1a1a;text-decoration: underline; }
+.terminal-2613505504-r11 { fill: #4ebf71 }
+.terminal-2613505504-r12 { fill: #b93c5b }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderSubTitleAlignAll
+ BorderSubTitleAlignAll
-
-
-
-
-
-▏ Border title ▕╭─ Lef… ─╮▁▁▁▁▁ Left ▁▁▁▁▁
-▏This is the story of▕│a Python│▎developer that▊
-▏ Border subtitle ▕╰─ Cen… ─╯▔▔▔▔▔ @@@ ▔▔▔▔▔▔
-
-
-
-
-
-+--------------+─Title─────────────────
-|had to fill up| nine labels and ended up redoing it
-+- Left -------+──────────────Subtitle─
-
-
-
-
-─Title, but really looo…─
-─Title, but r…──Title, but reall…─
-because the first try had some labels that were too long.
-─Subtitle, bu…──Subtitle, but re…─
-─Subtitle, but really l…─
-
+
+
+
+
+
+▏ Border title ▕╭─ Lef… ─╮▁▁▁▁▁ Left ▁▁▁▁▁
+▏This is the story of▕│a Python│▎developer that▊
+▏ Border subtitle ▕╰─ Cen… ─╯▔▔▔▔▔ @@@ ▔▔▔▔▔▔
+
+
+
+
+
++--------------+─Title─────────────────
+|had to fill up|nine labelsand ended up redoing it
++- Left -------+──────────────Subtitle─
+
+
+
+
+─Title, but really looo…─
+─Title, but r…──Title, but reall…─
+because the first tryhad some labelsthat were too long.
+─Subtitle, bu…──Subtitle, but re…─
+─Subtitle, but really l…─
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_subtitle_align.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_subtitle_align.py].svg
index 29db3073b3..6c8fe2d4ea 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_subtitle_align.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_subtitle_align.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-2936982347-matrix {
+ .terminal-1702021764-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2936982347-title {
+ .terminal-1702021764-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2936982347-r1 { fill: #e0e0e0 }
-.terminal-2936982347-r2 { fill: #c5c8c6 }
-.terminal-2936982347-r3 { fill: #004578 }
-.terminal-2936982347-r4 { fill: #ffffff }
-.terminal-2936982347-r5 { fill: #121212 }
+ .terminal-1702021764-r1 { fill: #e0e0e0 }
+.terminal-1702021764-r2 { fill: #c5c8c6 }
+.terminal-1702021764-r3 { fill: #004578 }
+.terminal-1702021764-r4 { fill: #ffffff }
+.terminal-1702021764-r5 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderSubtitleAlignApp
+ BorderSubtitleAlignApp
-
-
-
-
-┌────────────────────────────────────────────────────────────────────────────┐
-││
-│ My subtitle is on the left. │
-││
-└─ < Left ───────────────────────────────────────────────────────────────────┘
-
-┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
-╏╏
-╏ My subtitle is centered ╏
-╏╏
-┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ Centered! ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
-▊▎
-▊ My subtitle is on the right ▎
-▊▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ Right > ▁▎
-
-
-
-
-
+
+
+
+
+┌────────────────────────────────────────────────────────────────────────────┐
+││
+│My subtitle is on the left.│
+││
+└─ < Left ───────────────────────────────────────────────────────────────────┘
+
+┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
+╏╏
+╏My subtitle is centered╏
+╏╏
+┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ Centered! ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▎
+▊▎
+▊My subtitle is on the right▎
+▊▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ Right > ▁▎
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_align.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_align.py].svg
index c656b72e33..6ef0a73c8e 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_align.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_align.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-2694760088-matrix {
+ .terminal-1570817489-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2694760088-title {
+ .terminal-1570817489-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2694760088-r1 { fill: #e0e0e0 }
-.terminal-2694760088-r2 { fill: #c5c8c6 }
-.terminal-2694760088-r3 { fill: #004578 }
-.terminal-2694760088-r4 { fill: #ffffff }
-.terminal-2694760088-r5 { fill: #121212 }
+ .terminal-1570817489-r1 { fill: #e0e0e0 }
+.terminal-1570817489-r2 { fill: #c5c8c6 }
+.terminal-1570817489-r3 { fill: #004578 }
+.terminal-1570817489-r4 { fill: #ffffff }
+.terminal-1570817489-r5 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderTitleAlignApp
+ BorderTitleAlignApp
-
-
-
-
-┌─ < Left ───────────────────────────────────────────────────────────────────┐
-││
-│ My title is on the left. │
-││
-└────────────────────────────────────────────────────────────────────────────┘
-
-┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ Centered! ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
-╏╏
-╏ My title is centered ╏
-╏╏
-┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
-
-▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Right > ▔▎
-▊▎
-▊ My title is on the right ▎
-▊▎
-▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
-
-
-
-
-
+
+
+
+
+┌─ < Left ───────────────────────────────────────────────────────────────────┐
+││
+│My title is on the left.│
+││
+└────────────────────────────────────────────────────────────────────────────┘
+
+┏╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ Centered! ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┓
+╏╏
+╏My title is centered╏
+╏╏
+┗╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍┛
+
+▊▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Right > ▔▎
+▊▎
+▊My title is on the right▎
+▊▎
+▊▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▎
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_colors.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_colors.py].svg
index 79d781cbf0..299fc22925 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_colors.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[border_title_colors.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-1222133612-matrix {
+ .terminal-2937574845-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1222133612-title {
+ .terminal-2937574845-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1222133612-r1 { fill: #e0e0e0 }
-.terminal-1222133612-r2 { fill: #c5c8c6 }
-.terminal-1222133612-r3 { fill: #ff0000 }
-.terminal-1222133612-r4 { fill: #008000;font-weight: bold }
-.terminal-1222133612-r5 { fill: #ff00ff;font-style: italic; }
+ .terminal-2937574845-r1 { fill: #e0e0e0 }
+.terminal-2937574845-r2 { fill: #c5c8c6 }
+.terminal-2937574845-r3 { fill: #ff0000 }
+.terminal-2937574845-r4 { fill: #008000;font-weight: bold }
+.terminal-2937574845-r5 { fill: #ff00ff;font-style: italic; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BorderTitleApp
+ BorderTitleApp
-
+
-
-
-
-
-
-
-
-┏━ Textual Rocks ━━━━━━━━━━━━━┓
-┃┃
-┃┃
-┃┃
-┃┃
-┃Hello, World!┃
-┃┃
-┃┃
-┃┃
-┃┃
-┗━━━━━━━━━━━━━ Textual Rocks ━┛
-
-
-
-
-
-
+
+
+
+
+
+
+
+┏━ Textual Rocks ━━━━━━━━━━━━━┓
+┃┃
+┃┃
+┃┃
+┃┃
+┃Hello, World!┃
+┃┃
+┃┃
+┃┃
+┃┃
+┗━━━━━━━━━━━━━ Textual Rocks ━┛
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[box_sizing.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[box_sizing.py].svg
index cf9b3727cd..930ae1e8cd 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[box_sizing.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[box_sizing.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-3650331802-matrix {
+ .terminal-1936270938-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3650331802-title {
+ .terminal-1936270938-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3650331802-r1 { fill: #000000 }
-.terminal-3650331802-r2 { fill: #c5c8c6 }
-.terminal-3650331802-r3 { fill: #ccccff }
+ .terminal-1936270938-r1 { fill: #000000 }
+.terminal-1936270938-r2 { fill: #c5c8c6 }
+.terminal-1936270938-r3 { fill: #ccccff }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- BoxSizingApp
+ BoxSizingApp
-
+
-
-
-
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▎▊
-▎I'm using border-box!▊
-▎▊
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▎▊
-▎I'm using content-box!▊
-▎▊
-▎▊
-▎▊
-▎▊
-▎▊
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-
-
-
-
+
+
+
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▎▊
+▎I'm using border-box!▊
+▎▊
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▎▊
+▎I'm using content-box!▊
+▎▊
+▎▊
+▎▊
+▎▊
+▎▊
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color.py].svg
index ce5bd34036..ff236d39e9 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-2371213331-matrix {
+ .terminal-873208059-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2371213331-title {
+ .terminal-873208059-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2371213331-r1 { fill: #ff0000 }
-.terminal-2371213331-r2 { fill: #c5c8c6 }
-.terminal-2371213331-r3 { fill: #00ff00 }
-.terminal-2371213331-r4 { fill: #0000ff }
+ .terminal-873208059-r1 { fill: #ff0000 }
+.terminal-873208059-r2 { fill: #c5c8c6 }
+.terminal-873208059-r3 { fill: #00ff00 }
+.terminal-873208059-r4 { fill: #0000ff }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ColorApp
+ ColorApp
-
-
-
-
-
-
- I'm red!
-
-
-
-
-
-
-
- I'm rgb(0, 255, 0)!
-
-
-
-
-
-
-
- I'm hsl(240, 100%, 50%)!
-
-
-
+
+
+
+
+
+
+I'm red!
+
+
+
+
+
+
+
+I'm rgb(0, 255, 0)!
+
+
+
+
+
+
+
+I'm hsl(240, 100%, 50%)!
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color_auto.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color_auto.py].svg
index dc154f6136..b43de57501 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color_auto.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[color_auto.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-365635182-matrix {
+ .terminal-1258388680-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-365635182-title {
+ .terminal-1258388680-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-365635182-r1 { fill: #f5cccc }
-.terminal-365635182-r2 { fill: #c5c8c6 }
-.terminal-365635182-r3 { fill: #292900 }
-.terminal-365635182-r4 { fill: #ccccf5 }
-.terminal-365635182-r5 { fill: #291f21 }
-.terminal-365635182-r6 { fill: #cce1cc }
+ .terminal-1258388680-r1 { fill: #f5cccc }
+.terminal-1258388680-r2 { fill: #c5c8c6 }
+.terminal-1258388680-r3 { fill: #292900 }
+.terminal-1258388680-r4 { fill: #ccccf5 }
+.terminal-1258388680-r5 { fill: #291f21 }
+.terminal-1258388680-r6 { fill: #cce1cc }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ColorApp
+ ColorApp
-
-
-
-
- The quick brown fox jumps over the lazy dog!
-
-
-
-
- The quick brown fox jumps over the lazy dog!
-
-
-
-
- The quick brown fox jumps over the lazy dog!
-
-
-
-
- The quick brown fox jumps over the lazy dog!
-
-
-
-
- The quick brown fox jumps over the lazy dog!
-
+
+
+
+
+The quick brown fox jumps over the lazy dog!
+
+
+
+
+The quick brown fox jumps over the lazy dog!
+
+
+
+
+The quick brown fox jumps over the lazy dog!
+
+
+
+
+The quick brown fox jumps over the lazy dog!
+
+
+
+
+The quick brown fox jumps over the lazy dog!
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[column_span.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[column_span.py].svg
index 12357740f5..3c893ea76c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[column_span.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[column_span.py].svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-1453444800-matrix {
+ .terminal-569692991-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1453444800-title {
+ .terminal-569692991-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1453444800-r1 { fill: #e7e0e6 }
-.terminal-1453444800-r2 { fill: #c5c8c6 }
-.terminal-1453444800-r3 { fill: #e0e0e0 }
-.terminal-1453444800-r4 { fill: #eae2e4 }
-.terminal-1453444800-r5 { fill: #ece5e5 }
-.terminal-1453444800-r6 { fill: #eee8e3 }
-.terminal-1453444800-r7 { fill: #eeeddf }
-.terminal-1453444800-r8 { fill: #e8ede4 }
-.terminal-1453444800-r9 { fill: #e3ede7 }
+ .terminal-569692991-r1 { fill: #e7e0e6 }
+.terminal-569692991-r2 { fill: #c5c8c6 }
+.terminal-569692991-r3 { fill: #e0e0e0 }
+.terminal-569692991-r4 { fill: #eae2e4 }
+.terminal-569692991-r5 { fill: #ece5e5 }
+.terminal-569692991-r6 { fill: #eee8e3 }
+.terminal-569692991-r7 { fill: #eeeddf }
+.terminal-569692991-r8 { fill: #e8ede4 }
+.terminal-569692991-r9 { fill: #e3ede7 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
-
-
- #p1
-
-
-
-
-
- #p2 #p3
-
-
-
-
-
- #p4 #p5
-
-
-
-
-
- #p6 #p7
-
-
+
+
+
+
+
+#p1
+
+
+
+
+
+#p2#p3
+
+
+
+
+
+#p4#p5
+
+
+
+
+
+#p6#p7
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align.py].svg
index c03ae18fbf..a1cbb7f0fc 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-631702501-matrix {
+ .terminal-1829212900-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-631702501-title {
+ .terminal-1829212900-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-631702501-r1 { fill: #c5c8c6 }
-.terminal-631702501-r2 { fill: #ffffff }
-.terminal-631702501-r3 { fill: #ffffff;font-style: italic; }
-.terminal-631702501-r4 { fill: #ffffff;font-weight: bold }
+ .terminal-1829212900-r1 { fill: #c5c8c6 }
+.terminal-1829212900-r2 { fill: #ffffff }
+.terminal-1829212900-r3 { fill: #ffffff;font-style: italic; }
+.terminal-1829212900-r4 { fill: #ffffff;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- ContentAlignApp
+ ContentAlignApp
-
-
-
-
-With content-align you can...
-
-
-
-
-
-
-
-
-
- ...Easily align content...
-
-
-
-
-
-
-
-
-
-
- ...Horizontally and vertically!
+
+
+
+
+With content-align you can...
+
+
+
+
+
+
+
+
+
+...Easily align content...
+
+
+
+
+
+
+
+
+
+
+...Horizontally and vertically!
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align_all.py].svg
index 1ccfe6c9e8..7e92545d03 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[content_align_all.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-1479039415-matrix {
+ .terminal-4119458087-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1479039415-title {
+ .terminal-4119458087-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1479039415-r1 { fill: #e0e0e0 }
-.terminal-1479039415-r2 { fill: #c5c8c6 }
+ .terminal-4119458087-r1 { fill: #e0e0e0 }
+.terminal-4119458087-r2 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- AllContentAlignApp
+ AllContentAlignApp
-
-
-
- left top center top right top
-
-
-
-
-
-
-
-
-
-
-left middle center middle right middle
-
-
-
-
-
-
-
-
-
-
-
-left bottom center bottom right bottom
+
+
+
+ left topcenter topright top
+
+
+
+
+
+
+
+
+
+
+left middlecenter middleright middle
+
+
+
+
+
+
+
+
+
+
+
+left bottomcenter bottomright bottom
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[display.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[display.py].svg
index a60d2a492d..06a00cf6e5 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[display.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[display.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-1694538289-matrix {
+ .terminal-1986750385-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1694538289-title {
+ .terminal-1986750385-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1694538289-r1 { fill: #0000ff }
-.terminal-1694538289-r2 { fill: #c5c8c6 }
-.terminal-1694538289-r3 { fill: #e0e0e0 }
+ .terminal-1986750385-r1 { fill: #0000ff }
+.terminal-1986750385-r2 { fill: #c5c8c6 }
+.terminal-1986750385-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- DisplayApp
+ DisplayApp
-
+
-
- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃Widget 1┃
-┃ ┃
-┃ ┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃Widget 3┃
-┃ ┃
-┃ ┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃Widget 1┃
+┃ ┃
+┃ ┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃Widget 3┃
+┃ ┃
+┃ ┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[dock_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[dock_all.py].svg
index 89d972eb55..bc3e31d051 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[dock_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[dock_all.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-2431934126-matrix {
+ .terminal-1186413105-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2431934126-title {
+ .terminal-1186413105-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2431934126-r1 { fill: #e0e0e0 }
-.terminal-2431934126-r2 { fill: #c5c8c6 }
-.terminal-2431934126-r3 { fill: #ffffff }
+ .terminal-1186413105-r1 { fill: #e0e0e0 }
+.terminal-1186413105-r2 { fill: #c5c8c6 }
+.terminal-1186413105-r3 { fill: #ffffff }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- DockAllApp
+ DockAllApp
-
-
-
-
-
-
-╭──────────────────────────────────────────────────────────╮
-│ top │
-││
-││
-││
-││
-││
-││
-│left right│
-││
-││
-││
-││
-││
-││
-││
-│ bottom │
-╰──────────────────────────────────────────────────────────╯
-
-
+
+
+
+
+
+
+╭──────────────────────────────────────────────────────────╮
+│top│
+││
+││
+││
+││
+││
+││
+│leftright│
+││
+││
+││
+││
+││
+││
+││
+│bottom│
+╰──────────────────────────────────────────────────────────╯
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid.py].svg
index f8a1728a06..b2124c89ef 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-1367892629-matrix {
+ .terminal-2996326456-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1367892629-title {
+ .terminal-2996326456-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1367892629-r1 { fill: #c5c8c6 }
-.terminal-1367892629-r2 { fill: #e0e0e0 }
-.terminal-1367892629-r3 { fill: #660066 }
-.terminal-1367892629-r4 { fill: #000000 }
+ .terminal-2996326456-r1 { fill: #c5c8c6 }
+.terminal-2996326456-r2 { fill: #e0e0e0 }
+.terminal-2996326456-r3 { fill: #660066 }
+.terminal-2996326456-r4 { fill: #000000 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- GridApp
+ GridApp
-
-
-
-
-Grid cell 1Grid cell 2
-
-row-span: 3;
-column-span: 2;
-
-
-Grid cell 3
-
-
-
-
-
-Grid cell 4
-
-
-
-
-
-Grid cell 5Grid cell 6Grid cell 7
-
-
-
+
+
+
+
+Grid cell 1Grid cell 2
+
+row-span: 3;
+column-span: 2;
+
+
+Grid cell 3
+
+
+
+
+
+Grid cell 4
+
+
+
+
+
+Grid cell 5Grid cell 6Grid cell 7
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_columns.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_columns.py].svg
index 1266e8aab9..bc802ab791 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_columns.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_columns.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3961023083-matrix {
+ .terminal-682454207-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3961023083-title {
+ .terminal-682454207-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3961023083-r1 { fill: #ffffff }
-.terminal-3961023083-r2 { fill: #c5c8c6 }
-.terminal-3961023083-r3 { fill: #e0e0e0 }
+ .terminal-682454207-r1 { fill: #ffffff }
+.terminal-682454207-r2 { fill: #c5c8c6 }
+.terminal-682454207-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ╭──────────╮╭──────────────╮╭──────────────────────╮╭──────────╮╭──────────────╮
-│ 1fr ││ width = 16 ││ 2fr ││ 1fr ││ width = 16 │
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-╰──────────╯╰──────────────╯╰──────────────────────╯╰──────────╯╰──────────────╯
-╭──────────╮╭──────────────╮╭──────────────────────╮╭──────────╮╭──────────────╮
-│ 1fr ││ width = 16 ││ 2fr ││ 1fr ││ width = 16 │
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-││││││││││
-╰──────────╯╰──────────────╯╰──────────────────────╯╰──────────╯╰──────────────╯
+
+
+
+ ╭──────────╮╭──────────────╮╭──────────────────────╮╭──────────╮╭──────────────╮
+│1fr││width = 16││2fr││1fr││width = 16│
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+╰──────────╯╰──────────────╯╰──────────────────────╯╰──────────╯╰──────────────╯
+╭──────────╮╭──────────────╮╭──────────────────────╮╭──────────╮╭──────────────╮
+│1fr││width = 16││2fr││1fr││width = 16│
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+││││││││││
+╰──────────╯╰──────────────╯╰──────────────────────╯╰──────────╯╰──────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_gutter.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_gutter.py].svg
index d6752dcab4..e85a8f5c47 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_gutter.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_gutter.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-1567026819-matrix {
+ .terminal-2174124623-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1567026819-title {
+ .terminal-2174124623-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1567026819-r1 { fill: #ffffff }
-.terminal-1567026819-r2 { fill: #e0e0e0 }
-.terminal-1567026819-r3 { fill: #c5c8c6 }
+ .terminal-2174124623-r1 { fill: #ffffff }
+.terminal-2174124623-r2 { fill: #e0e0e0 }
+.terminal-2174124623-r3 { fill: #c5c8c6 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ╭─────────────────────────────────────╮╭─────────────────────────────────────╮
-││││
-│ 1 ││ 2 │
-││││
-╰─────────────────────────────────────╯╰─────────────────────────────────────╯
-
-╭─────────────────────────────────────╮╭─────────────────────────────────────╮
-││││
-│ 3 ││ 4 │
-││││
-╰─────────────────────────────────────╯╰─────────────────────────────────────╯
-
-╭─────────────────────────────────────╮╭─────────────────────────────────────╮
-││││
-│ 5 ││ 6 │
-││││
-╰─────────────────────────────────────╯╰─────────────────────────────────────╯
-
-╭─────────────────────────────────────╮╭─────────────────────────────────────╮
-││││
-│ 7 ││ 8 │
-││││
-││││
-╰─────────────────────────────────────╯╰─────────────────────────────────────╯
+
+
+
+ ╭─────────────────────────────────────╮╭─────────────────────────────────────╮
+││││
+│1││2│
+││││
+╰─────────────────────────────────────╯╰─────────────────────────────────────╯
+
+╭─────────────────────────────────────╮╭─────────────────────────────────────╮
+││││
+│3││4│
+││││
+╰─────────────────────────────────────╯╰─────────────────────────────────────╯
+
+╭─────────────────────────────────────╮╭─────────────────────────────────────╮
+││││
+│5││6│
+││││
+╰─────────────────────────────────────╯╰─────────────────────────────────────╯
+
+╭─────────────────────────────────────╮╭─────────────────────────────────────╮
+││││
+│7││8│
+││││
+││││
+╰─────────────────────────────────────╯╰─────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_rows.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_rows.py].svg
index 973c012b71..c9356e9317 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_rows.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_rows.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-4156292668-matrix {
+ .terminal-4169917407-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-4156292668-title {
+ .terminal-4169917407-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-4156292668-r1 { fill: #ffffff }
-.terminal-4156292668-r2 { fill: #c5c8c6 }
-.terminal-4156292668-r3 { fill: #e0e0e0 }
+ .terminal-4169917407-r1 { fill: #ffffff }
+.terminal-4169917407-r2 { fill: #c5c8c6 }
+.terminal-4169917407-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-│ 1fr ││ 1fr │
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-│ height = 6 ││ height = 6 │
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-│ 25% ││ 25% │
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-│ 1fr ││ 1fr │
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-│ height = 6 ││ height = 6 │
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+
+
+
+ ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+│1fr││1fr│
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+│height = 6││height = 6│
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+│25%││25%│
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+│1fr││1fr│
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+│height = 6││height = 6│
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_both.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_both.py].svg
index 8277aec0e9..207fb326db 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_both.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_both.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-1932285988-matrix {
+ .terminal-306811422-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1932285988-title {
+ .terminal-306811422-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1932285988-r1 { fill: #ffffff }
-.terminal-1932285988-r2 { fill: #c5c8c6 }
-.terminal-1932285988-r3 { fill: #e0e0e0 }
+ .terminal-306811422-r1 { fill: #ffffff }
+.terminal-306811422-r2 { fill: #c5c8c6 }
+.terminal-306811422-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-│ 1 ││ 2 │
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-│ 3 ││ 4 │
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮
-││
-│ 5 │
-││
-││
-╰──────────────────────────────────────╯
-
-
-
-
-
+
+
+
+ ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+│1││2│
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+│3││4│
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮
+││
+│5│
+││
+││
+╰──────────────────────────────────────╯
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_columns.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_columns.py].svg
index 555e455c4a..723156f7b9 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_columns.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[grid_size_columns.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3672203074-matrix {
+ .terminal-1857652300-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3672203074-title {
+ .terminal-1857652300-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3672203074-r1 { fill: #ffffff }
-.terminal-3672203074-r2 { fill: #c5c8c6 }
-.terminal-3672203074-r3 { fill: #e0e0e0 }
+ .terminal-1857652300-r1 { fill: #ffffff }
+.terminal-1857652300-r2 { fill: #c5c8c6 }
+.terminal-1857652300-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MyApp
+ MyApp
-
-
-
- ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-││││
-│ 1 ││ 2 │
-││││
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮╭──────────────────────────────────────╮
-││││
-││││
-│ 3 ││ 4 │
-││││
-││││
-││││
-╰──────────────────────────────────────╯╰──────────────────────────────────────╯
-╭──────────────────────────────────────╮
-││
-││
-│ 5 │
-││
-││
-││
-╰──────────────────────────────────────╯
+
+
+
+ ╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+││││
+│1││2│
+││││
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮╭──────────────────────────────────────╮
+││││
+││││
+│3││4│
+││││
+││││
+││││
+╰──────────────────────────────────────╯╰──────────────────────────────────────╯
+╭──────────────────────────────────────╮
+││
+││
+│5│
+││
+││
+││
+╰──────────────────────────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[hatch.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[hatch.py].svg
index 8e8485f019..ea1737f242 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[hatch.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[hatch.py].svg
@@ -19,138 +19,138 @@
font-weight: 700;
}
- .terminal-49551764-matrix {
+ .terminal-742394316-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-49551764-title {
+ .terminal-742394316-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-49551764-r1 { fill: #004578 }
-.terminal-49551764-r2 { fill: #c5c8c6 }
-.terminal-49551764-r3 { fill: #e0e0e0 }
-.terminal-49551764-r4 { fill: #4ebf71 }
-.terminal-49551764-r5 { fill: #429c5e }
-.terminal-49551764-r6 { fill: #36794b }
-.terminal-49551764-r7 { fill: #2a5738 }
-.terminal-49551764-r8 { fill: #1e3425 }
+ .terminal-742394316-r1 { fill: #004578 }
+.terminal-742394316-r2 { fill: #c5c8c6 }
+.terminal-742394316-r3 { fill: #e0e0e0 }
+.terminal-742394316-r4 { fill: #4ebf71 }
+.terminal-742394316-r5 { fill: #429c5e }
+.terminal-742394316-r6 { fill: #36794b }
+.terminal-742394316-r7 { fill: #2a5738 }
+.terminal-742394316-r8 { fill: #1e3425 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HatchApp
+ HatchApp
-
+
-
- ┌─ cross ──────┐┌─ horizontal ─┐┌─ custom ─────┐┌─ left ───────┐┌─ right ──────┐
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
-└──────────────┘└──────────────┘└──────────────┘└──────────────┘└──────────────┘
+
+ ┌─ cross ──────┐┌─ horizontal ─┐┌─ custom ─────┐┌─ left ───────┐┌─ right ──────┐
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+│╳╳╳╳╳╳╳╳╳╳╳╳╳╳││──────────────││TTTTTTTTTTTTTT││╲╲╲╲╲╲╲╲╲╲╲╲╲╲││╱╱╱╱╱╱╱╱╱╱╱╱╱╱│
+└──────────────┘└──────────────┘└──────────────┘└──────────────┘└──────────────┘
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height.py].svg
index 30cacbc22b..091ee89efe 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-2590569291-matrix {
+ .terminal-836291139-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2590569291-title {
+ .terminal-836291139-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2590569291-r1 { fill: #ffffff }
-.terminal-2590569291-r2 { fill: #c5c8c6 }
-.terminal-2590569291-r3 { fill: #e0e0e0 }
+ .terminal-836291139-r1 { fill: #ffffff }
+.terminal-836291139-r2 { fill: #c5c8c6 }
+.terminal-836291139-r3 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HeightApp
+ HeightApp
-
+
-
- Widget
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Widget
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height_comparison.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height_comparison.py].svg
index 04e878b4d6..437812f232 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height_comparison.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[height_comparison.py].svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-1171513215-matrix {
+ .terminal-2052591144-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1171513215-title {
+ .terminal-2052591144-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1171513215-r1 { fill: #e7e0e6 }
-.terminal-1171513215-r2 { fill: #e0e0e0 }
-.terminal-1171513215-r3 { fill: #c5c8c6 }
-.terminal-1171513215-r4 { fill: #eae2e4 }
-.terminal-1171513215-r5 { fill: #ece5e5 }
-.terminal-1171513215-r6 { fill: #eee8e3 }
-.terminal-1171513215-r7 { fill: #eeeddf }
-.terminal-1171513215-r8 { fill: #e8ede4 }
-.terminal-1171513215-r9 { fill: #e3ede7 }
-.terminal-1171513215-r10 { fill: #e1eceb }
-.terminal-1171513215-r11 { fill: #dfebec }
+ .terminal-2052591144-r1 { fill: #e7e0e6 }
+.terminal-2052591144-r2 { fill: #e0e0e0 }
+.terminal-2052591144-r3 { fill: #c5c8c6 }
+.terminal-2052591144-r4 { fill: #eae2e4 }
+.terminal-2052591144-r5 { fill: #ece5e5 }
+.terminal-2052591144-r6 { fill: #eee8e3 }
+.terminal-2052591144-r7 { fill: #eeeddf }
+.terminal-2052591144-r8 { fill: #e8ede4 }
+.terminal-2052591144-r9 { fill: #e3ede7 }
+.terminal-2052591144-r10 { fill: #e1eceb }
+.terminal-2052591144-r11 { fill: #dfebec }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- HeightComparisonApp
+ HeightComparisonApp
-
-
-
- #cells ·
-·
-·
- #percent ·
-•
-·
- #w ·
-·
-·
-•
- #h ·
-·
-·
-·
- #vw •
-·
-·
-·
- #vh ·
-•
- #auto ·
- #fr1 ·
- #fr2 ·
-·
+
+
+
+ #cells·
+·
+·
+#percent·
+•
+·
+#w·
+·
+·
+•
+#h·
+·
+·
+·
+#vw•
+·
+·
+·
+#vh·
+•
+#auto·
+#fr1·
+#fr2·
+·
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline.py].svg
index c561bb6245..38517ff8d6 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline.py].svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-1179039254-matrix {
+ .terminal-2292435763-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1179039254-title {
+ .terminal-2292435763-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1179039254-r1 { fill: #c5c8c6 }
-.terminal-1179039254-r2 { fill: #008000 }
-.terminal-1179039254-r3 { fill: #e7e0e6 }
-.terminal-1179039254-r4 { fill: #eae2e4 }
-.terminal-1179039254-r5 { fill: #ece5e5 }
-.terminal-1179039254-r6 { fill: #121212 }
-.terminal-1179039254-r7 { fill: #eeeddf }
+ .terminal-2292435763-r1 { fill: #c5c8c6 }
+.terminal-2292435763-r2 { fill: #008000 }
+.terminal-2292435763-r3 { fill: #e7e0e6 }
+.terminal-2292435763-r4 { fill: #eae2e4 }
+.terminal-2292435763-r5 { fill: #ece5e5 }
+.terminal-2292435763-r6 { fill: #121212 }
+.terminal-2292435763-r7 { fill: #eeeddf }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- KeylineApp
+ KeylineApp
-
-
-
-
-
-┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
-┃┃┃
-┃┃┃
-┃ #foo ┃┃
-┃┃┃
-┃┃┃
-┣━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┫ #bar ┃
-┃┃┃┃
-┃┃┃┃
-┃ Placeholder ┃┃┃
-┃┃┃┃
-┃┃┃┃
-┣━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━┫
-┃┃
-┃┃
-┃ #baz ┃
-┃┃
-┃┃
-┃┃
-┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
-
+
+
+
+
+
+┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓
+┃┃┃
+┃┃┃
+┃#foo┃┃
+┃┃┃
+┃┃┃
+┣━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┫#bar┃
+┃┃┃┃
+┃┃┃┃
+┃Placeholder┃┃┃
+┃┃┃┃
+┃┃┃┃
+┣━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━┫
+┃┃
+┃┃
+┃#baz┃
+┃┃
+┃┃
+┃┃
+┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline_horizontal.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline_horizontal.py].svg
index 3b4e6e79fd..0b8db462ef 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline_horizontal.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[keyline_horizontal.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-204192619-matrix {
+ .terminal-2380948781-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-204192619-title {
+ .terminal-2380948781-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-204192619-r1 { fill: #004578 }
-.terminal-204192619-r2 { fill: #c5c8c6 }
-.terminal-204192619-r3 { fill: #e7e0e6 }
-.terminal-204192619-r4 { fill: #eae2e4 }
-.terminal-204192619-r5 { fill: #ece5e5 }
+ .terminal-2380948781-r1 { fill: #004578 }
+.terminal-2380948781-r2 { fill: #c5c8c6 }
+.terminal-2380948781-r3 { fill: #e7e0e6 }
+.terminal-2380948781-r4 { fill: #eae2e4 }
+.terminal-2380948781-r5 { fill: #ece5e5 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- KeylineApp
+ KeylineApp
-
-
-
- ┌─────────────────────────┬─────────────────────────┬──────────────────────────┐
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-│ Placeholder │ Placeholder │ Placeholder │
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-││││
-└─────────────────────────┴─────────────────────────┴──────────────────────────┘
+
+
+
+ ┌─────────────────────────┬─────────────────────────┬──────────────────────────┐
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+│Placeholder│Placeholder│Placeholder│
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+││││
+└─────────────────────────┴─────────────────────────┴──────────────────────────┘
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[layout.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[layout.py].svg
index bcaebafcef..6d92a409d2 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[layout.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[layout.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-346498030-matrix {
+ .terminal-2854924863-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-346498030-title {
+ .terminal-2854924863-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-346498030-r1 { fill: #e0e0e0 }
-.terminal-346498030-r2 { fill: #c5c8c6 }
-.terminal-346498030-r3 { fill: #000000 }
+ .terminal-2854924863-r1 { fill: #e0e0e0 }
+.terminal-2854924863-r2 { fill: #c5c8c6 }
+.terminal-2854924863-r3 { fill: #000000 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LayoutApp
+ LayoutApp
-
+
-
-
-Layout
-
-Is
-
-Vertical
-
-
-LayoutIsHorizontal
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+Layout
+
+Is
+
+Vertical
+
+
+LayoutIsHorizontal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background.py].svg
index 2b881caf31..4f8a31a432 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-3411225535-matrix {
+ .terminal-727350621-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3411225535-title {
+ .terminal-727350621-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3411225535-r1 { fill: #e0e0e0 }
-.terminal-3411225535-r2 { fill: #c5c8c6 }
-.terminal-3411225535-r3 { fill: #ffdddd;text-decoration: underline; }
-.terminal-3411225535-r4 { fill: #efefdf;text-decoration: underline; }
-.terminal-3411225535-r5 { fill: #211505;text-decoration: underline; }
+ .terminal-727350621-r1 { fill: #e0e0e0 }
+.terminal-727350621-r2 { fill: #c5c8c6 }
+.terminal-727350621-r3 { fill: #ffdddd;text-decoration: underline; }
+.terminal-727350621-r4 { fill: #efefdf;text-decoration: underline; }
+.terminal-727350621-r5 { fill: #211505;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkBackgroundApp
+ LinkBackgroundApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background_hover.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background_hover.py].svg
index 2a86ec981a..813cf0a0e2 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background_hover.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_background_hover.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-334048304-matrix {
+ .terminal-3740696014-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-334048304-title {
+ .terminal-3740696014-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-334048304-r1 { fill: #e0e0e0 }
-.terminal-334048304-r2 { fill: #c5c8c6 }
-.terminal-334048304-r3 { fill: #e0e0e0;text-decoration: underline; }
+ .terminal-3740696014-r1 { fill: #e0e0e0 }
+.terminal-3740696014-r2 { fill: #c5c8c6 }
+.terminal-3740696014-r3 { fill: #e0e0e0;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkHoverBackgroundApp
+ LinkHoverBackgroundApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color.py].svg
index 6514bc48d0..cc50493e80 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-3529975401-matrix {
+ .terminal-3769726983-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3529975401-title {
+ .terminal-3769726983-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3529975401-r1 { fill: #e0e0e0 }
-.terminal-3529975401-r2 { fill: #c5c8c6 }
-.terminal-3529975401-r3 { fill: #ff0000;text-decoration: underline; }
-.terminal-3529975401-r4 { fill: #888809;text-decoration: underline; }
-.terminal-3529975401-r5 { fill: #fea62b;text-decoration: underline; }
+ .terminal-3769726983-r1 { fill: #e0e0e0 }
+.terminal-3769726983-r2 { fill: #c5c8c6 }
+.terminal-3769726983-r3 { fill: #ff0000;text-decoration: underline; }
+.terminal-3769726983-r4 { fill: #888809;text-decoration: underline; }
+.terminal-3769726983-r5 { fill: #fea62b;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkColorApp
+ LinkColorApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color_hover.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color_hover.py].svg
index 1dd5a4dc1f..a04d8b1317 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color_hover.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_color_hover.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-992619055-matrix {
+ .terminal-1846705101-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-992619055-title {
+ .terminal-1846705101-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-992619055-r1 { fill: #e0e0e0 }
-.terminal-992619055-r2 { fill: #c5c8c6 }
-.terminal-992619055-r3 { fill: #e0e0e0;text-decoration: underline; }
+ .terminal-1846705101-r1 { fill: #e0e0e0 }
+.terminal-1846705101-r2 { fill: #c5c8c6 }
+.terminal-1846705101-r3 { fill: #e0e0e0;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkHoverColorApp
+ LinkHoverColorApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style.py].svg
index e699b05a3d..cec2f2ab23 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-1711549571-matrix {
+ .terminal-402488865-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1711549571-title {
+ .terminal-402488865-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1711549571-r1 { fill: #e0e0e0 }
-.terminal-1711549571-r2 { fill: #c5c8c6 }
-.terminal-1711549571-r3 { fill: #e0e0e0;font-weight: bold;font-style: italic; }
-.terminal-1711549571-r4 { fill: #121212;text-decoration: line-through; }
-.terminal-1711549571-r5 { fill: #e0e0e0;font-weight: bold }
+ .terminal-402488865-r1 { fill: #e0e0e0 }
+.terminal-402488865-r2 { fill: #c5c8c6 }
+.terminal-402488865-r3 { fill: #e0e0e0;font-weight: bold;font-style: italic; }
+.terminal-402488865-r4 { fill: #121212;text-decoration: line-through; }
+.terminal-402488865-r5 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkStyleApp
+ LinkStyleApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style_hover.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style_hover.py].svg
index d842ac882f..55b2108f2c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style_hover.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[link_style_hover.py].svg
@@ -19,132 +19,132 @@
font-weight: 700;
}
- .terminal-1004022337-matrix {
+ .terminal-1858108383-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1004022337-title {
+ .terminal-1858108383-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1004022337-r1 { fill: #e0e0e0 }
-.terminal-1004022337-r2 { fill: #c5c8c6 }
-.terminal-1004022337-r3 { fill: #e0e0e0;text-decoration: underline; }
+ .terminal-1858108383-r1 { fill: #e0e0e0 }
+.terminal-1858108383-r2 { fill: #c5c8c6 }
+.terminal-1858108383-r3 { fill: #e0e0e0;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinkHoverStyleApp
+ LinkHoverStyleApp
-
-
-
- Visit the Textualize website.
-Click here for the bell sound.
-You can also click here for the bell sound.
-Exit this application.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Visit the Textualize website.
+Click here for the bell sound.
+You can also click here for the bell sound.
+Exit this application.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[links.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[links.py].svg
index 25c986bd2b..7b02b0580e 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[links.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[links.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-2991011998-matrix {
+ .terminal-2747031590-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2991011998-title {
+ .terminal-2747031590-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2991011998-r1 { fill: #e0e0e0 }
-.terminal-2991011998-r2 { fill: #e0e0e0;text-decoration: underline; }
-.terminal-2991011998-r3 { fill: #c5c8c6 }
-.terminal-2991011998-r4 { fill: #030e19;font-weight: bold;font-style: italic;;text-decoration: underline; }
+ .terminal-2747031590-r1 { fill: #e0e0e0 }
+.terminal-2747031590-r2 { fill: #e0e0e0;text-decoration: underline; }
+.terminal-2747031590-r3 { fill: #c5c8c6 }
+.terminal-2747031590-r4 { fill: #030e19;font-weight: bold;font-style: italic;;text-decoration: underline; }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- LinksApp
+ LinksApp
-
-
-
- Here is a link which you can click!
-
-Here is a link which you can click!
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Here is a link which you can click!
+
+Here is a link which you can click!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin.py].svg
index f91963864d..c08ae9573d 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-2457047141-matrix {
+ .terminal-329385349-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2457047141-title {
+ .terminal-329385349-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2457047141-r1 { fill: #000000 }
-.terminal-2457047141-r2 { fill: #c5c8c6 }
-.terminal-2457047141-r3 { fill: #0000ff }
-.terminal-2457047141-r4 { fill: #ccccff }
+ .terminal-329385349-r1 { fill: #000000 }
+.terminal-329385349-r2 { fill: #c5c8c6 }
+.terminal-329385349-r3 { fill: #0000ff }
+.terminal-329385349-r4 { fill: #ccccff }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MarginApp
+ MarginApp
-
+
-
-
-
-
-
-▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-▎I must not fear.▊
-▎Fear is the mind-killer.▊
-▎Fear is the little-death that brings total obliteration.▊
-▎I will face my fear.▊
-▎I will permit it to pass over me and through me.▊
-▎And when it has gone past, I will turn the inner eye to see ▊
-▎its path.▊
-▎Where the fear has gone there will be nothing. Only I will ▊
-▎remain.▊
-▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
-
-
-
-
-
-
-
+
+
+
+
+
+▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+▎I must not fear.▊
+▎Fear is the mind-killer.▊
+▎Fear is the little-death that brings total obliteration.▊
+▎I will face my fear.▊
+▎I will permit it to pass over me and through me.▊
+▎And when it has gone past, I will turn the inner eye to see ▊
+▎its path.▊
+▎Where the fear has gone there will be nothing. Only I will ▊
+▎remain.▊
+▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin_all.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin_all.py].svg
index b2ed379edb..50b6899977 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin_all.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[margin_all.py].svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-2657279504-matrix {
+ .terminal-42710366-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2657279504-title {
+ .terminal-42710366-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2657279504-r1 { fill: #ffffff }
-.terminal-2657279504-r2 { fill: #e0e0e0 }
-.terminal-2657279504-r3 { fill: #c5c8c6 }
-.terminal-2657279504-r4 { fill: #e7e0e6 }
-.terminal-2657279504-r5 { fill: #eae2e4 }
-.terminal-2657279504-r6 { fill: #ece5e5 }
-.terminal-2657279504-r7 { fill: #eee8e3 }
-.terminal-2657279504-r8 { fill: #e8ede4 }
-.terminal-2657279504-r9 { fill: #e3ede7 }
-.terminal-2657279504-r10 { fill: #e1eceb }
-.terminal-2657279504-r11 { fill: #eeeddf }
+ .terminal-42710366-r1 { fill: #ffffff }
+.terminal-42710366-r2 { fill: #e0e0e0 }
+.terminal-42710366-r3 { fill: #c5c8c6 }
+.terminal-42710366-r4 { fill: #e7e0e6 }
+.terminal-42710366-r5 { fill: #eae2e4 }
+.terminal-42710366-r6 { fill: #ece5e5 }
+.terminal-42710366-r7 { fill: #eee8e3 }
+.terminal-42710366-r8 { fill: #e8ede4 }
+.terminal-42710366-r9 { fill: #e3ede7 }
+.terminal-42710366-r10 { fill: #e1eceb }
+.terminal-42710366-r11 { fill: #eeeddf }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MarginAllApp
+ MarginAllApp
-
-
-
- ╭────────────────╮╭─────────────────╮╭────────────────╮╭─────────────────╮
-││││││││
-││││││││
-││││││││
-│││││margin││margin: 1 │
-│ no margin ││ margin: 1 ││: 1 5 ││1 2 6 │
-││││││││
-││││││││
-││││││││
-││││││││
-╰────────────────╯╰─────────────────╯╰────────────────╯╰─────────────────╯
-
-╭────────────────╮╭─────────────────╮╭────────────────╮╭─────────────────╮
-││││││││
-││││││││
-│││││margin-bottom: 4│││
-││││││││
-│││margin-right: ││││margin-left: 3│
-│││3 │││││
-│ margin-top: 4 │││││││
-││││││││
-││││││││
-││││││││
-╰────────────────╯╰─────────────────╯╰────────────────╯╰─────────────────╯
+
+
+
+ ╭────────────────╮╭─────────────────╮╭────────────────╮╭─────────────────╮
+││││││││
+││││││││
+││││││││
+│││││margin││margin: 1 │
+│no margin││margin: 1││: 1 5││1 2 6│
+││││││││
+││││││││
+││││││││
+││││││││
+╰────────────────╯╰─────────────────╯╰────────────────╯╰─────────────────╯
+
+╭────────────────╮╭─────────────────╮╭────────────────╮╭─────────────────╮
+││││││││
+││││││││
+│││││margin-bottom: 4│││
+││││││││
+│││margin-right: ││││margin-left: 3│
+│││3│││││
+│margin-top: 4│││││││
+││││││││
+││││││││
+││││││││
+╰────────────────╯╰─────────────────╯╰────────────────╯╰─────────────────╯
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_height.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_height.py].svg
index d9af423974..ef85a1d5c3 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_height.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_height.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-2272694599-matrix {
+ .terminal-134391284-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2272694599-title {
+ .terminal-134391284-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2272694599-r1 { fill: #e7e0e6 }
-.terminal-2272694599-r2 { fill: #eae2e4 }
-.terminal-2272694599-r3 { fill: #ece5e5 }
-.terminal-2272694599-r4 { fill: #eee8e3 }
-.terminal-2272694599-r5 { fill: #c5c8c6 }
-.terminal-2272694599-r6 { fill: #e0e0e0 }
+ .terminal-134391284-r1 { fill: #e7e0e6 }
+.terminal-134391284-r2 { fill: #eae2e4 }
+.terminal-134391284-r3 { fill: #ece5e5 }
+.terminal-134391284-r4 { fill: #eee8e3 }
+.terminal-134391284-r5 { fill: #c5c8c6 }
+.terminal-134391284-r6 { fill: #e0e0e0 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MaxHeightApp
+ MaxHeightApp
-
-
-
-
-
-
- max-height: 10w
- max-height: 10
- max-height: 50%
-
-
-
-
-
- max-height: 999
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+max-height: 10w
+max-height: 10
+max-height: 50%
+
+
+
+
+
+max-height: 999
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_width.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_width.py].svg
index 36c26d0c66..99d92ba514 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_width.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[max_width.py].svg
@@ -19,135 +19,135 @@
font-weight: 700;
}
- .terminal-1457845999-matrix {
+ .terminal-3569717307-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1457845999-title {
+ .terminal-3569717307-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1457845999-r1 { fill: #e7e0e6 }
-.terminal-1457845999-r2 { fill: #e0e0e0 }
-.terminal-1457845999-r3 { fill: #c5c8c6 }
-.terminal-1457845999-r4 { fill: #eae2e4 }
-.terminal-1457845999-r5 { fill: #ece5e5 }
-.terminal-1457845999-r6 { fill: #eee8e3 }
+ .terminal-3569717307-r1 { fill: #e7e0e6 }
+.terminal-3569717307-r2 { fill: #e0e0e0 }
+.terminal-3569717307-r3 { fill: #c5c8c6 }
+.terminal-3569717307-r4 { fill: #eae2e4 }
+.terminal-3569717307-r5 { fill: #ece5e5 }
+.terminal-3569717307-r6 { fill: #eee8e3 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MaxWidthApp
+ MaxWidthApp
-
-
-
-
-
-max-width:
-50h
-
-
-
-
- max-width: 999
-
-
-
-
-
- max-width: 50%
-
-
-
-
-
- max-width: 30
-
-
+
+
+
+
+
+max-width:
+50h
+
+
+
+
+max-width: 999
+
+
+
+
+
+max-width: 50%
+
+
+
+
+
+max-width: 30
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_height.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_height.py].svg
index 9e8396e923..3f785e68a1 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_height.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_height.py].svg
@@ -19,137 +19,137 @@
font-weight: 700;
}
- .terminal-434756152-matrix {
+ .terminal-3880771579-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-434756152-title {
+ .terminal-3880771579-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-434756152-r1 { fill: #e7e0e6 }
-.terminal-434756152-r2 { fill: #eae2e4 }
-.terminal-434756152-r3 { fill: #ece5e5 }
-.terminal-434756152-r4 { fill: #eee8e3 }
-.terminal-434756152-r5 { fill: #121212 }
-.terminal-434756152-r6 { fill: #c5c8c6 }
-.terminal-434756152-r7 { fill: #e0e0e0 }
-.terminal-434756152-r8 { fill: #000000 }
+ .terminal-3880771579-r1 { fill: #e7e0e6 }
+.terminal-3880771579-r2 { fill: #eae2e4 }
+.terminal-3880771579-r3 { fill: #ece5e5 }
+.terminal-3880771579-r4 { fill: #eee8e3 }
+.terminal-3880771579-r5 { fill: #121212 }
+.terminal-3880771579-r6 { fill: #c5c8c6 }
+.terminal-3880771579-r7 { fill: #e0e0e0 }
+.terminal-3880771579-r8 { fill: #000000 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MinHeightApp
+ MinHeightApp
-
-
-
-
-
-
-
-
- min-height: 25%
-
-
- min-height: 75%
-
-
-
-
-
- min-height: 30
- min-height: 40w
-
-
-▃▃
-
-
-
-
+
+
+
+
+
+
+
+
+min-height: 25%
+
+
+min-height: 75%
+
+
+
+
+
+min-height: 30
+min-height: 40w
+
+
+▃▃
+
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_width.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_width.py].svg
index 96094a58dc..fe58b746ff 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_width.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[min_width.py].svg
@@ -19,136 +19,136 @@
font-weight: 700;
}
- .terminal-2061132852-matrix {
+ .terminal-1438449783-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2061132852-title {
+ .terminal-1438449783-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2061132852-r1 { fill: #e7e0e6 }
-.terminal-2061132852-r2 { fill: #e0e0e0 }
-.terminal-2061132852-r3 { fill: #c5c8c6 }
-.terminal-2061132852-r4 { fill: #eae2e4 }
-.terminal-2061132852-r5 { fill: #ece5e5 }
-.terminal-2061132852-r6 { fill: #eee8e3 }
-.terminal-2061132852-r7 { fill: #121212 }
+ .terminal-1438449783-r1 { fill: #e7e0e6 }
+.terminal-1438449783-r2 { fill: #e0e0e0 }
+.terminal-1438449783-r3 { fill: #c5c8c6 }
+.terminal-1438449783-r4 { fill: #eae2e4 }
+.terminal-1438449783-r5 { fill: #ece5e5 }
+.terminal-1438449783-r6 { fill: #eee8e3 }
+.terminal-1438449783-r7 { fill: #121212 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- MinWidthApp
+ MinWidthApp
-
-
-
-
-
- min-width: 25%
-
-
-
-
- min-width: 75%
-
-
-
-
-
- min-width: 100
-
-
-
-
-
- min-width: 400h
-
-
-
+
+
+
+
+
+min-width: 25%
+
+
+
+
+min-width: 75%
+
+
+
+
+
+min-width: 100
+
+
+
+
+
+min-width: 400h
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[offset.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[offset.py].svg
index 715d71172f..41bf4b6eb7 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[offset.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[offset.py].svg
@@ -19,134 +19,134 @@
font-weight: 700;
}
- .terminal-2027722884-matrix {
+ .terminal-1133023764-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2027722884-title {
+ .terminal-1133023764-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2027722884-r1 { fill: #000000 }
-.terminal-2027722884-r2 { fill: #0000ff }
-.terminal-2027722884-r3 { fill: #c5c8c6 }
-.terminal-2027722884-r4 { fill: #ff0000 }
-.terminal-2027722884-r5 { fill: #008000 }
+ .terminal-1133023764-r1 { fill: #000000 }
+.terminal-1133023764-r2 { fill: #0000ff }
+.terminal-1133023764-r3 { fill: #c5c8c6 }
+.terminal-1133023764-r4 { fill: #ff0000 }
+.terminal-1133023764-r5 { fill: #008000 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- OffsetApp
+ OffsetApp
-
-
-
- ▌▐
-▌ Chani (offset 0 ▐
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜▌ -3) ▐
-▌▐▌▐
-▌▐▌▐
-▌▐▌▐
-▌Paul (offset 8 2) ▐▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-▌▐
-▌▐
-▌▐
-▌▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌▐
-▌▐
-▌▐
-▌Duncan (offset 4 ▐
-▌10) ▐
-▌▐
-▌▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-
-
-
+
+
+
+ ▌▐
+▌Chani (offset 0 ▐
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜▌-3)▐
+▌▐▌▐
+▌▐▌▐
+▌▐▌▐
+▌Paul (offset 8 2)▐▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+▌▐
+▌▐
+▌▐
+▌▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▌▐
+▌▐
+▌▐
+▌Duncan (offset 4 ▐
+▌10)▐
+▌▐
+▌▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+
+
+
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[opacity.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[opacity.py].svg
index be4a9ceb80..248eaefd4c 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[opacity.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[opacity.py].svg
@@ -19,141 +19,141 @@
font-weight: 700;
}
- .terminal-2125218323-matrix {
+ .terminal-795465153-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-2125218323-title {
+ .terminal-795465153-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-2125218323-r1 { fill: #000000 }
-.terminal-2125218323-r2 { fill: #c5c8c6 }
-.terminal-2125218323-r3 { fill: #000000;font-weight: bold }
-.terminal-2125218323-r4 { fill: #01090f }
-.terminal-2125218323-r5 { fill: #383838;font-weight: bold }
-.terminal-2125218323-r6 { fill: #07243f }
-.terminal-2125218323-r7 { fill: #707070;font-weight: bold }
-.terminal-2125218323-r8 { fill: #10518f }
-.terminal-2125218323-r9 { fill: #a8a8a8;font-weight: bold }
-.terminal-2125218323-r10 { fill: #1e90ff }
-.terminal-2125218323-r11 { fill: #e0e0e0;font-weight: bold }
+ .terminal-795465153-r1 { fill: #000000 }
+.terminal-795465153-r2 { fill: #c5c8c6 }
+.terminal-795465153-r3 { fill: #000000;font-weight: bold }
+.terminal-795465153-r4 { fill: #01090f }
+.terminal-795465153-r5 { fill: #383838;font-weight: bold }
+.terminal-795465153-r6 { fill: #07243f }
+.terminal-795465153-r7 { fill: #707070;font-weight: bold }
+.terminal-795465153-r8 { fill: #10518f }
+.terminal-795465153-r9 { fill: #a8a8a8;font-weight: bold }
+.terminal-795465153-r10 { fill: #1e90ff }
+.terminal-795465153-r11 { fill: #e0e0e0;font-weight: bold }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- OpacityApp
+ OpacityApp
-
-
-
- ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▌ opacity: 0% ▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▌▐
-▌ opacity: 25% ▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▌▐
-▌ opacity: 50% ▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▌▐
-▌ opacity: 75% ▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
-▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
-▌▐
-▌ opacity: 100% ▐
-▌▐
-▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+
+
+
+ ▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▌opacity: 0%▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▌▐
+▌opacity: 25%▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▌▐
+▌opacity: 50%▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▌▐
+▌opacity: 75%▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
+▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜
+▌▐
+▌opacity: 100%▐
+▌▐
+▙▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▟
diff --git a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[outline.py].svg b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[outline.py].svg
index 87d4c2fef0..a4518a7cad 100644
--- a/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[outline.py].svg
+++ b/tests/snapshot_tests/__snapshots__/test_snapshots/test_css_property[outline.py].svg
@@ -19,133 +19,133 @@
font-weight: 700;
}
- .terminal-3848262322-matrix {
+ .terminal-3118814322-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-3848262322-title {
+ .terminal-3118814322-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-3848262322-r1 { fill: #000000 }
-.terminal-3848262322-r2 { fill: #c5c8c6 }
-.terminal-3848262322-r3 { fill: #008000 }
-.terminal-3848262322-r4 { fill: #cce5cc }
+ .terminal-3118814322-r1 { fill: #000000 }
+.terminal-3118814322-r2 { fill: #c5c8c6 }
+.terminal-3118814322-r3 { fill: #008000 }
+.terminal-3118814322-r4 { fill: #cce5cc }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+