pisaiah / ui Goto Github PK
View Code? Open in Web Editor NEWMy UI Widget library for V
Home Page: https://discord.gg/NruVtYBf5g
License: MIT License
My UI Widget library for V
Home Page: https://discord.gg/NruVtYBf5g
License: MIT License
Hi Isaiah,
Would be great if a listbox widget was added. The issue with selectbox, is that sometimes you want people to see all or more of the options available. And possibly have the vertical scroll as an option too.
When I'm trying to compile, in particular, Vide, I get the following error:
.vmodules/iui/menu.v:201:7: error: unknown method or field: `iui.MenuItem.draw_event_fn`.
2 possibilities: `add_child`, `set_click`.
199 | })
200 | }
201 | item.draw_event_fn(app, &Component(item))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
202 | }
I've gotten this with both the latest version of IUI and the version of IUI that Vide was built with for 0.0.7-alpha.
After some digging, the function, does in fact, not exist.
This project is to good ! Better then vlang-ui ! Is there a plan to add table components?
hi, can you add a treetable widget
It is showing the following error and I am running the latest version of V 0.4.4.
/Users/ar1trabanik/.vmodules/iui/src/buttongroup.v:50:22: error: cannot assign to `this.selected`: expected `&iui.Checkbox`, not `&iui.Component`
48 | tar.is_selected = true
49 | }
50 | this.selected = e.target
| ~~~~~~
51 | this.invoke_mouse_up(e.target, e.ctx)
52 | })
How would one get changes to the dimensions of the ui.window? This is not shown in any of the examples.
Issue:
Warnings during build, in iUI modules' source
Build Output (home path redacted):
~/.vmodules/iui/src/deprecated_stuff.v:22:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
20 | return &MenuItem{
21 | text: text
22 | icon: 0
| ~~~~~~~
23 | click_event_fn: fn (mut win Window, item MenuItem) {}
24 | }
~/.vmodules/iui/src/image.v:43:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
41 | mut img := &Image{
42 | text: ''
43 | img: 0
| ~~~~~~
44 | width: width
45 | height: h
~/.vmodules/iui/src/modal.v:39:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
37 | in_width: 500
38 | in_height: 300
39 | close: 0
| ~~~~~~~~
40 | }
41 | }
~/.vmodules/iui/src/page.v:40:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
38 | text_cfg: draw_cfg()
39 | in_height: 300
40 | close: 0
| ~~~~~~~~
41 | }
42 | }
~/.vmodules/iui/src/ui.v:314:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
312 | pub fn Window.new(cfg &WindowConfig) &Window {
313 | mut win := &Window{
314 | gg: 0
| ~~~~~
315 | theme: cfg.theme
316 | bar: 0
~/.vmodules/iui/src/ui.v:316:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
314 | gg: 0
315 | theme: cfg.theme
316 | bar: 0
| ~~~~~~
317 | config: cfg
318 | font_size: cfg.font_size
~/.vmodules/iui/src/ui.v:319:3: notice: assigning 0
to a reference field is only allowed in unsafe
blocks
317 | config: cfg
318 | font_size: cfg.font_size
319 | graphics_context: 0
| ~~~~~~~~~~~~~~~~~~~
320 | }
321 |
Result:
Project IS built, and executable DOES run without errors.
iUI:
v0.0.20
VLang:
V 0.4.4 c9933da
v-analyzer extension (included for completeness, but it happens in Bash without VSCodium too):
v0.0.4
VSCodium (included for completeness, but it happens in Bash without VSCodium too):
Version: 1.85.2
Release: 24019
Commit: c8a36a69377856369f139f39ee56dd3838130fbf
Date: 2024-01-19T18:30:44.948Z
Electron: 25.9.7
ElectronBuildId: undefined
Chromium: 114.0.5735.289
Node.js: 18.15.0
V8: 11.4.183.29-electron.0
OS: Linux x64 5.15.0-94-generic
System Info:
System:
Kernel: 5.15.0-94-generic x86_64 bits: 64 compiler: gcc v: 11.4.0 Desktop: Cinnamon 6.0.4
tk: GTK 3.24.33 wm: muffin vt: 7 dm: LightDM 1.30.0 Distro: Linux Mint 21.3 Virginia
base: Ubuntu 22.04 jammy
Machine:
Type: Desktop System: Dell product: OptiPlex 5040 v: N/A serial: Chassis:
type: 3 serial:
Mobo: Dell model: 0R790T v: A00 serial: UEFI-[Legacy]: Dell v: 1.2.7
date: 01/15/2016
Battery:
Device-1: hidpp_battery_0 model: Logitech M570 serial: charge: 35% rechargeable: yes
status: Discharging
CPU:
Info: quad core model: Intel Core i5-6500 bits: 64 type: MCP smt: arch: Skylake-S
rev: 3 cache: L1: 256 KiB L2: 1024 KiB L3: 6 MiB
Speed (MHz): avg: 972 high: 1114 min/max: 800/3600 cores: 1: 974 2: 900 3: 900 4: 1114
bogomips: 25599
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
Device-1: NVIDIA GP108 [GeForce GT 1030] driver: nvidia v: 535.154.05 pcie: speed: 8 GT/s
lanes: 4 ports: active: none off: HDMI-A-1 empty: DVI-D-1 bus-ID: 01:00.0 chip-ID: 10de:1d01
class-ID: 0300
Device-2: Realtek RTL2838 DVB-T type: USB driver: dvb_usb_rtl28xxu,rtl2832_sdr bus-ID: 1-1:2
chip-ID: 0bda:2838 class-ID: 0000 serial:
Display: x11 server: X.Org v: 1.21.1.4 driver: X: loaded: nvidia
unloaded: fbdev,modesetting,nouveau,vesa gpu: nvidia display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x2160 s-dpi: 162 s-size: 602x341mm (23.7x13.4") s-diag: 692mm (27.2")
Monitor-1: HDMI-0 res: 3840x2160 hz: 60 dpi: 163 size: 600x340mm (23.6x13.4")
diag: 690mm (27.2")
OpenGL: renderer: NVIDIA GeForce GT 1030/PCIe/SSE2 v: 4.6.0 NVIDIA 535.154.05
direct render: Yes
Audio:
Device-1: Intel 100 Series/C230 Series Family HD Audio vendor: Dell driver: snd_hda_intel
v: kernel bus-ID: 00:1f.3 chip-ID: 8086:a170 class-ID: 0403
Device-2: NVIDIA GP108 High Definition Audio driver: snd_hda_intel v: kernel pcie:
speed: 8 GT/s lanes: 4 bus-ID: 01:00.1 chip-ID: 10de:0fb8 class-ID: 0403
Sound Server-1: ALSA v: k5.15.0-94-generic running: yes
Sound Server-2: PulseAudio v: 15.99.1 running: yes
Sound Server-3: PipeWire v: 0.3.48 running: yes
Network:
Device-1: Intel Ethernet I219-V vendor: Dell driver: e1000e v: kernel port: N/A bus-ID: 00:1f.6
chip-ID: 8086:15b8 class-ID: 0200
IF: enp0s31f6 state: up speed: 1000 Mbps duplex: full mac:
Drives:
Local Storage: total: 2.05 TiB used: 1.95 TiB (95.0%)
ID-1: /dev/sda vendor: SanDisk model: SD8SBAT-256G-1006 size: 238.47 GiB speed: 6.0 Gb/s
type: SSD serial: rev: 1006 scheme: GPT
ID-2: /dev/sdb vendor: Western Digital model: WDS100T2B0A-00SM50 size: 931.51 GiB
speed: 6.0 Gb/s type: SSD serial: rev: 20WD scheme: MBR
ID-3: /dev/sdd type: USB vendor: Western Digital model: WD My Passport 25E1 size: 931.48 GiB
type: N/A serial: rev: 1021 scheme: GPT
Partition:
ID-1: / size: 233.62 GiB used: 62.52 GiB (26.8%) fs: ext4 dev: /dev/sda3
ID-2: /boot/efi size: 47.2 MiB used: 6 MiB (12.8%) fs: vfat dev: /dev/sda2
ID-3: /home size: 915.82 GiB used: 717.13 GiB (78.3%) fs: ext4 dev: /dev/sdb1
Swap:
ID-1: swap-1 type: file size: 2 GiB used: 1.2 MiB (0.1%) priority: -2 file: /swapfile
USB:
Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 16 rev: 2.0 speed: 480 Mb/s
chip-ID: 1d6b:0002 class-ID: 0900
Device-1: 1-1:2 info: Realtek RTL2838 DVB-T type: Video driver: dvb_usb_rtl28xxu,rtl2832_sdr
interfaces: 2 rev: 2.0 speed: 480 Mb/s power: 500mA chip-ID: 0bda:2838 class-ID: 0000
serial:
Device-2: 1-3:3 info: 816820090226 type: Mass Storage driver: usb-storage interfaces: 1
rev: 2.0 speed: 480 Mb/s power: 500mA chip-ID: 3207:0300 class-ID: 0806 serial:
Device-3: 1-5:4 info: Logitech Unifying Receiver type: Keyboard,Mouse,HID
driver: logitech-djreceiver,usbhid interfaces: 3 rev: 2.0 speed: 12 Mb/s power: 98mA
chip-ID: 046d:c52b class-ID: 0300
Device-4: 1-9:5 info: Western Digital My Passport (WD20NMVW) type: Mass Storage
driver: usb-storage interfaces: 1 rev: 2.1 speed: 480 Mb/s power: 500mA chip-ID: 1058:25e1
class-ID: 0806 serial:
Hub-2: 2-0:1 info: Super-speed hub ports: 10 rev: 3.0 speed: 5 Gb/s chip-ID: 1d6b:0003
class-ID: 0900
Sensors:
System Temperatures: cpu: 29.8 C pch: 56.0 C mobo: 27.8 C gpu: nvidia temp: 35 C
Fan Speeds (RPM): N/A gpu: nvidia fan: 86%
Repos:
Packages: note: see --pkg apt: 3728
Active apt repos in: /etc/apt/sources.list
1: deb [trusted=yes] http: //www.raqsoft.com/raqesproc/update/debian/ /
Active apt repos in: /etc/apt/sources.list.d/gambas-team-gambas3-jammy.list
1: deb [signed-by=/etc/apt/keyrings/gambas-team-gambas3-jammy.gpg] https: //ppa.launchpadcontent.net/gambas-team/gambas3/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/jonaski-strawberry-jammy.list
1: deb [signed-by=/etc/apt/keyrings/jonaski-strawberry-jammy.gpg] https: //ppa.launchpadcontent.net/jonaski/strawberry/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/krupkat-code-jammy.list
1: deb [signed-by=/etc/apt/keyrings/krupkat-code-jammy.gpg] https: //ppa.launchpadcontent.net/krupkat/code/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/official-package-repositories.list
1: deb http: //packages.linuxmint.com virginia main upstream import backport
2: deb http: //archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
3: deb http: //archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
4: deb http: //archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
5: deb http: //security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
Active apt repos in: /etc/apt/sources.list.d/vscode.list
1: deb [arch=amd64,arm64,armhf] http: //packages.microsoft.com/repos/code stable main
Active apt repos in: /etc/apt/sources.list.d/vscodium.list
1: deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https: //download.vscodium.com/debs vscodium main
Info:
Processes: 293 Uptime: 8h 24m wakeups: 24 Memory: 15.54 GiB used: 5.92 GiB (38.1%) Init: systemd
v: 249 runlevel: 5 Compilers: gcc: 11.4.0 alt: 11/12 clang: 14.0.0-1ubuntu1.1
Client: Unknown python client inxi: 3.3.13
Issue:
Warnings during build (unix_time_milli, init private fields), in iUI modules' source
Build Output (home path redacted, omitting warnings in my source to be addressed separately):
~/.vmodules/iui/src/ui.v:425:20: notice: method time.Time.unix_time_milli
will be deprecated after 2024-05-31, and will become an error after 2024-11-27; use t.unix_milli()
instead
423 | // Custom 'UI Mode' - Refresh text caret
424 | app.do_sleep()
425 | now := time.now().unix_time_milli()
| ~~~~~~~~~~~~~~~~~
426 |
427 | // Sort by Z-index; Lower draw first
~/.vmodules/iui/src/ui.v:504:20: notice: method time.Time.unix_time_milli
will be deprecated after 2024-05-31, and will become an error after 2024-11-27; use t.unix_milli()
instead
502 | }
503 |
504 | end := time.now().unix_time_milli()
| ~~~~~~~~~~~~~~~~~
505 | if end - app.last_update > 500 {
506 | app.last_update = end
~/.vmodules/iui/src/splitview.v:122:3: warning: initalizing private field color
of gg.PenConfig
120 |
121 | dl := gg.PenConfig{
122 | color: color
| ~~~~~~~~~~~~
123 | line_type: .dotted
124 | thickness: 1
Details: this will become an error after 2024-05-31
~/.vmodules/iui/src/splitview.v:123:3: warning: initalizing private field line_type
of gg.PenConfig
121 | dl := gg.PenConfig{
122 | color: color
123 | line_type: .dotted
| ~~~~~~~~~~~~~~~~~~
124 | thickness: 1
125 | }
Details: this will become an error after 2024-05-31
~/.vmodules/iui/src/splitview.v:124:3: warning: initalizing private field thickness
of gg.PenConfig
122 | color: color
123 | line_type: .dotted
124 | thickness: 1
| ~~~~~~~~~~~~
125 | }
126 |
Result:
Project IS NOT built, old executable not replaced; due to large number of deprecation warnings/notices in both UI code and in mine.
builder error: too many errors/warnings/notices
iUI:
v0.0.20 (I did perform 'v upgrade' so the modules should be up to date)
VLang:
V 0.4.5 dbf48ea
v-analyzer extension (included for completeness, but it happens in Bash without VSCodium too):
v0.0.4
VSCodium (included for completeness, but it happens in Bash without VSCodium too):
Version: 1.88.1
Commit: e170252f762678dec6ca2cc69aba1570769a5d39
Date: 2024-04-10T17:34:12.840Z
Electron: 28.2.8
ElectronBuildId: 27744544
Chromium: 120.0.6099.291
Node.js: 18.18.2
V8: 12.0.267.19-electron.0
OS: Linux x64 5.15.0-105-generic
System Info:
System:
Kernel: 5.15.0-105-generic x86_64 bits: 64 compiler: gcc v: 11.4.0 Desktop: Cinnamon 6.0.4
tk: GTK 3.24.33 wm: muffin vt: 7 dm: LightDM 1.30.0 Distro: Linux Mint 21.3 Virginia
base: Ubuntu 22.04 jammy
Machine:
Type: Desktop System: Dell product: OptiPlex 5040 v: N/A serial: Chassis:
type: 3 serial:
Mobo: Dell model: 0R790T v: A00 serial: UEFI-[Legacy]: Dell v: 1.2.7
date: 01/15/2016
Battery:
Device-1: hidpp_battery_0 model: Logitech M570 serial: charge: 35% rechargeable: yes
status: Discharging
CPU:
Info: quad core model: Intel Core i5-6500 bits: 64 type: MCP smt: arch: Skylake-S
rev: 3 cache: L1: 256 KiB L2: 1024 KiB L3: 6 MiB
Speed (MHz): avg: 895 high: 900 min/max: 800/3600 cores: 1: 900 2: 900 3: 880 4: 900
bogomips: 25599
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
Graphics:
Device-1: NVIDIA GP108 [GeForce GT 1030] driver: nvidia v: 535.171.04 pcie: speed: 8 GT/s
lanes: 4 ports: active: none off: HDMI-A-1 empty: DVI-D-1 bus-ID: 01:00.0 chip-ID: 10de:1d01
class-ID: 0300
Display: x11 server: X.Org v: 1.21.1.4 driver: X: loaded: nvidia
unloaded: fbdev,modesetting,nouveau,vesa gpu: nvidia display-ID: :0 screens: 1
Screen-1: 0 s-res: 3840x2160 s-dpi: 162 s-size: 602x341mm (23.7x13.4") s-diag: 692mm (27.2")
Monitor-1: HDMI-0 res: 3840x2160 hz: 60 dpi: 163 size: 600x340mm (23.6x13.4")
diag: 690mm (27.2")
OpenGL: renderer: NVIDIA GeForce GT 1030/PCIe/SSE2 v: 4.6.0 NVIDIA 535.171.04
direct render: Yes
Audio:
Device-1: Intel 100 Series/C230 Series Family HD Audio vendor: Dell driver: snd_hda_intel
v: kernel bus-ID: 00:1f.3 chip-ID: 8086:a170 class-ID: 0403
Device-2: NVIDIA GP108 High Definition Audio driver: snd_hda_intel v: kernel pcie:
speed: 8 GT/s lanes: 4 bus-ID: 01:00.1 chip-ID: 10de:0fb8 class-ID: 0403
Sound Server-1: ALSA v: k5.15.0-105-generic running: yes
Sound Server-2: PulseAudio v: 15.99.1 running: yes
Sound Server-3: PipeWire v: 0.3.48 running: yes
Network:
Device-1: Intel Ethernet I219-V vendor: Dell driver: e1000e v: kernel port: N/A bus-ID: 00:1f.6
chip-ID: 8086:15b8 class-ID: 0200
IF: enp0s31f6 state: up speed: 1000 Mbps duplex: full mac:
Drives:
Local Storage: total: 2.05 TiB used: 1.98 TiB (96.3%)
ID-1: /dev/sda vendor: SanDisk model: SD8SBAT-256G-1006 size: 238.47 GiB speed: 6.0 Gb/s
type: SSD serial: rev: 1006 scheme: GPT
ID-2: /dev/sdb vendor: Western Digital model: WDS100T2B0A-00SM50 size: 931.51 GiB
speed: 6.0 Gb/s type: SSD serial: rev: 20WD scheme: MBR
ID-3: /dev/sdd type: USB vendor: Western Digital model: WD My Passport 25E1 size: 931.48 GiB
type: N/A serial: rev: 1021 scheme: GPT
Partition:
ID-1: / size: 233.62 GiB used: 75.22 GiB (32.2%) fs: ext4 dev: /dev/sda3
ID-2: /boot/efi size: 47.2 MiB used: 6 MiB (12.8%) fs: vfat dev: /dev/sda2
ID-3: /home size: 915.82 GiB used: 720.74 GiB (78.7%) fs: ext4 dev: /dev/sdb1
Swap:
ID-1: swap-1 type: file size: 2 GiB used: 0 KiB (0.0%) priority: -2 file: /swapfile
USB:
Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 16 rev: 2.0 speed: 480 Mb/s
chip-ID: 1d6b:0002 class-ID: 0900
Device-1: 1-3:2 info: 816820090226 type: Mass Storage driver: usb-storage interfaces: 1
rev: 2.0 speed: 480 Mb/s power: 500mA chip-ID: 3207:0300 class-ID: 0806 serial:
Device-2: 1-5:3 info: Logitech Unifying Receiver type: Keyboard,Mouse,HID
driver: logitech-djreceiver,usbhid interfaces: 3 rev: 2.0 speed: 12 Mb/s power: 98mA
chip-ID: 046d:c52b class-ID: 0300
Device-3: 1-9:4 info: Western Digital My Passport (WD20NMVW) type: Mass Storage
driver: usb-storage interfaces: 1 rev: 2.1 speed: 480 Mb/s power: 500mA chip-ID: 1058:25e1
class-ID: 0806 serial:
Hub-2: 2-0:1 info: Super-speed hub ports: 10 rev: 3.0 speed: 5 Gb/s chip-ID: 1d6b:0003
class-ID: 0900
Sensors:
System Temperatures: cpu: 29.8 C pch: 55.5 C mobo: 27.8 C gpu: nvidia temp: 35 C
Fan Speeds (RPM): N/A gpu: nvidia fan: 86%
Repos:
Packages: note: see --pkg apt: 3773
Active apt repos in: /etc/apt/sources.list
1: deb [trusted=yes] http: //www.raqsoft.com/raqesproc/update/debian/ /
Active apt repos in: /etc/apt/sources.list.d/gambas-team-gambas3-jammy.list
1: deb [signed-by=/etc/apt/keyrings/gambas-team-gambas3-jammy.gpg] https: //ppa.launchpadcontent.net/gambas-team/gambas3/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/jonaski-strawberry-jammy.list
1: deb [signed-by=/etc/apt/keyrings/jonaski-strawberry-jammy.gpg] https: //ppa.launchpadcontent.net/jonaski/strawberry/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/krupkat-code-jammy.list
1: deb [signed-by=/etc/apt/keyrings/krupkat-code-jammy.gpg] https: //ppa.launchpadcontent.net/krupkat/code/ubuntu jammy main
Active apt repos in: /etc/apt/sources.list.d/official-package-repositories.list
1: deb http: //packages.linuxmint.com virginia main upstream import backport
2: deb http: //archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
3: deb http: //archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
4: deb http: //archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
5: deb http: //security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
Active apt repos in: /etc/apt/sources.list.d/vivaldi.list
1: deb [arch=amd64] https: //repo.vivaldi.com/stable/deb/ stable main
Active apt repos in: /etc/apt/sources.list.d/vscode.list
1: deb [arch=amd64,arm64,armhf] http: //packages.microsoft.com/repos/code stable main
Active apt repos in: /etc/apt/sources.list.d/vscodium.list
1: deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https: //download.vscodium.com/debs vscodium main
Info:
Processes: 286 Uptime: 41m wakeups: 4 Memory: 15.54 GiB used: 3.94 GiB (25.4%) Init: systemd
v: 249 runlevel: 5 Compilers: gcc: 11.4.0 alt: 11/12 clang: 14.0.0-1ubuntu1.1
Client: Unknown python client inxi: 3.3.13
C:/fresh/v/editor/text_editor_app.v:24:4: warning: initalizing private field click_event_fn
of iui.MenuItemConfig
22 | item := ui.MenuItem.new(
23 | text: theme.name
24 | click_event_fn: theme_click
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~
25 | )
26 | theme_menu.add_child(item)
Details: this will become an error after 2024-05-31
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.