@tldraw/editor
Version:
tldraw infinite canvas SDK (editor).
93 lines (92 loc) • 3.25 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var createTLStore_exports = {};
__export(createTLStore_exports, {
createTLSchemaFromUtils: () => createTLSchemaFromUtils,
createTLStore: () => createTLStore,
inlineBase64AssetStore: () => inlineBase64AssetStore
});
module.exports = __toCommonJS(createTLStore_exports);
var import_store = require("@tldraw/store");
var import_tlschema = require("@tldraw/tlschema");
var import_utils = require("@tldraw/utils");
var import_Editor = require("../editor/Editor");
var import_TLEditorSnapshot = require("./TLEditorSnapshot");
var import_defaultBindings = require("./defaultBindings");
var import_defaultShapes = require("./defaultShapes");
const defaultAssetResolve = (asset) => asset.props.src;
const inlineBase64AssetStore = {
upload: async (_, file) => {
return { src: await import_utils.FileHelpers.blobToDataUrl(file) };
}
};
function createTLSchemaFromUtils(opts) {
if ("schema" in opts && opts.schema) return opts.schema;
return (0, import_tlschema.createTLSchema)({
shapes: "shapeUtils" in opts && opts.shapeUtils ? utilsToMap((0, import_defaultShapes.checkShapesAndAddCore)(opts.shapeUtils)) : void 0,
bindings: "bindingUtils" in opts && opts.bindingUtils ? utilsToMap((0, import_defaultBindings.checkBindings)(opts.bindingUtils)) : void 0,
migrations: "migrations" in opts ? opts.migrations : void 0
});
}
function createTLStore({
initialData,
defaultName = "",
id,
assets = inlineBase64AssetStore,
onMount,
collaboration,
...rest
} = {}) {
const schema = createTLSchemaFromUtils(rest);
const store = new import_store.Store({
id,
schema,
initialData,
props: {
defaultName,
assets: {
upload: assets.upload,
resolve: assets.resolve ?? defaultAssetResolve,
remove: assets.remove ?? (() => Promise.resolve())
},
onMount: (editor) => {
(0, import_utils.assert)(editor instanceof import_Editor.Editor);
onMount?.(editor);
},
collaboration
}
});
if (rest.snapshot) {
if (initialData) throw new Error("Cannot provide both initialData and snapshot");
(0, import_TLEditorSnapshot.loadSnapshot)(store, rest.snapshot, { forceOverwriteSessionState: true });
}
return store;
}
function utilsToMap(utils) {
return Object.fromEntries(
utils.map((s) => [
s.type,
{
props: s.props,
migrations: s.migrations
}
])
);
}
//# sourceMappingURL=createTLStore.js.map