diff --git a/.gitignore b/.gitignore
index 3e4ab5a00ea5..be2dbce587e6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -124,7 +124,7 @@ build-cache/
######################
## Enso-Development ##
######################
-/dist
+dist/
distribution/lib/Standard/Examples/*/data/scratch_file
distribution/lib/Standard/Examples/*/data/image.png
distribution/editions
diff --git a/.idea/runConfigurations/clippy__wasm__linux_.xml b/.idea/runConfigurations/clippy-all-wasm-linux.xml
similarity index 76%
rename from .idea/runConfigurations/clippy__wasm__linux_.xml
rename to .idea/runConfigurations/clippy-all-wasm-linux.xml
index e4f0f05f5e1f..c2ebbde49000 100644
--- a/.idea/runConfigurations/clippy__wasm__linux_.xml
+++ b/.idea/runConfigurations/clippy-all-wasm-linux.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy__wasm__macos_.xml b/.idea/runConfigurations/clippy-all-wasm-macos.xml
similarity index 76%
rename from .idea/runConfigurations/clippy__wasm__macos_.xml
rename to .idea/runConfigurations/clippy-all-wasm-macos.xml
index be831a72f001..8c77c2852253 100644
--- a/.idea/runConfigurations/clippy__wasm__macos_.xml
+++ b/.idea/runConfigurations/clippy-all-wasm-macos.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy__wasm__windows_.xml b/.idea/runConfigurations/clippy-all-wasm-windows.xml
similarity index 76%
rename from .idea/runConfigurations/clippy__wasm__windows_.xml
rename to .idea/runConfigurations/clippy-all-wasm-windows.xml
index c8496c2543fc..f10ca2f44beb 100644
--- a/.idea/runConfigurations/clippy__wasm__windows_.xml
+++ b/.idea/runConfigurations/clippy-all-wasm-windows.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy__wasm_.xml b/.idea/runConfigurations/clippy-all-wasm.xml
similarity index 76%
rename from .idea/runConfigurations/clippy__wasm_.xml
rename to .idea/runConfigurations/clippy-all-wasm.xml
index 18cb6a19561c..e6bd5b6b9a1c 100644
--- a/.idea/runConfigurations/clippy__wasm_.xml
+++ b/.idea/runConfigurations/clippy-all-wasm.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-linux.xml b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-linux.xml
new file mode 100644
index 000000000000..b3d9a029ce70
--- /dev/null
+++ b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-linux.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-macos.xml b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-macos.xml
new file mode 100644
index 000000000000..96a3ec90c3f2
--- /dev/null
+++ b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-macos.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-windows.xml b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-windows.xml
new file mode 100644
index 000000000000..9a0d398e592f
--- /dev/null
+++ b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm-windows.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm.xml b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm.xml
new file mode 100644
index 000000000000..9a0b6a42b721
--- /dev/null
+++ b/.idea/runConfigurations/clippy-ensogl-example-focus-management-wasm.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test__native_.xml b/.idea/runConfigurations/doc-test-all-native.xml
similarity index 74%
rename from .idea/runConfigurations/doc_test__native_.xml
rename to .idea/runConfigurations/doc-test-all-native.xml
index 7df5b9c687ca..893818c20d23 100644
--- a/.idea/runConfigurations/doc_test__native_.xml
+++ b/.idea/runConfigurations/doc-test-all-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_build_scripts__native_.xml b/.idea/runConfigurations/doc-test-build-scripts-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_build_scripts__native_.xml
rename to .idea/runConfigurations/doc-test-build-scripts-native.xml
index 013ba8c8c3b9..2e1613698f5a 100644
--- a/.idea/runConfigurations/doc_test_build_scripts__native_.xml
+++ b/.idea/runConfigurations/doc-test-build-scripts-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_config_reader__native_.xml b/.idea/runConfigurations/doc-test-config-reader-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_config_reader__native_.xml
rename to .idea/runConfigurations/doc-test-config-reader-native.xml
index b91aff188709..b75157a58c79 100644
--- a/.idea/runConfigurations/doc_test_config_reader__native_.xml
+++ b/.idea/runConfigurations/doc-test-config-reader-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_debug_scene_component_list_panel_view__native_.xml b/.idea/runConfigurations/doc-test-debug-scene-component-list-panel-view-native.xml
similarity index 69%
rename from .idea/runConfigurations/doc_test_debug_scene_component_list_panel_view__native_.xml
rename to .idea/runConfigurations/doc-test-debug-scene-component-list-panel-view-native.xml
index 10f83625ffad..c33f35e017a5 100644
--- a/.idea/runConfigurations/doc_test_debug_scene_component_list_panel_view__native_.xml
+++ b/.idea/runConfigurations/doc-test-debug-scene-component-list-panel-view-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_debug_scene_icons__native_.xml b/.idea/runConfigurations/doc-test-debug-scene-icons-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_debug_scene_icons__native_.xml
rename to .idea/runConfigurations/doc-test-debug-scene-icons-native.xml
index bbcee8465935..62fe1d22efa8 100644
--- a/.idea/runConfigurations/doc_test_debug_scene_icons__native_.xml
+++ b/.idea/runConfigurations/doc-test-debug-scene-icons-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_debug_scene_interface__native_.xml b/.idea/runConfigurations/doc-test-debug-scene-interface-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_debug_scene_interface__native_.xml
rename to .idea/runConfigurations/doc-test-debug-scene-interface-native.xml
index 3d976054e784..cfc19f8625a0 100644
--- a/.idea/runConfigurations/doc_test_debug_scene_interface__native_.xml
+++ b/.idea/runConfigurations/doc-test-debug-scene-interface-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_double_representation__native_.xml b/.idea/runConfigurations/doc-test-double-representation-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_double_representation__native_.xml
rename to .idea/runConfigurations/doc-test-double-representation-native.xml
index d7c6bff94466..49d44b34ba68 100644
--- a/.idea/runConfigurations/doc_test_double_representation__native_.xml
+++ b/.idea/runConfigurations/doc-test-double-representation-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_engine_model__native_.xml b/.idea/runConfigurations/doc-test-engine-model-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_engine_model__native_.xml
rename to .idea/runConfigurations/doc-test-engine-model-native.xml
index b588ef1486b0..1db727552579 100644
--- a/.idea/runConfigurations/doc_test_engine_model__native_.xml
+++ b/.idea/runConfigurations/doc-test-engine-model-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_automata__native_.xml b/.idea/runConfigurations/doc-test-enso-automata-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_automata__native_.xml
rename to .idea/runConfigurations/doc-test-enso-automata-native.xml
index 5a2f144dfb8e..e0b4462e1470 100644
--- a/.idea/runConfigurations/doc_test_enso_automata__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-automata-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_build_cli__native_.xml b/.idea/runConfigurations/doc-test-enso-build-cli-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_build_cli__native_.xml
rename to .idea/runConfigurations/doc-test-enso-build-cli-native.xml
index a1ced1cc4aa8..e8416e9f9d1b 100644
--- a/.idea/runConfigurations/doc_test_enso_build_cli__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-build-cli-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_build_utilities__native_.xml b/.idea/runConfigurations/doc-test-enso-build-utilities-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_enso_build_utilities__native_.xml
rename to .idea/runConfigurations/doc-test-enso-build-utilities-native.xml
index e2eb8d11b9bc..130672538a04 100644
--- a/.idea/runConfigurations/doc_test_enso_build_utilities__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-build-utilities-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_data_structures__native_.xml b/.idea/runConfigurations/doc-test-enso-data-structures-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_data_structures__native_.xml
rename to .idea/runConfigurations/doc-test-enso-data-structures-native.xml
index 900adceed586..09df8e26addc 100644
--- a/.idea/runConfigurations/doc_test_enso_data_structures__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-data-structures-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_formatter__native_.xml b/.idea/runConfigurations/doc-test-enso-formatter-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_formatter__native_.xml
rename to .idea/runConfigurations/doc-test-enso-formatter-native.xml
index 0be7e926b55c..a50fbddbe5d5 100644
--- a/.idea/runConfigurations/doc_test_enso_formatter__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-formatter-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_frp__native_.xml b/.idea/runConfigurations/doc-test-enso-frp-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_frp__native_.xml
rename to .idea/runConfigurations/doc-test-enso-frp-native.xml
index 2cb16f02b375..96c2545a692e 100644
--- a/.idea/runConfigurations/doc_test_enso_frp__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-frp-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_gui__native_.xml b/.idea/runConfigurations/doc-test-enso-gui-native.xml
similarity index 74%
rename from .idea/runConfigurations/doc_test_enso_gui__native_.xml
rename to .idea/runConfigurations/doc-test-enso-gui-native.xml
index 05ec9f1e9285..6e354d0950db 100644
--- a/.idea/runConfigurations/doc_test_enso_gui__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-gui-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_macro_utils__native_.xml b/.idea/runConfigurations/doc-test-enso-macro-utils-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_macro_utils__native_.xml
rename to .idea/runConfigurations/doc-test-enso-macro-utils-native.xml
index 10d7945fa7d0..998bcec9b673 100644
--- a/.idea/runConfigurations/doc_test_enso_macro_utils__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-macro-utils-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_metamodel__native_.xml b/.idea/runConfigurations/doc-test-enso-metamodel-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_metamodel__native_.xml
rename to .idea/runConfigurations/doc-test-enso-metamodel-native.xml
index 8ae907bf2236..6eae7f46869f 100644
--- a/.idea/runConfigurations/doc_test_enso_metamodel__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-metamodel-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_parser_generate_java__native_.xml b/.idea/runConfigurations/doc-test-enso-parser-generate-java-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_parser_generate_java__native_.xml
rename to .idea/runConfigurations/doc-test-enso-parser-generate-java-native.xml
index 4a559c685a3c..80457690f142 100644
--- a/.idea/runConfigurations/doc_test_enso_parser_generate_java__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-parser-generate-java-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_prelude__native_.xml b/.idea/runConfigurations/doc-test-enso-prelude-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_prelude__native_.xml
rename to .idea/runConfigurations/doc-test-enso-prelude-native.xml
index dbe1e13f9c87..1280860b29f2 100644
--- a/.idea/runConfigurations/doc_test_enso_prelude__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-prelude-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_profiler_data__native_.xml b/.idea/runConfigurations/doc-test-enso-profiler-data-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_profiler_data__native_.xml
rename to .idea/runConfigurations/doc-test-enso-profiler-data-native.xml
index d2e1eb935c87..e9cec75edd69 100644
--- a/.idea/runConfigurations/doc_test_enso_profiler_data__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-profiler-data-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_profiler_demo_data__native_.xml b/.idea/runConfigurations/doc-test-enso-profiler-demo-data-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_enso_profiler_demo_data__native_.xml
rename to .idea/runConfigurations/doc-test-enso-profiler-demo-data-native.xml
index 3003753768e8..b07491b338f8 100644
--- a/.idea/runConfigurations/doc_test_enso_profiler_demo_data__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-profiler-demo-data-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_reflect_macros__native_.xml b/.idea/runConfigurations/doc-test-enso-reflect-macros-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_reflect_macros__native_.xml
rename to .idea/runConfigurations/doc-test-enso-reflect-macros-native.xml
index 53e5f079a722..a4323b291b20 100644
--- a/.idea/runConfigurations/doc_test_enso_reflect_macros__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-reflect-macros-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_reflect__native_.xml b/.idea/runConfigurations/doc-test-enso-reflect-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_reflect__native_.xml
rename to .idea/runConfigurations/doc-test-enso-reflect-native.xml
index 26c385f6db13..7a9a6804903d 100644
--- a/.idea/runConfigurations/doc_test_enso_reflect__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-reflect-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_shapely_macros__native_.xml b/.idea/runConfigurations/doc-test-enso-shapely-macros-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_shapely_macros__native_.xml
rename to .idea/runConfigurations/doc-test-enso-shapely-macros-native.xml
index c7006c3dc768..d977e5f5972b 100644
--- a/.idea/runConfigurations/doc_test_enso_shapely_macros__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-shapely-macros-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_shortcuts__native_.xml b/.idea/runConfigurations/doc-test-enso-shortcuts-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_enso_shortcuts__native_.xml
rename to .idea/runConfigurations/doc-test-enso-shortcuts-native.xml
index 4d757c9d7aae..d2d037d1e6e8 100644
--- a/.idea/runConfigurations/doc_test_enso_shortcuts__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-shortcuts-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_types__native_.xml b/.idea/runConfigurations/doc-test-enso-types-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_types__native_.xml
rename to .idea/runConfigurations/doc-test-enso-types-native.xml
index e0962151d56b..63ce2ab30aa3 100644
--- a/.idea/runConfigurations/doc_test_enso_types__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-types-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_enso_web__native_.xml b/.idea/runConfigurations/doc-test-enso-web-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_enso_web__native_.xml
rename to .idea/runConfigurations/doc-test-enso-web-native.xml
index 2fea8fb60e0e..b89cca7b31a1 100644
--- a/.idea/runConfigurations/doc_test_enso_web__native_.xml
+++ b/.idea/runConfigurations/doc-test-enso-web-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_derive_theme__native_.xml b/.idea/runConfigurations/doc-test-ensogl-derive-theme-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_derive_theme__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-derive-theme-native.xml
index 380947072efd..07e9130844a5 100644
--- a/.idea/runConfigurations/doc_test_ensogl_derive_theme__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-derive-theme-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_drop_manager__native_.xml b/.idea/runConfigurations/doc-test-ensogl-drop-manager-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_drop_manager__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-drop-manager-native.xml
index bcc6c1353f40..aab2f2c9945b 100644
--- a/.idea/runConfigurations/doc_test_ensogl_drop_manager__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-drop-manager-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_animation__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-animation-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_animation__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-animation-native.xml
index 50e160f65c2c..17d3fbbbc967 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_animation__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-animation-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_complex_shape_system__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-complex-shape-system-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_example_complex_shape_system__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-complex-shape-system-native.xml
index 1380d2bbf658..e3f2413b3f6e 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_complex_shape_system__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-complex-shape-system-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_custom_shape_system__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-custom-shape-system-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_example_custom_shape_system__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-custom-shape-system-native.xml
index 533400ef6665..9777fa07c440 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_custom_shape_system__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-custom-shape-system-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_dom_symbols__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-dom-symbols-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_dom_symbols__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-dom-symbols-native.xml
index 69f6b7dcf77a..5059904702cf 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_dom_symbols__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-dom-symbols-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_easing_animator__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-easing-animator-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_easing_animator__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-easing-animator-native.xml
index 2dfd49b4cc85..654677987e94 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_easing_animator__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-easing-animator-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc-test-ensogl-example-focus-management-native.xml b/.idea/runConfigurations/doc-test-ensogl-example-focus-management-native.xml
new file mode 100644
index 000000000000..1925188da464
--- /dev/null
+++ b/.idea/runConfigurations/doc-test-ensogl-example-focus-management-native.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_grid_view__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-grid-view-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_grid_view__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-grid-view-native.xml
index 840c8cb3adef..fb992621fe42 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_grid_view__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-grid-view-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_mouse_events__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-mouse-events-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_mouse_events__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-mouse-events-native.xml
index fd15245b9d76..60c432017374 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_mouse_events__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-mouse-events-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_render_profile_flamegraph__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-render-profile-flamegraph-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_example_render_profile_flamegraph__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-render-profile-flamegraph-native.xml
index 7989047670e2..58014feeec68 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_render_profile_flamegraph__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-render-profile-flamegraph-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_slider__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-slider-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_ensogl_example_slider__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-slider-native.xml
index bc5098bf0203..84fbe5a85f16 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_slider__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-slider-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_sprite_system_benchmark__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-sprite-system-benchmark-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_example_sprite_system_benchmark__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-sprite-system-benchmark-native.xml
index a6aff066f606..8fb4fae91e1d 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_sprite_system_benchmark__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-sprite-system-benchmark-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_sprite_system__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-sprite-system-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_sprite_system__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-sprite-system-native.xml
index e1fd461db53a..d3323e436656 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_sprite_system__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-sprite-system-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_example_text_area__native_.xml b/.idea/runConfigurations/doc-test-ensogl-example-text-area-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_example_text_area__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-example-text-area-native.xml
index 1eb21a77ede5..4b95942e5bdb 100644
--- a/.idea/runConfigurations/doc_test_ensogl_example_text_area__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-example-text-area-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_file_browser__native_.xml b/.idea/runConfigurations/doc-test-ensogl-file-browser-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_file_browser__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-file-browser-native.xml
index c7c14efec934..6cb10bfcae24 100644
--- a/.idea/runConfigurations/doc_test_ensogl_file_browser__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-file-browser-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_gui_component__native_.xml b/.idea/runConfigurations/doc-test-ensogl-gui-component-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_gui_component__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-gui-component-native.xml
index 5996975fc665..e8e21230a2f2 100644
--- a/.idea/runConfigurations/doc_test_ensogl_gui_component__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-gui-component-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_hardcoded_theme__native_.xml b/.idea/runConfigurations/doc-test-ensogl-hardcoded-theme-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_hardcoded_theme__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-hardcoded-theme-native.xml
index c448bf426bd6..188d0badb555 100644
--- a/.idea/runConfigurations/doc_test_ensogl_hardcoded_theme__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-hardcoded-theme-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_label__native_.xml b/.idea/runConfigurations/doc-test-ensogl-label-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_label__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-label-native.xml
index 5cca70367535..11bb2734ed6b 100644
--- a/.idea/runConfigurations/doc_test_ensogl_label__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-label-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_scroll_area__native_.xml b/.idea/runConfigurations/doc-test-ensogl-scroll-area-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ensogl_scroll_area__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-scroll-area-native.xml
index cdd2d852dd28..1130a7fbd1f8 100644
--- a/.idea/runConfigurations/doc_test_ensogl_scroll_area__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-scroll-area-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_sequence_diagram__native_.xml b/.idea/runConfigurations/doc-test-ensogl-sequence-diagram-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_sequence_diagram__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-sequence-diagram-native.xml
index 4151fa73a37b..4f152097ab7d 100644
--- a/.idea/runConfigurations/doc_test_ensogl_sequence_diagram__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-sequence-diagram-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_text_embedded_fonts__native_.xml b/.idea/runConfigurations/doc-test-ensogl-text-embedded-fonts-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_text_embedded_fonts__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-text-embedded-fonts-native.xml
index 1faeedc20c72..a9435ca97155 100644
--- a/.idea/runConfigurations/doc_test_ensogl_text_embedded_fonts__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-text-embedded-fonts-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ensogl_text_font_family__native_.xml b/.idea/runConfigurations/doc-test-ensogl-text-font-family-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ensogl_text_font_family__native_.xml
rename to .idea/runConfigurations/doc-test-ensogl-text-font-family-native.xml
index 66c168c24d30..51c3f0394fc4 100644
--- a/.idea/runConfigurations/doc_test_ensogl_text_font_family__native_.xml
+++ b/.idea/runConfigurations/doc-test-ensogl-text-font-family-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_fuzzly__native_.xml b/.idea/runConfigurations/doc-test-fuzzly-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_fuzzly__native_.xml
rename to .idea/runConfigurations/doc-test-fuzzly-native.xml
index ed2831515d1e..cb99a5cd727b 100644
--- a/.idea/runConfigurations/doc_test_fuzzly__native_.xml
+++ b/.idea/runConfigurations/doc-test-fuzzly-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ide_ci__native_.xml b/.idea/runConfigurations/doc-test-ide-ci-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_ide_ci__native_.xml
rename to .idea/runConfigurations/doc-test-ide-ci-native.xml
index d37c5e32b528..09482bd5d1cb 100644
--- a/.idea/runConfigurations/doc_test_ide_ci__native_.xml
+++ b/.idea/runConfigurations/doc-test-ide-ci-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ide_view_component_browser__native_.xml b/.idea/runConfigurations/doc-test-ide-view-component-browser-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_ide_view_component_browser__native_.xml
rename to .idea/runConfigurations/doc-test-ide-view-component-browser-native.xml
index ab69ca5e9a2d..4dcf2115d8b9 100644
--- a/.idea/runConfigurations/doc_test_ide_view_component_browser__native_.xml
+++ b/.idea/runConfigurations/doc-test-ide-view-component-browser-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ide_view_component_list_panel_breadcrumbs__native_.xml b/.idea/runConfigurations/doc-test-ide-view-component-list-panel-breadcrumbs-native.xml
similarity index 68%
rename from .idea/runConfigurations/doc_test_ide_view_component_list_panel_breadcrumbs__native_.xml
rename to .idea/runConfigurations/doc-test-ide-view-component-list-panel-breadcrumbs-native.xml
index 3b07bdf0eac5..45998d8bbcdd 100644
--- a/.idea/runConfigurations/doc_test_ide_view_component_list_panel_breadcrumbs__native_.xml
+++ b/.idea/runConfigurations/doc-test-ide-view-component-list-panel-breadcrumbs-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ide_view_graph_editor__native_.xml b/.idea/runConfigurations/doc-test-ide-view-graph-editor-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_ide_view_graph_editor__native_.xml
rename to .idea/runConfigurations/doc-test-ide-view-graph-editor-native.xml
index 732d6108969c..aaf89b2d705b 100644
--- a/.idea/runConfigurations/doc_test_ide_view_graph_editor__native_.xml
+++ b/.idea/runConfigurations/doc-test-ide-view-graph-editor-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_ide_view__native_.xml b/.idea/runConfigurations/doc-test-ide-view-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_ide_view__native_.xml
rename to .idea/runConfigurations/doc-test-ide-view-native.xml
index 3d78fe7b3a92..24154f824353 100644
--- a/.idea/runConfigurations/doc_test_ide_view__native_.xml
+++ b/.idea/runConfigurations/doc-test-ide-view-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_intellij_run_config_gen__native_.xml b/.idea/runConfigurations/doc-test-intellij-run-config-gen-native.xml
similarity index 71%
rename from .idea/runConfigurations/doc_test_intellij_run_config_gen__native_.xml
rename to .idea/runConfigurations/doc-test-intellij-run-config-gen-native.xml
index 083d276eadd9..e45252ecaee1 100644
--- a/.idea/runConfigurations/doc_test_intellij_run_config_gen__native_.xml
+++ b/.idea/runConfigurations/doc-test-intellij-run-config-gen-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_json_rpc__native_.xml b/.idea/runConfigurations/doc-test-json-rpc-native.xml
similarity index 73%
rename from .idea/runConfigurations/doc_test_json_rpc__native_.xml
rename to .idea/runConfigurations/doc-test-json-rpc-native.xml
index 0121e057699e..76ad4dff676d 100644
--- a/.idea/runConfigurations/doc_test_json_rpc__native_.xml
+++ b/.idea/runConfigurations/doc-test-json-rpc-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_logstat__native_.xml b/.idea/runConfigurations/doc-test-logstat-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_logstat__native_.xml
rename to .idea/runConfigurations/doc-test-logstat-native.xml
index a61e570b0481..c098cbd7090c 100644
--- a/.idea/runConfigurations/doc_test_logstat__native_.xml
+++ b/.idea/runConfigurations/doc-test-logstat-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/doc_test_span_tree__native_.xml b/.idea/runConfigurations/doc-test-span-tree-native.xml
similarity index 72%
rename from .idea/runConfigurations/doc_test_span_tree__native_.xml
rename to .idea/runConfigurations/doc-test-span-tree-native.xml
index db1eeadf84b0..86a98d5a764e 100644
--- a/.idea/runConfigurations/doc_test_span_tree__native_.xml
+++ b/.idea/runConfigurations/doc-test-span-tree-native.xml
@@ -1,5 +1,12 @@
-
-
+
+
+
@@ -16,4 +23,5 @@
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations/test-ensogl-example-focus-management-native.xml b/.idea/runConfigurations/test-ensogl-example-focus-management-native.xml
new file mode 100644
index 000000000000..d7e64825128b
--- /dev/null
+++ b/.idea/runConfigurations/test-ensogl-example-focus-management-native.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd39f830e73e..95625b25784c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -92,6 +92,10 @@
- [Text rendering quality improvements][3855]. Glyphs are now hinted in a better
way. Also, additional fine-tuning is performed per font and per host operating
system.
+- [Display objects can now emit and receive events in the same style as
+ JavaScript DOM events][3863]. The events system implements very similar
+ behavior to the one described here:
+ https://javascript.info/bubbling-and-capturing.
#### Enso Standard Library
@@ -375,6 +379,7 @@
[3855]: https://github.com/enso-org/enso/pull/3855
[3836]: https://github.com/enso-org/enso/pull/3836
[3782]: https://github.com/enso-org/enso/pull/3782
+[3863]: https://github.com/enso-org/enso/pull/3863
#### Enso Compiler
diff --git a/Cargo.lock b/Cargo.lock
index 548c7a8c30bb..5d8d52c5a3b4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2052,7 +2052,6 @@ dependencies = [
"nalgebra 0.26.2",
"percent-encoding 2.1.0",
"unicode-segmentation",
- "unidecode",
"wasm-bindgen",
"web-sys",
]
@@ -2623,6 +2622,14 @@ dependencies = [
"web-sys",
]
+[[package]]
+name = "ensogl-example-focus-management"
+version = "0.1.0"
+dependencies = [
+ "ensogl-core",
+ "wasm-bindgen",
+]
+
[[package]]
name = "ensogl-example-grid-view"
version = "0.1.0"
@@ -2770,6 +2777,7 @@ dependencies = [
"ensogl-example-dom-symbols",
"ensogl-example-drop-manager",
"ensogl-example-easing-animator",
+ "ensogl-example-focus-management",
"ensogl-example-grid-view",
"ensogl-example-list-view",
"ensogl-example-mouse-events",
@@ -7166,12 +7174,6 @@ version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
-[[package]]
-name = "unidecode"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "402bb19d8e03f1d1a7450e2bd613980869438e0666331be3e073089124aa1adc"
-
[[package]]
name = "unreachable"
version = "1.0.0"
diff --git a/app/gui/view/component-browser/component-list-panel/grid/src/lib.rs b/app/gui/view/component-browser/component-list-panel/grid/src/lib.rs
index a0c6c891ff42..0a62e66ae8f5 100644
--- a/app/gui/view/component-browser/component-list-panel/grid/src/lib.rs
+++ b/app/gui/view/component-browser/component-list-panel/grid/src/lib.rs
@@ -723,9 +723,9 @@ impl component::Frp for Frp {
// === Focus propagation ===
- grid.focus <+ input.focus;
- grid.defocus <+ input.defocus;
- grid.set_focus <+ input.set_focus;
+ grid.deprecated_focus <+ input.deprecated_focus;
+ grid.deprecated_defocus <+ input.deprecated_defocus;
+ grid.deprecated_set_focus <+ input.deprecated_set_focus;
}
// Set the proper number of columns so we can set column widths.
diff --git a/app/gui/view/component-browser/component-list-panel/src/lib.rs b/app/gui/view/component-browser/component-list-panel/src/lib.rs
index 6e2b20c92b0d..447c97d794a2 100644
--- a/app/gui/view/component-browser/component-list-panel/src/lib.rs
+++ b/app/gui/view/component-browser/component-list-panel/src/lib.rs
@@ -382,7 +382,7 @@ impl component::Frp for Frp {
// TODO[ib] Temporary solution for focus, we grab keyboard events if the
// component browser is visible. The proper implementation is tracked in
// https://www.pivotaltracker.com/story/show/180872763
- model.grid.set_focus <+ is_visible;
+ model.grid.deprecated_set_focus <+ is_visible;
on_hover <- is_hovered.on_true();
on_hover_end <- is_hovered.on_false();
diff --git a/app/gui/view/graph-editor/src/component/breadcrumbs/project_name.rs b/app/gui/view/graph-editor/src/component/breadcrumbs/project_name.rs
index 32d46550b434..12f7d5f2b663 100644
--- a/app/gui/view/graph-editor/src/component/breadcrumbs/project_name.rs
+++ b/app/gui/view/graph-editor/src/component/breadcrumbs/project_name.rs
@@ -278,7 +278,7 @@ impl ProjectName {
edit_click <- mouse_down.gate(&frp.ide_text_edit_mode);
start_editing <- any(edit_click,frp.input.start_editing);
eval_ start_editing ({
- text.set_focus(true);
+ text.deprecated_set_focus(true);
text.set_cursor_at_mouse_position()
});
frp.source.edit_mode <+ start_editing.to_true();
@@ -317,7 +317,7 @@ impl ProjectName {
set_inactive <- any(&frp.deselect,&on_commit);
eval_ set_inactive ([text,animations]{
- text.set_focus(false);
+ text.deprecated_set_focus(false);
text.remove_all_cursors();
animations.color.set_target_value(deselected_color);
});
diff --git a/app/gui/view/graph-editor/src/component/node/input/area.rs b/app/gui/view/graph-editor/src/component/node/input/area.rs
index 8faaf3453007..f4ce7d54381b 100644
--- a/app/gui/view/graph-editor/src/component/node/input/area.rs
+++ b/app/gui/view/graph-editor/src/component/node/input/area.rs
@@ -753,7 +753,7 @@ impl Area {
// === Cursor setup ===
eval frp.input.set_edit_mode ([model](edit_mode) {
- model.label.set_focus(edit_mode);
+ model.label.deprecated_set_focus(edit_mode);
if *edit_mode {
// Reset the code to hide non-connected port names.
model.label.set_content(model.expression.borrow().code.clone());
diff --git a/app/gui/view/src/code_editor.rs b/app/gui/view/src/code_editor.rs
index 31b6fa7581ba..eb6f16867db9 100644
--- a/app/gui/view/src/code_editor.rs
+++ b/app/gui/view/src/code_editor.rs
@@ -90,11 +90,11 @@ impl View {
hide <- any(frp.input.hide,hide_after_toggle);
eval_ show (height_fraction.set_target_value(HEIGHT_FRACTION));
- eval_ show (model.focus());
+ eval_ show (model.deprecated_focus());
eval_ hide (height_fraction.set_target_value(0.0));
eval_ hide ([model] {
model.remove_all_cursors();
- model.defocus();
+ model.deprecated_defocus();
});
frp.source.is_visible <+ bool(&frp.input.hide,&frp.input.show);
diff --git a/app/gui/view/src/searcher.rs b/app/gui/view/src/searcher.rs
index 2717ee65e254..e7fd694970d8 100644
--- a/app/gui/view/src/searcher.rs
+++ b/app/gui/view/src/searcher.rs
@@ -122,7 +122,7 @@ impl Model {
let logger = Logger::new("SearcherView");
let display_object = display::object::Instance::new();
let list = app.new_view::>();
- list.focus();
+ list.deprecated_focus();
let documentation = documentation::View::new(scene);
let doc_provider = default();
scene.layers.node_searcher.add(&list);
diff --git a/lib/rust/callback/src/lib.rs b/lib/rust/callback/src/lib.rs
index 19d337c83bf3..3d8110d5966a 100644
--- a/lib/rust/callback/src/lib.rs
+++ b/lib/rust/callback/src/lib.rs
@@ -22,7 +22,6 @@
use enso_prelude::*;
-use std::any::TypeId;
use std::marker::Unsize;
@@ -371,61 +370,6 @@ pub mod traits {
-// ==========================
-// === DynEventDispatcher ===
-// ==========================
-
-/// A dynamic event wrapper. Dynamic events can be pattern matched by their types. See docs of
-/// `DynEventDispatcher` to learn more.
-#[derive(Debug, Clone)]
-pub struct DynEvent {
- any: Rc,
-}
-
-impl DynEvent {
- /// Constructor.
- pub fn new(t: T) -> Self {
- let any = Rc::new(t);
- DynEvent { any }
- }
-}
-
-/// A dynamic event dispatcher. Allows dispatching an event of any type and registering listeners
-/// for a particular type.
-#[derive(Derivative, Default)]
-#[derivative(Debug)]
-pub struct DynEventDispatcher {
- #[derivative(Debug = "ignore")]
- #[allow(clippy::type_complexity)]
- listener_map: HashMap>)>>,
-}
-
-impl DynEventDispatcher {
- /// Registers a new listener for a given type.
- pub fn add_listener, T: 'static>(&mut self, mut f: F) -> Handle {
- let callback = Box::new(move |event: &DynEvent| {
- event.any.downcast_ref::().iter().for_each(|t| f(t))
- });
- let type_id = PhantomData::.type_id();
- let handle = Handle::default();
- let guard = handle.guard();
- let listeners = self.listener_map.entry(type_id).or_insert_with(default);
- listeners.push((guard, callback));
- handle
- }
-
- /// Dispatch an event to all listeners registered for that particular event type.
- pub fn dispatch(&mut self, event: &DynEvent) {
- let type_id = event.any.type_id();
- self.listener_map.get_mut(&type_id).iter_mut().for_each(|listeners| {
- listeners.retain(|(guard, _)| !guard.is_expired());
- listeners.iter_mut().for_each(move |(_, callback)| callback(event));
- });
- }
-}
-
-
-
// ==================
// === Benchmarks ===
// ==================
diff --git a/lib/rust/ensogl/core/src/application/frp.rs b/lib/rust/ensogl/core/src/application/frp.rs
index 5b3b594ed6b9..64113e490679 100644
--- a/lib/rust/ensogl/core/src/application/frp.rs
+++ b/lib/rust/ensogl/core/src/application/frp.rs
@@ -219,13 +219,16 @@ macro_rules! define_endpoints {
$(<$($param $(:($($constraints)*))?),*>)?
Input { $($([$($input_opts)*])?)?
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Focus the element. Focused elements are meant to receive shortcut events.
- focus(),
+ deprecated_focus(),
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Defocus the element. Non-focused elements are meant to be inactive and don't
/// receive shortcut events.
- defocus(),
+ deprecated_defocus(),
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Wrapper for `focus` and `defocus`.
- set_focus(bool),
+ deprecated_set_focus(bool),
$($($(#[doc=$($in_doc )*])*
$in_field ($($in_field_type )*)),*)?
}
@@ -357,8 +360,8 @@ macro_rules! define_endpoints {
let mut command_map : HashMap = default();
$crate::frp::extend! { $($($global_opts)*)? $($($output_opts)*)? network
$($out_field <- source.$out_field.sampler();)*
- focus_events <- bool(&input.defocus,&input.focus);
- focused <- any(&input.set_focus,&focus_events);
+ focus_events <- bool(&input.deprecated_defocus, &input.deprecated_focus);
+ focused <- any(&input.deprecated_set_focus, &focus_events);
source.focused <+ focused;
}
$($crate::build_status_map!
@@ -845,13 +848,16 @@ macro_rules! define_endpoints_2 {
[<$($($param $(:$($constraints)*)?),*)?>] [<$($($param),*)?>] [<($($($param),*)?)>]
Input { [$($($global_opts)*)? $($($($input_opts)*)?)?]
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Focus the element. Focused elements are meant to receive shortcut events.
- focus(),
+ deprecated_focus(),
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Defocus the element. Non-focused elements are meant to be inactive and don't
/// receive shortcut events.
- defocus(),
+ deprecated_defocus(),
+ // FIXME[WD]: To be removed, see: https://www.pivotaltracker.com/story/show/183776234
/// Wrapper for `focus` and `defocus`.
- set_focus(bool)
+ deprecated_set_focus(bool)
$($(,
$(#$in_field_attr)*
$in_field $in_field_type
@@ -1113,8 +1119,8 @@ macro_rules! define_endpoints_2_normalized_public {
$crate::frp::extend! { $output_opts network
$( $out_field <- private_output.$out_field.profile().sampler(); )*
- focus_events <- bool(&public_input.defocus,&public_input.focus);
- focused <- any(&public_input.set_focus,&focus_events);
+ focus_events <- bool(&public_input.deprecated_defocus, &public_input.deprecated_focus);
+ focused <- any(&public_input.deprecated_set_focus, &focus_events);
private_output.focused <+ focused;
}
let mut status_map : HashMap> = default();
diff --git a/lib/rust/ensogl/core/src/display.rs b/lib/rust/ensogl/core/src/display.rs
index 2014ebf10b65..513c0980cc01 100644
--- a/lib/rust/ensogl/core/src/display.rs
+++ b/lib/rust/ensogl/core/src/display.rs
@@ -40,4 +40,6 @@ pub mod types {
pub use scene::dom::DomScene;
pub use scene::Scene;
}
+
+pub use object::event;
pub use types::*;
diff --git a/lib/rust/ensogl/core/src/display/object.rs b/lib/rust/ensogl/core/src/display/object.rs
index 89eabad6fa1c..fef19273dd0d 100644
--- a/lib/rust/ensogl/core/src/display/object.rs
+++ b/lib/rust/ensogl/core/src/display/object.rs
@@ -10,6 +10,7 @@ use crate::display::scene::layer::Layer;
// ==============
pub mod class;
+pub mod event;
pub mod transform;
pub use class::Any;
diff --git a/lib/rust/ensogl/core/src/display/object/class.rs b/lib/rust/ensogl/core/src/display/object/class.rs
index 9b273a535174..803eb2f9f4d9 100644
--- a/lib/rust/ensogl/core/src/display/object/class.rs
+++ b/lib/rust/ensogl/core/src/display/object/class.rs
@@ -10,6 +10,7 @@ use crate::display::scene::layer::Layer;
use crate::display::scene::layer::WeakLayer;
use crate::display::scene::Scene;
+use super::event;
use super::transform;
use data::opt_vec::OptVec;
use nalgebra::Matrix4;
@@ -28,7 +29,7 @@ use transform::CachedTransform;
#[derive(Derivative)]
#[derivative(Debug(bound = ""))]
#[allow(missing_docs)]
-pub struct ParentBind {
+pub struct ParentBind {
pub parent: WeakInstance,
pub index: usize,
}
@@ -39,9 +40,11 @@ impl ParentBind {
}
}
-impl Drop for ParentBind {
+impl Drop for ParentBind {
fn drop(&mut self) {
- self.parent().for_each(|p| p.remove_child_by_index(self.index));
+ if let Some(parent) = self.parent() {
+ parent.remove_child_by_index(self.index)
+ }
}
}
@@ -60,7 +63,7 @@ impl Drop for ParentBind {
#[derive(Derivative)]
#[derivative(Default(bound = ""))]
#[allow(clippy::type_complexity)]
-pub struct Callbacks {
+pub struct Callbacks {
on_updated: RefCell