apache / cordova-plugin-statusbar Goto Github PK
View Code? Open in Web Editor NEWApache Cordova Status Bar Plugin
Home Page: https://cordova.apache.org/
License: Apache License 2.0
Apache Cordova Status Bar Plugin
Home Page: https://cordova.apache.org/
License: Apache License 2.0
We can't use black font on a statusbar in white
Hi,
I'm using Cordova CLI 7.1.0 and this plugin is not working on IOS at all. Not when I'm trying to set values via config.xml or ondeviceready.
When I do console.log to the StatusBar object it's present, But the methods has no effect what so ever.
Tested on Iphone 5s, 6, 6 plus, 8 plus.
Please advise.
The status bar text color is not changing in android. My Code is
statusbar: {
iosOverlaysWebView: true,
androidTextColor: "#f0f",
enabled: true,
androidBackgroundColor: "#ff0",
androidOverlaysWebView: true,
},
I'd like a flag to know if the statusbar overlay was successful so I can apply different styles if I have something absolutely positioned at the top.
When the overlay is successful, the app has a 100% height relative to the phone screen, so I have to account for a top padding. When the overlay is not successful, I'm left with an empty space at the top. I'd like to know when this operation has success so I can apply styles accordingly.
(Everything else in the template is not relevant)
This plugin is still using jshint instead of eslint as all the other Cordova plugins.
After calling StatusBar.overlaysWebView(true); keyboard also cover webview instead of resize it
The menu bar appears below the status
menu and status bars are one top of each other. User cannot use the menu once phone has been changed from Portrait to Landscape and then back to Portrait
Apcahe cordova
Ionic
The StatusBar overlays the WebView on iOS 13 after using the camera plugin (cordova-plugin-camera), even if "StatusBarOverlaysWebView" is set to false.
The StatusBar should not overlay the WebView when returning from the camera.
The StatusBar overlays the WebView when returning from the camera.
Launch the app and the StatusBar should behave as expected (does not overlay the WebView). Now launch the camera via the cordova plugin, take a picture (or cancel out), and on returning to the app, the StatusBar is now overlaying the WebView. To correct it you can change the device orientation, which seems to reset the StatusBar / WebView.
Please see the following GitHub repository:
https://github.com/ISeeBinary/StatusBarTestApp
When running the example you will see a red button at the top of the screen that launches the camera. There is also a green button for toggling the StatusBar on and off. This is because calling StatusBar.hide followed by StatusBar.show also seems correct its behaviour.
When I use the following commands:
StatusBar.styleLightContent
StatusBar.backgroundColorByName("white")
StatusBar.backgroundColorByHexString("#f7f7f8")
Only the statusbar background changes but the texts/icons keep white too.
I got an image existing on GitHub issues(That is happening with me on Android), but I didn't found the solution
cordova-plugin-statusbar 2.4.2
cordova CLI 8.0.0
Moto G5
Android 8.1.0
Statusbar doesn't go into overlaymode when using overlaysWebView(true)
when called inside the deviceready
callback.
The statusbar should go into overlay mode.
The statusbar stays in solid.
I've provided a reproduction app available at https://github.com/breautek/statusbar-overlay-issue
I simply call StatusBar.overlaysWebView(true)
, however the statusbar remains a solid black colour.
If I open up the dev tools, and call StatusBar.overlaysWebView(true)
again via the javascript console, it still doesn't work.
In the console, if I do:
StatusBar.overlaysWebView(false);
StatusBar.overlaysWebView(true);
Then the statusbar finally goes into the overlay state.
Additionally, if I comment out the StatusBar.overlaysWebView(true);
line in deviceready
and launch the app. Then call StatusBar.overlaysWebView(true);
in the console, the statusbar does go into overlay mode the first time. Surrounding StatusBar.overlaysWebView(true);
also works the first time in deviceready
IF I surround the statement in a setTimeout
of 1 second.
Occassionally the code in the reproduction app works as expected as is the first time. This suggests there is a race condition at play here.
Original discovery of this bug was found at #155 (comment)
Observed on Android 6 & Android 9, cordova-android 8.1.0
Cordova 9
On iOS 13, when using dark mode, the default status bar text colour is white, which means that using styleDefault()
results in the reverse of the desired text colour being applied, ie white not black text.
Ionic CLI : 5.2.3 (/usr/local/lib/node_modules/ionic)
Ionic Framework : @ionic/angular 4.7.1
@angular-devkit/build-angular : 0.802.0
@angular-devkit/schematics : 8.2.0
@angular/cli : 8.2.0
@ionic/angular-toolkit : 2.0.0
Cordova:
Cordova CLI : 9.0.0 ([email protected])
Cordova Platforms : android 8.0.0, browser 6.0.0, ios 5.0.1
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.1, (and 9 other plugins)
Utility:
cordova-res : 0.3.0 (update available: 0.6.0)
native-run : 0.2.8
System:
Android SDK Tools : 26.1.1 (/Users/ccampbell/Library/Android/sdk)
ios-sim : 8.0.1
NodeJS : v12.4.0 (/usr/local/Cellar/node/12.4.0/bin/node)
npm : 6.9.2
OS : macOS Mojave
Xcode : Xcode 10.3 Build version 10G8```
## Checklist
- [x] I searched for existing GitHub issues
- [x] I updated all Cordova tooling to most recent version
- [x] I included all the necessary information above
I'm using the following config.xml
<plugin name="cordova-plugin-statusbar" />
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#000000"/>
<preference name="StatusBarStyle" value="lightcontent" />
The statusbar text is white, thats OK but the statusbar itself is not black (#000000) as defined in the config.xml It is transparent...
Using:
<preference name="phonegap-version" value="cli-8.0.0" />
Device: IOS12 on iPhone6
Phonegap Build
Screenshot: https://i.imgur.com/IQejdi5.png
When the keyboard pop up the content scrolls behind the statusbar content... :/
styleDefault no longer sets the text to black, instead it depends on the device mode set on the device.
If device is set to dark mode, default set the text to white.
So we should deprecate it or document this new iOS 13 behaviour.
Is there any way to subscribe to a notification to see if the notification bar is pulled down from the status bar? I need to tell if my app lost focus on Android.
The documentation of the Preferences implies that only iOS is supported.
Specifically, for the Preferences StatusBarOverlaysWebView
, StatusBarBackgroundColor
, StatusBarStyle
, and StatusBarDefaultScrollToTop
, each paragraph begins with the language "On iOS", which implies it may only be supported on iOS. Since this is not the case, I recommend the documentation be updated for clarity.
could I get statusbar height with this plugin?
Place an <input type="file"/>
TAG somewhere in your App.
Click on it, then click on "Browse", so that iOS displays the System Browser.
Then you can click on "Cancel" and Boom, when you are back to your App the safe area space for the Virtual HomeBar has disappeared.
I'm using <plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
(using image sizes for iPhoneX), also using <plugin name="cordova-plugin-statusbar" spec="2.4.2" />
.
The combination works perfectly in all circumstances except when calling the System Dialogs (Browse / Photo Library).
When system dark mode is enabled in iOS 13, commands such as this.statusBar.styleDefault(), styleBlackOpaque(), etc. doesn't affect the color of the text in the status bar. It begins working again as soon as dark mode is disabled.
Those commands such as styleDefault() should affect the status bar text color regardless of system dark mode being able.
The text color doesn't change
This is the code pertaining to the statusbar in app.component.ts:
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)'); prefersDark.addListener((mediaQuery) => this.themeControl(mediaQuery.matches)); this.statusBar.overlaysWebView(true); this.statusBar.show(); this.splashScreen.hide();
This is the code which controls the theme of the app:
constructor(private rendererFactory: RendererFactory2, @Inject(DOCUMENT) private document: Document, private statusBar: StatusBar) { this.renderer = this.rendererFactory.createRenderer(null, null); }
enableDark() { this.renderer.addClass(this.document.body, 'dark') this.statusBar.styleBlackTranslucent(); Keyboard.setKeyboardStyle('dark') }
enableLight() { this.renderer.removeClass(this.document.body, 'dark') this.statusBar.styleDefault(); Keyboard.setKeyboardStyle('light') };
If you have a splash screen, the status bar color is only applied after the app loads... Not on startup.
Similar report #104
Status bar color should be applied immediately.
Status bar color is not applied immediately.
npm run android
Tested on Android 8.0 & 9.0 (Device & Emulator)
CLI
Platfrom
Plugins
With StatusBarOverlaysWebView=false, if I choose "Take Photo" from an <input type="file" accept="image/*" />
, when the app goes back to the webview (clicking Cancel is enough) the status bar height is set to 0.
After that, the status bar aspect is the same as if it was set to StatusBarOverlaysWebView=true.
In iOS 12 the height is set properly.
After a photo is taken (or "Cancel" is clicked) cordovaViewWillAppear
is invoked (file CDVStatusBar.m), then [self resizeWebView];
is called.
Inside resizeWebView
, [UIApplication sharedApplication].statusBarFrame
returns a 0x0 CGRect.
Consequently, the height of the status bar is set to 0.
The status bar height should be set to the correct height.
The status bar height is set to 0, so the result is the same as StatusBarOverlaysWebView=true.
To fix this problem, I have changed the cordovaViewWillAppear method with the same fix applied to statusBarDidChangeFrame.
I don't know if this has any side effects...
Before
-(void)cordovaViewWillAppear:(NSNotification*)notification
{
[self resizeWebView];
}
After
-(void)cordovaViewWillAppear:(NSNotification*)notification
{
//Fix
//[self resizeWebView];
//add a small delay ( 0.1 seconds ) or statusbar size will be wrong
__weak CDVStatusBar* weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[weakSelf resizeWebView];
});
//End fix
}
cordova create TestApp com.cordova.testApp TestApp
cordova platform add ios
cordova plugin add cordova-plugin-statusbar
<body>
with <body>TEST<input type="file" accept="image/*" />
padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-right, 0px)
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#E4E4E4" />
cordova prepare
iOS 13
Tested on iPad Pro 9.7 and iPhone X.
Cordova CLI 9.0.0
Cordova iOS platform v5.1.1
cordova-plugin-statusbar v2.4.2
Using PhoneGap with cli-8.0.0 it fails:
"plugman-151 install --platform android --project --plugin cordova-plugin-statusbar --nohooks=.": Fetching plugin "cordova-plugin-statusbar" via npm
Installing "cordova-plugin-statusbar" at "2.4.2" for android
Failed to install 'cordova-plugin-statusbar': Error: ENOENT: no such file or directory, open '/AndroidManifest.xml'
at Error (native)
at Object.fs.openSync (fs.js:640:18)
at Object.fs.readFileSync (fs.js:508:33)
at Object.parseElementtreeSync (/cordova/node_modules/cordova-common/src/util/xml-helpers.js:180:27)
at new AndroidManifest (/cordova/lib/AndroidManifest.js:29:20)
at AndroidProject.getPackageName (/cordova/lib/AndroidProject.js:99:12)
at Api.addPlugin (/cordova/Api.js:223:57)
at handleInstall (/usr/local/lib/npm/lib/node_modules/pgb-plugman-151/node_modules/pgb-cordova-lib/src/plugman/install.js:594:10)
at /usr/local/lib/npm/lib/node_modules/pgb-plugman-151/node_modules/pgb-cordova-lib/src/plugman/install.js:364:24
at _fulfilled (/usr/local/lib/npm/lib/node_modules/pgb-plugman-151/node_modules/q/q.js:787:54)
ENOENT: no such file or directory, open '/AndroidManifest.xml'
Ionic: 3.20.0
Cordova: 8.0.0
Cordova-ios: 4.5.5
Plugin version: 2.4.2
iOS version: 11.4 (emulator)
Configurations:
StatusBar.overlaysWebView(true);
I want the status bar overlay web view, but for some reason, my status is setting to white.
Result: image
I am having an input text box at the bottom of the page which on clicked, the keyboard appears and the text box goes behind the keyboard. This doesn't happen when I remove the cordova status bar plugin. I tried many solution that involves adding the cordova keyboard plugins but didnt work.
When the user focus on an input text field, the keyboard appears but also the status bar
When trying to hide the status bar in focusin event with StatusBar.hide() the status bar is not hidding.
Also when calling StatusBar.hide() on focusout, the status bar is still not hiding.
Also when calling StatusBar.hide() with a little setTimeout 500ms the status bar is not hidding
When using StatusBar.hide() the status bar should disappear
When using StatusBar.hide() the status bar is not hidding
Please note that if an alert is invoked the status bar is disappearing
StatusBar.styleBlackTranslucent
and StatusBar.styleBlackOpaque
just set the value to UIStatusBarStyleLightContent
because their original values were deprecated by Apple on iOS 7. So makes no sense to have them anymore. We should deprecate or remove them.
Styles documentation is confusing:
Issue 1: default
and lightcontent
are confused
StatusBarStyle (status bar style, defaults to lightcontent)
However, JS functions styleDefault
and styleLightcontent
have different descriptions:
StatusBar.styleDefault
Use the default statusbar (dark text, for light backgrounds).
StatusBar.styleLightContent
Use the lightContent statusbar (light text, for dark backgrounds).
Issue 2: blacktranslucent
has the wrong description (equal to lightcontent
)
StatusBar.styleBlackTranslucent
Use the blackTranslucent statusbar (light text, for dark backgrounds).
StatusBar.styleLightContent
Use the lightContent statusbar (light text, for dark backgrounds).
However, in fact blacktranslucent
makes the text dark.
I'm trying to fix issue with StatusBarOverlaysWebView, but it's not working on Android 9.
How it looks like on Android 9: https://ibb.co/BZ4KVpB
How it looks like on PhoneGap Developer Application: https://ibb.co/W5574HC
I tried every possible combination editing config.xml. Now my config.xml look like this:
<platform name="android">
<preference name="StatusBarStyle" value="lightcontent" />
<preference name="android-minSdkVersion" value="21" />
<allow-intent href="market:*" />
<preference name="StatusBarBackgroundColor" value="#000000" />
<preference name="StatusBarDefaultScrollToTop" value="false" />
<preference name="StatusBarOverlaysWebView" value="true" />
</platform>
I run plugin with JS and it gives me normally object of StatusBar:
document.addEventListener('deviceready', fullScreen);
function fullScreen() {
AndroidFullScreen.setSystemUiVisibility(AndroidFullScreen.SYSTEM_UI_FLAG_FULLSCREEN | AndroidFullScreen.SYSTEM_UI_FLAG_LOW_PROFILE);
console.log(StatusBar);
if (cordova.platformId == 'android') {
StatusBar.overlaysWebView(true);
StatusBar.backgroundColorByHexString('#33000000');
}
}
Is there any trick about this?
Please how can get a transparent status bar in my ionic app
Ionic 4.1
Cordova plugin status bar 2.4.2
It would be great if we could support fading the statusbar instead of abruptly showing/hiding.
How can I make status bar translucent? (I don't want to do it in config.xml, I also tried)
Whatever change I make, it doesn't reflect in the app. So far I tried this.
StatusBar.styleLightContent();
I also played with StatusBar.overlaysWebView(false);
The only way it works is if I set it up like this, StatusBar.styleDefault();
, but it shows a white bar with black text.
The result is always this, a white status bar with no text (iOS 12, Cordova 8.1.1):
Status bar isn't overlaying WebView when telling the plugin to do so.
Status bar should overlay the WebView when asking the plugin to do so
The status bar does not overlay the WebView
cordova create ./cordovaTest
cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git
config.xml
to add this inside <widget/>
:
<preference name="StatusBarOverlaysWebView" value="true" />
cordova platform add ios
cordova prepare ios
open ./platforms/ios/HelloCordova.xcworkspace
StatusBar.overlaysWebView(true)
StatusBar.hide()
With older version 2.2.2 this was working fine with android but that version was not compatible with iphone XS and iphone X (UI of model was not aligned properly/ overlapped to the status bar.
Let me know if there are any quick fixes.
Thanks in advance
That sets the native value to UIStatusBarStyleDarkContent
. Note that it's an iOS 13 value, so in older version it should set the value to UIStatusBarStyleDefault
as it used to have the same effect (set text to black color)
The statusbar forgets its background color when StatusBar.overlaysWebView(true)
is invoked or toggled.
The statusbar to retain its background color when overlaysWebView
is called. overlaysWebView
should only change the overlay state, not the statusbar color.
The statusbar always goes to a completely transparent color on StatusBar.overlaysWebView(true)
Originally the bug was discovered at #155 (comment)
StatusBar.overlaysWebView(true);
StatusBar.backgroundColorByHexString('#33000000'); // Statusbar is a slightly transparent gray here, as expected
...
StatusBar.overlaysWebView(false); // statusbar goes black as expected
...
StatusBar.overlaysWebView(true); // statusbar should be slightly transparent gray
Another example:
StatusBar.backgroundColorByHexString('#FF0000'); // status bar is red
StatusBar.overlaysWebView(true); // status bar is overlayed but loses its color.
StatusBar.overlaysWebView(false); // status bar goes back to black, should be red
Android 9
Cordova 9, cordova-android 9, statusbar 2.4.3
onDeviceReady I set overlaysWebview to true, but it's not work. But it worked again when system keyboard show. That is very strange!! I used this plugin on android 8.0
Cant get desired status bar properties
I need statusbar background to be transparent, and font-color to be black
Background color is black or any other color i set, but no any opacity, ever.
According to docs, i tried (in config.xml)
phone with Android 8.1.0
I make hybrid app in React,
Cordova Platforms : android 8.0.0, ios 5.0.1
"cordova-plugin-statusbar": "^2.4.3",
For iPad Pro 11-inches ios 12 Status bar placed on the middle of the screen
Ipad Pro 11-inch
cli packages: (/usr/local/lib/node_modules)
@ionic/cli-utils : 1.9.2
ionic (Ionic CLI) : 3.9.2
global packages:
Cordova CLI : 8.1.2 ([email protected])
local packages:
@ionic/app-scripts : 3.1.8
Cordova Platforms : android 6.3.0 browser 5.0.4 ios 4.4.0
Ionic Framework : ionic-angular 3.9.1
System:
Android SDK Tools : 25.2.5
ios-deploy : 1.9.4
Node : v6.11.3
npm : 3.10.10
OS : macOS
Xcode : Xcode 10.1 Build version 10B61
This project uses JSHint - should ESLint be used (as recommended via https://issues.apache.org/jira/browse/CB-12895) to maintain a consistent linting across all Cordova plugins?
Blocked events at the top of the screen
If I have the statusbar visible with statusBar.overlaysWebView (false), the application does not recognize events in a range between 50px and 100px approximately 100% of the width in iOS.
Sometimes it recognizes the slide event or click far below the buttons.
Temporary solution
I have achieved an interim solution by keeping the statusbar hidden with statusBar.hide () and statusBar.overlaysWebView (true);
This does not happen in the browser or in the iOS emulator.
But in my company we want to keep this statusbar visible.
The plugin version is 2.4.2
And this I get from ionic info:
Ionic:
ionic (Ionic CLI) : 4.12.0 (/Users/fitpalapp/.nvm/versions/node/v9.10.1/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.2
@ionic/app-scripts : 3.2.1
Cordova:
cordova (Cordova CLI) : 8.1.2 ([email protected])
Cordova Platforms : android 7.0.0, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 3.1.2, (and 21 other plugins)
System:
Android SDK Tools : 26.1.1 (/Users/fitpalapp/Library/Android/sdk)
ios-deploy : 1.9.4
NodeJS : v9.10.1 (/Users/fitpalapp/.nvm/versions/node/v9.10.1/bin/node)
npm : 5.6.0
OS : macOS Mojave
Xcode : Xcode 10.1 Build version 10B61
Screenshot taken from iPhone x with the problem solved, specifying the area of the problem.
StatusBar.hide not working when open inappbrowser
No transparency when using backgroundColorByHexString("#BB000000")
and this.statusBar.overlaysWebView(true);
.
The status bar should be an overlay on the web view and shoul be kinda transparent.
The status bar is behaving as if this.statusBar.overlaysWebView(false);
was called and the color is dark gray-ish..
this.statusBar.backgroundColorByHexString("#BB000000"); this.statusBar.overlaysWebView(true);
and
this.statusBar.overlaysWebView(true); this.statusBar.backgroundColorByHexString("#BB000000");
have been tested
Ionic, Cordova, on Android 6.0.1 and Android 9.
Ionic:
Ionic CLI : 5.2.4 (/usr/local/lib/node_modules/ionic)
Ionic Framework : ionic-angular 3.9.6
@ionic/app-scripts : 3.2.3
Cordova:
Cordova CLI : 9.0.0 ([email protected])
Cordova Platforms : android 8.0.0, ios 4.5.5
Cordova Plugins : cordova-plugin-ionic-webview 1.2.1, (and 19 other plugins)
Hi,
I got the following message from apple once I uploaded the app to the app store.
Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).Thanks so much for filing an issue or feature request! Please fill out the following (wherever relevant):
Does your plugin use the device location / uses an API that uses the device location?
I don't get any error once I build and run the app in debug/release mode.
only got the above mail from apple once I uploaded the app store.
When either the camera or the image picker is pulled up and then closed either by canceling or performing the intended action, the entire webview is shifted up so that it appears as if the status bar is overlaying the webview (app content is behind the status bar).
The webview should appear as it did when the camera or image picker was initially launched.
Upon close, the webview is behind the status bar.
This only appears to happen in iOS 13 with the cordova-plugin-camera. I am using the cordova-plugin-wkwebview, but no other plugins seem to shift the webview so I'm assuming it's either an issue with this plugin or how something this plugin is doing reacts with the wkwebview.
Launch the camera or image picker, then close it.
IPhone X with iOS 13.1.
Cordova 9.0.0
cordova-plugin-camera 4.1.0
The statusbar should overlay the webview.
The status bar became in solid blank, and not overlay the webview.
Maybe someone know how this issue can be solved !
As lon as I'm using the standard WebView, the Overlay=true/false switch and background colour works perfectly. But when I add the WKWebview Engine Plugin to my Cordova project, it seems to ignore the status bar plugin entirely.
should apply overlay true/false and background-colour
ignores these settings completely, as if plugin isn't even installed
Cordova ios 5.1.1
cordova-plugin-device 2.0.3 "Device"
cordova-plugin-statusbar 2.4.3 "StatusBar"
cordova-plugin-whitelist 1.3.4 "Whitelist"
cordova-plugin-wkwebview-engine 1.2.1 "Cordova WKWebView Engine"
phonegap-plugin-speech-synthesis 0.1.1 "SpeechSynthesis"
SOLUTION:
I eventually solved this by uninstalling the WKWebView engine and using cordova-plugin-ionic-webview instead.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.