@elaraai/e3-ui 1.0.83 → 1.0.84

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.
Files changed (69) hide show
  1. package/dist/src/bind/record.d.ts +229 -4
  2. package/dist/src/bind/record.d.ts.map +1 -1
  3. package/dist/src/bind/record.js +245 -5
  4. package/dist/src/bind/record.js.map +1 -1
  5. package/dist/src/index.d.ts +2 -1
  6. package/dist/src/index.d.ts.map +1 -1
  7. package/dist/src/index.js +4 -1
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/internal.d.ts +2 -1
  10. package/dist/src/internal.d.ts.map +1 -1
  11. package/dist/src/internal.js +5 -1
  12. package/dist/src/internal.js.map +1 -1
  13. package/dist/src/studio/builder.d.ts +3123 -0
  14. package/dist/src/studio/builder.d.ts.map +1 -0
  15. package/dist/src/studio/builder.js +115 -0
  16. package/dist/src/studio/builder.js.map +1 -0
  17. package/dist/src/studio/canvas.d.ts +83 -0
  18. package/dist/src/studio/canvas.d.ts.map +1 -0
  19. package/dist/src/studio/canvas.js +71 -0
  20. package/dist/src/studio/canvas.js.map +1 -0
  21. package/dist/src/studio/component.d.ts +178 -0
  22. package/dist/src/studio/component.d.ts.map +1 -0
  23. package/dist/src/studio/component.js +189 -0
  24. package/dist/src/studio/component.js.map +1 -0
  25. package/dist/src/studio/index.d.ts +104 -0
  26. package/dist/src/studio/index.d.ts.map +1 -0
  27. package/dist/src/studio/index.js +75 -0
  28. package/dist/src/studio/index.js.map +1 -0
  29. package/dist/src/studio/inspector.d.ts +208 -0
  30. package/dist/src/studio/inspector.d.ts.map +1 -0
  31. package/dist/src/studio/inspector.js +155 -0
  32. package/dist/src/studio/inspector.js.map +1 -0
  33. package/dist/src/studio/library.d.ts +3506 -0
  34. package/dist/src/studio/library.d.ts.map +1 -0
  35. package/dist/src/studio/library.js +245 -0
  36. package/dist/src/studio/library.js.map +1 -0
  37. package/dist/src/studio/page.d.ts +305 -0
  38. package/dist/src/studio/page.d.ts.map +1 -0
  39. package/dist/src/studio/page.js +105 -0
  40. package/dist/src/studio/page.js.map +1 -0
  41. package/dist/src/studio/pages.d.ts +10929 -0
  42. package/dist/src/studio/pages.d.ts.map +1 -0
  43. package/dist/src/studio/pages.js +502 -0
  44. package/dist/src/studio/pages.js.map +1 -0
  45. package/dist/src/studio/palette.d.ts +179 -0
  46. package/dist/src/studio/palette.d.ts.map +1 -0
  47. package/dist/src/studio/palette.js +120 -0
  48. package/dist/src/studio/palette.js.map +1 -0
  49. package/dist/src/studio/publish.d.ts +397 -0
  50. package/dist/src/studio/publish.d.ts.map +1 -0
  51. package/dist/src/studio/publish.js +198 -0
  52. package/dist/src/studio/publish.js.map +1 -0
  53. package/dist/test/bind/record/record.examples.d.ts +65 -1
  54. package/dist/test/bind/record/record.examples.d.ts.map +1 -1
  55. package/dist/test/bind/record/record.examples.js +21 -3
  56. package/dist/test/bind/record/record.examples.js.map +1 -1
  57. package/dist/test/studio/component.examples.d.ts +7 -0
  58. package/dist/test/studio/component.examples.d.ts.map +1 -0
  59. package/dist/test/studio/component.examples.js +46 -0
  60. package/dist/test/studio/component.examples.js.map +1 -0
  61. package/dist/test/studio/page.examples.d.ts +7 -0
  62. package/dist/test/studio/page.examples.d.ts.map +1 -0
  63. package/dist/test/studio/page.examples.js +64 -0
  64. package/dist/test/studio/page.examples.js.map +1 -0
  65. package/dist/test/studio/studio.examples.d.ts +1766 -0
  66. package/dist/test/studio/studio.examples.d.ts.map +1 -0
  67. package/dist/test/studio/studio.examples.js +354 -0
  68. package/dist/test/studio/studio.examples.js.map +1 -0
  69. package/package.json +9 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../../src/studio/pages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EACH,SAAS,EACT,iBAAiB,EACjB,QAAQ,EAER,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,UAAU,EAGV,UAAU,EACV,UAAU,EACV,WAAW,EAIX,KAAK,QAAQ,EAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAU,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAO9D;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;EAGxB,CAAC;AAEH,sCAAsC;AACtC,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;EASzB,CAAC;AAEH,iDAAiD;AACjD,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,yCAAyC;AACzC,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;EAGzB,CAAC;AAEH,uDAAuD;AACvD,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG9B,CAAC;AAEH,gCAAgC;AAChC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG1B,CAAC;AAEH,uDAAuD;AACvD,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAA2C,CAAC;AAExE,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC;AAErD,sDAAsD;AACtD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CvB,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsBtB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsBnB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmBxB,CAAC;AAcF;;;;;;;;GAQG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAOrB,CAAC;AAyCF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkHvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAUtB,CAAC;AAEF,gIAAgI;AAChI,MAAM,WAAW,oBAAoB;IACjC,kFAAkF;IAClF,IAAI,EAAE,OAAO,SAAS,CAAC;IACvB,mFAAmF;IACnF,OAAO,EAAE,OAAO,WAAW,CAAC;IAC5B,+DAA+D;IAC/D,MAAM,EAAE,OAAO,UAAU,CAAC;IAC1B,iEAAiE;IACjE,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,iEAAiE;IACjE,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,8EAA8E;IAC9E,OAAO,EAAE,OAAO,WAAW,CAAC;IAC5B,4CAA4C;IAC5C,MAAM,EAAE,OAAO,UAAU,CAAC;CAC7B;AAED,wDAAwD;AACxD,eAAO,MAAM,WAAW,EAAE,oBAQzB,CAAC"}
