@elaraai/east-claude-plugin 1.0.94 → 1.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/index.json +915 -273
- package/package.json +1 -1
- package/skills/e3-ui/SKILL.md +767 -162
- package/skills/east-ui/SKILL.md +18 -7
package/skills/east-ui/SKILL.md
CHANGED
|
@@ -514,7 +514,7 @@ Task → Which tag?
|
|
|
514
514
|
│ │ ├─ TreeView.Item(value, label, indicator?) — leaf node (indicator = a Font Awesome solid icon + style)
|
|
515
515
|
│ │ └─ TreeView.Branch(value, label, children, indicator?, disabled?) — expandable node
|
|
516
516
|
│ ├─ <Plan> — the planning canvas (ONE shared time | number | ordinal axis over heterogeneous rows: event kinds over records, rows laid out by a series list over data, and read-only rows) is e3-ui's (#1177, #1191): `import { Plan } from "@elaraai/e3-ui"` — its props, factories and patterns are in the e3-ui skill
|
|
517
|
-
│ ├─ <Sheet> — the planning spreadsheet, always in its builder frame (typed columns over an e3 record's rows
|
|
517
|
+
│ ├─ <Sheet> — the planning spreadsheet, always in its builder frame (typed columns over an e3 record's rows, the host's or its rail's `rows` source, a blank tail that invites the next row, typed grammars, an East-function copilot, one `Slice.bindRecords` rail with saved views, an editing session, and a library and an inspector pane, each an optional prop) is e3-ui's (#1179, #1216): `import { Sheet } from "@elaraai/e3-ui"` — its props, factories and patterns are in the e3-ui skill
|
|
518
518
|
│ ├─ <Matrix data={…} columns={…} cell={(r, col) => Matrix.cell({…})} /> — rows × columns of status-coloured segment bars
|
|
519
519
|
│ │ ├─ Props:
|
|
520
520
|
│ │ │ ├─ data (required) — row structs, or RecursiveType rows whose node is a struct (nested with `tree`); columns (required) — array of Matrix.column(…) (data-drivable with .map)
|
|
@@ -662,8 +662,9 @@ Task → Which tag?
|
|
|
662
662
|
│ │ └─ Factories:
|
|
663
663
|
│ │ ├─ Slice.bind(key, rows, options?) — local Array rows; infers the row type. Options: fields (label/hints/format), range, search, initial, presets, breakdown and match. Initial/preset clauses name typed fields; local operators include gte/contains. The positional form is removed.
|
|
664
664
|
│ │ ├─ Slice.bindRecord(key, indexed, options?) — Data.bindPaged(record, { indexes }) from e3-ui; fields/range/search/initial/presets come from declared field indexes. No browser predicate, local operators, match or breakdown. Several exact values then one range/prefix must follow one index; a Set field takes one exact member.
|
|
665
|
+
│ │ ├─ Slice.bindRecords(key, { name: { source: indexed, fields?, range?, search?, initial? }, … }, { presets? }) — several records narrowed from ONE rail: one Slice.bindRecord per named source under `${key}.${name}`; a choice in one source never changes another's rows or counts (no index relates two records). Presets narrow any sources at once (a source a preset doesn't name is cleared); slice.togglePreset(id) / slice.clearAll() act on every part. A component that narrows several kinds of row takes it as slice={{ slice }} with its sources named after them (the e3-ui Allocation's `lanes` and `resources`) and reads each source itself.
|
|
665
666
|
│ │ ├─ Slice.config(Row, { fields, rangeFieldId?, searchFieldIds?, breakdownFieldIds? }) / Slice.state({…}) — low-level config/state for pure Slice.apply and state operations; bind options infer and seed these automatically.
|
|
666
|
-
│ │ ├─ Slice.rows(slice) — the narrowed Array for local rows, or a
|
|
667
|
+
│ │ ├─ Slice.rows(slice) — the narrowed Array for local rows, or for records a live ordered source: one per binding whatever the narrowing, its windows read under the narrowing as it stands, its `query()` naming it (#1354); record entries retain original key beside tagged ik, covering value and optional joined row. Slice.rows(slice, source) reads one source of a Slice.bindRecords handle.
|
|
667
668
|
│ │ ├─ Slice.partition([Row], slice) — the FULL set tagged [{value, matched}] (the "keep the excluded" feed — drive a de-emphasis effect from `matched`)
|
|
668
669
|
│ │ ├─ Slice.apply.where / .matches / .breakdown — the pure filter engine (string ops eq/neq/in/notIn/contains/matches/startsWith/endsWith/isEmpty/isNotEmpty; integer in; datetime between)
|
|
669
670
|
│ │ └─ slice.toggleFilter(pred) — idempotent single-predicate toggle for custom wiring; Range picker presets anchor to the DATA's date extent (clamped to now for live data) and pin concrete windows; an All chip clears the range; programmatic datetimePreset seeds stay rolling/wall-clock
|
|
@@ -1046,9 +1047,10 @@ expression, or a whole-value `Data.bind` / `State.bind` handle — or a paged
|
|
|
1046
1047
|
source from the platform that owns the data, e3-ui's `Data.bindPaged`. east-ui
|
|
1047
1048
|
produces no paged source; a collection already in hand is local data. A
|
|
1048
1049
|
component recognises a paged source by its East type, a subtype of
|
|
1049
|
-
`Paged.Types.PinnedSource(C)
|
|
1050
|
-
`C` its `page` serves, and refuses
|
|
1051
|
-
|
|
1050
|
+
`Paged.Types.PinnedSource(C)`, `Paged.Types.LiveSource(C)` or
|
|
1051
|
+
`Paged.Types.Source(C)` over the collection `C` its `page` serves, and refuses
|
|
1052
|
+
a struct with `page` / `total` that is none of them, naming the contract's
|
|
1053
|
+
fields.
|
|
1052
1054
|
|
|
1053
1055
|
The contract is a PINNED source: `{ id, page, total, seek, revision, refresh }`
|
|
1054
1056
|
— the `pinned` arm. `id` names the logical source; `revision()` names the
|
|
@@ -1067,6 +1069,15 @@ the `paged` arm — is the handle a UI exported before them carries. It names no
|
|
|
1067
1069
|
snapshot: a component reads each window once, and the same `id` serves the
|
|
1068
1070
|
same rows for as long as the component holds it.
|
|
1069
1071
|
|
|
1072
|
+
A rail's narrowed source — `Slice.rows(slice, source)` over records — is a
|
|
1073
|
+
pinned source that names its narrowing too: `{ id, page, total, seek,
|
|
1074
|
+
revision, refresh, query }`, `Paged.Types.LiveSource(C)`, the `live` arm. Its
|
|
1075
|
+
`id` names the source under every narrowing, its reads read the narrowing as
|
|
1076
|
+
it stands when they run, and `query()` names it, so a component built over it
|
|
1077
|
+
is not built again when a choice changes (#1354). A component keys its windows
|
|
1078
|
+
by `query()` as by `revision()`, reading them again when either moves; editing
|
|
1079
|
+
keeps the revision alone, so a Save confirms against the record's state.
|
|
1080
|
+
|
|
1070
1081
|
`Data.bindPaged` also follows its dataset without a call: the workspace
|
|
1071
1082
|
status poll reports each new content hash and the source moves to that
|
|
1072
1083
|
snapshot, so a `refresh` after your own write only gets there sooner. A
|
|
@@ -1494,8 +1505,8 @@ tier so they stay subordinate to tags at every density.
|
|
|
1494
1505
|
e3-ui's `<Sheet>` (#1179, #1216) is where a planner TYPES
|
|
1495
1506
|
them, in its builder frame: typed cells with grammars (dates, quantities,
|
|
1496
1507
|
register lookups, a directed link), a blank tail that inserts rows, an
|
|
1497
|
-
East-function copilot, and
|
|
1498
|
-
|
|
1508
|
+
East-function copilot, and one rail narrowing its rows, its templates and
|
|
1509
|
+
its tabs, with saved views. Reach for `<Sheet>` when the rows are authored in place
|
|
1499
1510
|
and written back (through an e3 record's patch, or `onUpdate` / `onApply`)
|
|
1500
1511
|
— the e3-ui skill documents it; for reading, sorting and reviewing a
|
|
1501
1512
|
dataset, `<Table>`.
|