tldraw
Version:
A tiny little drawing editor.
803 lines (802 loc) • 29.6 kB
JavaScript
"use strict";
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 buildFromV1Document_exports = {};
__export(buildFromV1Document_exports, {
TLV1AlignStyle: () => TLV1AlignStyle,
TLV1AssetType: () => TLV1AssetType,
TLV1ColorStyle: () => TLV1ColorStyle,
TLV1DashStyle: () => TLV1DashStyle,
TLV1Decoration: () => TLV1Decoration,
TLV1FontStyle: () => TLV1FontStyle,
TLV1ShapeType: () => TLV1ShapeType,
TLV1SizeStyle: () => TLV1SizeStyle,
buildFromV1Document: () => buildFromV1Document
});
module.exports = __toCommonJS(buildFromV1Document_exports);
var import_editor = require("@tldraw/editor");
var import_shared = require("../../shapes/arrow/shared");
const TLDRAW_V1_VERSION = 15.5;
function buildFromV1Document(editor, _document) {
let document = _document;
editor.run(() => {
document = migrate(document, TLDRAW_V1_VERSION);
editor.cancel().cancel().cancel().cancel();
const firstPageId = editor.getPages()[0].id;
editor.setCurrentPage(firstPageId);
for (const page of editor.getPages().slice(1)) {
editor.deletePage(page.id);
}
editor.selectAll();
editor.deleteShapes(editor.getSelectedShapeIds());
const v1AssetIdsToV2AssetIds = /* @__PURE__ */ new Map();
Object.values(document.assets ?? {}).forEach((v1Asset) => {
switch (v1Asset.type) {
case "image" /* Image */: {
const assetId = import_editor.AssetRecordType.createId();
v1AssetIdsToV2AssetIds.set(v1Asset.id, assetId);
const placeholderAsset = {
id: assetId,
typeName: "asset",
type: "image",
props: {
w: coerceDimension(v1Asset.size[0]),
h: coerceDimension(v1Asset.size[1]),
name: v1Asset.fileName ?? "Untitled",
isAnimated: false,
mimeType: null,
src: v1Asset.src
},
meta: {}
};
editor.createAssets([placeholderAsset]);
tryMigrateAsset(editor, placeholderAsset);
break;
}
case "video" /* Video */:
{
const assetId = import_editor.AssetRecordType.createId();
v1AssetIdsToV2AssetIds.set(v1Asset.id, assetId);
editor.createAssets([
{
id: assetId,
typeName: "asset",
type: "video",
props: {
w: coerceDimension(v1Asset.size[0]),
h: coerceDimension(v1Asset.size[1]),
name: v1Asset.fileName ?? "Untitled",
isAnimated: true,
mimeType: null,
src: v1Asset.src
},
meta: {}
}
]);
}
break;
}
});
const v1PageIdsToV2PageIds = /* @__PURE__ */ new Map();
Object.values(document.pages ?? {}).sort((a, b) => (a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1).forEach((v1Page, i) => {
if (i === 0) {
v1PageIdsToV2PageIds.set(v1Page.id, editor.getCurrentPageId());
} else {
const pageId = import_editor.PageRecordType.createId();
v1PageIdsToV2PageIds.set(v1Page.id, pageId);
editor.createPage({ name: v1Page.name ?? "Page", id: pageId });
}
});
Object.values(document.pages ?? {}).sort((a, b) => (a.childIndex ?? 1) < (b.childIndex ?? 1) ? -1 : 1).forEach((v1Page) => {
editor.setCurrentPage(v1PageIdsToV2PageIds.get(v1Page.id));
const v1ShapeIdsToV2ShapeIds = /* @__PURE__ */ new Map();
const v1GroupShapeIdsToV1ChildIds = /* @__PURE__ */ new Map();
const v1Shapes = Object.values(v1Page.shapes ?? {}).sort((a, b) => a.childIndex < b.childIndex ? -1 : 1).slice(0, editor.options.maxShapesPerPage);
v1Shapes.forEach((v1Shape) => {
if (v1Shape.type !== "group" /* Group */) return;
const shapeId = (0, import_editor.createShapeId)();
v1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId);
v1GroupShapeIdsToV1ChildIds.set(v1Shape.id, []);
});
function decideNotToCreateShape(v1Shape) {
v1ShapeIdsToV2ShapeIds.delete(v1Shape.id);
const v1GroupParent = v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId);
if (v1GroupParent) {
const ids = v1GroupShapeIdsToV1ChildIds.get(v1Shape.parentId).filter((id) => id !== v1Shape.id);
v1GroupShapeIdsToV1ChildIds.set(v1Shape.parentId, ids);
}
}
v1Shapes.forEach((v1Shape) => {
if (v1Shape.type === "group" /* Group */) {
return;
}
const shapeId = (0, import_editor.createShapeId)();
v1ShapeIdsToV2ShapeIds.set(v1Shape.id, shapeId);
if (v1Shape.parentId !== v1Page.id) {
if (v1GroupShapeIdsToV1ChildIds.has(v1Shape.parentId)) {
v1GroupShapeIdsToV1ChildIds.get(v1Shape.parentId).push(v1Shape.id);
} else {
console.warn("parent does not exist", v1Shape);
}
}
const parentId = v1PageIdsToV2PageIds.get(v1Page.id);
const inCommon = {
id: shapeId,
parentId,
x: coerceNumber(v1Shape.point[0]),
y: coerceNumber(v1Shape.point[1]),
rotation: 0,
isLocked: !!v1Shape.isLocked
};
switch (v1Shape.type) {
case "sticky" /* Sticky */: {
editor.createShapes([
{
...inCommon,
type: "note",
props: {
text: v1Shape.text ?? "",
color: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
align: getV2Align(v1Shape.style.textAlign)
}
}
]);
break;
}
case "rectangle" /* Rectangle */: {
editor.createShapes([
{
...inCommon,
type: "geo",
props: {
geo: "rectangle",
w: coerceDimension(v1Shape.size[0]),
h: coerceDimension(v1Shape.size[1]),
text: v1Shape.label ?? "",
fill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),
labelColor: getV2Color(v1Shape.style.color),
color: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
dash: getV2Dash(v1Shape.style.dash),
align: "middle"
}
}
]);
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id);
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
props: {
text: v1Shape.label ?? ""
}
}
]);
if (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {
const shape = editor.getShape(inCommon.id);
const { growY } = shape.props;
const w = coerceDimension(shape.props.w);
const h = coerceDimension(shape.props.h);
const newW = w + growY / 2;
const newH = h + growY / 2;
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
x: coerceNumber(shape.x) - (newW - w) / 2,
y: coerceNumber(shape.y) - (newH - h) / 2,
props: {
w: newW,
h: newH
}
}
]);
}
break;
}
case "triangle" /* Triangle */: {
editor.createShapes([
{
...inCommon,
type: "geo",
props: {
geo: "triangle",
w: coerceDimension(v1Shape.size[0]),
h: coerceDimension(v1Shape.size[1]),
fill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),
labelColor: getV2Color(v1Shape.style.color),
color: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
dash: getV2Dash(v1Shape.style.dash),
align: "middle"
}
}
]);
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id);
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
props: {
text: v1Shape.label ?? ""
}
}
]);
if (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {
const shape = editor.getShape(inCommon.id);
const { growY } = shape.props;
const w = coerceDimension(shape.props.w);
const h = coerceDimension(shape.props.h);
const newW = w + growY / 2;
const newH = h + growY / 2;
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
x: coerceNumber(shape.x) - (newW - w) / 2,
y: coerceNumber(shape.y) - (newH - h) / 2,
props: {
w: newW,
h: newH
}
}
]);
}
break;
}
case "ellipse" /* Ellipse */: {
editor.createShapes([
{
...inCommon,
type: "geo",
props: {
geo: "ellipse",
w: coerceDimension(v1Shape.radius[0]) * 2,
h: coerceDimension(v1Shape.radius[1]) * 2,
fill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),
labelColor: getV2Color(v1Shape.style.color),
color: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
dash: getV2Dash(v1Shape.style.dash),
align: "middle"
}
}
]);
const pageBoundsBeforeLabel = editor.getShapePageBounds(inCommon.id);
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
props: {
text: v1Shape.label ?? ""
}
}
]);
if (pageBoundsBeforeLabel.width === pageBoundsBeforeLabel.height) {
const shape = editor.getShape(inCommon.id);
const { growY } = shape.props;
const w = coerceDimension(shape.props.w);
const h = coerceDimension(shape.props.h);
const newW = w + growY / 2;
const newH = h + growY / 2;
editor.updateShapes([
{
id: inCommon.id,
type: "geo",
x: coerceNumber(shape.x) - (newW - w) / 2,
y: coerceNumber(shape.y) - (newH - h) / 2,
props: {
w: newW,
h: newH
}
}
]);
}
break;
}
case "draw" /* Draw */: {
if (v1Shape.points.length === 0) {
decideNotToCreateShape(v1Shape);
break;
}
editor.createShapes([
{
...inCommon,
type: "draw",
props: {
fill: getV2Fill(v1Shape.style.isFilled, v1Shape.style.color),
color: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
dash: getV2Dash(v1Shape.style.dash),
isPen: false,
isComplete: v1Shape.isComplete,
segments: [{ type: "free", points: v1Shape.points.map(getV2Point) }]
}
}
]);
break;
}
case "arrow" /* Arrow */: {
const v1Bend = coerceNumber(v1Shape.bend);
const v1Start = getV2Point(v1Shape.handles.start.point);
const v1End = getV2Point(v1Shape.handles.end.point);
const dist = import_editor.Vec.Dist(v1Start, v1End);
const v2Bend = dist * -v1Bend / 2;
editor.createShapes([
{
...inCommon,
type: "arrow",
props: {
text: v1Shape.label ?? "",
color: getV2Color(v1Shape.style.color),
labelColor: getV2Color(v1Shape.style.color),
size: getV2Size(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
dash: getV2Dash(v1Shape.style.dash),
arrowheadStart: getV2Arrowhead(v1Shape.decorations?.start),
arrowheadEnd: getV2Arrowhead(v1Shape.decorations?.end),
start: {
x: coerceNumber(v1Shape.handles.start.point[0]),
y: coerceNumber(v1Shape.handles.start.point[1])
},
end: {
x: coerceNumber(v1Shape.handles.end.point[0]),
y: coerceNumber(v1Shape.handles.end.point[1])
},
bend: v2Bend
}
}
]);
break;
}
case "text" /* Text */: {
editor.createShapes([
{
...inCommon,
type: "text",
props: {
text: v1Shape.text ?? " ",
color: getV2Color(v1Shape.style.color),
size: getV2TextSize(v1Shape.style.size),
font: getV2Font(v1Shape.style.font),
textAlign: getV2TextAlign(v1Shape.style.textAlign),
scale: v1Shape.style.scale ?? 1
}
}
]);
break;
}
case "image" /* Image */: {
const assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId);
if (!assetId) {
console.warn("Could not find asset id", v1Shape.assetId);
return;
}
editor.createShapes([
{
...inCommon,
type: "image",
props: {
w: coerceDimension(v1Shape.size[0]),
h: coerceDimension(v1Shape.size[1]),
assetId
}
}
]);
break;
}
case "video" /* Video */: {
const assetId = v1AssetIdsToV2AssetIds.get(v1Shape.assetId);
if (!assetId) {
console.warn("Could not find asset id", v1Shape.assetId);
return;
}
editor.createShapes([
{
...inCommon,
type: "video",
props: {
w: coerceDimension(v1Shape.size[0]),
h: coerceDimension(v1Shape.size[1]),
assetId
}
}
]);
break;
}
}
const rotation = coerceNumber(v1Shape.rotation);
if (rotation !== 0) {
editor.select(shapeId);
editor.rotateShapesBy([shapeId], rotation);
}
});
v1GroupShapeIdsToV1ChildIds.forEach((v1ChildIds, v1GroupId) => {
const v2ChildShapeIds = v1ChildIds.map((id) => v1ShapeIdsToV2ShapeIds.get(id));
const v2GroupId = v1ShapeIdsToV2ShapeIds.get(v1GroupId);
editor.groupShapes(v2ChildShapeIds, { groupId: v2GroupId });
const v1Group = v1Page.shapes[v1GroupId];
const rotation = coerceNumber(v1Group.rotation);
if (rotation !== 0) {
editor.select(v2GroupId);
editor.rotateShapesBy([v2GroupId], rotation);
}
});
v1Shapes.forEach((v1Shape) => {
if (v1Shape.type !== "arrow" /* Arrow */) {
return;
}
const v2ShapeId = v1ShapeIdsToV2ShapeIds.get(v1Shape.id);
const util = editor.getShapeUtil("arrow");
editor.inputs.ctrlKey = false;
for (const handleId of ["start", "end"]) {
const bindingId = v1Shape.handles[handleId].bindingId;
if (bindingId) {
const binding = v1Page.bindings[bindingId];
if (!binding) {
continue;
}
const targetId = v1ShapeIdsToV2ShapeIds.get(binding.toId);
const targetShape = editor.getShape(targetId);
if (!targetShape) continue;
if (targetId) {
const bounds2 = editor.getShapePageBounds(targetId);
const v2ShapeFresh = editor.getShape(v2ShapeId);
const nx = (0, import_editor.clamp)((coerceNumber(binding.point[0]) + 0.5) / 2, 0.2, 0.8);
const ny = (0, import_editor.clamp)((coerceNumber(binding.point[1]) + 0.5) / 2, 0.2, 0.8);
const point = editor.getPointInShapeSpace(v2ShapeFresh, {
x: bounds2.minX + bounds2.width * nx,
y: bounds2.minY + bounds2.height * ny
});
const handles = editor.getShapeHandles(v2ShapeFresh);
const change = util.onHandleDrag(v2ShapeFresh, {
handle: {
...handles.find((h) => h.id === handleId),
x: point.x,
y: point.y
},
isPrecise: point.x !== 0.5 || point.y !== 0.5
});
if (change) {
editor.updateShape(change);
}
const freshBinding = (0, import_shared.getArrowBindings)(
editor,
editor.getShape(v2ShapeId)
)[handleId];
if (freshBinding) {
const updatedFreshBinding = (0, import_editor.structuredClone)(freshBinding);
if (binding.distance === 0) {
updatedFreshBinding.props.isExact = true;
}
if (updatedFreshBinding.toId !== targetId) {
updatedFreshBinding.toId = targetId;
updatedFreshBinding.props.normalizedAnchor = { x: nx, y: ny };
}
editor.updateBinding(updatedFreshBinding);
}
}
}
}
});
});
editor.setCurrentPage(firstPageId);
editor.clearHistory();
editor.selectNone();
const bounds = editor.getCurrentPageBounds();
if (bounds) {
editor.zoomToBounds(bounds, { targetZoom: 1 });
}
});
}
function coerceNumber(n) {
if (typeof n !== "number") return 0;
if (Number.isNaN(n)) return 0;
if (!Number.isFinite(n)) return 0;
return n;
}
function coerceDimension(d) {
const n = coerceNumber(d);
if (n <= 0) return 1;
return n;
}
async function tryMigrateAsset(editor, placeholderAsset) {
try {
if (placeholderAsset.type === "bookmark" || !placeholderAsset.props.src) return;
const response = await (0, import_editor.fetch)(placeholderAsset.props.src);
if (!response.ok) return;
const file = new File([await response.blob()], placeholderAsset.props.name, {
type: response.headers.get("content-type") ?? placeholderAsset.props.mimeType ?? void 0
});
const newAsset = await editor.getAssetForExternalContent({ type: "file", file });
if (!newAsset) throw new Error("Could not get asset for external content");
if (newAsset.type === "bookmark") return;
editor.updateAssets([
{
id: placeholderAsset.id,
type: placeholderAsset.type,
props: {
...newAsset.props,
name: placeholderAsset.props.name
}
}
]);
} catch {
}
}
function migrate(document, newVersion) {
const { version = 0 } = document;
if (!document.assets) {
document.assets = {};
}
const assetIdsInUse = /* @__PURE__ */ new Set();
Object.values(document.pages).forEach(
(page) => Object.values(page.shapes).forEach((shape) => {
const { parentId, children, assetId } = shape;
if (assetId) {
assetIdsInUse.add(assetId);
}
if (parentId !== page.id && !page.shapes[parentId]) {
console.warn("Encountered a shape with a missing parent!");
shape.parentId = page.id;
}
if (shape.type === "group" /* Group */ && children) {
children.forEach((childId) => {
if (!page.shapes[childId]) {
console.warn("Encountered a parent with a missing child!", shape.id, childId);
children?.splice(children.indexOf(childId), 1);
}
});
}
})
);
Object.keys(document.assets).forEach((assetId) => {
if (!assetIdsInUse.has(assetId)) {
delete document.assets[assetId];
}
});
if (version !== newVersion) {
if (version < 14) {
Object.values(document.pages).forEach((page) => {
Object.values(page.shapes).filter((shape) => shape.type === "text" /* Text */).forEach((shape) => {
if (shape.style.font === void 0) {
;
shape.style.font = "script" /* Script */;
}
});
});
}
if (version <= 13) {
Object.values(document.pages).forEach((page) => {
Object.values(page.bindings).forEach((binding) => {
Object.assign(binding, binding.meta);
});
Object.values(page.shapes).forEach((shape) => {
Object.entries(shape.style).forEach(([id, style]) => {
if (typeof style === "string") {
shape.style[id] = style.toLowerCase();
}
});
if (shape.type === "arrow" /* Arrow */) {
if (shape.decorations) {
Object.entries(shape.decorations).forEach(([id, decoration]) => {
if (decoration === "Arrow") {
shape.decorations = {
...shape.decorations,
[id]: "arrow" /* Arrow */
};
}
});
}
}
});
});
}
if (version <= 13.1 && document.name == null) {
document.name = "New Document";
}
if (version < 15 && document.assets == null) {
document.assets = {};
}
Object.values(document.pages).forEach((page) => {
Object.values(page.shapes).forEach((shape) => {
if (version < 15.2) {
if ((shape.type === "image" /* Image */ || shape.type === "video" /* Video */) && shape.style.isFilled == null) {
shape.style.isFilled = true;
}
}
if (version < 15.3) {
if (shape.type === "rectangle" /* Rectangle */ || shape.type === "triangle" /* Triangle */ || shape.type === "ellipse" /* Ellipse */ || shape.type === "arrow" /* Arrow */) {
if ("text" in shape && typeof shape.text === "string") {
shape.label = shape.text;
}
if (!shape.label) {
shape.label = "";
}
if (!shape.labelPoint) {
shape.labelPoint = [0.5, 0.5];
}
}
}
});
});
}
Object.values(document.pageStates).forEach((pageState) => {
pageState.selectedIds = pageState.selectedIds.filter((id) => {
return document.pages[pageState.id].shapes[id] !== void 0;
});
pageState.bindingId = void 0;
pageState.editingId = void 0;
pageState.hoveredId = void 0;
pageState.pointedId = void 0;
});
document.version = newVersion;
return document;
}
var TLV1ShapeType = /* @__PURE__ */ ((TLV1ShapeType2) => {
TLV1ShapeType2["Sticky"] = "sticky";
TLV1ShapeType2["Ellipse"] = "ellipse";
TLV1ShapeType2["Rectangle"] = "rectangle";
TLV1ShapeType2["Triangle"] = "triangle";
TLV1ShapeType2["Draw"] = "draw";
TLV1ShapeType2["Arrow"] = "arrow";
TLV1ShapeType2["Text"] = "text";
TLV1ShapeType2["Group"] = "group";
TLV1ShapeType2["Image"] = "image";
TLV1ShapeType2["Video"] = "video";
return TLV1ShapeType2;
})(TLV1ShapeType || {});
var TLV1ColorStyle = /* @__PURE__ */ ((TLV1ColorStyle2) => {
TLV1ColorStyle2["White"] = "white";
TLV1ColorStyle2["LightGray"] = "lightGray";
TLV1ColorStyle2["Gray"] = "gray";
TLV1ColorStyle2["Black"] = "black";
TLV1ColorStyle2["Green"] = "green";
TLV1ColorStyle2["Cyan"] = "cyan";
TLV1ColorStyle2["Blue"] = "blue";
TLV1ColorStyle2["Indigo"] = "indigo";
TLV1ColorStyle2["Violet"] = "violet";
TLV1ColorStyle2["Red"] = "red";
TLV1ColorStyle2["Orange"] = "orange";
TLV1ColorStyle2["Yellow"] = "yellow";
return TLV1ColorStyle2;
})(TLV1ColorStyle || {});
var TLV1SizeStyle = /* @__PURE__ */ ((TLV1SizeStyle2) => {
TLV1SizeStyle2["Small"] = "small";
TLV1SizeStyle2["Medium"] = "medium";
TLV1SizeStyle2["Large"] = "large";
return TLV1SizeStyle2;
})(TLV1SizeStyle || {});
var TLV1DashStyle = /* @__PURE__ */ ((TLV1DashStyle2) => {
TLV1DashStyle2["Draw"] = "draw";
TLV1DashStyle2["Solid"] = "solid";
TLV1DashStyle2["Dashed"] = "dashed";
TLV1DashStyle2["Dotted"] = "dotted";
return TLV1DashStyle2;
})(TLV1DashStyle || {});
var TLV1AlignStyle = /* @__PURE__ */ ((TLV1AlignStyle2) => {
TLV1AlignStyle2["Start"] = "start";
TLV1AlignStyle2["Middle"] = "middle";
TLV1AlignStyle2["End"] = "end";
TLV1AlignStyle2["Justify"] = "justify";
return TLV1AlignStyle2;
})(TLV1AlignStyle || {});
var TLV1FontStyle = /* @__PURE__ */ ((TLV1FontStyle2) => {
TLV1FontStyle2["Script"] = "script";
TLV1FontStyle2["Sans"] = "sans";
TLV1FontStyle2["Serif"] = "serif";
TLV1FontStyle2["Mono"] = "mono";
return TLV1FontStyle2;
})(TLV1FontStyle || {});
var TLV1Decoration = /* @__PURE__ */ ((TLV1Decoration2) => {
TLV1Decoration2["Arrow"] = "arrow";
return TLV1Decoration2;
})(TLV1Decoration || {});
var TLV1AssetType = /* @__PURE__ */ ((TLV1AssetType2) => {
TLV1AssetType2["Image"] = "image";
TLV1AssetType2["Video"] = "video";
return TLV1AssetType2;
})(TLV1AssetType || {});
const v1ColorsToV2Colors = {
["white" /* White */]: "black",
["black" /* Black */]: "black",
["lightGray" /* LightGray */]: "grey",
["gray" /* Gray */]: "grey",
["green" /* Green */]: "light-green",
["cyan" /* Cyan */]: "green",
["blue" /* Blue */]: "light-blue",
["indigo" /* Indigo */]: "blue",
["orange" /* Orange */]: "orange",
["yellow" /* Yellow */]: "yellow",
["red" /* Red */]: "red",
["violet" /* Violet */]: "light-violet"
};
const v1FontsToV2Fonts = {
["mono" /* Mono */]: "mono",
["sans" /* Sans */]: "sans",
["script" /* Script */]: "draw",
["serif" /* Serif */]: "serif"
};
const v1AlignsToV2Aligns = {
["start" /* Start */]: "start",
["middle" /* Middle */]: "middle",
["end" /* End */]: "end",
["justify" /* Justify */]: "start"
};
const v1TextAlignsToV2TextAligns = {
["start" /* Start */]: "start",
["middle" /* Middle */]: "middle",
["end" /* End */]: "end",
["justify" /* Justify */]: "start"
};
const v1TextSizesToV2TextSizes = {
["small" /* Small */]: "s",
["medium" /* Medium */]: "l",
["large" /* Large */]: "xl"
};
const v1SizesToV2Sizes = {
["small" /* Small */]: "m",
["medium" /* Medium */]: "l",
["large" /* Large */]: "xl"
};
const v1DashesToV2Dashes = {
["solid" /* Solid */]: "solid",
["dashed" /* Dashed */]: "dashed",
["dotted" /* Dotted */]: "dotted",
["draw" /* Draw */]: "draw"
};
function getV2Color(color) {
return color ? v1ColorsToV2Colors[color] ?? "black" : "black";
}
function getV2Font(font) {
return font ? v1FontsToV2Fonts[font] ?? "draw" : "draw";
}
function getV2Align(align) {
return align ? v1AlignsToV2Aligns[align] ?? "middle" : "middle";
}
function getV2TextAlign(align) {
return align ? v1TextAlignsToV2TextAligns[align] ?? "middle" : "middle";
}
function getV2TextSize(size) {
return size ? v1TextSizesToV2TextSizes[size] ?? "m" : "m";
}
function getV2Size(size) {
return size ? v1SizesToV2Sizes[size] ?? "l" : "l";
}
function getV2Dash(dash) {
return dash ? v1DashesToV2Dashes[dash] ?? "draw" : "draw";
}
function getV2Point(point) {
return {
x: coerceNumber(point[0]),
y: coerceNumber(point[1]),
z: point[2] == null ? 0.5 : coerceNumber(point[2])
};
}
function getV2Arrowhead(decoration) {
return decoration === "arrow" /* Arrow */ ? "arrow" : "none";
}
function getV2Fill(isFilled, color) {
return isFilled ? color === "black" /* Black */ || color === "white" /* White */ ? "semi" : "solid" : "none";
}
//# sourceMappingURL=buildFromV1Document.js.map