@weaverse/core 5.17.1 → 5.19.0

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.js CHANGED
@@ -1473,7 +1473,7 @@ module.exports = __toCommonJS(index_exports);
1473
1473
  var import_react = __toESM(require_react());
1474
1474
 
1475
1475
  // package.json
1476
- var version = "5.17.1";
1476
+ var version = "5.19.0";
1477
1477
 
1478
1478
  // src/utils/index.ts
1479
1479
  var isReactNative = typeof navigator === "object" && navigator.product === "ReactNative";
@@ -1517,17 +1517,22 @@ function loadScript(src) {
1517
1517
 
1518
1518
  // src/utils/event-emitter.ts
1519
1519
  var EventEmitter = class {
1520
+ /** Functions called when an update is emitted. */
1520
1521
  listeners;
1522
+ /** Creates an emitter with no listeners. */
1521
1523
  constructor() {
1522
1524
  this.listeners = /* @__PURE__ */ new Set();
1523
1525
  }
1526
+ /** Adds a listener and returns a function that removes it. */
1524
1527
  subscribe = (fn) => {
1525
1528
  this.listeners.add(fn);
1526
1529
  return () => this.unsubscribe(fn);
1527
1530
  };
1531
+ /** Removes a previously subscribed listener. */
1528
1532
  unsubscribe = (fn) => {
1529
1533
  this.listeners.delete(fn);
1530
1534
  };
1535
+ /** Calls every subscribed listener with the supplied data. */
1531
1536
  emit = (data) => {
1532
1537
  for (const fn of this.listeners) {
1533
1538
  fn(data);
@@ -1537,9 +1542,13 @@ var EventEmitter = class {
1537
1542
 
1538
1543
  // src/core.ts
1539
1544
  var WeaverseItemStore = class extends EventEmitter {
1545
+ /** The Core runtime that owns this item. */
1540
1546
  weaverse;
1547
+ /** React ref for the element's rendered HTML node. */
1541
1548
  ref = (0, import_react.createRef)();
1549
+ /** The current serialized state of the element. */
1542
1550
  _store = { id: "", type: "" };
1551
+ /** Creates an item store and registers it with the owning runtime. */
1543
1552
  constructor(initialData, weaverse) {
1544
1553
  super();
1545
1554
  const { type, id } = initialData || {};
@@ -1554,53 +1563,77 @@ var WeaverseItemStore = class extends EventEmitter {
1554
1563
  }
1555
1564
  this._store.css = this.getDefaultCss();
1556
1565
  }
1566
+ /** The element's unique identifier. */
1557
1567
  get _id() {
1558
1568
  return this._store.id;
1559
1569
  }
1570
+ /** The element's current rendered HTML node, if mounted. */
1560
1571
  get _element() {
1561
1572
  return this.ref.current;
1562
1573
  }
1574
+ /** The registered component definition for this element type. */
1563
1575
  get Element() {
1564
1576
  return this.weaverse.elementRegistry.get(this._store.type);
1565
1577
  }
1578
+ /** Returns registered default styles merged with the element's saved styles. */
1566
1579
  getDefaultCss = () => {
1567
1580
  const defaultCss = this.Element?.defaultCss || {};
1568
1581
  const currentCss = this._store.css || {};
1569
1582
  return merge(defaultCss, currentCss);
1570
1583
  };
1584
+ /**
1585
+ * The element's current serialized data. Assigning a value merges it into
1586
+ * the existing data.
1587
+ */
1571
1588
  get data() {
1572
1589
  return this._store;
1573
1590
  }
1591
+ // Setter behavior is documented on the getter, which owns the property's JSDoc.
1574
1592
  set data(update) {
1575
1593
  this._store = { ...this._store, ...update };
1576
1594
  }
1595
+ /** Applies an element data update and notifies subscribers. */
1577
1596
  setData = (update) => {
1578
1597
  this.data = update;
1579
1598
  this.triggerUpdate();
1580
1599
  return this.data;
1581
1600
  };
1601
+ /** Returns the element's current serialized data. */
1582
1602
  getSnapShot = () => this.data;
1603
+ /** Notifies subscribers with the element's current data. */
1583
1604
  triggerUpdate = () => {
1584
1605
  this.emit(this._store);
1585
1606
  };
1586
1607
  };
1587
1608
  var Weaverse = class _Weaverse extends EventEmitter {
1609
+ /** The DOM node containing the rendered project, if mounted. */
1588
1610
  contentRootElement = null;
1611
+ /** Item stores keyed by element identifier. */
1589
1612
  static itemInstances = /* @__PURE__ */ new Map();
1613
+ /** Base URL of the Weaverse Studio host. */
1590
1614
  weaverseHost = "https://studio.weaverse.io";
1615
+ /** Version of the Weaverse runtime. */
1591
1616
  weaverseVersion = version;
1617
+ /** Version of the installed Core SDK. */
1592
1618
  sdkVersion = version;
1619
+ /** Identifier of the project being rendered. */
1593
1620
  projectId = "";
1621
+ /** Whether the runtime is connected to Studio design mode. */
1594
1622
  isDesignMode = false;
1623
+ /** Whether the runtime is rendering a preview. */
1595
1624
  isPreviewMode = false;
1625
+ /** Optional bridge used to communicate with Weaverse Studio. */
1596
1626
  studioBridge;
1627
+ /** Component definitions keyed by element type. */
1597
1628
  static elementRegistry = /* @__PURE__ */ new Map();
1629
+ /** Media queries used for responsive element styles. */
1598
1630
  static mediaBreakPoints = {
1599
1631
  desktop: "all",
1600
1632
  // max-width need to subtract 0.02px to prevent bug
1601
1633
  // ref: https://getbootstrap.com/docs/5.1/layout/breakpoints/#max-width
1602
1634
  mobile: "(max-width: 767.98px)"
1603
1635
  };
1636
+ /** Creates a Core runtime from serialized project data. */
1604
1637
  constructor(params) {
1605
1638
  super();
1606
1639
  for (const param of Object.entries(params)) {
@@ -1609,10 +1642,9 @@ var Weaverse = class _Weaverse extends EventEmitter {
1609
1642
  }
1610
1643
  this.initProject();
1611
1644
  }
1645
+ /** Returns the project's current serialized data. */
1612
1646
  getSnapShot = () => this.data;
1613
- /**
1614
- * Create new `WeaverseItemStore` instance for each item in the project.
1615
- */
1647
+ /** Creates or updates an item store for every serialized project item. */
1616
1648
  initProject = () => {
1617
1649
  const { data } = this;
1618
1650
  const itemInstances = _Weaverse.itemInstances;
@@ -1627,31 +1659,30 @@ var Weaverse = class _Weaverse extends EventEmitter {
1627
1659
  }
1628
1660
  }
1629
1661
  };
1662
+ /** Item stores keyed by element identifier. */
1630
1663
  get itemInstances() {
1631
1664
  return _Weaverse.itemInstances;
1632
1665
  }
1666
+ /** Creates an item store for serialized element data. */
1633
1667
  createItemInstance = (data) => new _Weaverse.ItemConstructor(data, this);
1634
- /**
1635
- * Register the custom React Component to Weaverse, store it into Weaverse.elementRegistry
1636
- */
1668
+ /** Registers a component definition for an element type. */
1637
1669
  static registerElement = registerElement;
1670
+ /** Component definitions keyed by element type. */
1638
1671
  get elementRegistry() {
1639
1672
  return _Weaverse.elementRegistry;
1640
1673
  }
1674
+ /** Replaces the project data reference and notifies subscribers. */
1641
1675
  triggerUpdate = () => {
1642
1676
  this.data = { ...this.data };
1643
1677
  this.emit(this.data);
1644
1678
  };
1679
+ /** Notifies subscribers of every registered item store. */
1645
1680
  refreshAllItems() {
1646
1681
  for (const item of _Weaverse.itemInstances.values()) {
1647
1682
  item.triggerUpdate();
1648
1683
  }
1649
1684
  }
1650
- /**
1651
- * Reset the project data and re-initialize all items.
1652
- * Used when we need to re-render the project with new data (like applying new template)
1653
- * @param data {WeaverseProjectDataType}
1654
- */
1685
+ /** Replaces the project data and initializes its item stores. */
1655
1686
  setProjectData = (data) => {
1656
1687
  this.data = data;
1657
1688
  this.initProject();