@bagelink/blox 1.15.147 → 1.15.151

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.
@@ -1,4 +1,4 @@
1
- import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-C0i8ucHq.js";
1
+ import { _ as _sfc_main } from "./PreviewApp.vue_vue_type_style_index_0_lang-Bi812qOg.js";
2
2
  export {
3
3
  _sfc_main as default
4
4
  };
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-CwX30h--.cjs");
3
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-hnJ-Wljq.cjs");
4
4
  exports.default = PreviewApp_vue_vue_type_style_index_0_lang._sfc_main;
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, inject, ref, h, provide, onMounted, onUnmounted, openBlock, createElementBlock, createVNode, unref, nextTick } from "vue";
2
- import { B as BLOX_REGISTRY_KEY, g as globalRefOf, G as GlobalBlockHost, u as useLocale } from "./core-VQR6lrvO.js";
2
+ import { B as BLOX_REGISTRY_KEY, g as globalRefOf, G as GlobalBlockHost, u as useLocale } from "./core-gh9n4Dh5.js";
3
3
  function sendToEditor(msg) {
4
4
  window.parent.postMessage(msg, "*");
5
5
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
- const core = require("./core-DmxEiWAR.cjs");
3
+ const core = require("./core-kcqrnwf4.cjs");
4
4
  function sendToEditor(msg) {
5
5
  window.parent.postMessage(msg, "*");
6
6
  }
@@ -595,6 +595,10 @@ class BloxInstance {
595
595
  }
596
596
  return this;
597
597
  }
