@weaverse/next 0.1.0-alpha.18 → 0.1.0-alpha.19

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/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { buildWeaverseNextRequestInfo, DEFAULT_REVALIDATE_ENDPOINT, revalidateWeaverseNextItem, generateDataFromSchema } from './chunk-HRNAW6CA.mjs';
2
- export { DEFAULT_REVALIDATE_ENDPOINT, buildWeaverseNextRequestInfo, buildWeaverseNextRevalidateRouteContext, formatWeaverseNextSeoMetadata, generateDataFromSchema, getWeaverseNextSeoMetadata, revalidateWeaverseNextItem, runWeaverseComponentLoaders } from './chunk-HRNAW6CA.mjs';
1
+ import { buildWeaverseNextRequestInfo, DEFAULT_REVALIDATE_ENDPOINT, revalidateWeaverseNextItem, generateDataFromSchema } from './chunk-LH6AAEIK.mjs';
2
+ export { DEFAULT_REVALIDATE_ENDPOINT, buildWeaverseNextRequestInfo, buildWeaverseNextRevalidateRouteContext, formatWeaverseNextSeoMetadata, generateDataFromSchema, getWeaverseNextSeoMetadata, revalidateWeaverseNextItem, runWeaverseComponentLoaders } from './chunk-LH6AAEIK.mjs';
3
3
  import { WeaverseRoot, Weaverse, WeaverseItemStore, useSafeExternalStore } from '@weaverse/react';
4
4
  export { isBrowser, isIframe, useChildInstances, useItemInstance, useParentInstance, useWeaverse } from '@weaverse/react';
5
5
  import { createSchema } from '@weaverse/schema';
@@ -44,15 +44,31 @@ var WeaverseNextItem = class extends WeaverseItemStore {
44
44
  /**
45
45
  * Flatten nested `data` on updates exactly like the constructor does. Core's
46
46
  * `initProject()` calls `setData(item)` when a new runtime serves a page
47
- * whose item instances already exist (e.g. locale/client navigation), and
48
- * the inherited shallow merge would leave stale top-level props behind.
49
- * Assigning through the inherited `data` setter swaps the `_store` ref,
50
- * which invalidates the memoized snapshot below. The subscriber emit is
51
- * queued instead of fired when a render-phase deferral is active (see
52
- * `collectDeferredItemUpdates`).
47
+ * whose item instances already exist (e.g. locale/client navigation).
48
+ *
49
+ * A complete serialized item (it carries `id` and `type`; core's
50
+ * `initProject()` always passes one) replaces the store the way the
51
+ * constructor builds it: the schema defaults of the item's own `type` — the
52
+ * Builder can replace a section in place, keeping its id — then the item's
53
+ * settings. A payload omits a setting — or the whole optional `data` — when
54
+ * its value equals the schema default, so merging into the previous store
55
+ * would keep the previous locale's value visible. Partial updates still
56
+ * merge. Either way the `_store` ref changes, which invalidates the memoized
57
+ * snapshot below. The subscriber emit is queued instead of fired when a
58
+ * render-phase deferral is active (see `collectDeferredItemUpdates`).
53
59
  */
54
60
  setData = (update) => {
55
- this.data = flattenItemData(update);
61
+ if ("id" in update && "type" in update) {
62
+ let { data, type } = update;
63
+ let schema = this.weaverse.elementRegistry.get(type)?.schema;
64
+ this._store = {
65
+ ...generateDataFromSchema(schema),
66
+ ...data === void 0 ? {} : { data },
67
+ ...flattenItemData(update)
68
+ };
69
+ } else {
70
+ this.data = flattenItemData(update);
71
+ }
56
72
  if (deferredItemUpdates) {
57
73
  deferredItemUpdates.add(this);
58
74
  } else {