@weaverse/core 5.17.1 → 5.18.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 +43 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +43 -12
- package/dist/index.mjs.map +1 -1
- package/dist/types/core.d.ts +96 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/types/icon-name.d.ts +217 -0
- package/dist/types/icon-name.d.ts.map +1 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types.d.ts +192 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils/event-emitter.d.ts +16 -0
- package/dist/types/utils/event-emitter.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +23 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/package.json +5 -4
- package/src/core.ts +251 -0
- package/src/icon-name.d.ts +215 -0
- package/src/index.ts +11 -0
- package/src/types.ts +264 -0
- package/src/utils/event-emitter.ts +31 -0
- package/src/utils/index.ts +71 -0
- package/dist/index.d.mts +0 -413
- package/dist/index.d.ts +0 -413
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.
|
|
1476
|
+
var version = "5.18.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();
|