Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/google/elemental2
Type checked access to browser APIs for Java code.
https://github.com/google/elemental2
dom gwt indexeddb j2cl jsinterop promise svg web-storage webgl
Last synced: 20 days ago
JSON representation
Type checked access to browser APIs for Java code.
- Host: GitHub
- URL: https://github.com/google/elemental2
- Owner: google
- License: apache-2.0
- Created: 2017-05-17T22:39:36.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-19T20:52:37.000Z (23 days ago)
- Last Synced: 2024-11-19T21:33:44.368Z (23 days ago)
- Topics: dom, gwt, indexeddb, j2cl, jsinterop, promise, svg, web-storage, webgl
- Language: Java
- Homepage:
- Size: 363 KB
- Stars: 151
- Watchers: 27
- Forks: 38
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- gwt-boot-awesome-lili - elemental2
- gwt-boot-awesome-lili - elemental2 - Web APIs based on (Web APIs)
README
# Elemental2 · [![Build Status](https://github.com/google/elemental2/actions/workflows/ci.yaml/badge.svg)](https://github.com/google/elemental2/actions/workflows/ci.yaml)
Elemental2 provides type checked access to all browser APIs for Java code. This
is done by using [closure extern files](https://github.com/google/closure-compiler/tree/master/externs)
and generating JsTypes, which are part of the [new JsInterop specification](https://goo.gl/agme3T)
that is both implemented in GWT and J2CL.Bazel dependencies
------------------
If your project uses [Bazel](https://bazel.build), add this repository as an
external dependency in your `WORKSPACE` file:```
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")http_archive(
name = "com_google_elemental2",
strip_prefix = "elemental2-1.2.1",
url = "https://github.com/google/elemental2/archive/1.2.1.zip",
)load("@com_google_elemental2//build_defs:repository.bzl", "load_elemental2_repo_deps")
load_elemental2_repo_deps()load("@com_google_elemental2//build_defs:workspace.bzl", "setup_elemental2_workspace")
setup_elemental2_workspace()
```Now from you can add elemental2 targets as needed to your `j2cl_library` deps.
Following are the different elemental2 modules and their target names:
module | Bazel targets for J2CL
-----------| -----------------------
core | `@com_google_elemental2//:elemental2-core-j2cl`
dom | `@com_google_elemental2//:elemental2-dom-j2cl`
promise | `@com_google_elemental2//:elemental2-promise-j2cl`
indexeddb | `@com_google_elemental2//:elemental2-indexeddb-j2cl`
svg | `@com_google_elemental2//:elemental2-svg-j2cl`
webgl | `@com_google_elemental2//:elemental2-webgl-j2cl`
media | `@com_google_elemental2//:elemental2-media-j2cl`
webstorage | `@com_google_elemental2//:elemental2-webstorage-j2cl`Maven dependencies
------------------
If your project uses [Maven](https://maven.apache.org), add the following maven
dependencies in your `pom.xml`:
com.google.elemental2
${artifact-id}
1.2.1
module | artifact-id
------ | -----------
core | `elemental2-core`
dom | `elemental2-dom`
promise | `elemental2-promise`
indexeddb | `elemental2-indexeddb`
svg | `elemental2-svg`
webgl | `elemental2-webgl`
media | `elemental2-media`
webstorage | `elemental2-webstorage`Download the jar files
----------------------
You can also download manually the jars files.module | jar file
------ | --------
core | [elemental2-core.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-core/1.2.1/elemental2-core-1.2.1.jar)
dom | [elemental2-dom.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-dom/1.2.1/elemental2-dom-1.2.1.jar)
promise | [elemental2-promise.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-promise/1.2.1/elemental2-promise-1.2.1.jar)
indexeddb | [elemental2-indexeddb.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-indexeddb/1.2.1/elemental2-indexeddb-1.2.1.jar)
svg | [elemental2-svg.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-svg/1.2.1/elemental2-svg-1.2.1.jar)
webgl | [elemental2-webgl.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-webgl/1.2.1/elemental2-webgl-1.2.1.jar)
media | [elemental2-media.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-media/1.2.1/elemental2-media-1.2.1.jar)
webstorage | [elemental2-webstorage.jar](https://oss.sonatype.org/content/repositories/releases/com/google/elemental2/elemental2-webstorage/1.2.1/elemental2-webstorage-1.2.1.jar)GWT
---> Elemental2 v1.0.0+ requires GWT 2.9 or above.
If you use Elemental2 with [GWT](http://www.gwtproject.org/), you need to inherit the right gwt module in your `gwt.xml` file:
module | GWT module name
------ | ---------------
core | `elemental2.core.Core`
dom | `elemental2.dom.Dom`
promise | `elemental2.promise.Promise`
indexeddb | `elemental2.indexeddb.IndexedDb`
svg | `elemental2.svg.Svg`
webgl | `elemental2.webgl.WebGl`
media | `elemental2.media.Media`
webstorage | `elemental2.webstorage.WebStorage`Build GWT compatible maven jar files
------------------------------------
If you want to modify and/or build the last version on your own, follow the instructions below:- Install [Bazelisk](https://github.com/bazelbuild/bazelisk):
```shell
$ npm install -g @bazel/bazelisk
$ alias bazel=bazelisk
```
- Clone this git repository:
```shell
$ git clone https://github.com/google/elemental2.git
```
- Run the release script:
```shell
$ cd elemental2
$ ./maven/release_elemental.sh --version local --no-deploy
```The script will output the directory containing the generated jar files that
can be used with maven.Contributing
------------
Please refer to [the contributing document](CONTRIBUTING.md).Licensing
---------
Please refer to [the license file](LICENSE).Disclaimer
----------
This is not an official Google product.