alinea
Version:
[](https://npmjs.org/package/alinea) [](https://packagephobia.com/result?p=alinea)
47 lines (45 loc) • 1.25 kB
JavaScript
import "../chunks/chunk-U5RRZUYZ.js";
// src/core/Workspace.ts
import { Meta } from "./Meta.js";
import { getRandomColor } from "./util/GetRandomColor.js";
var Workspace;
((Workspace2) => {
Workspace2.Data = Symbol.for("@alinea/Workspace.Data");
Workspace2.Meta = Symbol.for("@alinea/Workspace.Meta");
function data(workspace2) {
return workspace2[Workspace2.Data];
}
Workspace2.data = data;
function roots(workspace2) {
return workspace2[Workspace2.Data].roots;
}
Workspace2.roots = roots;
function label(workspace2) {
return workspace2[Workspace2.Data].label;
}
Workspace2.label = label;
function isWorkspace(value) {
return Boolean(value && value[Workspace2.Data]);
}
Workspace2.isWorkspace = isWorkspace;
})(Workspace || (Workspace = {}));
function workspace(label, definition) {
if (!definition[Meta])
throw new Error(`Workspace definition must contain a meta property`);
return {
...definition,
[Workspace.Data]: {
label,
roots: definition,
...definition[Meta],
color: definition[Meta].color ?? getRandomColor(JSON.stringify(label))
}
};
}
((workspace2) => {
workspace2.meta = Meta;
})(workspace || (workspace = {}));
export {
Workspace,
workspace
};