@nuasite/cms 0.9.0 → 0.9.2
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/README.md +45 -36
- package/dist/editor.js +8488 -10082
- package/package.json +1 -1
- package/src/editor/components/toolbar.tsx +11 -11
- package/src/editor/hooks/useElementDetection.ts +4 -46
- package/src/editor/index.tsx +14 -26
- package/src/editor/signals.ts +1 -0
package/README.md
CHANGED
|
@@ -230,11 +230,16 @@ When the editor runs inside an iframe, it sends `postMessage` events to the pare
|
|
|
230
230
|
window.addEventListener('message', (event) => {
|
|
231
231
|
const msg = event.data // CmsPostMessage
|
|
232
232
|
switch (msg.type) {
|
|
233
|
-
case 'cms-ready': /* ... */
|
|
234
|
-
|
|
235
|
-
case 'cms-
|
|
236
|
-
|
|
237
|
-
case 'cms-
|
|
233
|
+
case 'cms-ready': /* ... */
|
|
234
|
+
break
|
|
235
|
+
case 'cms-state-changed': /* ... */
|
|
236
|
+
break
|
|
237
|
+
case 'cms-page-navigated': /* ... */
|
|
238
|
+
break
|
|
239
|
+
case 'cms-element-selected': /* ... */
|
|
240
|
+
break
|
|
241
|
+
case 'cms-element-deselected': /* ... */
|
|
242
|
+
break
|
|
238
243
|
}
|
|
239
244
|
})
|
|
240
245
|
```
|
|
@@ -242,53 +247,57 @@ window.addEventListener('message', (event) => {
|
|
|
242
247
|
All message types are exported as TypeScript interfaces:
|
|
243
248
|
|
|
244
249
|
```typescript
|
|
245
|
-
import type {
|
|
250
|
+
import type {
|
|
251
|
+
CmsPostMessage,
|
|
252
|
+
CmsReadyMessage,
|
|
253
|
+
CmsStateChangedMessage,
|
|
254
|
+
} from '@nuasite/cms'
|
|
246
255
|
```
|
|
247
256
|
|
|
248
257
|
### `cms-ready`
|
|
249
258
|
|
|
250
259
|
Sent once when the manifest loads for the first time. Contains the full page context:
|
|
251
260
|
|
|
252
|
-
| Field
|
|
253
|
-
|
|
254
|
-
| `data.pathname`
|
|
255
|
-
| `data.pageTitle`
|
|
256
|
-
| `data.seo`
|
|
257
|
-
| `data.pages`
|
|
258
|
-
| `data.collectionDefinitions` | `Record<string, CollectionDefinition>?` | Content collections with inferred schemas
|
|
259
|
-
| `data.componentDefinitions`
|
|
260
|
-
| `data.availableColors`
|
|
261
|
-
| `data.availableTextStyles`
|
|
262
|
-
| `data.metadata`
|
|
261
|
+
| Field | Type | Description |
|
|
262
|
+
| ---------------------------- | --------------------------------------- | ------------------------------------------------ |
|
|
263
|
+
| `data.pathname` | `string` | Current page URL pathname |
|
|
264
|
+
| `data.pageTitle` | `string?` | Page title from SEO data or pages array |
|
|
265
|
+
| `data.seo` | `PageSeoData?` | Full SEO metadata (title, description, OG, etc.) |
|
|
266
|
+
| `data.pages` | `PageEntry[]?` | All site pages with pathname and title |
|
|
267
|
+
| `data.collectionDefinitions` | `Record<string, CollectionDefinition>?` | Content collections with inferred schemas |
|
|
268
|
+
| `data.componentDefinitions` | `Record<string, ComponentDefinition>?` | Registered component definitions |
|
|
269
|
+
| `data.availableColors` | `AvailableColors?` | Tailwind color palette |
|
|
270
|
+
| `data.availableTextStyles` | `AvailableTextStyles?` | Tailwind text style options |
|
|
271
|
+
| `data.metadata` | `ManifestMetadata?` | Manifest version, build ID, content hash |
|
|
263
272
|
|
|
264
273
|
### `cms-state-changed`
|
|
265
274
|
|
|
266
275
|
Sent whenever editor state changes (editing mode, dirty counts, deployment, undo/redo):
|
|
267
276
|
|
|
268
|
-
| Field
|
|
269
|
-
|
|
270
|
-
| `state.isEditing`
|
|
271
|
-
| `state.hasChanges`
|
|
272
|
-
| `state.dirtyCount.text`
|
|
273
|
-
| `state.dirtyCount.image`
|
|
274
|
-
| `state.dirtyCount.color`
|
|
275
|
-
| `state.dirtyCount.bgImage`
|
|
276
|
-
| `state.dirtyCount.attribute`
|
|
277
|
-
| `state.dirtyCount.seo`
|
|
278
|
-
| `state.dirtyCount.total`
|
|
279
|
-
| `state.deployment.status`
|
|
280
|
-
| `state.deployment.lastDeployedAt` | `string \| null`
|
|
281
|
-
| `state.canUndo`
|
|
282
|
-
| `state.canRedo`
|
|
277
|
+
| Field | Type | Description |
|
|
278
|
+
| --------------------------------- | ------------------------------ | --------------------------------- |
|
|
279
|
+
| `state.isEditing` | `boolean` | Whether edit mode is active |
|
|
280
|
+
| `state.hasChanges` | `boolean` | Whether any unsaved changes exist |
|
|
281
|
+
| `state.dirtyCount.text` | `number` | Pending text changes |
|
|
282
|
+
| `state.dirtyCount.image` | `number` | Pending image changes |
|
|
283
|
+
| `state.dirtyCount.color` | `number` | Pending color changes |
|
|
284
|
+
| `state.dirtyCount.bgImage` | `number` | Pending background image changes |
|
|
285
|
+
| `state.dirtyCount.attribute` | `number` | Pending attribute changes |
|
|
286
|
+
| `state.dirtyCount.seo` | `number` | Pending SEO changes |
|
|
287
|
+
| `state.dirtyCount.total` | `number` | Total pending changes |
|
|
288
|
+
| `state.deployment.status` | `DeploymentStatusType \| null` | Current deployment status |
|
|
289
|
+
| `state.deployment.lastDeployedAt` | `string \| null` | ISO timestamp of last deployment |
|
|
290
|
+
| `state.canUndo` | `boolean` | Whether undo is available |
|
|
291
|
+
| `state.canRedo` | `boolean` | Whether redo is available |
|
|
283
292
|
|
|
284
293
|
### `cms-page-navigated`
|
|
285
294
|
|
|
286
295
|
Sent when the manifest reloads after navigating to a different page:
|
|
287
296
|
|
|
288
|
-
| Field
|
|
289
|
-
|
|
290
|
-
| `page.pathname` | `string`
|
|
291
|
-
| `page.title`
|
|
297
|
+
| Field | Type | Description |
|
|
298
|
+
| --------------- | --------- | ----------------- |
|
|
299
|
+
| `page.pathname` | `string` | New page pathname |
|
|
300
|
+
| `page.title` | `string?` | Page title |
|
|
292
301
|
|
|
293
302
|
### `cms-element-selected`
|
|
294
303
|
|