An open API service indexing awesome lists of open source software.

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.

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