# MEUI **Repository Path**: vsf-linux/MEUI ## Basic Information - **Project Name**: MEUI - **Description**: 现代嵌入式用户界面库,非凡的开发体验 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-05-21 - **Last Updated**: 2022-07-25 ## Categories & Tags **Categories**: webui **Tags**: None ## README

MEUI

A modern embedded UI library giving your extraordinary development experience

现代嵌入式用户界面库,非凡的开发体验

build status

`MEUI` is a modern ui library for embedded platform based on `quickjs` and `React.js` ## [Example](examples/hello/index.jsx) ```tsx import React from "react" import { MEUI, ReactMEUI } from "@/meui" import { animated, useSpring } from "@/react-sping-meui" function App() { const styles = useSpring({ loop: true, from: { rotateZ: 0 }, to: { rotateZ: 360 }, }) return ( Hello MEUI! ) } const meui = new MEUI(300, 300) ReactMEUI.render(, meui) ``` ## Features - Support `React.js` to build UI - Support `flex` layout - Support partical `css` style - Support `Material Design Icons` - Support `React Spring` to build animation - Support `ES2020` - Support `canvas` api ## Getting Started (`Ubuntu`/`WSLg`) - ### Install `Node.js` & `NPM` ```sh sudo apt install nodejs sudo apt install npm # Update version using below commands if necessary (optional) sudo npm install -g n sudo n stable sudo npm install npm@latest -g ``` - ### Install `GCC` & `Make` ```sh sudo apt install gcc make ``` - ### Build & Run MEUI ```sh npm install npm run dev # specified entry npm run dev examples/signin/index.tsx ``` ## API References ### CSS Style ```typescript export interface MeuiStyle { borderRadius?: [number, number, number, number] | number borderColor?: string backgroundColor?: Property.BackgroundColor fontColor?: Property.Color text?: string fontSize?: number fontFamily?: string textAlign?: | "center-left" | "center-right" | "center" | "top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center" backgroundImage?: string contentImage?: string transform?: string transformOrigin?: | [number, number] | ["left" | "center" | "right", "top" | "center" | "bottom"] flexWrap?: "nowrap" | "wrap" | "wrap-reverse" flexDirection?: "row" | "column" | "row-reverse" | "column-reverse" alignItems?: "stretch" | "flex-start" | "center" | "flex-end" | "baseline" alignSelf?: | "auto" | "stretch" | "flex-start" | "center" | "flex-end" | "baseline" alignContent?: | "stretch" | "flex-start" | "center" | "flex-end" | "space-between" | "space-around" justifyContent?: | "flex-start" | "center" | "flex-end" | "space-between" | "space-around" margin?: [number, number, number, number] | number border?: [number, number, number, number] | number padding?: [number, number, number, number] | number overflow?: "visible" | "hidden" | "scroll" | "auto" flexBasis?: number flexGrow?: number flexShrink?: number width?: Length height?: Length minWidth?: Length minHeight?: Length maxWidth?: Length maxHeight?: Length marginLeft?: Length marginTop?: Length marginBottom?: Length marginRight?: Length marginStart?: Length marginEnd?: Length paddingLeft?: Length paddingTop?: Length paddingBottom?: Length paddingRight?: Length paddingStart?: Length paddingEnd?: Length borderLeft?: number borderTop?: number borderBottom?: number borderRight?: number borderStart?: number borderEnd?: number borderTopLeftRadius?: number borderTopRightRadius?: number borderBottomRightRadius?: number borderBottomLeftRadius?: number left?: Length right?: Length top?: Length bottom?: Length zIndex?: number FOCUS?: MeuiStyle ACTIVE?: MeuiStyle HOVER?: MeuiStyle SELECT?: MeuiStyle DISABLE?: MeuiStyle CHECK?: MeuiStyle } ``` ## Canvas API `arc` `arcTo` `beiginPath` `bezierCurveTo` `createRadialGradient` `createLinearGradient` `clearRect` `clip` `closePath` `ellipse` `fill` `fillRect` `fillText` `font` `getImageData` `getTransform` `lineCap` `lineDashOffset` `lineJoin` `lineWidth` `measureText` `Path2D` `putImageData` `quadraticCurveTo` `resetTransform` `rotate` `save` `scale` `setLineDash` `setTransform` `strokeRect` `strokeText` `textAlign` `textBaseline` `transform` `translate` ## Discussion Group Tencent QQ Group: [765228998](https://jq.qq.com/?_wv=1027&k=LjX7RmEe) ## References - QuickJS Javascript Engine. Available at: https://bellard.org/quickjs/ - PlutoVG is a standalone 2D vector graphics library in C. Available at: https://github.com/sammycage/plutovg - React: A JavaScript library for building user interfaces. Available at: https://reactjs.org/ - react-spring: A spring-physics first animation library. Available at: https://react-spring.io/ - `FlexLayout` is an `C` implementation of `Flexible Box` layout. Available at: https://github.com/Sleen/FlexLayout - single-file public domain (or MIT licensed) libraries for C/C++. Available at: https://github.com/nothings/stb - Templated type-safe hashmap implementation in C. Available at: https://github.com/DavidLeeds/hashmap - `libpqueue` is a generic priority queue (heap) implementation. Available at: https://github.com/vy/libpqueue