https://github.com/quellabs/wakapac
A lightweight reactive UI engine that unifies declarative data binding and a centralized event pipeline — delivering predictable, structured interactivity without build tools.
https://github.com/quellabs/wakapac
data-binding frontend javascript pac presentation-abstraction-control reactive two-way-binding ui-framework vanilla-js
Last synced: 1 day ago
JSON representation
A lightweight reactive UI engine that unifies declarative data binding and a centralized event pipeline — delivering predictable, structured interactivity without build tools.
- Host: GitHub
- URL: https://github.com/quellabs/wakapac
- Owner: quellabs
- License: mit
- Created: 2025-08-02T09:59:48.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-04-12T06:17:48.000Z (15 days ago)
- Last Synced: 2026-04-12T08:13:15.110Z (15 days ago)
- Topics: data-binding, frontend, javascript, pac, presentation-abstraction-control, reactive, two-way-binding, ui-framework, vanilla-js
- Language: JavaScript
- Homepage: https://www.wakapac.com
- Size: 3.32 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## WakaPAC
A compact reactive UI runtime with a desktop-style event pipeline —
delivered as a single drop-in script. No build tools, no CLI, no
node_modules.
## Why WakaPAC?
Most reactive libraries stop at data binding. WakaPAC routes **all interaction through a centralized message pipeline**, inspired by desktop UI frameworks.
Instead of scattering event listeners, timers, and gesture logic across your code, everything flows through a single `msgProc` handler with normalized events.
You get reactive DOM updates *and* predictable interaction logic in one lightweight runtime.
## Quick Start
``` html
Hello {{ name }}
wakaPAC('#app', {
name: 'World'
});
```
Two-way binding, reactive updates, zero configuration.
## Features
**Core**
- Centralized message pipeline for all UI and system events
- Reactive bindings, computed properties, watchers, deep reactive objects and arrays
- Parent–child component messaging
**Interaction**
- Mouse, keyboard, timers, gestures, clipboard, HTML5 drag & drop — all normalized through `msgProc`
**Canvas**
- Win32-style paint cycle with dirty rect accumulation and automatic clipping
- Metafile API: display list recording, playback, and hit testing
**Units** — optional utility libraries callable from templates and component methods:
Stdlib, Math, StringUtils, DateUtils, NumberUtils, TypeUtils, CollectionUtils, PhpUtils, RegexUtils, EscapeUtils, ColorUtils
## Plugins
**WakaChart** — renders pie, bar, line, and sparkline charts onto WakaPAC canvas components via the metafile/display list API. Global defaults (colors, font, padding) are set at registration time; all options can be overridden per call.
**WakaStore** — shared reactive state across components, with server sync via polling, WebSocket, and HTTP push.
**WakaForm** — reactive form state and field-level validation with composable rules.
**WakaRoute** — client-side router delivering navigation events through `msgProc`.
**WakaMotion** — device motion and orientation sensors as reactive properties.
**WakaSync** — full-featured HTTP client with request grouping, cancellation, retries, and interceptors. Results delivered as `MSG_HTTP_SUCCESS`, `MSG_HTTP_ERROR`, or `MSG_HTTP_ABORT`.
**WakaVideo** — bridges native `` elements into the WakaPAC message and abstraction model. Supports playback control, volume, seek, playback rate, programmatic cues (`addCue`), and canvas frame capture via `bitBlt`/`stretchBlt`.
**WakaYouTube** — bridges the YouTube IFrame API into WakaPAC. Activate on any `
` container; the API script is injected and shared automatically. Supports playback control, volume, seek, and mute.
**WakaVimeo** — bridges the Vimeo Player SDK into WakaPAC. Activate on any `
` container; the SDK script is injected automatically. Supports playback control, volume, seek, mute, and playback rate (requires Vimeo PRO/Business).
## Documentation
Full docs, guides, and API reference:
**[wakapac.com/docs](https://www.wakapac.com/docs)**
## License
MIT