598
+ /** The resolved block registry (type → definition with component + schema). */
599
+ getRegistry() {
600
+ return this._registry;
601
+ }
598
602
  registerRoutes(router) {
599
603
  if (this._routeRegistered) return this;
600
604
  if (this._config.supportedLocales.length > 0) {
@@ -609,7 +613,7 @@ class BloxInstance {
609
613
  }
610
614
  router.addRoute({
611
615
  path: "/_blox_preview",
612
- component: () => import("./PreviewApp-T3i0jOkB.js"),
616
+ component: () => import("./PreviewApp-BFlmJyS_.js"),
613
617
  beforeEnter: () => window.parent !== window ? true : "/"
614
618
  });
615
619
  router.addRoute({ path: "/:pathMatch(.*)*", component: _sfc_main$1 });
@@ -596,6 +596,10 @@ class BloxInstance {
596
596
  }
597
597
  return this;
598
598
  }
599
+ /** The resolved block registry (type → definition with component + schema). */
600
+ getRegistry() {
601
+ return this._registry;
602
+ }
599
603
  registerRoutes(router) {
600
604
  if (this._routeRegistered) return this;
601
605
  if (this._config.supportedLocales.length > 0) {
@@ -610,7 +614,7 @@ class BloxInstance {
610
614
  }
611
615
  router.addRoute({
612
616
  path: "/_blox_preview",
613
- component: () => Promise.resolve().then(() => require("./PreviewApp-0YmiHBi5.cjs")),
617
+ component: () => Promise.resolve().then(() => require("./PreviewApp-F96n6nDi.cjs")),
614
618
  beforeEnter: () => window.parent !== window ? true : "/"
615
619
  });
616
620
  router.addRoute({ path: "/:pathMatch(.*)*", component: _sfc_main$1 });
package/dist/core.d.ts CHANGED
@@ -40,6 +40,8 @@ export declare class BloxInstance {
40
40
  constructor(options?: BloxOptions);
41
41
  registerModules(modules: BlockModule[] | Record<string, BlockModule>): this;
42
42
  registerComponents(components: Record<string, BloxComponent>): this;
43
+ /** The resolved block registry (type → definition with component + schema). */
44
+ getRegistry(): Record<string, BlockDefinition>;
43
45
  registerRoutes(router: Router): this;
44
46
  install(app: App, options?: BloxOptions): void;
45
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,WAAW,CAAA;AAmB5D,4GAA4G;AAC5G,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAA;AAE5D,MAAM,WAAW,WAAY,SAAQ,eAAe;IACnD,qIAAqI;IACrI,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC1C;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACrD,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,SAAS,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;gBAExB,OAAO,CAAC,EAAE,WAAW;IASjC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IA8B3E,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI;IA2BnE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyBpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;CAkC9C;AAMD,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAS9D"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAa,MAAM,KAAK,CAAA;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAc,MAAM,WAAW,CAAA;AAmB5D,4GAA4G;AAC5G,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,cAAc,CAAA;AAE5D,MAAM,WAAW,WAAY,SAAQ,eAAe;IACnD,qIAAqI;IACrI,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAC1C;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACrD,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gFAAgF;IAChF,SAAS,CAAC,EAAE,eAAe,CAAA;CAC3B;AAED,qBAAa,YAAY;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;gBAExB,OAAO,CAAC,EAAE,WAAW;IASjC,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IA8B3E,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,IAAI;IA2BnE,+EAA+E;IAC/E,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAI9C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAyBpC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;CAkC9C;AAMD,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAS9D"}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const core = require("./core-DmxEiWAR.cjs");
4
- const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-CwX30h--.cjs");
3
+ const core = require("./core-kcqrnwf4.cjs");
4
+ const PreviewApp_vue_vue_type_style_index_0_lang = require("./PreviewApp.vue_vue_type_style_index_0_lang-hnJ-Wljq.cjs");
5
5
  const vue = require("vue");
6
6
  const vueRouter = require("vue-router");
7
7
  const pinia = require("pinia");
@@ -133,6 +133,39 @@ function defineBlock(meta) {
133
133
  }
134
134
  return meta;
135
135
  }
136
+ const MANIFEST_VERSION = 1;
137
+ function definitionToEntry(type, def) {
138
+ const { schema } = def;
139
+ let propsSchema = null;
140
+ const fields = schema.fields;
141
+ if (fields && typeof fields.toJSONSchema === "function") {
142
+ const hasFields = fields._fields && Object.keys(fields._fields).length > 0;
143
+ if (hasFields) {
144
+ try {
145
+ propsSchema = fields.toJSONSchema();
146
+ } catch {
147
+ propsSchema = null;
148
+ }
149
+ }
150
+ }
151
+ return {
152
+ type,
153
+ label: schema.label,
154
+ icon: schema.icon,
155
+ description: schema.description,
156
+ dataSource: schema.dataSource,
157
+ order: schema.order,
158
+ propsSchema,
159
+ defaults: schema.defaults
160
+ };
161
+ }
162
+ function serializeRegistry(registry) {
163
+ const blocks = Object.entries(registry).map(([type, def]) => definitionToEntry(type, def)).sort((a, b) => (a.order ?? 100) - (b.order ?? 100) || a.label.localeCompare(b.label));
164
+ return { version: MANIFEST_VERSION, blocks };
165
+ }
166
+ function buildBloxManifest(blox) {
167
+ return serializeRegistry(blox.getRegistry());
168
+ }
136
169
  exports.AdminEditBar = core._sfc_main;
137
170
  exports.BLOX_ADMIN_CONFIG_KEY = core.BLOX_ADMIN_CONFIG_KEY;
138
171
  exports.BLOX_CONFIG_KEY = core.BLOX_CONFIG_KEY;
@@ -156,8 +189,10 @@ exports.PreviewApp = PreviewApp_vue_vue_type_style_index_0_lang._sfc_main;
156
189
  exports.PreviewRenderer = PreviewApp_vue_vue_type_style_index_0_lang.PreviewRenderer;
157
190
  exports.sendToEditor = PreviewApp_vue_vue_type_style_index_0_lang.sendToEditor;
158
191
  exports.sendToPreview = PreviewApp_vue_vue_type_style_index_0_lang.sendToPreview;
192
+ exports.buildBloxManifest = buildBloxManifest;
159
193
  exports.createBloxApp = createBloxApp;
160
194
  exports.defineBlock = defineBlock;
195
+ exports.serializeRegistry = serializeRegistry;
161
196
  exports.useGlobalBlock = useGlobalBlock;
162
197
  exports.useLocaleNav = useLocaleNav;
163
198
  exports.usePageContext = usePageContext;
package/dist/index.d.ts CHANGED
@@ -22,6 +22,8 @@ export type { LocaleStrategy } from './localeStrategy';
22
22
  export { default as PageRenderer } from './PageRenderer';
23
23
  export { default as PreviewApp } from './PreviewApp.vue';
24
24
  export { default as PreviewRenderer } from './PreviewRenderer';
25
+ export { buildBloxManifest, serializeRegistry } from './manifest';
26
+ export type { BloxManifest, BlockManifestEntry } from './manifest';
25
27
  export type { BlockComponent, BlockDefinition, BlockSchema } from './schema';
26
28
  export { BLOX_ADMIN_CONFIG_KEY, BLOX_CONFIG_KEY, BLOX_GLOBAL_RESOLVER_KEY, BLOX_LOCALE_STRATEGY_KEY } from './symbols';
27
29
  export type { BloxAdminConfig, BloxConfig, GlobalBlockResolver } from './symbols';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAClG,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAKnD,YAAY,EACX,cAAc,EACd,KAAK,EAEL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,EACf,cAAc,EACd,WAAW,GACX,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACtD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAI9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAKjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAK7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3D,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAK9D,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAI5E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEtH,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAClG,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAKnD,YAAY,EACX,cAAc,EACd,KAAK,EAEL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,cAAc,EACd,QAAQ,EACR,eAAe,EACf,cAAc,EACd,WAAW,GACX,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACtD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAI9E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK1D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAKjD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAK7D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACjD,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAK1E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3D,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAK9D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AACjE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKlE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAI5E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEtH,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAEjF,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import { a as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, c as createBlox } from "./core-VQR6lrvO.js";
2
- import { _, b, d, e, f, h, i, G, P, j, k, l, g, m, r, n } from "./core-VQR6lrvO.js";
3
- import { _ as _2, P as P2, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-C0i8ucHq.js";
1
+ import { a as BLOX_LOCALE_STRATEGY_KEY, u as useLocale, c as createBlox } from "./core-gh9n4Dh5.js";
2
+ import { _, b, d, e, f, h, i, G, P, j, k, l, g, m, r, n } from "./core-gh9n4Dh5.js";
3
+ import { _ as _2, P as P2, s, a } from "./PreviewApp.vue_vue_type_style_index_0_lang-Bi812qOg.js";
4
4
  import { ref, onMounted, onUnmounted, inject, computed, createApp, markRaw } from "vue";
5
5
  import { useRouter } from "vue-router";
6
6
  import { createPinia } from "pinia";
@@ -132,6 +132,39 @@ function defineBlock(meta) {
132
132
  }
133
133
  return meta;
134
134
  }
135
+ const MANIFEST_VERSION = 1;
136
+ function definitionToEntry(type, def) {
137
+ const { schema } = def;
138
+ let propsSchema = null;
139
+ const fields = schema.fields;
140
+ if (fields && typeof fields.toJSONSchema === "function") {
141
+ const hasFields = fields._fields && Object.keys(fields._fields).length > 0;
142
+ if (hasFields) {
143
+ try {
144
+ propsSchema = fields.toJSONSchema();
145
+ } catch {
146
+ propsSchema = null;
147
+ }
148
+ }
149
+ }
150
+ return {
151
+ type,
152
+ label: schema.label,
153
+ icon: schema.icon,
154
+ description: schema.description,
155
+ dataSource: schema.dataSource,
156
+ order: schema.order,
157
+ propsSchema,
158
+ defaults: schema.defaults
159
+ };
160
+ }
161
+ function serializeRegistry(registry) {
162
+ const blocks = Object.entries(registry).map(([type, def]) => definitionToEntry(type, def)).sort((a2, b2) => (a2.order ?? 100) - (b2.order ?? 100) || a2.label.localeCompare(b2.label));
163
+ return { version: MANIFEST_VERSION, blocks };
164
+ }
165
+ function buildBloxManifest(blox) {
166
+ return serializeRegistry(blox.getRegistry());
167
+ }
135
168
  export {
136
169
  _ as AdminEditBar,
137
170
  b as BLOX_ADMIN_CONFIG_KEY,
@@ -145,6 +178,7 @@ export {
145
178
  P as PageRenderer,
146
179
  _2 as PreviewApp,
147
180
  P2 as PreviewRenderer,
181
+ buildBloxManifest,
148
182
  j as configureApi,
149
183
  createBlox,
150
184
  createBloxApp,
@@ -156,6 +190,7 @@ export {
156
190
  r as resolvePath,
157
191
  s as sendToEditor,
158
192
  a as sendToPreview,
193
+ serializeRegistry,
159
194
  n as useBloxEdit,
160
195
  useGlobalBlock,
161
196
  useLocale,
@@ -0,0 +1,51 @@
1
+ import { BloxInstance } from './core';
2
+ import { BlockDefinition } from './schema';
3
+ /**
4
+ * Backend-friendly description of a single registered block.
5
+ *
6
+ * This is the shape stored on the Blox `Website.block_manifest` and served to
7
+ * agents via the blox MCP `describe_blocks` tool. It contains ONLY serializable
8
+ * data (no Vue components, no functions) so it can be persisted as JSON and read
9
+ * by any runtime.
10
+ */
11
+ export interface BlockManifestEntry {
12
+ /** Block type key — matches `block.type` in page content. */
13
+ type: string;
14
+ /** Human-readable label shown in the editor. */
15
+ label: string;
16
+ /** Material icon name. */
17
+ icon?: string;
18
+ /** What the block is for — helps an agent pick the right block. */
19
+ description?: string;
20
+ /** True when the block fetches its own data from a datastore collection. */
21
+ dataSource?: boolean;
22
+ /** Sort order in the editor block picker (lower first). */
23
+ order?: number;
24
+ /**
25
+ * JSON Schema for the block's editable props (from FormFlow
26
+ * `SchemaDefinition.toJSONSchema()`). `null` when the block has no
27
+ * configurable props (static / i18n-driven content).
28
+ */
29
+ propsSchema: Record<string, unknown> | null;
30
+ /** Default prop values, merged over props at render time. */
31
+ defaults?: Record<string, unknown>;
32
+ }
33
+ export interface BloxManifest {
34
+ /** Manifest format version (bump on breaking shape changes). */
35
+ version: number;
36
+ /** All registered blocks, sorted by `order` then `label`. */
37
+ blocks: BlockManifestEntry[];
38
+ }
39
+ /**
40
+ * Build a serializable manifest from a resolved block registry.
41
+ *
42
+ * @example
43
+ * const manifest = serializeRegistry(blox.getRegistry())
44
+ * await fetch('/api/blox/websites/<id>/manifest', {
45
+ * method: 'PUT', body: JSON.stringify(manifest),
46
+ * })
47
+ */
48
+ export declare function serializeRegistry(registry: Record<string, BlockDefinition>): BloxManifest;
49
+ /** Convenience: build a manifest directly from a BloxInstance. */
50
+ export declare function buildBloxManifest(blox: BloxInstance): BloxManifest;
51
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IAClC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC3C,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,MAAM,WAAW,YAAY;IAC5B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,MAAM,EAAE,kBAAkB,EAAE,CAAA;CAC5B;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GACvC,YAAY,CAKd;AAED,kEAAkE;AAClE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAElE"}
@@ -26,7 +26,7 @@ const prerender = require("../prerender-DH6Arhpk.cjs");
26
26
  const ssg_client = require("./client.cjs");
27
27
  const pinia = require("pinia");
28
28
  const vue = require("vue");
29
- const core = require("../core-DmxEiWAR.cjs");
29
+ const core = require("../core-kcqrnwf4.cjs");
30
30
  async function renderBloxSsgPage(options) {
31
31
  const {
32
32
  url,
@@ -4,7 +4,7 @@ import { BLOX_STATE_WINDOW_KEY, BLOX_COLLECTIONS_WINDOW_KEY, BLOX_WEBSITE_ID_WIN
4
4
  import { getCollectionCache, getEmbeddedWebsiteId, installBloxStateCache, installCollectionCache } from "./client.mjs";
5
5
  import { createPinia } from "pinia";
6
6
  import { createSSRApp, markRaw } from "vue";
7
- import { c as createBlox } from "../core-VQR6lrvO.js";
7
+ import { c as createBlox } from "../core-gh9n4Dh5.js";
8
8
  async function renderBloxSsgPage(options) {
9
9
  const {
10
10
  url,