@@ -0,0 +1,502 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * The Studio's pages (#992) — the type of the one record a solution declares,
7
+ * the patch every operator action writes it with, and the change list.
8
+ *
9
+ * The Studio exports types; the solution declares its storage like any record,
10
+ * with one write, a patch:
11
+ *
12
+ * ```ts
13
+ * export const pages = e3.record("pages", Studio.Types.Pages, new Map());
14
+ * export const pagesPatch = e3.mutation.patch(pages);
15
+ * ```
16
+ *
17
+ * Save, publish, revert, a new page and save-as-template are each one patch
18
+ * through it, computed in East as the diff of the one entry it writes, before
19
+ * and after. A patch carries what it changes as it was, so a write that meets
20
+ * what another write changed since it was drafted fails the record's check and
21
+ * names the page, and nothing is overwritten. The type never depends on the
22
+ * components, so a deploy that adds, changes or removes one runs no migration.
23
+ *
24
+ * @packageDocumentation
25
+ */
26
+ import { ArrayType, AsyncFunctionType, DictType, East, FunctionType, IntegerType, NullType, OptionType, PatchType, SetType, StringType, StructType, VariantType, none, some, variant, } from "@elaraai/east";
27
+ import { Editing, SnapGrid } from "@elaraai/east-ui/internal";
28
+ import { RecordCommitInfoType } from "@elaraai/e3-types";
29
+ import { Record, RecordOutcomeType } from "../bind/record.js";
30
+ import { StudioComponentType } from "./component.js";
31
+ // ============================================================================
32
+ // Types
33
+ // ============================================================================
34
+ /**
35
+ * A page's key: the project it belongs to, and its name in the project. A
36
+ * project's pages are one contiguous run in key order.
37
+ *
38
+ * @property project - The project
39
+ * @property page - The page's name in the project
40
+ */
41
+ export const StudioKeyType = StructType({
42
+ project: StringType,
43
+ page: StringType,
44
+ });
45
+ /**
46
+ * One placement on a page: a component's key, where it sits on the 12-column
47
+ * grid, and its code's fingerprint when it was placed or the page last
48
+ * published.
49
+ *
50
+ * @remarks
51
+ * Rows order by their first appearance among the cells, and the cells of a row
52
+ * by their order in the page's `cells` — the SnapGrid's own layout, so a page's
53
+ * cells are the rows the canvas edits.
54
+ *
55
+ * @property key - The placement's identity on the page
56
+ * @property row - The key of the row it sits in
57
+ * @property span - Its width, in columns of 12
58
+ * @property height - Its height in px; `none` is its content's height
59
+ * @property align - Where it sits in a taller row
60
+ * @property title - Its title; `none` is its component's name
61
+ * @property component - The key of the component it places
62
+ * @property fingerprint - Its component's fingerprint when it was placed, stamped anew each time the page publishes — so a live version's cells hold the code each went live with
63
+ */
64
+ export const StudioCellType = StructType({
65
+ key: StringType,
66
+ row: StringType,
67
+ span: IntegerType,
68
+ height: OptionType(IntegerType),
69
+ align: SnapGrid.Types.Align,
70
+ title: OptionType(StringType),
71
+ component: StringType,
72
+ fingerprint: StringType,
73
+ });
74
+ /**
75
+ * A page's layout: its title and its placements.
76
+ *
77
+ * @property title - The page's title
78
+ * @property cells - Its placements, in the order the canvas holds them
79
+ */
80
+ export const StudioPageType = StructType({
81
+ title: StringType,
82
+ cells: ArrayType(StudioCellType),
83
+ });
84
+ /**
85
+ * A published version of a page.
86
+ *
87
+ * @property version - Its number, counting up from 1
88
+ * @property page - The layout it published
89
+ */
90
+ export const StudioLiveType = StructType({
91
+ version: IntegerType,
92
+ page: StudioPageType,
93
+ });
94
+ /**
95
+ * A page: the layout the builder edits, and the version the site shows.
96
+ *
97
+ * @property draft - The layout as last saved
98
+ * @property live - The published version; `none` until the first publish
99
+ */
100
+ export const StudioPageEntryType = StructType({
101
+ draft: StudioPageType,
102
+ live: OptionType(StudioLiveType),
103
+ });
104
+ /**
105
+ * One entry of the pages record.
106
+ *
107
+ * @property page - A page, drafted and published
108
+ * @property template - A layout saved from a page, which new pages start from
109
+ */
110
+ export const StudioEntryType = VariantType({
111
+ page: StudioPageEntryType,
112
+ template: StudioPageType,
113
+ });
114
+ /**
115
+ * The pages record's type — every page and template, by key. A solution
116
+ * declares its record with it: `e3.record("pages", Studio.Types.Pages, new Map())`.
117
+ */
118
+ export const StudioPagesType = DictType(StudioKeyType, StudioEntryType);
119
+ /** The pages record's patch — what every write is. */
120
+ export const StudioPagesPatchType = PatchType(StudioPagesType);
121
+ /**
122
+ * The pages record, bound with its patch — what the builder and the page
123
+ * library read and write through: the bound record's `read`, its `history`,
124
+ * and its patch write awaited. Their factories take these from
125
+ * `Record.bind(pages, [pagesPatch])`.
126
+ *
127
+ * @property read - The record's current state
128
+ * @property history - Its commit chain, newest first — who changed a page last, for a conflict's words
129
+ * @property commit - Its patch write, awaited: a request id and the patch, answered by the outcome
130
+ */
131
+ export const StudioPagesHandleType = StructType({
132
+ read: FunctionType([], StudioPagesType),
133
+ history: FunctionType([], OptionType(ArrayType(RecordCommitInfoType))),
134
+ commit: StructType({
135
+ patch: AsyncFunctionType([StringType, StudioPagesPatchType], RecordOutcomeType),
136
+ }),
137
+ });
138
+ /**
139
+ * One change to a placement.
140
+ *
141
+ * @property cell - The placement's key
142
+ * @property component - The key of the component it places
143
+ * @property detail - What changed, such as "row 2 · span 4" or "span 12 → 8"
144
+ */
145
+ export const StudioCellChangeType = StructType({
146
+ cell: StringType,
147
+ component: StringType,
148
+ detail: StringType,
149
+ });
150
+ /**
151
+ * One change between two layouts of a page, as {@link pageChanges} lists them.
152
+ *
153
+ * @property added - Placed on the page — its row and span
154
+ * @property removed - Taken off the page — the row and span it had
155
+ * @property moved - Moved into another row or a new one, with its row among the rows, or to another place in its row
156
+ * @property resized - Its span changed
157
+ * @property height - Its height changed; `auto` is its content's height
158
+ * @property aligned - Where it sits in a taller row changed
159
+ * @property retitled - Its title changed; `default` is its component's name
160
+ */
161
+ export const StudioChangeType = VariantType({
162
+ added: StudioCellChangeType,
163
+ removed: StudioCellChangeType,
164
+ moved: StudioCellChangeType,
165
+ resized: StudioCellChangeType,
166
+ height: StudioCellChangeType,
167
+ aligned: StudioCellChangeType,
168
+ retitled: StudioCellChangeType,
169
+ });
170
+ /**
171
+ * A page's status.
172
+ *
173
+ * @property live - Published, and its draft is the published layout
174
+ * @property draft - Never published, or its draft has changes the site does not show
175
+ */
176
+ export const StudioStatusType = VariantType({
177
+ live: NullType,
178
+ draft: NullType,
179
+ });
180
+ // ============================================================================
181
+ // The writes — each one patch through the record's patch mutation
182
+ // ============================================================================
183
+ /**
184
+ * Publishes a page: its live version becomes its draft, numbered one past the
185
+ * version it replaces, or 1 the first time — each placement stamped with the
186
+ * code it goes live with, its component's fingerprint as the surface lists it
187
+ * now.
188
+ *
189
+ * @remarks
190
+ * The stamp is written to the draft too, so the draft is the live version once
191
+ * the patch lands, and the next publish preview names only the components
192
+ * whose code changed since. A placement whose component the surface does not
193
+ * list keeps the fingerprint it has. The patch changes the page's live version
194
+ * and the fingerprints it restamps, and carries both as they were: a publish
195
+ * drafted before another one landed is a conflict naming the page, and so is
196
+ * one drafted before a save that removed or reordered placements it restamps.
197
+ */
198
+ export const publishPage = East.function([StudioPagesType, StudioKeyType, ArrayType(StudioComponentType)], StudioPagesPatchType, ($, pages, key, components) => {
199
+ const entry = $.let(pages.tryGet(key).match({
200
+ some: (_$, found) => found,
201
+ none: ($2) => $2.error(East.str `No page ${East.print(key)}`),
202
+ }), StudioEntryType);
203
+ const page = $.let(entry.match({
204
+ page: (_$, found) => found,
205
+ template: ($2) => $2.error(East.str `${East.print(key)} is a template, not a page`),
206
+ }), StudioPageEntryType);
207
+ const version = $.let(page.live.match({
208
+ some: (_$, live) => live.version.add(1n),
209
+ none: (_$) => East.value(1n),
210
+ }));
211
+ // Each placement's code as it goes live; a key two components share
212
+ // keeps the first one's, as the surface renders it.
213
+ const fingerprints = $.let(components.toDict((_$2, component) => component.key, (_$2, component) => component.fingerprint, (_$2, first) => first), DictType(StringType, StringType));
214
+ const stamped = $.let({
215
+ title: page.draft.title,
216
+ cells: page.draft.cells.map((_$2, cell) => ({
217
+ key: cell.key,
218
+ row: cell.row,
219
+ span: cell.span,
220
+ height: cell.height,
221
+ align: cell.align,
222
+ title: cell.title,
223
+ component: cell.component,
224
+ fingerprint: fingerprints.tryGet(cell.component).match({
225
+ some: (_$3, fingerprint) => fingerprint,
226
+ none: (_$3) => cell.fingerprint,
227
+ }),
228
+ })),
229
+ }, StudioPageType);
230
+ const before = $.let(new Map(), StudioPagesType);
231
+ $(before.insert(key, entry));
232
+ const after = $.let(new Map(), StudioPagesType);
233
+ $(after.insert(key, variant("page", { draft: stamped, live: some({ version, page: stamped }) })));
234
+ return East.diff(before, after);
235
+ });
236
+ /**
237
+ * Reverts a page: its draft becomes its live version's layout.
238
+ *
239
+ * @remarks
240
+ * The patch carries the draft's cells it changes as they were, so a revert that
241
+ * meets cells another save changed is a conflict naming the page.
242
+ */
243
+ export const revertPage = East.function([StudioPagesType, StudioKeyType], StudioPagesPatchType, ($, pages, key) => {
244
+ const entry = $.let(pages.tryGet(key).match({
245
+ some: (_$, found) => found,
246
+ none: ($2) => $2.error(East.str `No page ${East.print(key)}`),
247
+ }), StudioEntryType);
248
+ const page = $.let(entry.match({
249
+ page: (_$, found) => found,
250
+ template: ($2) => $2.error(East.str `${East.print(key)} is a template, not a page`),
251
+ }), StudioPageEntryType);
252
+ const live = $.let(page.live.match({
253
+ some: (_$, found) => found,
254
+ none: ($2) => $2.error(East.str `${East.print(key)} has no published version to revert to`),
255
+ }), StudioLiveType);
256
+ const before = $.let(new Map(), StudioPagesType);
257
+ $(before.insert(key, entry));
258
+ const after = $.let(new Map(), StudioPagesType);
259
+ $(after.insert(key, variant("page", { draft: live.page, live: page.live })));
260
+ return East.diff(before, after);
261
+ });
262
+ /**
263
+ * Starts a page: its draft is a template's cells under the title given, or no
264
+ * cells at all (the blank grid), and it has no live version.
265
+ *
266
+ * @remarks
267
+ * The patch inserts the page, so a key another write took first is a conflict
268
+ * naming it.
269
+ */
270
+ export const newPage = East.function([StudioPagesType, StudioKeyType, StringType, OptionType(StudioKeyType)], StudioPagesPatchType, ($, pages, key, title, template) => {
271
+ $.if(pages.has(key), ($2) => {
272
+ $2.error(East.str `${East.print(key)} already exists`);
273
+ });
274
+ const cells = $.let(template.match({
275
+ some: (_$, from) => pages.tryGet(from).match({
276
+ some: (_$2, found) => found.match({
277
+ template: (_$3, layout) => layout.cells,
278
+ page: ($3) => $3.error(East.str `${East.print(from)} is a page, not a template`),
279
+ }),
280
+ none: ($2) => $2.error(East.str `No template ${East.print(from)}`),
281
+ }),
282
+ none: (_$) => East.value([], ArrayType(StudioCellType)),
283
+ }), ArrayType(StudioCellType));
284
+ const before = $.let(new Map(), StudioPagesType);
285
+ const after = $.let(new Map(), StudioPagesType);
286
+ $(after.insert(key, variant("page", { draft: { title, cells }, live: none })));
287
+ return East.diff(before, after);
288
+ });
289
+ /**
290
+ * Saves a page's draft as a template, under a key of its own and the title
291
+ * given; the page library lists it in its Templates row.
292
+ *
293
+ * @remarks
294
+ * The patch inserts the template, so a key another write took first is a
295
+ * conflict naming it.
296
+ */
297
+ export const saveTemplate = East.function([StudioPagesType, StudioKeyType, StudioKeyType, StringType], StudioPagesPatchType, ($, pages, from, key, title) => {
298
+ $.if(pages.has(key), ($2) => {
299
+ $2.error(East.str `${East.print(key)} already exists`);
300
+ });
301
+ const page = $.let(pages.tryGet(from).match({
302
+ some: (_$, found) => found.match({
303
+ page: (_$2, entry) => entry,
304
+ template: ($2) => $2.error(East.str `${East.print(from)} is a template, not a page`),
305
+ }),
306
+ none: ($2) => $2.error(East.str `No page ${East.print(from)}`),
307
+ }), StudioPageEntryType);
308
+ const before = $.let(new Map(), StudioPagesType);
309
+ const after = $.let(new Map(), StudioPagesType);
310
+ $(after.insert(key, variant("template", { title, cells: page.draft.cells })));
311
+ return East.diff(before, after);
312
+ });
313
+ /** The cells of an entry: a page's draft's, or a template's. */
314
+ const draftCellsOf = East.function([StudioEntryType], ArrayType(StudioCellType), (_$, entry) => entry.match({
315
+ page: (_$2, page) => page.draft.cells,
316
+ template: (_$2, layout) => layout.cells,
317
+ }));
318
+ /** An entry with its cells replaced, and nothing else changed. */
319
+ const withDraftCells = East.function([StudioEntryType, ArrayType(StudioCellType)], StudioEntryType, (_$, entry, cells) => entry.match({
320
+ page: (_$2, page) => East.value(variant("page", { draft: { title: page.draft.title, cells }, live: page.live }), StudioEntryType),
321
+ template: (_$2, layout) => East.value(variant("template", { title: layout.title, cells }), StudioEntryType),
322
+ }));
323
+ /**
324
+ * Saves a page's placements: the builder canvas's Apply, which commits its
325
+ * batch of placements to the page's draft as one patch.
326
+ *
327
+ * @remarks
328
+ * `Record.onApply`'s form over a collection inside one entry — the draft's
329
+ * cells, identified by `key`. The patch reaches the cells and nothing else,
330
+ * and cells another write moved since the edit began are a conflict.
331
+ */
332
+ export const saveCells = East.asyncFunction([StudioPagesHandleType, StudioKeyType, Editing.Types.ChangeSet(StudioCellType)], Editing.Types.ApplyResult, ($, handle, key, batch) => {
333
+ const apply = $.const(Record.onApply(handle, { entry: key, get: draftCellsOf, set: withDraftCells, idField: "key" }));
334
+ return apply(batch);
335
+ });
336
+ // ============================================================================
337
+ // The reads
338
+ // ============================================================================
339
+ /**
340
+ * Where a placement sits: its row's number, counting from 1 in the order rows
341
+ * first appear, its place in the row counting from 1, and its place in
342
+ * reading order counting from 0.
343
+ */
344
+ const PlaceType = StructType({ row: IntegerType, position: IntegerType, order: IntegerType });
345
+ /** A layout's placements by key, and their keys in reading order. */
346
+ const LayoutType = StructType({
347
+ places: DictType(StringType, PlaceType),
348
+ order: ArrayType(StringType),
349
+ });
350
+ /** Where each placement of a layout sits, as the SnapGrid lays it out. */
351
+ const layoutOf = East.function([StudioPageType], LayoutType, ($, page) => {
352
+ const numbers = $.let(new Map(), DictType(StringType, IntegerType));
353
+ const rows = $.let(new Map(), DictType(IntegerType, ArrayType(StringType)));
354
+ $.for(page.cells, ($2, cell) => {
355
+ $2.if(numbers.has(cell.row).not(), ($3) => {
356
+ $3(numbers.insert(cell.row, numbers.size().add(1n)));
357
+ $3(rows.insert(numbers.get(cell.row), East.value([], ArrayType(StringType))));
358
+ });
359
+ $2(rows.get(numbers.get(cell.row)).pushLast(cell.key));
360
+ });
361
+ const places = $.let(new Map(), DictType(StringType, PlaceType));
362
+ const order = $.let([], ArrayType(StringType));
363
+ $.for(rows, ($2, keys, number) => {
364
+ $2.for(keys, ($3, key, index) => {
365
+ $3(places.insertOrUpdate(key, { row: number, position: index.add(1n), order: order.size() }, (_$4, existing) => existing));
366
+ $3(order.pushLast(key));
367
+ });
368
+ });
369
+ return { places, order };
370
+ });
371
+ /**
372
+ * The changes from one layout of a page to another — what the builder counts
373
+ * and the publish preview lists.
374
+ *
375
+ * @remarks
376
+ * Each placement's changes come in the later layout's reading order, then the
377
+ * placements it no longer has. A placement moved when its row changed, or when
378
+ * it left the longest run of placements still in their reading order, so a
379
+ * move reports the placement moved and not the ones around it; which of two
380
+ * placements that swapped places moved is ambiguous, and one is reported. A
381
+ * change to a placement's component's fingerprint is not a layout change and
382
+ * is not listed.
383
+ */
384
+ export const pageChanges = East.function([StudioPageType, StudioPageType], ArrayType(StudioChangeType), ($, before, after) => {
385
+ const layout = $.const(layoutOf);
386
+ const was = $.let(layout(before));
387
+ const now = $.let(layout(after));
388
+ const cellsBefore = $.let(before.cells.toDict((_$2, cell) => cell.key, (_$2, cell) => cell, (_$2, existing) => existing));
389
+ const cellsAfter = $.let(after.cells.toDict((_$2, cell) => cell.key, (_$2, cell) => cell, (_$2, existing) => existing));
390
+ const rowsBefore = $.let(new Set(), SetType(StringType));
391
+ $.for(before.cells, ($2, cell) => {
392
+ $2(rowsBefore.tryInsert(cell.row));
393
+ });
394
+ // The placements both layouts hold in the same row, in the later one's
395
+ // reading order, and where each sat in the earlier one's. The longest
396
+ // run whose earlier places still increase kept its order; the rest
397
+ // moved. One that changed rows moved already, and is left out so it
398
+ // cannot take a neighbour's place in the run.
399
+ const common = $.let(now.order.filter((_$2, key) => cellsBefore.has(key)
400
+ .and(() => East.equal(cellsBefore.get(key).row, cellsAfter.get(key).row))));
401
+ const earlier = $.let(common.map((_$2, key) => was.places.get(key).order));
402
+ const lengths = $.let(new Map(), DictType(IntegerType, IntegerType));
403
+ const previous = $.let(new Map(), DictType(IntegerType, IntegerType));
404
+ $.for(earlier, ($2, place, i) => {
405
+ $2(lengths.insert(i, 1n));
406
+ $2(previous.insert(i, -1n));
407
+ $2.for(earlier, ($3, other, j) => {
408
+ $3.if(j.less(i).and(() => other.less(place)).and(() => lengths.get(j).add(1n).greater(lengths.get(i))), ($4) => {
409
+ $4(lengths.update(i, lengths.get(j).add(1n)));
410
+ $4(previous.update(i, j));
411
+ });
412
+ });
413
+ });
414
+ const best = $.let(-1n);
415
+ const longest = $.let(0n);
416
+ $.for(lengths, ($2, length, i) => {
417
+ $2.if(length.greater(longest), ($3) => {
418
+ $3.assign(best, i);
419
+ $3.assign(longest, length);
420
+ });
421
+ });
422
+ const kept = $.let(new Set(), SetType(StringType));
423
+ $.for(earlier, ($2) => {
424
+ $2.if(best.greaterEqual(0n), ($3) => {
425
+ $3(kept.insert(common.get(best)));
426
+ $3.assign(best, previous.get(best));
427
+ });
428
+ });
429
+ const changes = $.let([], ArrayType(StudioChangeType));
430
+ $.for(now.order, ($2, key) => {
431
+ const cell = $2.let(cellsAfter.get(key));
432
+ const place = $2.let(now.places.get(key));
433
+ $2.match(cellsBefore.tryGet(key), {
434
+ none: ($3) => {
435
+ $3(changes.pushLast(variant("added", {
436
+ cell: key, component: cell.component,
437
+ detail: East.str `row ${East.print(place.row)} · span ${East.print(cell.span)}`,
438
+ })));
439
+ },
440
+ some: ($3, old) => {
441
+ const from = $3.let(was.places.get(key));
442
+ $3.if(East.notEqual(old.row, cell.row).or(() => kept.has(key).not()), ($4) => {
443
+ // Into another row, or a new one; its own row moved among
444
+ // the rows; or a new place in its row.
445
+ const detail = $4.let(East.notEqual(old.row, cell.row).ifElse(() => rowsBefore.has(cell.row).ifElse(() => East.str `row ${East.print(from.row)} → row ${East.print(place.row)}`, () => East.str `row ${East.print(from.row)} → new row ${East.print(place.row)}`), () => East.equal(from.row, place.row).ifElse(() => East.str `row ${East.print(place.row)} · position ${East.print(from.position)} → ${East.print(place.position)}`, () => East.str `row ${East.print(from.row)} → row ${East.print(place.row)}`)));
446
+ $4(changes.pushLast(variant("moved", { cell: key, component: cell.component, detail })));
447
+ });
448
+ $3.if(East.notEqual(old.span, cell.span), ($4) => {
449
+ $4(changes.pushLast(variant("resized", {
450
+ cell: key, component: cell.component,
451
+ detail: East.str `span ${East.print(old.span)} → ${East.print(cell.span)}`,
452
+ })));
453
+ });
454
+ $3.if(East.notEqual(old.height, cell.height), ($4) => {
455
+ const oldHeight = $4.let(old.height.match({ some: (_$5, px) => East.print(px), none: (_$5) => East.value("auto") }));
456
+ const newHeight = $4.let(cell.height.match({ some: (_$5, px) => East.print(px), none: (_$5) => East.value("auto") }));
457
+ $4(changes.pushLast(variant("height", { cell: key, component: cell.component, detail: East.str `height ${oldHeight} → ${newHeight}` })));
458
+ });
459
+ $3.if(East.notEqual(old.align, cell.align), ($4) => {
460
+ const oldAlign = $4.let(old.align.match({ top: (_$5) => East.value("top"), center: (_$5) => East.value("center"), stretch: (_$5) => East.value("stretch") }));
461
+ const newAlign = $4.let(cell.align.match({ top: (_$5) => East.value("top"), center: (_$5) => East.value("center"), stretch: (_$5) => East.value("stretch") }));
462
+ $4(changes.pushLast(variant("aligned", { cell: key, component: cell.component, detail: East.str `align ${oldAlign} → ${newAlign}` })));
463
+ });
464
+ $3.if(East.notEqual(old.title, cell.title), ($4) => {
465
+ const oldTitle = $4.let(old.title.match({ some: (_$5, text) => East.str `"${text}"`, none: (_$5) => East.value("default") }));
466
+ const newTitle = $4.let(cell.title.match({ some: (_$5, text) => East.str `"${text}"`, none: (_$5) => East.value("default") }));
467
+ $4(changes.pushLast(variant("retitled", { cell: key, component: cell.component, detail: East.str `title ${oldTitle} → ${newTitle}` })));
468
+ });
469
+ },
470
+ });
471
+ });
472
+ $.for(was.order, ($2, key) => {
473
+ $2.if(cellsAfter.has(key).not(), ($3) => {
474
+ const cell = $3.let(cellsBefore.get(key));
475
+ const place = $3.let(was.places.get(key));
476
+ $3(changes.pushLast(variant("removed", {
477
+ cell: key, component: cell.component,
478
+ detail: East.str `row ${East.print(place.row)} · span ${East.print(cell.span)}`,
479
+ })));
480
+ });
481
+ });
482
+ return changes;
483
+ });
484
+ /**
485
+ * A page's status: live when it is published and its draft is the published
486
+ * layout, and draft otherwise.
487
+ */
488
+ export const pageStatus = East.function([StudioPageEntryType], StudioStatusType, (_$, page) => page.live.match({
489
+ some: (_$2, live) => East.equal(live.page, page.draft).ifElse(() => East.value(variant("live", null), StudioStatusType), () => East.value(variant("draft", null), StudioStatusType)),
490
+ none: (_$2) => East.value(variant("draft", null), StudioStatusType),
491
+ }));
492
+ /** The page half of the internal `Studio` namespace. */
493
+ export const StudioPages = {
494
+ save: saveCells,
495
+ publish: publishPage,
496
+ revert: revertPage,
497
+ newPage,
498
+ saveTemplate,
499
+ changes: pageChanges,
500
+ status: pageStatus,
501
+ };
502
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../../../src/studio/pages.ts"],"names":[],"mappings":"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"}