aboutsummaryrefslogtreecommitdiff
path: root/src/fields/Doc.ts
diff options
context:
space:
mode:
authormehekj <mehek.jethani@gmail.com>2022-08-24 20:23:17 -0400
committermehekj <mehek.jethani@gmail.com>2022-08-24 20:23:17 -0400
commit69ca9baca6ff1da272a5191187542351bd242ccc (patch)
tree33bca594a876c2f9902841df4ef799f9b35e37f8 /src/fields/Doc.ts
parent31ca85d11a5735f6e74e4a887f99a9c12c35d0a7 (diff)
parentb8ebc0f758d2240af29640d6f8dc490705b42bb9 (diff)
Merge branch 'master' into schema-mehek
Diffstat (limited to 'src/fields/Doc.ts')
-rw-r--r--src/fields/Doc.ts14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/fields/Doc.ts b/src/fields/Doc.ts
index 8d56ebf8c..612fc7fb8 100644
--- a/src/fields/Doc.ts
+++ b/src/fields/Doc.ts
@@ -1389,6 +1389,20 @@ export namespace Doc {
return !curPres ? false : DocListCast(curPres.data).findIndex(val => Doc.AreProtosEqual(val, doc)) !== -1;
}
+ export function styleFromLayoutString(rootDoc: Doc, layoutDoc: Doc, props: any, scale: number) {
+ const style: { [key: string]: any } = {};
+ const divKeys = ['width', 'height', 'fontSize', 'transform', 'left', 'backgroundColor', 'left', 'right', 'top', 'bottom', 'pointerEvents', 'position'];
+ const replacer = (match: any, expr: string, offset: any, string: any) => {
+ // bcz: this executes a script to convert a property expression string: { script } into a value
+ return ScriptField.MakeFunction(expr, { self: Doc.name, this: Doc.name, scale: 'number' })?.script.run({ self: rootDoc, this: layoutDoc, scale }).result?.toString() ?? '';
+ };
+ divKeys.map((prop: string) => {
+ const p = props[prop];
+ typeof p === 'string' && (style[prop] = p?.replace(/{([^.'][^}']+)}/g, replacer));
+ });
+ return style;
+ }
+
// prettier-ignore
export function toIcon(doc?: Doc, isOpen?: boolean) {
switch (StrCast(doc?.type)) {