diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b6ffc8262..d062dce180 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,95 @@ +# 1.4.0 (April 2023) + +## Common + +- [Added support for Kotlin `1.8.20`](https://github.com/JetBrains/compose-multiplatform/pull/3000) + +### Features + +- [Support perspective projection and `cameraDistance` parameter in `graphicsLayer`](https://github.com/JetBrains/compose-multiplatform-core/pull/422) +- [Support `brush` parameter in `TextStyle` for complex coloring](https://github.com/JetBrains/compose-multiplatform/issues/2814) +- [Support `drawStyle` parameter in `TextStyle` for drawing outlined text](https://github.com/JetBrains/compose-multiplatform-core/pull/470) +- [Support `blendMode` parameter when drawing text on Canvas](https://github.com/JetBrains/compose-multiplatform-core/pull/470) +- [Support compositing strategy on `graphicsLayer`](https://github.com/JetBrains/compose-multiplatform-core/pull/486) +- [Add `minLines` parameter to `BasicTextField`](https://github.com/JetBrains/compose-multiplatform-core/pull/469) +- [Support `painterResource` function in common source set](https://github.com/JetBrains/compose-multiplatform/pull/2793) + +### Fixes + +- [Actually remember provider in `rememberComponentRectPositionProvider`](https://github.com/JetBrains/compose-multiplatform-core/pull/444) +- [Fix merging multiple selection areas inside `SelectionContainer`](https://github.com/JetBrains/compose-multiplatform/issues/2899) +- [Fix crash on selecting text if layout result is invalid](https://github.com/JetBrains/compose-multiplatform-core/pull/482) +- [Fix error on call an `expect`/`actual` function with default arguments and a Composable argument](https://github.com/JetBrains/compose-multiplatform/issues/2806) + +## iOS + +[iOS support is in Alpha now](README.md#ios) + +## Desktop + +### Features + +- [Support external drag and drop](https://github.com/JetBrains/compose-multiplatform-core/pull/391) +- [Animate scroll initiated by mouse wheel input](https://github.com/JetBrains/compose-multiplatform-core/pull/438) +- [Remove AWT dependency in `rememberCursorPositionProvider`](https://github.com/JetBrains/compose-multiplatform-core/pull/432) +- Major scrollbar overhaul + - [Scrollbar now works correctly in lazy lists when items vary in size](https://github.com/JetBrains/compose-multiplatform/issues/2679) + - [Scrollbar now works correctly with lazy list `contentPadding`](https://github.com/JetBrains/compose-multiplatform/issues/2604) + - [Scrollbar now works correctly in lazy list with spacing between items](https://github.com/JetBrains/compose-multiplatform-core/pull/380) + - [Scrollbar now works correctly if the size of the scrollbar doesn't match the size of the widget it scrolls](https://github.com/JetBrains/compose-multiplatform-core/pull/368) + - [Pressing the scrollbar track now works correctly](https://github.com/JetBrains/compose-multiplatform-core/pull/409) + - [Added scrollbar support for lazy grids and text fields](https://github.com/JetBrains/compose-multiplatform/issues/1575) + +### Fixes + +- [Fix using a custom shape for an `AlertDialog`](https://github.com/JetBrains/compose-multiplatform/issues/1269) +- [Fix `AlertDialog` width to match the maximum of its content](https://github.com/JetBrains/compose-multiplatform/issues/2836) +- [Change `ContextMenuArea` to emit a single element, rather than two elements](https://github.com/JetBrains/compose-multiplatform/issues/2729) +- [Use state hoisting instead of global mouse position to determine where context menus, dropdown menus and tooltips should be displayed](https://github.com/JetBrains/compose-multiplatform-core/pull/437) +- [Limit error dialog width in case of long error message](https://github.com/JetBrains/compose-multiplatform-core/pull/441) +- [Fix window flashing background with unspecified size](https://github.com/JetBrains/compose-multiplatform-core/pull/442) +- [Fix crash `SplitPane` with a modifier](https://github.com/JetBrains/compose-multiplatform/issues/2214) +- [Fix applying `ComposePanel` visibility](https://github.com/JetBrains/compose-multiplatform/issues/2656) + +## Web + +- [`Compose for Web` is renamed to `Compose HTML Library`](https://github.com/JetBrains/compose-multiplatform/pull/2997) +- [The new experimental `Compose for Web` based on Kotlin/Wasm is available](README.md#web) + +## Tools + +- [Packaging native distributions now requires at least JDK 17](https://github.com/JetBrains/compose-multiplatform/blob/master/tutorials/Native_distributions_and_local_execution/README.md#customizing-jdk-version) + +### Features + +- [Provide relative path to jpackage --main-jar](https://github.com/JetBrains/compose-multiplatform/issues/1578) +- [Provide some entitlements on macOS by default](https://github.com/JetBrains/compose-multiplatform/pull/2974) + + +### Fixes + +- [Unzip wix to build directory](https://github.com/JetBrains/compose-multiplatform/issues/2804) + +## API Changes + +- [Remove deprecated `SkiaRootForTest.processPointerInput`](https://github.com/JetBrains/compose-multiplatform-core/pull/456) +- [Remove deprecated `PointerEvent.awtEvent`, `KeyEvent.awtEvent`](https://github.com/JetBrains/compose-multiplatform-core/pull/456) +- [Make accidentally exposed to public `ParagraphLayouter` class `internal` as designed](https://github.com/JetBrains/compose-multiplatform-core/pull/426) +- [`androidx.compose.foundation.v2.ScrollbarAdapter` is introduced in order to allow scrollbars of a size different from the scrolled widget](https://github.com/JetBrains/compose-multiplatform-core/pull/368) + +## Dependencies + +This version of Compose Multiplatform is based on the next Jetpack Compose libraries: + +- [Compiler 1.4.4](https://developer.android.com/jetpack/androidx/releases/compose-compiler#1.4.4) +- [Runtime 1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-runtime#1.4.0) +- [UI 1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.4.0) +- [Foundation 1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-foundation#1.4.0) +- [Material 1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-material#1.4.0) +- [Material3 1.0.1](https://developer.android.com/jetpack/androidx/releases/compose-material3#1.0.1) + +___ + # 1.3.1 (March 2023) ## Common diff --git a/README.md b/README.md index e42f60a014..b79cf4db75 100644 --- a/README.md +++ b/README.md @@ -2,85 +2,79 @@ [![Latest release](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=brightgreen&label=latest%20release)](https://github.com/JetBrains/compose-multiplatform/releases/latest) [![Latest build](https://img.shields.io/github/v/release/JetBrains/compose-multiplatform?color=orange&include_prereleases&label=latest%20build)](https://github.com/JetBrains/compose-multiplatform/releases) -# Compose Multiplatform, by JetBrains -![](artwork/readme/apps.png) -Compose Kotlin UI framework port for desktop platforms (macOS, Linux, Windows) and Web, components outside of the core [Compose repository](https://android.googlesource.com/platform/frameworks/support). - -Preview functionality (check your application UI without building/running it) for desktop platforms is available via [IDEA plugin](https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support). - -## Tutorials -### Compose for Desktop -* [Getting started](tutorials/Getting_Started) -* [Image and icon manipulations](tutorials/Image_And_Icons_Manipulations) -* [Mouse events and hover](tutorials/Mouse_Events) -* [Scrolling and scrollbars](tutorials/Desktop_Components#scrollbars) -* [Tooltips](tutorials/Desktop_Components#tooltips) -* [Context Menu](tutorials/Context_Menu/README.md) -* [Top level windows management](tutorials/Window_API_new) -* [Menu, tray, notifications](tutorials/Tray_Notifications_MenuBar_new) -* [Keyboard support](tutorials/Keyboard) -* [Tab focus navigation](tutorials/Tab_Navigation) -* [Swing interoperability](tutorials/Swing_Integration) -* [Navigation](tutorials/Navigation) -* [Accessibility](https://github.com/JetBrains/compose-multiplatform/tree/master/tutorials/Accessibility) -* [Building a native distribution](tutorials/Native_distributions_and_local_execution) - -Also, see [Foundation](https://developer.android.com/jetpack/compose/documentation#core) and [Design](https://developer.android.com/jetpack/compose/documentation#design) docs from Google. They were originally written for Android, but most of information applies to Compose for Desktop as well. - -### Compose for Web HTML -* [Getting started](tutorials/Web/Getting_Started) -* [Building web UI](tutorials/Web/Building_UI) -* [Handling Events](tutorials/Web/Events_Handling) -* [Controlled and Uncontrolled inputs](tutorials/Web/Controlled_Uncontrolled_Inputs) -* [Style DSL](tutorials/Web/Style_Dsl) -* [Using test-utils](tutorials/Web/Using_Test_Utils) - -### Jetpack Compose for Android -Compose Multiplatform uses Jetpack Compose developed by Google when you target Android platform. See more info about it [here](tutorials/Development_for_Android). - -[The docs](https://developer.android.com/jetpack/compose/documentation) published by Google are great and describe how to develop on Compose for Android. - -Note that when you use Compose Multiplatform, you setup your project differently. You can create a multiplatform project with Android support via IDEA Project Wizard, or by copying [multiplatform template](https://github.com/JetBrains/compose-multiplatform/tree/master/templates/multiplatform-template). In `androidMain` source set you can use almost all information from the docs, and in `commonMain` source set you can use information from Foundation and Design sections. - -### Experimental targets -The other targets (iOS, Compose for Web Canvas) are experimental and under development. Use them at your own risk. - -## Examples - * [codeviewer](examples/codeviewer) - File Browser and Code Viewer application for Android and Desktop - * [imageviewer](examples/imageviewer) - Image Viewer application for Android and Desktop - * [issues](examples/issues) - GitHub issue tracker with an adaptive UI and ktor-client - * [Falling Balls](examples/falling-balls) - Simple game - * [notepad](examples/notepad) - Notepad, using the new experimental Composable Window API - * [todoapp](examples/todoapp) - TODO items tracker with persistence and multiple screens, written with external navigation library - * [todoapp-lite](examples/todoapp-lite) - A simplified version of [todoapp](examples/todoapp), fully based on Compose - * [widgets gallery](examples/widgets-gallery) - Gallery of standard widgets - * [IDEA plugin](examples/intellij-plugin) - Plugin for IDEA using Compose for Desktop - * [compose-bird](examples/web-compose-bird) - A flappy bird clone using Compose for Web - * [web-landing](examples/web-landing) - A landing page built using Compose for Web (HTML composable api) - * [compose-web-with-react](examples/web-with-react) - Using compose-in-react and react-in-compose - * [compose-web-in-js](examples/web-compose-in-js) - Using Html based composables in js - -## Other ## -* [artwork](artwork) - design artifacts -* [benchmarks](benchmarks) - collection of benchmarks -* [compose](compose) - composite build of [Compose Multiplatform sources](https://github.com/JetBrains/androidx) -* [ci](ci) - Continuous Integration helpers -* [gradle-plugins](gradle-plugins) - a plugin, simplifying usage of Compose Multiplatform with Gradle -* [templates](templates) - new application templates -* [components](components) - custom components of Compose Multiplatform - * [Split Pane](components/SplitPane) -* [experimental](experimental) - experimental components and examples - * [Compose Multiplatform template project](https://github.com/JetBrains/compose-multiplatform-template) - that includes experimental iOS target - * [examples](experimental/examples) - examples that use new experimental functionality - * [cef](experimental/cef) - CEF integration in Jetpack Compose (somewhat outdated) - * [Video Player](experimental/components/VideoPlayer) - * [LWJGL integration](experimental/lwjgl-integration) - An example showing how to integrate Compose with [LWJGL](https://www.lwjgl.org) - * [CLI example](experimental/build_from_cli) - An example showing how to build Compose without Gradle - -## Versions ## - -* [The latest stable release](https://github.com/JetBrains/compose-multiplatform/releases/latest) -* [The latest dev release](https://github.com/JetBrains/compose-multiplatform/releases) -* [Compatibility and versioning overview](VERSIONING.md) + + +# Compose Multiplatform + +**Compose Multiplatform** is a declarative framework for sharing UIs across multiple platforms with Kotlin. +It is based on [Jetpack Compose](https://developer.android.com/jetpack/compose) and developed by [JetBrains](https://www.jetbrains.com/) and open-source contributors. + +You can choose the platforms across which to share your UIs using Compose Multiplatform: + +* [iOS](https://github.com/JetBrains/compose-multiplatform-ios-android-template/#readme) (Alpha) +* [Android](https://developer.android.com/jetpack/compose) (via Jetpack Compose) +* [Desktop](https://github.com/JetBrains/compose-multiplatform-desktop-template/#readme) (Windows, MacOS, Linux) +* [Web](https://kotl.in/wasm-compose-example) (Experimental) + +For example, you can share UIs between iOS and Android or Windows and MacOS. + +![Shared UIs of the iOS, Android, desktop, and web apps](artwork/readme/apps.png) + +## iOS + +> iOS support is in Alpha. It may change incompatibly and require manual migration in the future. +> We would appreciate your feedback on it in the public Slack channel [#compose-ios](https://kotlinlang.slack.com/archives/C0346LWVBJ4/p1678888063176359). +> If you face any issues, please report them on [GitHub](https://github.com/JetBrains/compose-multiplatform/issues). + +Compose Multiplatform shares most of its API with Jetpack Compose, the Android UI framework developed by Google. +You can use the same APIs to build user interfaces for both Android and iOS. + +Since Compose is built on top of [Kotlin Multiplatform](https://kotlinlang.org/lp/multiplatform/), +you can easily access native APIs, such as the [Camera API](https://developer.apple.com/documentation/avfoundation/capture_setup/avcam_building_a_camera_app), +and embed complex native UI views, such as [MKMapView](https://developer.apple.com/documentation/mapkit/mkmapview). + +**[Get started with Compose for iOS](https://github.com/JetBrains/compose-multiplatform-ios-android-template#readme)** + +## Android + +When Android is one of your targets, you can get the same experience for Android as if you were developing an Android app +using [Jetpack Compose](https://developer.android.com/jetpack/compose). + +## Desktop + +Compose Multiplatform targets the JVM and supports high-performance hardware-accelerated UI rendering on all major desktop +platforms – macOS, Windows, and Linux. + +It has desktop extensions for menus, keyboard shortcuts, window manipulation, and notification management. + +**[Get started with Compose for Desktop](https://github.com/JetBrains/compose-multiplatform-desktop-template#readme)** + +## Web + +> Web support is Experimental and may be changed at any time. Use it only for evaluation purposes. +> We would appreciate your feedback on it in the public Slack channel [#compose-web](https://kotlinlang.slack.com/archives/C01F2HV7868/p1678887590205449). +> If you face any issues, please report them on [GitHub](https://github.com/JetBrains/compose-multiplatform/issues). + +You can experiment with sharing your mobile or desktop UIs with the web. Compose for Web is based on [Kotlin/Wasm](https://kotl.in/wasm), +the newest target for Kotlin Multiplatform projects. It allows Kotlin developers to run their code in the browser with +all the benefits that WebAssembly has to offer, such as good and predictable performance for your applications. + +**[Get started with Compose for Web](https://kotl.in/wasm-compose-example)** + +## All platforms at once + +If you want to share UIs across all supported platforms at once, you can start with [this template](https://github.com/JetBrains/compose-multiplatform-template#readme). + +> Note that this template currently doesn’t support the web. It will be added later. +> +> We would appreciate your feedback on Compose Multiplatform in the public Slack channel [#compose](https://kotlinlang.slack.com/archives/CJLTWPH7S/p1678882768039969). + +## Learn more + +* [FAQ](docs/FAQ.md) +* [Samples](examples/README.md) +* [Tutorials](tutorials/README.md) * [Changelog](CHANGELOG.md) +* [Compatibility and versioning](VERSIONING.md) + + diff --git a/VERSIONING.md b/VERSIONING.md index 477501afae..d0304e038e 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -1,6 +1,8 @@ ## Compatibility and versioning overview ### Supported platforms + * Android + * iOS * macOS (x86-64, arm64) * Windows (x86-64) * Linux (x86-64, arm64) @@ -12,7 +14,7 @@ Following limitations apply to 1.0 release. * Only 64-bit x86 Windows is supported * Only JDK 11 or later is supported due to the memory management scheme used in Skia bindings - * Only JDK 15 or later is supported for packaging native distributions due to jpackage limitations + * Only JDK 17 or later is supported for packaging native distributions due to jpackage limitations Knowing issues on older versions: - OpenJDK 11.0.12 has [an issue](https://github.com/JetBrains/compose-jb/issues/940), when we switch keyboard layout on MacOs (isn't reproducible in OpenJDK 11.0.15) @@ -34,6 +36,7 @@ Kotlin version | Minimal Compose version | Notes 1.7.20 | 1.2.1 1.8.0 | 1.3.0 | 1.3.0 is not supported by earlier k/native versions 1.8.10 | 1.3.1 +1.8.20 | 1.4.0 ### Using the latest Kotlin version diff --git a/artwork/readme/apps.png b/artwork/readme/apps.png index e0ab3563ac..427eb46fae 100644 Binary files a/artwork/readme/apps.png and b/artwork/readme/apps.png differ diff --git a/examples/web-landing/.gitignore b/ci/templates/desktop-template/.gitignore similarity index 100% rename from examples/web-landing/.gitignore rename to ci/templates/desktop-template/.gitignore diff --git a/templates/desktop-template/.run/desktop.run.xml b/ci/templates/desktop-template/.run/desktop.run.xml similarity index 100% rename from templates/desktop-template/.run/desktop.run.xml rename to ci/templates/desktop-template/.run/desktop.run.xml diff --git a/templates/desktop-template/build.gradle.kts b/ci/templates/desktop-template/build.gradle.kts similarity index 100% rename from templates/desktop-template/build.gradle.kts rename to ci/templates/desktop-template/build.gradle.kts diff --git a/templates/desktop-template/gradle.properties b/ci/templates/desktop-template/gradle.properties similarity index 100% rename from templates/desktop-template/gradle.properties rename to ci/templates/desktop-template/gradle.properties diff --git a/templates/desktop-template/gradle/wrapper/gradle-wrapper.jar b/ci/templates/desktop-template/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from templates/desktop-template/gradle/wrapper/gradle-wrapper.jar rename to ci/templates/desktop-template/gradle/wrapper/gradle-wrapper.jar diff --git a/examples/web-compose-bird/gradle/wrapper/gradle-wrapper.properties b/ci/templates/desktop-template/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from examples/web-compose-bird/gradle/wrapper/gradle-wrapper.properties rename to ci/templates/desktop-template/gradle/wrapper/gradle-wrapper.properties diff --git a/templates/desktop-template/gradlew b/ci/templates/desktop-template/gradlew similarity index 100% rename from templates/desktop-template/gradlew rename to ci/templates/desktop-template/gradlew diff --git a/templates/desktop-template/gradlew.bat b/ci/templates/desktop-template/gradlew.bat similarity index 100% rename from templates/desktop-template/gradlew.bat rename to ci/templates/desktop-template/gradlew.bat diff --git a/templates/desktop-template/settings.gradle.kts b/ci/templates/desktop-template/settings.gradle.kts similarity index 100% rename from templates/desktop-template/settings.gradle.kts rename to ci/templates/desktop-template/settings.gradle.kts diff --git a/templates/desktop-template/src/main/kotlin/main.kt b/ci/templates/desktop-template/src/main/kotlin/main.kt similarity index 100% rename from templates/desktop-template/src/main/kotlin/main.kt rename to ci/templates/desktop-template/src/main/kotlin/main.kt diff --git a/templates/desktop-template/.gitignore b/ci/templates/html-library-template/.gitignore similarity index 100% rename from templates/desktop-template/.gitignore rename to ci/templates/html-library-template/.gitignore diff --git a/examples/web-landing/.run/browser.run.xml b/ci/templates/html-library-template/.run/browser.run.xml similarity index 100% rename from examples/web-landing/.run/browser.run.xml rename to ci/templates/html-library-template/.run/browser.run.xml diff --git a/templates/web-template/README.md b/ci/templates/html-library-template/README.md similarity index 100% rename from templates/web-template/README.md rename to ci/templates/html-library-template/README.md diff --git a/templates/web-template/build.gradle.kts b/ci/templates/html-library-template/build.gradle.kts similarity index 100% rename from templates/web-template/build.gradle.kts rename to ci/templates/html-library-template/build.gradle.kts diff --git a/templates/web-template/gradle.properties b/ci/templates/html-library-template/gradle.properties similarity index 100% rename from templates/web-template/gradle.properties rename to ci/templates/html-library-template/gradle.properties diff --git a/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.jar b/ci/templates/html-library-template/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from templates/multiplatform-template/gradle/wrapper/gradle-wrapper.jar rename to ci/templates/html-library-template/gradle/wrapper/gradle-wrapper.jar diff --git a/examples/web-compose-in-js/gradle/wrapper/gradle-wrapper.properties b/ci/templates/html-library-template/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from examples/web-compose-in-js/gradle/wrapper/gradle-wrapper.properties rename to ci/templates/html-library-template/gradle/wrapper/gradle-wrapper.properties diff --git a/templates/multiplatform-template/gradlew b/ci/templates/html-library-template/gradlew similarity index 100% rename from templates/multiplatform-template/gradlew rename to ci/templates/html-library-template/gradlew diff --git a/templates/multiplatform-template/gradlew.bat b/ci/templates/html-library-template/gradlew.bat similarity index 100% rename from templates/multiplatform-template/gradlew.bat rename to ci/templates/html-library-template/gradlew.bat diff --git a/templates/web-template/settings.gradle.kts b/ci/templates/html-library-template/settings.gradle.kts similarity index 100% rename from templates/web-template/settings.gradle.kts rename to ci/templates/html-library-template/settings.gradle.kts diff --git a/templates/web-template/src/main/kotlin/main.kt b/ci/templates/html-library-template/src/main/kotlin/main.kt similarity index 100% rename from templates/web-template/src/main/kotlin/main.kt rename to ci/templates/html-library-template/src/main/kotlin/main.kt diff --git a/templates/web-template/src/main/resources/index.html b/ci/templates/html-library-template/src/main/resources/index.html similarity index 100% rename from templates/web-template/src/main/resources/index.html rename to ci/templates/html-library-template/src/main/resources/index.html diff --git a/templates/multiplatform-template/.gitignore b/ci/templates/multiplatform-template/.gitignore similarity index 100% rename from templates/multiplatform-template/.gitignore rename to ci/templates/multiplatform-template/.gitignore diff --git a/templates/multiplatform-template/.run/android.run.xml b/ci/templates/multiplatform-template/.run/android.run.xml similarity index 100% rename from templates/multiplatform-template/.run/android.run.xml rename to ci/templates/multiplatform-template/.run/android.run.xml diff --git a/templates/multiplatform-template/.run/desktop.run.xml b/ci/templates/multiplatform-template/.run/desktop.run.xml similarity index 100% rename from templates/multiplatform-template/.run/desktop.run.xml rename to ci/templates/multiplatform-template/.run/desktop.run.xml diff --git a/templates/multiplatform-template/android/build.gradle.kts b/ci/templates/multiplatform-template/android/build.gradle.kts similarity index 100% rename from templates/multiplatform-template/android/build.gradle.kts rename to ci/templates/multiplatform-template/android/build.gradle.kts diff --git a/templates/multiplatform-template/android/src/main/AndroidManifest.xml b/ci/templates/multiplatform-template/android/src/main/AndroidManifest.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/AndroidManifest.xml rename to ci/templates/multiplatform-template/android/src/main/AndroidManifest.xml diff --git a/templates/multiplatform-template/android/src/main/java/com/myapplication/MainActivity.kt b/ci/templates/multiplatform-template/android/src/main/java/com/myapplication/MainActivity.kt similarity index 100% rename from templates/multiplatform-template/android/src/main/java/com/myapplication/MainActivity.kt rename to ci/templates/multiplatform-template/android/src/main/java/com/myapplication/MainActivity.kt diff --git a/templates/multiplatform-template/android/src/main/res/drawable-v24/ic_launcher_foreground.xml b/ci/templates/multiplatform-template/android/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to ci/templates/multiplatform-template/android/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/templates/multiplatform-template/android/src/main/res/drawable/ic_launcher_background.xml b/ci/templates/multiplatform-template/android/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/res/drawable/ic_launcher_background.xml rename to ci/templates/multiplatform-template/android/src/main/res/drawable/ic_launcher_background.xml diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/ci/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/ci/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher_round.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher_round.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/ci/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to ci/templates/multiplatform-template/android/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/templates/multiplatform-template/android/src/main/res/values/strings.xml b/ci/templates/multiplatform-template/android/src/main/res/values/strings.xml similarity index 100% rename from templates/multiplatform-template/android/src/main/res/values/strings.xml rename to ci/templates/multiplatform-template/android/src/main/res/values/strings.xml diff --git a/templates/multiplatform-template/build.gradle.kts b/ci/templates/multiplatform-template/build.gradle.kts similarity index 100% rename from templates/multiplatform-template/build.gradle.kts rename to ci/templates/multiplatform-template/build.gradle.kts diff --git a/templates/multiplatform-template/common/build.gradle.kts b/ci/templates/multiplatform-template/common/build.gradle.kts similarity index 100% rename from templates/multiplatform-template/common/build.gradle.kts rename to ci/templates/multiplatform-template/common/build.gradle.kts diff --git a/templates/multiplatform-template/common/src/androidMain/AndroidManifest.xml b/ci/templates/multiplatform-template/common/src/androidMain/AndroidManifest.xml similarity index 100% rename from templates/multiplatform-template/common/src/androidMain/AndroidManifest.xml rename to ci/templates/multiplatform-template/common/src/androidMain/AndroidManifest.xml diff --git a/templates/multiplatform-template/common/src/androidMain/kotlin/AndroidApp.kt b/ci/templates/multiplatform-template/common/src/androidMain/kotlin/AndroidApp.kt similarity index 100% rename from templates/multiplatform-template/common/src/androidMain/kotlin/AndroidApp.kt rename to ci/templates/multiplatform-template/common/src/androidMain/kotlin/AndroidApp.kt diff --git a/templates/multiplatform-template/common/src/commonMain/kotlin/App.kt b/ci/templates/multiplatform-template/common/src/commonMain/kotlin/App.kt similarity index 100% rename from templates/multiplatform-template/common/src/commonMain/kotlin/App.kt rename to ci/templates/multiplatform-template/common/src/commonMain/kotlin/App.kt diff --git a/templates/multiplatform-template/common/src/desktopMain/kotlin/DesktopApp.kt b/ci/templates/multiplatform-template/common/src/desktopMain/kotlin/DesktopApp.kt similarity index 100% rename from templates/multiplatform-template/common/src/desktopMain/kotlin/DesktopApp.kt rename to ci/templates/multiplatform-template/common/src/desktopMain/kotlin/DesktopApp.kt diff --git a/templates/multiplatform-template/desktop/build.gradle.kts b/ci/templates/multiplatform-template/desktop/build.gradle.kts similarity index 100% rename from templates/multiplatform-template/desktop/build.gradle.kts rename to ci/templates/multiplatform-template/desktop/build.gradle.kts diff --git a/templates/multiplatform-template/desktop/src/jvmMain/kotlin/main.kt b/ci/templates/multiplatform-template/desktop/src/jvmMain/kotlin/main.kt similarity index 100% rename from templates/multiplatform-template/desktop/src/jvmMain/kotlin/main.kt rename to ci/templates/multiplatform-template/desktop/src/jvmMain/kotlin/main.kt diff --git a/templates/multiplatform-template/gradle.properties b/ci/templates/multiplatform-template/gradle.properties similarity index 100% rename from templates/multiplatform-template/gradle.properties rename to ci/templates/multiplatform-template/gradle.properties diff --git a/templates/web-template/gradle/wrapper/gradle-wrapper.jar b/ci/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from templates/web-template/gradle/wrapper/gradle-wrapper.jar rename to ci/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.jar diff --git a/examples/web-landing/gradle/wrapper/gradle-wrapper.properties b/ci/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from examples/web-landing/gradle/wrapper/gradle-wrapper.properties rename to ci/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.properties diff --git a/templates/web-template/gradlew b/ci/templates/multiplatform-template/gradlew similarity index 100% rename from templates/web-template/gradlew rename to ci/templates/multiplatform-template/gradlew diff --git a/templates/web-template/gradlew.bat b/ci/templates/multiplatform-template/gradlew.bat similarity index 100% rename from templates/web-template/gradlew.bat rename to ci/templates/multiplatform-template/gradlew.bat diff --git a/templates/multiplatform-template/settings.gradle.kts b/ci/templates/multiplatform-template/settings.gradle.kts similarity index 100% rename from templates/multiplatform-template/settings.gradle.kts rename to ci/templates/multiplatform-template/settings.gradle.kts diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000000..dbd1fa15c9 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,114 @@ +# Compose Multiplatform FAQ + +## What is Compose Multiplatform? + +Compose Multiplatform is a modern declarative and reactive UI framework that provides a simple way to build user +interfaces with a small amount of Kotlin code. It also allows you to write your UI once and run it on any of the supported +platforms – iOS, Android, desktop (Windows, macOS, Linux), and web. + +## How does it relate to Jetpack Compose for Android? + +Compose Multiplatform shares most of its API with [Jetpack Compose](https://developer.android.com/jetpack/compose), the Android UI framework developed by Google. +In fact, when you are using Compose Multiplatform to target Android, your app simply runs on Jetpack Compose. + +Other platforms targeted by Compose Multiplatform may have implementations under the hood that differ from those of +Jetpack Compose on Android, but they still provide you with the same APIs. + +## Between which platforms can I share my UI? + +We want you to have the option to share your UI between any combination of popular platforms – Android, iOS, desktop +(Linux, macOS, Windows), and web. Note, however, that only Compose for Android and Desktop are Stable at the moment. + +## Can I use Compose Multiplatform in production? + +The Android and Desktop targets of Compose Multiplatform are Stable. You can use them in production. + +The iOS target is in Alpha, and we don’t recommend using it in production. Nevertheless, you are welcome to experiment +with it at your own risk to see what benefits you get and how your application will look in the future. + +The version of Compose for Web that is based on WebAssembly, and that has the same UI as Compose for iOS, Android, and +Desktop, is Experimental. You can try it in your pet projects. + +## When will Compose Multiplatform become Stable? What are the current stability guarantees? + +Compose Multiplatform is Stable for Android and Desktop, while the iOS and Web targets are not Stable yet. The iOS target +is in Alpha, and Web is Experimental. + +Stable means that the framework provides a comprehensive API surface that allows you to write beautiful, production-ready +applications, without encountering performance or correctness issues in the framework itself. API-breaking changes can +only be made 2 versions after an official deprecation announcement. + +Alpha means that we have decided to productize the idea but it hasn't reached the final shape yet. You can use it at your +own risk and expect migration issues. + +Experimental means the framework is under development. It lacks some features and might have performance issues and bugs. +Some aspects might change in the future, and breaking changes can occur often. + +The framework is built using [Kotlin Multiplatform](https://kotlinlang.org/lp/multiplatform/), which is not itself Stable yet. +Because of that, you may encounter issues during builds. + +## What IDE should I use for building apps with Compose Multiplatform? + +We recommend using [IntelliJ IDEA](https://www.jetbrains.com/idea/) for desktop-only, web-only, and combined desktop-web +Multiplatform applications. If you target Android or Android and iOS, we recommend using [Android Studio](https://developer.android.com/studio). + +## Where can I find documentation and tutorials? + +You can find the Getting Started tutorials on the [main project page](https://github.com/JetBrains/compose-multiplatform#readme) +and more tutorials on [this page](tutorials/README.md). + +## Can I play with a demo application? Where can I find it? + +Sure, we have [multiple examples for all platforms](examples/README.md). + +## Does Compose Multiplatform come with widgets? + +Yes, Compose Multiplatform provides the full support for [Material 3](https://m3.material.io/) widgets. + +## To what extent can I customize the appearance of Material widgets? + +You can use Material’s theming capabilities to customize colors, fonts, and paddings. If you want to create a unique +design, you can create completely custom widgets and layouts. + +## How does Compose Multiplatform work with Kotlin Multiplatform? + +[Kotlin Multiplatform technology](https://kotlinlang.org/lp/multiplatform/) simplifies the development of cross-platform projects. +It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and +benefits of native programming. + +For business logic, Kotlin Multiplatform is already a well-established and effective approach. Compose Multiplatform +completes the puzzle when you don’t want to build and maintain separate native UIs for your target platforms. Maybe you +don’t have enough people, or perhaps you don’t have enough time. Maybe you just really want to get your app out the door +and into the hands of as many people as quickly as possible. + +Compose Multiplatform gives you the option to push the sharing capabilities of Kotlin Multiplatform beyond business logic. It allows you to implement your user interface once and then use it for all the platforms you target. + +## Can I share the UI in my existing Kotlin Multiplatform app? + +If your application uses a native API for its UI (which is the most popular case), you can indeed gradually rewrite some +parts to Compose Multiplatform, as it provides interoperability for that. You can remove some parts from native UIs and +replace them with a special interop view that wraps a common UI written with Compose. + +## I have an existing Android application that uses Jetpack Compose. What should I do to run it on other platforms? + +First, you must separate common code from platform-specific logic, such as interactions with Android APIs or uses of +Android-only dependencies. Next, you need to implement this logic on the new platform, either by using a multiplatform +library or writing platform-specific code. + +## Can I integrate Compose screens into an existing iOS app? + +Yes. Compose Multiplatform supports different integration scenarios. + +## Can I integrate UIKit or SwiftUI components into a Compose screen? + +Yes, you can. + +## What happens when my mobile OS updates and introduces new platform capabilities? + +You can use them in platform-specific parts of your codebase as soon as they’re introduced. All new Android capabilities +provide Kotlin or Java APIs, and wrappers over iOS APIs are generated automatically. + +## What happens when my mobile OS updates and changes the visual style of the system components or their behavior? + +Your UI will stay the same after OS updates because all the components are drawn on a canvas. If you embed native iOS +components into your screen, updates may affect their appearance. diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000000..7a98d1b866 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,16 @@ +# Samples +| Sample | Description | Platforms | +| ------------- | ------------- | ------------- | +| [Imageviewer](imageviewer) | Image Viewer application | Android, iOS, Desktop | +| [Codeviewer](codeviewer) | File browser and code viewer application | Android, iOS, Desktop | +| [Chat](chat) | A simple chat | Android, iOS, Desktop | +| [Minesweeper](minesweeper) | A simple game where you need to find hidden mines | Android, iOS, Desktop | +| [Falling Balls](falling-balls) | A simple game | Android, iOS, Desktop | +| [Visual effects](visual-effects) | Visual effects | Android, iOS, Desktop | +| [Widgets Gallery](widgets-gallery) | Gallery of standard widgets | Android, iOS, Desktop | +| [Todoapp Lite](todoapp-lite) | A simplified version of [Todoapp](todoapp), fully based on Compose | Android, iOS, Desktop | +| [Todoapp](todoapp) | TODO items tracker with persistence and multiple screens, written with external navigation library | Android, iOS native, Desktop | +| [Issues tracker](issues) | GitHub issue tracker with an adaptive UI and ktor-client | Android, Desktop | +| [Notepad](notepad) | Notepad, using the Composable Window API | Desktop | +| [IDEA plugin](intellij-plugin) | Plugin for IDEA using Compose for Desktop | Desktop | +| [HTML based samples](html/README.md) | Examples written with Compose HTML Library \ No newline at end of file diff --git a/examples/chat/.run/jsApp.run.xml b/examples/chat/.run/jsApp.run.xml deleted file mode 100644 index 6135d902e4..0000000000 --- a/examples/chat/.run/jsApp.run.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - true - true - false - - - \ No newline at end of file diff --git a/examples/chat/README.md b/examples/chat/README.md index 326f517b11..f1c3f18984 100644 --- a/examples/chat/README.md +++ b/examples/chat/README.md @@ -21,10 +21,6 @@ Choose a run configuration for an appropriate target in Android Studio and run i `./gradlew desktopApp:run` -## Run JS in browser with WebAssembly Skia via Gradle - -`./gradlew jsApp:jsBrowserDevelopmentRun` - ### Run MacOS via Gradle: - on Intel CPU: `./gradlew :shared:runDebugExecutableMacosX64` - on Apple Silicon: `./gradlew :shared:runDebugExecutableMacosArm64` diff --git a/examples/chat/run-configurations.png b/examples/chat/run-configurations.png index e068521daf..d859ff0870 100644 Binary files a/examples/chat/run-configurations.png and b/examples/chat/run-configurations.png differ diff --git a/examples/falling-balls/.run/jsApp.run.xml b/examples/falling-balls/.run/jsApp.run.xml deleted file mode 100644 index 6135d902e4..0000000000 --- a/examples/falling-balls/.run/jsApp.run.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - true - true - false - - - \ No newline at end of file diff --git a/examples/falling-balls/README.md b/examples/falling-balls/README.md index baaf18d333..14804331d0 100644 --- a/examples/falling-balls/README.md +++ b/examples/falling-balls/README.md @@ -16,10 +16,6 @@ Choose a run configuration for an appropriate target in Android Studio and run i `./gradlew desktopApp:run` -## Run JS in browser with WebAssembly Skia via Gradle - -`./gradlew jsApp:jsBrowserDevelopmentRun` - ## Run native on MacOS Choose **shared[macosX64]** or **shared[macosArm64]** configuration in IDE and run it. diff --git a/examples/falling-balls/run-configurations.png b/examples/falling-balls/run-configurations.png index e068521daf..d859ff0870 100644 Binary files a/examples/falling-balls/run-configurations.png and b/examples/falling-balls/run-configurations.png differ diff --git a/examples/html/README.md b/examples/html/README.md new file mode 100644 index 0000000000..638ccdc492 --- /dev/null +++ b/examples/html/README.md @@ -0,0 +1,6 @@ +# HTML based samples + +* [compose-bird](compose-bird) - A simple game about a bird +* [Landing page](landing) - A landing page built using Compose +* [Compose with React](with-react) - Using compose-in-react and react-in-compose +* [Composable in JS](compose-in-js) - Using HTML based Composables \ No newline at end of file diff --git a/examples/web-compose-bird/.gitignore b/examples/html/compose-bird/.gitignore similarity index 100% rename from examples/web-compose-bird/.gitignore rename to examples/html/compose-bird/.gitignore diff --git a/examples/web-compose-bird/.run/browser.run.xml b/examples/html/compose-bird/.run/browser.run.xml similarity index 100% rename from examples/web-compose-bird/.run/browser.run.xml rename to examples/html/compose-bird/.run/browser.run.xml diff --git a/examples/web-compose-bird/README.md b/examples/html/compose-bird/README.md similarity index 90% rename from examples/web-compose-bird/README.md rename to examples/html/compose-bird/README.md index 2f2db4e10f..4a82ba6ae2 100644 --- a/examples/web-compose-bird/README.md +++ b/examples/html/compose-bird/README.md @@ -7,7 +7,7 @@ Twitter: theapache64 -> A flappy bird clone using Compose Web and radio buttons +> A game about a bird using Compose HTML Library and radio buttons ## ▶️ Play @@ -33,4 +33,4 @@ * Twitter: @theapache64 * Email: theapache64@gmail.com -Feel free to ping me 😉 \ No newline at end of file +Feel free to ping me 😉 diff --git a/examples/web-compose-bird/build.gradle.kts b/examples/html/compose-bird/build.gradle.kts similarity index 94% rename from examples/web-compose-bird/build.gradle.kts rename to examples/html/compose-bird/build.gradle.kts index 8632c4639d..0455bd9dea 100644 --- a/examples/web-compose-bird/build.gradle.kts +++ b/examples/html/compose-bird/build.gradle.kts @@ -22,7 +22,7 @@ kotlin { sourceSets { val jsMain by getting { dependencies { - implementation(compose.web.core) + implementation(compose.html.core) implementation(compose.runtime) } } diff --git a/examples/web-compose-bird/gradle.properties b/examples/html/compose-bird/gradle.properties similarity index 100% rename from examples/web-compose-bird/gradle.properties rename to examples/html/compose-bird/gradle.properties diff --git a/examples/web-compose-bird/gradle/wrapper/gradle-wrapper.jar b/examples/html/compose-bird/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from examples/web-compose-bird/gradle/wrapper/gradle-wrapper.jar rename to examples/html/compose-bird/gradle/wrapper/gradle-wrapper.jar diff --git a/examples/web-with-react/gradle/wrapper/gradle-wrapper.properties b/examples/html/compose-bird/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from examples/web-with-react/gradle/wrapper/gradle-wrapper.properties rename to examples/html/compose-bird/gradle/wrapper/gradle-wrapper.properties diff --git a/examples/web-compose-bird/gradlew b/examples/html/compose-bird/gradlew old mode 100755 new mode 100644 similarity index 100% rename from examples/web-compose-bird/gradlew rename to examples/html/compose-bird/gradlew diff --git a/examples/web-compose-in-js/gradlew.bat b/examples/html/compose-bird/gradlew.bat similarity index 100% rename from examples/web-compose-in-js/gradlew.bat rename to examples/html/compose-bird/gradlew.bat diff --git a/examples/web-compose-bird/screenshots/browser-run-configuration.png b/examples/html/compose-bird/screenshots/browser-run-configuration.png similarity index 100% rename from examples/web-compose-bird/screenshots/browser-run-configuration.png rename to examples/html/compose-bird/screenshots/browser-run-configuration.png diff --git a/examples/web-compose-bird/screenshots/demo.gif b/examples/html/compose-bird/screenshots/demo.gif similarity index 100% rename from examples/web-compose-bird/screenshots/demo.gif rename to examples/html/compose-bird/screenshots/demo.gif diff --git a/examples/web-compose-bird/settings.gradle.kts b/examples/html/compose-bird/settings.gradle.kts similarity index 100% rename from examples/web-compose-bird/settings.gradle.kts rename to examples/html/compose-bird/settings.gradle.kts diff --git a/examples/web-compose-bird/src/jsMain/kotlin/core/ComposeBirdGame.kt b/examples/html/compose-bird/src/jsMain/kotlin/core/ComposeBirdGame.kt similarity index 100% rename from examples/web-compose-bird/src/jsMain/kotlin/core/ComposeBirdGame.kt rename to examples/html/compose-bird/src/jsMain/kotlin/core/ComposeBirdGame.kt diff --git a/examples/web-compose-bird/src/jsMain/kotlin/core/Game.kt b/examples/html/compose-bird/src/jsMain/kotlin/core/Game.kt similarity index 100% rename from examples/web-compose-bird/src/jsMain/kotlin/core/Game.kt rename to examples/html/compose-bird/src/jsMain/kotlin/core/Game.kt diff --git a/examples/web-compose-bird/src/jsMain/kotlin/data/GameFrame.kt b/examples/html/compose-bird/src/jsMain/kotlin/data/GameFrame.kt similarity index 100% rename from examples/web-compose-bird/src/jsMain/kotlin/data/GameFrame.kt rename to examples/html/compose-bird/src/jsMain/kotlin/data/GameFrame.kt diff --git a/examples/web-compose-bird/src/jsMain/kotlin/data/Tube.kt b/examples/html/compose-bird/src/jsMain/kotlin/data/Tube.kt similarity index 100% rename from examples/web-compose-bird/src/jsMain/kotlin/data/Tube.kt rename to examples/html/compose-bird/src/jsMain/kotlin/data/Tube.kt diff --git a/examples/web-compose-bird/src/jsMain/kotlin/main.kt b/examples/html/compose-bird/src/jsMain/kotlin/main.kt similarity index 100% rename from examples/web-compose-bird/src/jsMain/kotlin/main.kt rename to examples/html/compose-bird/src/jsMain/kotlin/main.kt diff --git a/examples/web-compose-bird/src/jsMain/resources/index.html b/examples/html/compose-bird/src/jsMain/resources/index.html similarity index 100% rename from examples/web-compose-bird/src/jsMain/resources/index.html rename to examples/html/compose-bird/src/jsMain/resources/index.html diff --git a/examples/web-compose-in-js/.gitignore b/examples/html/compose-in-js/.gitignore similarity index 100% rename from examples/web-compose-in-js/.gitignore rename to examples/html/compose-in-js/.gitignore diff --git a/examples/web-compose-in-js/.run/browser.run.xml b/examples/html/compose-in-js/.run/browser.run.xml similarity index 100% rename from examples/web-compose-in-js/.run/browser.run.xml rename to examples/html/compose-in-js/.run/browser.run.xml diff --git a/examples/web-compose-in-js/README.MD b/examples/html/compose-in-js/README.MD similarity index 94% rename from examples/web-compose-in-js/README.MD rename to examples/html/compose-in-js/README.MD index 6876abee02..d2b929aed5 100644 --- a/examples/web-compose-in-js/README.MD +++ b/examples/html/compose-in-js/README.MD @@ -84,8 +84,8 @@ config.output.library = "MyComposables"; ``` This will produce the output in `build/distributions`. -Then we can use exported functions from `web-compose-in-js.js` (the filename is defined by the project/module name). +Then we can use exported functions from `compose-in-js.js` (the filename is defined by the project/module name). ```html - + ``` diff --git a/examples/web-compose-in-js/build.gradle.kts b/examples/html/compose-in-js/build.gradle.kts similarity index 100% rename from examples/web-compose-in-js/build.gradle.kts rename to examples/html/compose-in-js/build.gradle.kts diff --git a/examples/web-compose-in-js/gradle.properties b/examples/html/compose-in-js/gradle.properties similarity index 100% rename from examples/web-compose-in-js/gradle.properties rename to examples/html/compose-in-js/gradle.properties diff --git a/examples/web-compose-in-js/gradle/wrapper/gradle-wrapper.jar b/examples/html/compose-in-js/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from examples/web-compose-in-js/gradle/wrapper/gradle-wrapper.jar rename to examples/html/compose-in-js/gradle/wrapper/gradle-wrapper.jar diff --git a/templates/desktop-template/gradle/wrapper/gradle-wrapper.properties b/examples/html/compose-in-js/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from templates/desktop-template/gradle/wrapper/gradle-wrapper.properties rename to examples/html/compose-in-js/gradle/wrapper/gradle-wrapper.properties diff --git a/examples/web-compose-in-js/gradlew b/examples/html/compose-in-js/gradlew old mode 100755 new mode 100644 similarity index 100% rename from examples/web-compose-in-js/gradlew rename to examples/html/compose-in-js/gradlew diff --git a/examples/web-with-react/gradlew.bat b/examples/html/compose-in-js/gradlew.bat similarity index 100% rename from examples/web-with-react/gradlew.bat rename to examples/html/compose-in-js/gradlew.bat diff --git a/examples/web-compose-in-js/screenshots/browser-run-configuration.png b/examples/html/compose-in-js/screenshots/browser-run-configuration.png similarity index 100% rename from examples/web-compose-in-js/screenshots/browser-run-configuration.png rename to examples/html/compose-in-js/screenshots/browser-run-configuration.png diff --git a/examples/web-compose-in-js/settings.gradle.kts b/examples/html/compose-in-js/settings.gradle.kts similarity index 100% rename from examples/web-compose-in-js/settings.gradle.kts rename to examples/html/compose-in-js/settings.gradle.kts diff --git a/examples/web-compose-in-js/src/jsMain/kotlin/Composables.kt b/examples/html/compose-in-js/src/jsMain/kotlin/Composables.kt similarity index 100% rename from examples/web-compose-in-js/src/jsMain/kotlin/Composables.kt rename to examples/html/compose-in-js/src/jsMain/kotlin/Composables.kt diff --git a/examples/web-compose-in-js/src/jsMain/resources/index.html b/examples/html/compose-in-js/src/jsMain/resources/index.html similarity index 100% rename from examples/web-compose-in-js/src/jsMain/resources/index.html rename to examples/html/compose-in-js/src/jsMain/resources/index.html diff --git a/examples/web-compose-in-js/src/jsMain/resources/use_compose.js b/examples/html/compose-in-js/src/jsMain/resources/use_compose.js similarity index 100% rename from examples/web-compose-in-js/src/jsMain/resources/use_compose.js rename to examples/html/compose-in-js/src/jsMain/resources/use_compose.js diff --git a/examples/web-compose-in-js/webpack.config.d/configModuleName.js b/examples/html/compose-in-js/webpack.config.d/configModuleName.js similarity index 100% rename from examples/web-compose-in-js/webpack.config.d/configModuleName.js rename to examples/html/compose-in-js/webpack.config.d/configModuleName.js diff --git a/templates/web-template/.gitignore b/examples/html/landing/.gitignore similarity index 100% rename from templates/web-template/.gitignore rename to examples/html/landing/.gitignore diff --git a/examples/web-with-react/.run/browser.run.xml b/examples/html/landing/.run/browser.run.xml similarity index 100% rename from examples/web-with-react/.run/browser.run.xml rename to examples/html/landing/.run/browser.run.xml diff --git a/examples/web-landing/README.md b/examples/html/landing/README.md old mode 100755 new mode 100644 similarity index 54% rename from examples/web-landing/README.md rename to examples/html/landing/README.md index 5e7f325b85..125a3b7a1b --- a/examples/web-landing/README.md +++ b/examples/html/landing/README.md @@ -1,4 +1,6 @@ -Landing page of Compose for Web +A landing page example + +> Note that this page describes Compose HTML which was previously called Compose for Web. When we refer to Compose for Web now, we mean Compose based on WebAssembly. ### Running Web browser application * To run, launch command: `./gradlew :jsBrowserRun` diff --git a/examples/web-landing/build.gradle.kts b/examples/html/landing/build.gradle.kts similarity index 94% rename from examples/web-landing/build.gradle.kts rename to examples/html/landing/build.gradle.kts index f16f7369e3..5d64a10783 100644 --- a/examples/web-landing/build.gradle.kts +++ b/examples/html/landing/build.gradle.kts @@ -21,7 +21,7 @@ kotlin { val jsMain by getting { dependencies { implementation(npm("highlight.js", "10.7.2")) - implementation(compose.web.core) + implementation(compose.html.core) implementation(compose.runtime) } } diff --git a/examples/web-landing/gradle.properties b/examples/html/landing/gradle.properties similarity index 100% rename from examples/web-landing/gradle.properties rename to examples/html/landing/gradle.properties diff --git a/examples/web-landing/gradle/wrapper/gradle-wrapper.jar b/examples/html/landing/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from examples/web-landing/gradle/wrapper/gradle-wrapper.jar rename to examples/html/landing/gradle/wrapper/gradle-wrapper.jar diff --git a/templates/multiplatform-template/gradle/wrapper/gradle-wrapper.properties b/examples/html/landing/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from templates/multiplatform-template/gradle/wrapper/gradle-wrapper.properties rename to examples/html/landing/gradle/wrapper/gradle-wrapper.properties diff --git a/examples/web-landing/gradlew b/examples/html/landing/gradlew old mode 100755 new mode 100644 similarity index 100% rename from examples/web-landing/gradlew rename to examples/html/landing/gradlew diff --git a/examples/web-compose-bird/gradlew.bat b/examples/html/landing/gradlew.bat similarity index 96% rename from examples/web-compose-bird/gradlew.bat rename to examples/html/landing/gradlew.bat index ac1b06f938..107acd32c4 100644 --- a/examples/web-compose-bird/gradlew.bat +++ b/examples/html/landing/gradlew.bat @@ -1,89 +1,89 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/examples/web-landing/license/LICENSE.txt b/examples/html/landing/license/LICENSE.txt similarity index 100% rename from examples/web-landing/license/LICENSE.txt rename to examples/html/landing/license/LICENSE.txt diff --git a/examples/web-landing/license/third_party/README.md b/examples/html/landing/license/third_party/README.md similarity index 100% rename from examples/web-landing/license/third_party/README.md rename to examples/html/landing/license/third_party/README.md diff --git a/examples/web-landing/license/third_party/highlightjs.txt b/examples/html/landing/license/third_party/highlightjs.txt similarity index 100% rename from examples/web-landing/license/third_party/highlightjs.txt rename to examples/html/landing/license/third_party/highlightjs.txt diff --git a/examples/web-landing/screenshots/browser-run-configuration.png b/examples/html/landing/screenshots/browser-run-configuration.png similarity index 100% rename from examples/web-landing/screenshots/browser-run-configuration.png rename to examples/html/landing/screenshots/browser-run-configuration.png diff --git a/examples/web-landing/settings.gradle.kts b/examples/html/landing/settings.gradle.kts similarity index 100% rename from examples/web-landing/settings.gradle.kts rename to examples/html/landing/settings.gradle.kts diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/HighlightJs.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/HighlightJs.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/HighlightJs.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/HighlightJs.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/Main.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/Main.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/Main.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/Main.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/components/Card.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/components/Card.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/components/Card.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/components/Card.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/components/Layout.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/components/Layout.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/components/Layout.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/components/Layout.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/AboutComposeWebLibsSection.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/AboutComposeWebLibsSection.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/AboutComposeWebLibsSection.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/AboutComposeWebLibsSection.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/CodeSamplesSwitcher.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/CodeSamplesSwitcher.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/CodeSamplesSwitcher.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/CodeSamplesSwitcher.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/CodeSnippets.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/CodeSnippets.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/CodeSnippets.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/CodeSnippets.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/Footer.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/Footer.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/Footer.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/Footer.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/GetStartedSection.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/GetStartedSection.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/GetStartedSection.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/GetStartedSection.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/Header.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/Header.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/Header.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/Header.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/IntroSection.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/IntroSection.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/IntroSection.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/IntroSection.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/content/JoinUs.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/content/JoinUs.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/content/JoinUs.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/content/JoinUs.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/Stylesheet.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/Stylesheet.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/Stylesheet.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/Stylesheet.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtCard.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtCard.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtCard.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtCard.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtCol.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtCol.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtCol.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtCol.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtContainer.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtContainer.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtContainer.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtContainer.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtDisplay.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtDisplay.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtDisplay.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtDisplay.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtOffest.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtOffest.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtOffest.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtOffest.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtRow.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtRow.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtRow.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtRow.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtSection.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtSection.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtSection.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtSection.kt diff --git a/examples/web-landing/src/jsMain/kotlin/com/sample/style/WtText.kt b/examples/html/landing/src/jsMain/kotlin/com/sample/style/WtText.kt similarity index 100% rename from examples/web-landing/src/jsMain/kotlin/com/sample/style/WtText.kt rename to examples/html/landing/src/jsMain/kotlin/com/sample/style/WtText.kt diff --git a/examples/web-landing/src/jsMain/resources/compose_bullet.svg b/examples/html/landing/src/jsMain/resources/compose_bullet.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/compose_bullet.svg rename to examples/html/landing/src/jsMain/resources/compose_bullet.svg diff --git a/examples/web-landing/src/jsMain/resources/favicon-32x32.png b/examples/html/landing/src/jsMain/resources/favicon-32x32.png similarity index 100% rename from examples/web-landing/src/jsMain/resources/favicon-32x32.png rename to examples/html/landing/src/jsMain/resources/favicon-32x32.png diff --git a/examples/web-landing/src/jsMain/resources/hljs.css b/examples/html/landing/src/jsMain/resources/hljs.css similarity index 100% rename from examples/web-landing/src/jsMain/resources/hljs.css rename to examples/html/landing/src/jsMain/resources/hljs.css diff --git a/examples/web-landing/src/jsMain/resources/i1.svg b/examples/html/landing/src/jsMain/resources/i1.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/i1.svg rename to examples/html/landing/src/jsMain/resources/i1.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_fb.svg b/examples/html/landing/src/jsMain/resources/ic_fb.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_fb.svg rename to examples/html/landing/src/jsMain/resources/ic_fb.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_feed.svg b/examples/html/landing/src/jsMain/resources/ic_feed.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_feed.svg rename to examples/html/landing/src/jsMain/resources/ic_feed.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_info.svg b/examples/html/landing/src/jsMain/resources/ic_info.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_info.svg rename to examples/html/landing/src/jsMain/resources/ic_info.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_insta.svg b/examples/html/landing/src/jsMain/resources/ic_insta.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_insta.svg rename to examples/html/landing/src/jsMain/resources/ic_insta.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_jb_blog.svg b/examples/html/landing/src/jsMain/resources/ic_jb_blog.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_jb_blog.svg rename to examples/html/landing/src/jsMain/resources/ic_jb_blog.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_lang.svg b/examples/html/landing/src/jsMain/resources/ic_lang.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_lang.svg rename to examples/html/landing/src/jsMain/resources/ic_lang.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_linkedin.svg b/examples/html/landing/src/jsMain/resources/ic_linkedin.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_linkedin.svg rename to examples/html/landing/src/jsMain/resources/ic_linkedin.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_twitter.svg b/examples/html/landing/src/jsMain/resources/ic_twitter.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_twitter.svg rename to examples/html/landing/src/jsMain/resources/ic_twitter.svg diff --git a/examples/web-landing/src/jsMain/resources/ic_youtube.svg b/examples/html/landing/src/jsMain/resources/ic_youtube.svg similarity index 100% rename from examples/web-landing/src/jsMain/resources/ic_youtube.svg rename to examples/html/landing/src/jsMain/resources/ic_youtube.svg diff --git a/examples/web-landing/src/jsMain/resources/index.html b/examples/html/landing/src/jsMain/resources/index.html similarity index 100% rename from examples/web-landing/src/jsMain/resources/index.html rename to examples/html/landing/src/jsMain/resources/index.html diff --git a/examples/web-landing/src/jsMain/resources/logos.css b/examples/html/landing/src/jsMain/resources/logos.css similarity index 100% rename from examples/web-landing/src/jsMain/resources/logos.css rename to examples/html/landing/src/jsMain/resources/logos.css diff --git a/examples/web-with-react/.gitignore b/examples/html/with-react/.gitignore similarity index 100% rename from examples/web-with-react/.gitignore rename to examples/html/with-react/.gitignore diff --git a/templates/web-template/.run/browser.run.xml b/examples/html/with-react/.run/browser.run.xml similarity index 100% rename from templates/web-template/.run/browser.run.xml rename to examples/html/with-react/.run/browser.run.xml diff --git a/examples/web-with-react/README.md b/examples/html/with-react/README.md similarity index 92% rename from examples/web-with-react/README.md rename to examples/html/with-react/README.md index 8706bbfa81..e8559e7154 100644 --- a/examples/web-with-react/README.md +++ b/examples/html/with-react/README.md @@ -1,11 +1,11 @@ -### Use Compose(web) in React app +### Use Compose HTML Library in React app [see ComposeInReactApp.kt](src/jsMain/kotlin/ComposeInReactApp.kt) `useCompose(...)` is a custom React effect to render a content using Compose. It's not a part of any library. -### Use React in Compose(web) app +### Use React in Compose HTML Library `UseReactEffect(...)` is a custom Compose effect to render a content using React. It's not a part of any library. diff --git a/examples/web-with-react/build.gradle.kts b/examples/html/with-react/build.gradle.kts similarity index 96% rename from examples/web-with-react/build.gradle.kts rename to examples/html/with-react/build.gradle.kts index e60cbf1fd6..61e7cbb431 100644 --- a/examples/web-with-react/build.gradle.kts +++ b/examples/html/with-react/build.gradle.kts @@ -19,7 +19,7 @@ kotlin { sourceSets { val jsMain by getting { dependencies { - implementation(compose.web.core) + implementation(compose.html.core) implementation(compose.runtime) implementation("org.jetbrains.kotlin-wrappers:kotlin-react:17.0.2-pre.201-kotlin-1.5.0") implementation("org.jetbrains.kotlin-wrappers:kotlin-react-dom:17.0.2-pre.201-kotlin-1.5.0") diff --git a/examples/web-with-react/gradle.properties b/examples/html/with-react/gradle.properties similarity index 100% rename from examples/web-with-react/gradle.properties rename to examples/html/with-react/gradle.properties diff --git a/examples/web-with-react/gradle/wrapper/gradle-wrapper.jar b/examples/html/with-react/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from examples/web-with-react/gradle/wrapper/gradle-wrapper.jar rename to examples/html/with-react/gradle/wrapper/gradle-wrapper.jar diff --git a/templates/web-template/gradle/wrapper/gradle-wrapper.properties b/examples/html/with-react/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from templates/web-template/gradle/wrapper/gradle-wrapper.properties rename to examples/html/with-react/gradle/wrapper/gradle-wrapper.properties diff --git a/examples/web-with-react/gradlew b/examples/html/with-react/gradlew old mode 100755 new mode 100644 similarity index 100% rename from examples/web-with-react/gradlew rename to examples/html/with-react/gradlew diff --git a/examples/web-landing/gradlew.bat b/examples/html/with-react/gradlew.bat similarity index 96% rename from examples/web-landing/gradlew.bat rename to examples/html/with-react/gradlew.bat index ac1b06f938..107acd32c4 100644 --- a/examples/web-landing/gradlew.bat +++ b/examples/html/with-react/gradlew.bat @@ -1,89 +1,89 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto execute - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/examples/web-with-react/screenshots/browser-run-configuration.png b/examples/html/with-react/screenshots/browser-run-configuration.png similarity index 100% rename from examples/web-with-react/screenshots/browser-run-configuration.png rename to examples/html/with-react/screenshots/browser-run-configuration.png diff --git a/examples/web-with-react/settings.gradle.kts b/examples/html/with-react/settings.gradle.kts similarity index 100% rename from examples/web-with-react/settings.gradle.kts rename to examples/html/with-react/settings.gradle.kts diff --git a/examples/web-with-react/src/jsMain/kotlin/ComposeInReactApp.kt b/examples/html/with-react/src/jsMain/kotlin/ComposeInReactApp.kt similarity index 100% rename from examples/web-with-react/src/jsMain/kotlin/ComposeInReactApp.kt rename to examples/html/with-react/src/jsMain/kotlin/ComposeInReactApp.kt diff --git a/examples/web-with-react/src/jsMain/kotlin/Main.kt b/examples/html/with-react/src/jsMain/kotlin/Main.kt similarity index 100% rename from examples/web-with-react/src/jsMain/kotlin/Main.kt rename to examples/html/with-react/src/jsMain/kotlin/Main.kt diff --git a/examples/web-with-react/src/jsMain/kotlin/ReactInComposeApp.kt b/examples/html/with-react/src/jsMain/kotlin/ReactInComposeApp.kt similarity index 100% rename from examples/web-with-react/src/jsMain/kotlin/ReactInComposeApp.kt rename to examples/html/with-react/src/jsMain/kotlin/ReactInComposeApp.kt diff --git a/examples/web-with-react/src/jsMain/kotlin/ReactYoutubePlayer.kt b/examples/html/with-react/src/jsMain/kotlin/ReactYoutubePlayer.kt similarity index 100% rename from examples/web-with-react/src/jsMain/kotlin/ReactYoutubePlayer.kt rename to examples/html/with-react/src/jsMain/kotlin/ReactYoutubePlayer.kt diff --git a/examples/web-with-react/src/jsMain/resources/index.html b/examples/html/with-react/src/jsMain/resources/index.html similarity index 100% rename from examples/web-with-react/src/jsMain/resources/index.html rename to examples/html/with-react/src/jsMain/resources/index.html diff --git a/examples/minesweeper/.run/jsApp.run.xml b/examples/minesweeper/.run/jsApp.run.xml deleted file mode 100644 index 6135d902e4..0000000000 --- a/examples/minesweeper/.run/jsApp.run.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - true - true - false - - - \ No newline at end of file diff --git a/examples/minesweeper/README.md b/examples/minesweeper/README.md index 51166096b4..68d98e4f57 100644 --- a/examples/minesweeper/README.md +++ b/examples/minesweeper/README.md @@ -18,10 +18,6 @@ Choose a run configuration for an appropriate target in Android Studio and run i `./gradlew desktopApp:run` -## Run JS in browser with WebAssembly Skia via Gradle - -`./gradlew jsApp:jsBrowserDevelopmentRun` - ## Run native on MacOS `./gradlew runDebugExecutableMacosX64` (Works on Intel processors) diff --git a/examples/minesweeper/run-configurations.png b/examples/minesweeper/run-configurations.png index e068521daf..d859ff0870 100644 Binary files a/examples/minesweeper/run-configurations.png and b/examples/minesweeper/run-configurations.png differ diff --git a/examples/todoapp/README.md b/examples/todoapp/README.md index 5a348940b7..cd60581184 100755 --- a/examples/todoapp/README.md +++ b/examples/todoapp/README.md @@ -7,7 +7,7 @@ This example supports the following targets: - `iOS` (SwiftUI, not Compose) Libraries used: -- Jetpack Compose - shared UI +- Compose Multiplatform - shared UI - [Decompose](https://github.com/arkivanov/Decompose) - navigation and lifecycle - [MVIKotlin](https://github.com/arkivanov/MVIKotlin) - presentation and business logic - [Reaktive](https://github.com/badoo/Reaktive) - background processing and data transformation @@ -22,7 +22,7 @@ There are multiple modules: - `:common:compose-ui` - Shared Compose UI for Android and Desktop - `:android` - Android application - `:desktop` - Desktop application -- `:web` - Web browser application + Compose Web UI +- `:web` - Web browser application + Compose HTML Library - `ios` - iOS Xcode project The root module is integrated into Android, Desktop and iOS (non-Compose) apps. @@ -49,6 +49,7 @@ Features: Open project in Intellij IDEA or Android Studio and run "android" configuration. ### Running Web browser application + * To run, launch command: `./gradlew :web:jsBrowserDevelopmentRun` * Or choose **browser** configuration in IDE and run it. ![browser-run-configuration.png](screenshots/browser-run-configuration.png) diff --git a/examples/todoapp/web/build.gradle.kts b/examples/todoapp/web/build.gradle.kts index 3f5c22ffde..d3c8a1aacb 100755 --- a/examples/todoapp/web/build.gradle.kts +++ b/examples/todoapp/web/build.gradle.kts @@ -17,7 +17,7 @@ kotlin { named("jsMain") { dependencies { implementation(compose.runtime) - implementation(compose.web.core) + implementation(compose.html.core) implementation(project(":common:utils")) implementation(project(":common:database")) implementation(project(":common:root")) diff --git a/examples/validateExamplesWithJs.sh b/examples/validateExamplesWithJs.sh index 30957744fe..abc3f9a1b0 100755 --- a/examples/validateExamplesWithJs.sh +++ b/examples/validateExamplesWithJs.sh @@ -19,6 +19,6 @@ runGradle() { popd } -runGradle web-compose-bird build -runGradle web-landing build -runGradle web-with-react build +runGradle html/compose-bird build +runGradle html/landing build +runGradle html/with-react build diff --git a/html/buildSrc/gradle.properties b/html/buildSrc/gradle.properties index 8c9b3b9f16..b521d84a18 100644 --- a/html/buildSrc/gradle.properties +++ b/html/buildSrc/gradle.properties @@ -1 +1 @@ -kotlin.version=1.8.10 +kotlin.version=1.8.20 diff --git a/html/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt b/html/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt index 69f6a3fd9b..01ad611780 100644 --- a/html/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt +++ b/html/buildSrc/src/main/kotlin/SeleniumDriverPlugin.kt @@ -4,7 +4,7 @@ import org.gradle.nativeplatform.platform.internal.DefaultNativePlatform import java.io.File import java.net.URL -private val CHROME_DRIVER_VERSION = "108.0.5359.71" +private val CHROME_DRIVER_VERSION = "112.0.5615.49" private val GECKO_DRIVER_VERSION = "0.31.0" private fun download(url: String, file: File) { diff --git a/html/compose-compiler-integration/testcases/failing/CompanionGetValueOperatorComposable.kt b/html/compose-compiler-integration/testcases/passing/CompanionGetValueOperatorComposable.kt similarity index 100% rename from html/compose-compiler-integration/testcases/failing/CompanionGetValueOperatorComposable.kt rename to html/compose-compiler-integration/testcases/passing/CompanionGetValueOperatorComposable.kt diff --git a/html/compose-compiler-integration/testcases/failing/InstanceGetValueOperatorComposable.kt b/html/compose-compiler-integration/testcases/passing/InstanceGetValueOperatorComposable.kt similarity index 100% rename from html/compose-compiler-integration/testcases/failing/InstanceGetValueOperatorComposable.kt rename to html/compose-compiler-integration/testcases/passing/InstanceGetValueOperatorComposable.kt diff --git a/html/gradle.properties b/html/gradle.properties index 7a8d95525e..eec0341118 100644 --- a/html/gradle.properties +++ b/html/gradle.properties @@ -1,5 +1,5 @@ -compose.version=1.3.1 +compose.version=1.4.0-rc03 compose.web.buildSamples=false compose.web.tests.integration.withFirefox compose.web.tests.skip.benchmarks=false -org.gradle.jvmargs=-Xmx8g \ No newline at end of file +org.gradle.jvmargs=-Xmx8g diff --git a/html/kotlin-js-store/yarn.lock b/html/kotlin-js-store/yarn.lock index e94e682293..5711a8f920 100644 --- a/html/kotlin-js-store/yarn.lock +++ b/html/kotlin-js-store/yarn.lock @@ -2,6 +2,27 @@ # yarn lockfile v1 +"@babel/code-frame@^7.10.4": + version "7.21.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== + dependencies: + "@babel/highlight" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -73,6 +94,48 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@rollup/plugin-commonjs@^21.0.1": + version "21.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-21.1.0.tgz#45576d7b47609af2db87f55a6d4b46e44fc3a553" + integrity sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-node-resolve@^13.1.3": + version "13.3.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" + integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + deepmerge "^4.2.2" + is-builtin-module "^3.1.0" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-typescript@^8.3.0": + version "8.5.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz#7ea11599a15b0a30fa7ea69ce3b791d41b862515" + integrity sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ== + dependencies: + "@rollup/pluginutils" "^3.1.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@socket.io/component-emitter@~3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz#96116f2a912e0c02817345b3c10751069920d553" @@ -111,6 +174,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -133,6 +201,18 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== +"@types/node@^12.12.14": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/retry@0.12.0": version "0.12.0" resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" @@ -381,6 +461,13 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -423,6 +510,11 @@ async@^2.6.4: dependencies: lodash "^4.17.14" +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -538,6 +630,11 @@ buffer-indexof@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -566,6 +663,15 @@ caniuse-lite@^1.0.30001449: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001474.tgz#13b6fe301a831fe666cce8ca4ef89352334133d5" integrity sha512-iaIZ8gVrWfemh5DG3T9/YqarVZoYf0r188IjaGwx68j4Pf0SGY6CQkmJUIE+NZHkkecQGohzXmBGEwWDr9aM3Q== +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -617,6 +723,13 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + color-convert@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" @@ -624,6 +737,11 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" @@ -649,6 +767,11 @@ commander@^7.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -774,6 +897,11 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== +decode-uri-component@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + deep-equal@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -786,6 +914,11 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + default-gateway@^6.0.0: version "6.0.3" resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" @@ -887,14 +1020,6 @@ dom-serialize@^2.2.1: extend "^3.0.0" void-elements "^2.0.0" -dukat@0.5.8-rc.4: - version "0.5.8-rc.4" - resolved "https://registry.yarnpkg.com/dukat/-/dukat-0.5.8-rc.4.tgz#90384dcb50b14c26f0e99dae92b2dea44f5fce21" - integrity sha512-ZnMt6DGBjlVgK2uQamXfd7uP/AxH7RqI0BL9GLrrJb2gKdDxvJChWy+M9AQEaL+7/6TmxzJxFOsRiInY9oGWTA== - dependencies: - google-protobuf "3.12.2" - typescript "3.9.5" - ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -974,6 +1099,11 @@ escape-string-regexp@4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + eslint-scope@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -999,6 +1129,16 @@ estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -1175,7 +1315,7 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== -format-util@1.0.5: +format-util@1.0.5, format-util@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== @@ -1267,7 +1407,7 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3, glob@^7.1.7: +glob@^7.1.3, glob@^7.1.6, glob@^7.1.7: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -1291,11 +1431,6 @@ globby@^11.0.1: merge2 "^1.4.1" slash "^3.0.0" -google-protobuf@3.12.2: - version "3.12.2" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.12.2.tgz#50ce9f9b6281235724eb243d6a83e969a2176e53" - integrity sha512-4CZhpuRr1d6HjlyrxoXoocoGFnRYgKULgMtikMddA9ztRyYR59Aondv2FioyxWVamRo0rF2XpYawkTCBEQOSkA== - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -1306,6 +1441,11 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -1518,6 +1658,13 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-builtin-module@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.0" + is-core-module@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" @@ -1561,6 +1708,11 @@ is-ip@^3.1.0: dependencies: ip-regex "^4.0.0" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" @@ -1593,6 +1745,13 @@ is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + is-regex@^1.0.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -1638,6 +1797,15 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + jest-worker@^27.4.5: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" @@ -1647,6 +1815,11 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -1792,6 +1965,13 @@ log4js@^6.4.1: rfdc "^1.3.0" streamroller "^3.1.5" +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -2160,7 +2340,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -2330,7 +2510,7 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.9.0: +resolve@^1.17.0, resolve@^1.19.0, resolve@^1.9.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -2361,6 +2541,31 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-sourcemaps@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" + integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== + dependencies: + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" + +rollup-plugin-terser@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.68.0: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -2440,6 +2645,13 @@ serialize-javascript@6.0.0: dependencies: randombytes "^2.1.0" +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" @@ -2568,6 +2780,14 @@ source-map-loader@4.0.0: iconv-lite "^0.6.3" source-map-js "^1.0.2" +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + source-map-support@0.5.21, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -2581,6 +2801,11 @@ source-map@^0.6.0, source-map@^0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdy-transport@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" @@ -2677,7 +2902,14 @@ supports-color@8.1.1, supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-color@^7.1.0: +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -2705,6 +2937,16 @@ terser-webpack-plugin@^5.1.3: serialize-javascript "^6.0.1" terser "^5.16.5" +terser@^5.0.0: + version "5.16.9" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f" + integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + terser@^5.16.5: version "5.16.8" resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.8.tgz#ccde583dabe71df3f4ed02b65eb6532e0fae15d5" @@ -2739,6 +2981,11 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tslib@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -2747,16 +2994,16 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -typescript@3.9.5: - version "3.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.5.tgz#586f0dba300cde8be52dd1ac4f7e1009c1b13f36" - integrity sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ== - typescript@4.7.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@^3.7.2: + version "3.9.10" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" + integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== + ua-parser-js@^0.7.30: version "0.7.35" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.35.tgz#8bda4827be4f0b1dda91699a29499575a1f1d307" diff --git a/html/test-utils/conf/karma-kotlin-runner-decorator/karma-kotlin-reporter-decorated.js b/html/test-utils/conf/karma-kotlin-runner-decorator/karma-kotlin-reporter-decorated.js index e08637d272..b7cc72065d 100644 --- a/html/test-utils/conf/karma-kotlin-runner-decorator/karma-kotlin-reporter-decorated.js +++ b/html/test-utils/conf/karma-kotlin-runner-decorator/karma-kotlin-reporter-decorated.js @@ -7,9 +7,9 @@ const NewReporter = function(baseReporterDecorator, config, emitter) { const path = require('path'); const fs = require('fs'); - const kotlinVersion = fs.readFileSync(path.resolve(__dirname, "../../../buildSrc/build/kotlin.version"), 'utf8'); + // const kotlinVersion = fs.readFileSync(path.resolve(__dirname, "../../../buildSrc/build/kotlin.version"), 'utf8'); - const kotlinReporterModule = require(`../../../build/js/packages_imported/kotlin-test-js-runner/${kotlinVersion}/karma-kotlin-reporter`); + const kotlinReporterModule = require(`../../../build/js/node_modules/kotlin-test-js-runner/karma-kotlin-reporter`); const KotlinReporter = kotlinReporterModule['reporter:karma-kotlin-reporter'][1]; this.$inject = KotlinReporter.$inject diff --git a/templates/desktop-template/README.md b/templates/desktop-template/README.md deleted file mode 100644 index fd40023b91..0000000000 --- a/templates/desktop-template/README.md +++ /dev/null @@ -1,4 +0,0 @@ -Compose Desktop Application - -- `./gradlew run` - run application -- `./gradlew package` - package native distribution into `build/compose/binaries` diff --git a/templates/multiplatform-template/README.md b/templates/multiplatform-template/README.md deleted file mode 100644 index 61bee9df8c..0000000000 --- a/templates/multiplatform-template/README.md +++ /dev/null @@ -1,8 +0,0 @@ -Compose Multiplatform Application - -**Desktop** -- `./gradlew run` - run application -- `./gradlew package` - package native distribution into `build/compose/binaries` - -**Android** -- `./gradlew installDebug` - install Android application on an Android device (on a real device or on an emulator) \ No newline at end of file diff --git a/tutorials/Development_for_Android/README.md b/tutorials/Development_for_Android/README.md deleted file mode 100644 index f8e760b7ff..0000000000 --- a/tutorials/Development_for_Android/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Development for Android - -## What is covered - -This tutorial covers topic of using Compose Multiplatform for multiplatform build that includes Android - -## Intro - -Compose Multiplatform build doesn't contain any Android artifacts. -Instead it references Jetpack Compose Android artifacts [published by Google](https://developer.android.com/jetpack/compose). -This way we ensure that libraries built for Android using Jetpack libraries are compatible with Compose Multiplatform. - -## Usage - -Jetpack Compose interoperability is enabled on the publication level - nothing needs to be explicitly enabled. - -The easiest way to start is to use Kotlin Project Wizard with Compose Multiplatform template - one of the target platform is Android. - -To see how it could be achieved see the [multiplatform template](https://github.com/JetBrains/compose-multiplatform/tree/master/templates/multiplatform-template). - -## Versioning - -Compose Multiplatform `1.1.1` references Jetpack Compose `1.1.0`. If one wants to use a different version, they could explicitly -override Jetpack Compose dependencies to the Android module (or to the androidMain sourceset in MPP module) like this: - -``` kotlin -dependencies { - implementation("androidx.compose.material:material:1.2.0-beta01") -} -``` - -## Useful reading about porting Android apps to Desktop - -[Porting ViewModel](https://github.com/JetBrains/compose-multiplatform/discussions/1587) diff --git a/tutorials/Getting_Started/README.md b/tutorials/Getting_Started/README.md deleted file mode 100644 index 472c4f3ffa..0000000000 --- a/tutorials/Getting_Started/README.md +++ /dev/null @@ -1,165 +0,0 @@ -# Getting Started with Compose Multiplatform - -## What is covered - -In this tutorial we will create a simple desktop UI application -using the Compose Multiplatform UI framework. - -## Prerequisites - - Compose for Desktop can produce applications for macOS, Linux and Windows platforms. -So any of these platforms can be used for this tutorial. - -The following software must be preinstalled: - * JDK 11 or later - * IntelliJ IDEA Community Edition or Ultimate Edition 2020.3 or later (other editors could be used, but we assume you are using IntelliJ IDEA in this tutorial) - -## Creating a new project - -### New project wizard - -Starting with the version 2020.3, Kotlin support in IDEA comes with the new project wizard, -which creates a Compose application automatically. - -Note that JDK must be at least JDK 11, and to use the native distribution -packaging, JDK 15 or later must be used. - -Create new project 1 - -Create new project 2 - -### IDE plugin - -Compose Multiplatform [IDEA plugin](https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support) -can simplify compose development by adding support for the `@Preview` annotation on argument-less -`@Composable` functions. You can see how a particular composable function looks -directly in the IDE panel. This plugin can also be installed via the plugins marketplace. -Just search for "Compose Multiplatform". - -### Update the wizard plugin - -The Compose plugin version used in the wizard above might not be the latest. Update to the latest plugin version by editing the `build.gradle.kts` file and updating the version information as shown below. -For the latest versions, see the [latest versions](https://github.com/JetBrains/compose-multiplatform/releases) site and the [Kotlin](https://kotlinlang.org/) site. -``` -plugins { - kotlin("jvm") version "1.8.10" - id("org.jetbrains.compose") version "1.3.1" -} -``` - -### Create a new Compose project without the wizard - -It is also possible to create a Compose project manually. - -The recommended way to build Compose for Desktop projects is with Gradle. -JetBrains provides a simple way of building Compose for Desktop projects -using a special Gradle plugin. - -You can clone an existing template for a [desktop](https://github.com/JetBrains/compose-multiplatform/tree/master/templates/desktop-template) or -[multiplatform](https://github.com/JetBrains/compose-multiplatform/tree/master/templates/multiplatform-template) application, or create it from scratch. - -First create a new directory, named `sample`. -```shell script -mkdir sample -cd sample -``` - -Create `settings.gradle.kts` as follows: -``` kotlin -pluginManagement { - repositories { - gradlePluginPortal() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - } -} -``` -Then create `build.gradle.kts` with the following content: -``` kotlin -plugins { - kotlin("jvm") version "1.8.10" - id("org.jetbrains.compose") version "1.3.1" -} - -repositories { - mavenCentral() - maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") - google() -} - -dependencies { - implementation(compose.desktop.currentOs) -} - -compose.desktop { - application { - mainClass = "MainKt" - } -} -``` -Then create `src/main/kotlin/main.kt` and put the following code in it: -```kotlin -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material.Button -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp -import androidx.compose.ui.window.Window -import androidx.compose.ui.window.application -import androidx.compose.ui.window.rememberWindowState - -fun main() = application { - Window( - onCloseRequest = ::exitApplication, - title = "Compose for Desktop", - state = rememberWindowState(width = 300.dp, height = 300.dp) - ) { - val count = remember { mutableStateOf(0) } - MaterialTheme { - Column(Modifier.fillMaxSize(), Arrangement.spacedBy(5.dp)) { - Button(modifier = Modifier.align(Alignment.CenterHorizontally), - onClick = { - count.value++ - }) { - Text(if (count.value == 0) "Hello World" else "Clicked ${count.value}!") - } - Button(modifier = Modifier.align(Alignment.CenterHorizontally), - onClick = { - count.value = 0 - }) { - Text("Reset") - } - } - } - } -} -``` -## Running the project - -Open `build.gradle.kts` [as a project](https://www.jetbrains.com/help/idea/jetgradle-tool-window.html) in IntelliJ IDEA. - -New project - -After you download the Compose for Desktop dependencies from the Maven repositories, your new project is ready -to go. Open the Gradle toolbar on the right and select `sample/Tasks/compose desktop/run`. -The first run may take some time. Afterwards, the following dialog will be shown: - -Application running - -You can click on the button several times and see that the application reacts and -updates the UI. - -Running and debugging the `main()` function using run gutter is also supported. - -Application running - -## Next steps - -Congratulations on getting your first Compose Multiplatform project working! We encourage you to continue playing around with the areas that interest you, and look forward to seeing what you build! When you're ready to continue learning, we have many more great tutorials available here: [Compose Multiplatform Tutorials](https://github.com/JetBrains/compose-multiplatform#tutorials). - -We also have some more advanced [Compose Multiplatorm Example Projects](https://github.com/JetBrains/compose-multiplatform#examples) that you can learn from. diff --git a/tutorials/Getting_Started/app-run.png b/tutorials/Getting_Started/app-run.png deleted file mode 100644 index 8d9dcf0b48..0000000000 Binary files a/tutorials/Getting_Started/app-run.png and /dev/null differ diff --git a/tutorials/Getting_Started/app.gif b/tutorials/Getting_Started/app.gif deleted file mode 100644 index d3fd7dc5c9..0000000000 Binary files a/tutorials/Getting_Started/app.gif and /dev/null differ diff --git a/tutorials/Getting_Started/open.png b/tutorials/Getting_Started/open.png deleted file mode 100644 index f7eed7c5b4..0000000000 Binary files a/tutorials/Getting_Started/open.png and /dev/null differ diff --git a/tutorials/Getting_Started/wizard1.png b/tutorials/Getting_Started/wizard1.png deleted file mode 100644 index 8c380a7bd2..0000000000 Binary files a/tutorials/Getting_Started/wizard1.png and /dev/null differ diff --git a/tutorials/Getting_Started/wizard2.png b/tutorials/Getting_Started/wizard2.png deleted file mode 100644 index 32ffc5a524..0000000000 Binary files a/tutorials/Getting_Started/wizard2.png and /dev/null differ diff --git a/tutorials/Web/Building_UI/README.md b/tutorials/HTML/Building_UI/README.md similarity index 90% rename from tutorials/Web/Building_UI/README.md rename to tutorials/HTML/Building_UI/README.md index 8377f30b79..1670b1779d 100644 --- a/tutorials/Web/Building_UI/README.md +++ b/tutorials/HTML/Building_UI/README.md @@ -1,11 +1,10 @@ -# Building the UI with Compose Web +# Building the UI with with the Compose HTML library - -In this tutorial we will look at several examples that use the Composable DOM DSL to describe the user interface for your web application. +In this tutorial we will look at several examples that use the Composable HTML/CSS DSL to describe the user interface for your web application. ### Entry point -Compose for Web needs an HTML node that will be a root of its composition. Inside this root node, Compose then manages its own DOM tree. +The Compose HTML library needs an HTML node that will be a root of its composition. Inside this root node, Compose then manages its own DOM tree. ``` kotlin renderComposable(rootElementId = "root") { @@ -13,9 +12,7 @@ renderComposable(rootElementId = "root") { } ``` -### HTML tags in Compose DOM DSL - -While the DOM DSL for Compose for Web doesn't provide a Composable for every HTML tag yet, the most used HTML tags can be used directly out of a box. +### HTML tags Let's have a look at the Composable for a `Div` tag (most other tags have the same signature): @@ -84,7 +81,7 @@ Div( ) { /* content */ } ``` -However, with this approach, Compose for Web is not able to validate that the attribute exists on the HTML element, or is valid. This is why we also provide a set of helper functions for common attributes. +However, with this approach, Compose is not able to validate that the attribute exists on the HTML element, or is valid. This is why we also provide a set of helper functions for common attributes. #### Common attributes diff --git a/tutorials/Web/Controlled_Uncontrolled_Inputs/README.md b/tutorials/HTML/Controlled_Uncontrolled_Inputs/README.md similarity index 96% rename from tutorials/Web/Controlled_Uncontrolled_Inputs/README.md rename to tutorials/HTML/Controlled_Uncontrolled_Inputs/README.md index b01df3af0a..89310efa3c 100644 --- a/tutorials/Web/Controlled_Uncontrolled_Inputs/README.md +++ b/tutorials/HTML/Controlled_Uncontrolled_Inputs/README.md @@ -1,6 +1,6 @@ # Controlled and Uncontrolled inputs -Input components in Compose for Web have two modes: Controlled and Uncontrolled. +Input components have two modes: Controlled and Uncontrolled. ### Controlled vs Uncontrolled behaviour diff --git a/tutorials/Web/Events_Handling/README.md b/tutorials/HTML/Events_Handling/README.md similarity index 83% rename from tutorials/Web/Events_Handling/README.md rename to tutorials/HTML/Events_Handling/README.md index f1393f3ceb..1c41c341c2 100644 --- a/tutorials/Web/Events_Handling/README.md +++ b/tutorials/HTML/Events_Handling/README.md @@ -1,4 +1,4 @@ -# Events handling in Compose Web +# Events handling You can add event listeners in the `attrs` block: @@ -47,7 +47,7 @@ Form(attrs = { ``` -There are more event listeners supported out of the box. We plan to add the documentation for them later on. In the meantime, you can find all supported event listeners in the [source code](https://github.com/JetBrains/compose-multiplatform/blob/master/web/core/src/jsMain/kotlin/org/jetbrains/compose/web/attributes/EventsListenerScope.kt). +There are more event listeners supported out of the box. You can find all supported event listeners in the [source code](https://github.com/JetBrains/compose-multiplatform/blob/master/html/core/src/jsMain/kotlin/org/jetbrains/compose/html/attributes/EventsListenerScope.kt). ### Runnable example diff --git a/tutorials/Web/Getting_Started/README.md b/tutorials/HTML/Getting_Started/README.md similarity index 90% rename from tutorials/Web/Getting_Started/README.md rename to tutorials/HTML/Getting_Started/README.md index 9ffe08eb08..c7b4257395 100644 --- a/tutorials/Web/Getting_Started/README.md +++ b/tutorials/HTML/Getting_Started/README.md @@ -1,7 +1,6 @@ -# Getting Started With Compose for Web - -In this tutorial, we will create a simple web UI application using the Compose UI framework. +# Getting started with the Compose HTML library +In this tutorial, we will create a simple web UI application using the Compose HTML Library. ## Prerequisites @@ -9,12 +8,9 @@ You need to have the following software installed before you begin: * JDK 11 or later * IntelliJ IDEA Community Edition or Ultimate Edition 2020.2 or later (you can use other editors, but for this tutorial we assume you are using IntelliJ IDEA) - ## Creating a new project -You can create the project by [downloading the template here](https://github.com/JetBrains/compose-multiplatform/tree/master/templates/web-template) or using the Project Wizard in IDEA: - -Create new project +You can create the project by [downloading the template here](https://github.com/JetBrains/compose-multiplatform-html-library-template). If you want to create the project manually, perform the following steps: @@ -40,8 +36,8 @@ pluginManagement { ``` kotlin // Add compose gradle plugin plugins { - kotlin("multiplatform") version "1.8.10" - id("org.jetbrains.compose") version "1.3.1" + kotlin("multiplatform") version "1.8.20" + id("org.jetbrains.compose") version "1.4.0" } // Add maven repositories @@ -60,7 +56,7 @@ kotlin { sourceSets { val jsMain by getting { dependencies { - implementation(compose.web.core) + implementation(compose.html.core) implementation(compose.runtime) } } diff --git a/tutorials/Web/Getting_Started/create-mpp.png b/tutorials/HTML/Getting_Started/create-mpp.png similarity index 100% rename from tutorials/Web/Getting_Started/create-mpp.png rename to tutorials/HTML/Getting_Started/create-mpp.png diff --git a/tutorials/Web/Getting_Started/run_project.png b/tutorials/HTML/Getting_Started/run_project.png similarity index 100% rename from tutorials/Web/Getting_Started/run_project.png rename to tutorials/HTML/Getting_Started/run_project.png diff --git a/tutorials/Web/Getting_Started/run_result.png b/tutorials/HTML/Getting_Started/run_result.png similarity index 100% rename from tutorials/Web/Getting_Started/run_result.png rename to tutorials/HTML/Getting_Started/run_result.png diff --git a/tutorials/Web/Style_Dsl/README.md b/tutorials/HTML/Style_Dsl/README.md similarity index 99% rename from tutorials/Web/Style_Dsl/README.md rename to tutorials/HTML/Style_Dsl/README.md index f0fa4b0678..cd7014e637 100644 --- a/tutorials/Web/Style_Dsl/README.md +++ b/tutorials/HTML/Style_Dsl/README.md @@ -1,4 +1,4 @@ -# Style DSL in Compose Web +# Style DSL In this tutorial we have a look at how to style the components using the Style DSL. It’s a typesafe DSL for style sheets, which you can use to express CSS rules in your Kotlin code, and even modify styles based on the state of your Compose application. diff --git a/tutorials/Web/Using_Effects/README.md b/tutorials/HTML/Using_Effects/README.md similarity index 96% rename from tutorials/Web/Using_Effects/README.md rename to tutorials/HTML/Using_Effects/README.md index 1b5b16774a..11ff18f54e 100644 --- a/tutorials/Web/Using_Effects/README.md +++ b/tutorials/HTML/Using_Effects/README.md @@ -1,6 +1,6 @@ -# Using Effects in Compose Web +# Using Effects -Compose for Web introduces a few dom-specific effects on top of [existing effects from Compose](https://developer.android.com/jetpack/compose/side-effects). +The Compose HTML library introduces a few dom-specific effects on top of [existing effects from Compose](https://developer.android.com/jetpack/compose/side-effects). ### ref in AttrsBuilder @@ -26,7 +26,7 @@ Div(attrs = { Only one `ref` can be used per element. Calling it more than once will dismiss earlier calls. -For example, `ref` can be used to add and remove some event listeners not provided by compose-web from the box. +For example, `ref` can be used to add and remove some event listeners not provided out of the box. ### DisposableRefEffect (deprecated) diff --git a/tutorials/Web/Using_Test_Utils/README.md b/tutorials/HTML/Using_Test_Utils/README.md similarity index 92% rename from tutorials/Web/Using_Test_Utils/README.md rename to tutorials/HTML/Using_Test_Utils/README.md index 058b8218fc..908265f84b 100644 --- a/tutorials/Web/Using_Test_Utils/README.md +++ b/tutorials/HTML/Using_Test_Utils/README.md @@ -1,21 +1,21 @@ -# Using test-utils for DOM DSL unit testing +# Using test-utils for unit testing ### Dependencies -It's necessary to add `compose.web.testUtils` to jsTest dependencies: +It's necessary to add `compose.html.testUtils` to jsTest dependencies: ``` kotlin sourceSets { val jsMain by getting { dependencies { - implementation(compose.web.core) + implementation(compose.html.core) implementation(compose.runtime) //.... } } val jsTest by getting { implementation(kotlin("test-js")) - implementation(compose.web.testUtils) + implementation(compose.html.testUtils) //... } } diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 0000000000..73f304e8c6 --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,44 @@ +# Tutorials + +## iOS + Android +* [Getting started](https://github.com/JetBrains/compose-multiplatform-ios-android-template) + +## Desktop +* [Getting started](https://github.com/JetBrains/compose-multiplatform-desktop-template) +* [Image and icon manipulations](Image_And_Icons_Manipulations) +* [Mouse events and hover](Mouse_Events) +* [Scrolling and scrollbars](Desktop_Components#scrollbars) +* [Tooltips](Desktop_Components#tooltips) +* [Context Menu](Context_Menu/README.md) +* [Top level windows management](Window_API_new) +* [Menu, tray, notifications](Tray_Notifications_MenuBar_new) +* [Keyboard support](Keyboard) +* [Tab focus navigation](Tab_Navigation) +* [Swing interoperability](Swing_Integration) +* [Navigation](Navigation) +* [Accessibility](Accessibility) +* [Building a native distribution](Native_distributions_and_local_execution) + +## Web +* [Getting started](https://kotl.in/wasm-compose-example) + +## General + +Google's [Foundation](https://developer.android.com/jetpack/compose/documentation#core) and [Design](https://developer.android.com/jetpack/compose/documentation#design) tutorials were originally written for Android but can be used as a reference for other targets. + +## Libraries + +### HTML +The Compose HTML library allows you to build reactive user interfaces for the web in Kotlin using the concepts and APIs of Compose to express the state, behavior, and logic of your application. + +The HTML library provides multiple ways of declaring user interfaces in Kotlin with an ability to fully control your website layout with a declarative HTML/CSS API. + +> Note that this library doesn't support Kotlin/Wasm yet. + +* [Getting started](HTML/Getting_Started) +* [Building UI](HTML/Building_UI) +* [Handling Events](HTML/Events_Handling) +* [Controlled and Uncontrolled inputs](HTML/Controlled_Uncontrolled_Inputs) +* [Style DSL](HTML/Style_Dsl) +* [Using test-utils](HTML/Using_Test_Utils) +* [Integration with Ktor](https://play.kotlinlang.org/hands-on/Full%20Stack%20Web%20App%20with%20Kotlin%20Multiplatform) \ No newline at end of file diff --git a/tutorials/Web/Getting_Started/wizard.png b/tutorials/Web/Getting_Started/wizard.png deleted file mode 100644 index 7a038042e3..0000000000 Binary files a/tutorials/Web/Getting_Started/wizard.png and /dev/null differ diff --git a/tutorials/Web/README.md b/tutorials/Web/README.md deleted file mode 100644 index b28af86704..0000000000 --- a/tutorials/Web/README.md +++ /dev/null @@ -1,105 +0,0 @@ -# Compose for Web - -Compose for Web allows you to build reactive user interfaces for the web in Kotlin, using the concepts and APIs of Jetpack Compose to express the state, behavior, and logic of your application. - -Compose for Web provides multiple ways of declaring user interfaces in Kotlin code, allowing you to have full control over your website layout with a declarative DOM API. - -## Tutorials: - -[Getting Started With Compose for Web](Getting_Started/README.md) - create and configure a simple project - -[Building web UI](Building_UI/README.md) - overview of the basic features Compose for Web provides to build web UIs - -[Handing Events](Events_Handling/README.md) - a short overview of Events handling with compose web - -[Controlled and Uncontrolled inputs](Controlled_Uncontrolled_Inputs/README.md) - overview of Controlled and Uncontrolled inputs - -[Style DSL](Style_Dsl/README.md) - about styling the composable components in web - -[Using test-utils](Using_Test_Utils/README.md) - about unit testing for @Composable components based on HTML DOM - -[Integration with Ktor](https://play.kotlinlang.org/hands-on/Full%20Stack%20Web%20App%20with%20Kotlin%20Multiplatform) - this is actually not a Compose tutorial, but since integration of Kotlin/JS with Ktor is very popular scenario, we decided to add it here - -## Examples: -- Compose For Web [landing page](https://compose-web.ui.pages.jetbrains.team/). Also have a look at [source code](https://github.com/JetBrains/compose-multiplatform/tree/master/examples/web-landing) -- Compose For Web and React integration - [source code](https://github.com/JetBrains/compose-multiplatform/tree/master/examples/web-with-react) -- Bird game - [source code](https://github.com/JetBrains/compose-multiplatform/tree/master/examples/web-compose-bird) -- TODO app. (MPP: android, desktop, web) - [source code](https://github.com/JetBrains/compose-multiplatform/tree/master/examples/todoapp-lite) -- Falling Balls game (uses deprecated widgets API) - [source code](https://github.com/JetBrains/compose-multiplatform/tree/master/examples/falling-balls-web) - -## What's included (modules): - -### Module `compose.runtime` -It provides fundamental building blocks of Compose's programming model and state management. -`Compose for Web` uses Compose's runtime implementation. - -**Dependency:** - -``` kotlin -// it's assumed that plugin id("org.jetbrains.compose") is applied -dependencies { - implementation(compose.runtime) -} -``` - -**Useful links:** - -[Compose's runtime API reference and docs](https://developer.android.com/reference/kotlin/androidx/compose/runtime/package-summary) - -### Module `compose.web.core` - -It provides: -- DSL for building Composable components based on HTML DOM -- Comprehensive CSS-in-Kotlin/JS API - -Please have a look at tutorials to learn more about `compose.web.core` - -**Dependency:** - -``` kotlin -// it's assumed that plugin id("org.jetbrains.compose") is applied -dependencies { - implementation(compose.web.core) -} -``` - -### Module `compose.web.svg` - -It provides a collection of Composable functions representing SVG elements. -These functions can be used to build Composable web UI components based on SVG. - -**Experimental module:** The API in this module is not stabilized yet and breaking changes can be expected. - -**Dependency:** - -``` kotlin -// it's assumed that plugin id("org.jetbrains.compose") is applied -dependencies { - implementation(compose.web.svg) -} -``` - -**Useful links:** -- [https://developer.mozilla.org/en-US/docs/Web/SVG](https://developer.mozilla.org/en-US/docs/Web/SVG]) - -### Module `compose.web.testUtils` -It provides a few util functions to simplify the unit testing of Composable components based on HTML DOM. - -**Dependency:** - -``` kotlin -// it's assumed that plugin id("org.jetbrains.compose") is applied -sourceSets { - val jsTest by getting { - implementation(kotlin("test-js")) - implementation(compose.web.testUtils) - } -} -``` - -**Useful links:** -- [Using test-utils](Using_Test_Utils/README.md) - tutorial - -### Module `compose.web.widgets` (Deprecated) -It provides a collection of Composable components (based on compose.web.core) which try to conform to the API and behaviour of some widgets from Jetpack Compose UI: -`Column`, `Row`, etc. diff --git a/tutorials/checker/build.gradle.kts b/tutorials/checker/build.gradle.kts index 37e8f24dd8..357c5d3f72 100644 --- a/tutorials/checker/build.gradle.kts +++ b/tutorials/checker/build.gradle.kts @@ -42,7 +42,7 @@ fun cloneTemplate(template: String, index: Int, content: String): File { val tempDir = file("${project.buildDir.absolutePath}/temp/cloned-$index") tempDir.deleteRecursively() tempDir.mkdirs() - file("${projectDir.parentFile.parentFile.absolutePath}/templates/$template").copyRecursively(tempDir) + file("${projectDir.parentFile.parentFile.absolutePath}/ci/templates/$template").copyRecursively(tempDir) // tempDir.deleteOnExit() File("$tempDir/src/main/kotlin/main.kt").printWriter().use { out -> out.println(content) @@ -143,14 +143,14 @@ fun createCheckSpecs(checkTargets: String = "all"): List { kotlinVersion = project.findProperty("kotlin.version")?.toString() ) fun web() = CheckSpec( - gradleCmd = "compileKotlinJs", dir = "Web", template = "web-template", + gradleCmd = "compileKotlinJs", dir = "HTML", template = "html-library-template", kotlinVersion = project.findProperty("kotlin.js.version")?.toString() ?: project.findProperty("kotlin.version")?.toString() ) fun all() = listOf(desktop(), web()) return when (checkTargets) { - "web" -> listOf(web()) + "html" -> listOf(web()) "desktop" -> listOf(desktop()) else -> all() } @@ -161,4 +161,4 @@ data class CheckSpec( val dir: String, val template: String, val kotlinVersion: String? -) \ No newline at end of file +)