diff --git a/frontend/playwright.config.js b/frontend/playwright.config.js index 7496f7f4c8..8bbc0d00b9 100644 --- a/frontend/playwright.config.js +++ b/frontend/playwright.config.js @@ -23,6 +23,7 @@ export default defineConfig({ expect: { timeout: process.env.CI ? 20000 : 5000, }, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ reporter: "html", /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ @@ -62,7 +63,9 @@ export default defineConfig({ }, testDir: "./playwright/ui/render-wasm-specs", snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}.png", + timeout: 2 * 60 * 1000, expect: { + timeout: process.env.CI ? 20000 : 10000, toHaveScreenshot: { maxDiffPixelRatio: 0.001, }, diff --git a/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json b/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json new file mode 100644 index 0000000000..6a83bd58a3 --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-frame-clipping-shadows-and-texts.json @@ -0,0 +1,1118 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "update-texts-shadows-clipping", + "~:revn": 258, + "~:modified-at": "~m1757428097435", + "~:vern": 0, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe72", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1757344558019", + "~:data": { + "~:pages": [ + "~u44471494-966a-8178-8006-c5bd93f0fe73" + ], + "~:pages-index": { + "~u44471494-966a-8178-8006-c5bd93f0fe73": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6" + ] + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8": { + "~#shape": { + "~:y": 232.22042756482634, + "~:transform": { + "~#matrix": { + "~:a": 0.9443738873933403, + "~:b": -0.32887377640911275, + "~:c": 0.32887369880559447, + "~:d": 0.9443739144183976, + "~:e": 2.2737367544323206e-13, + "~:f": 6.821210263296962e-13 + } + }, + "~:rotation": 340.79956734260065, + "~:last-resize-direction": "~:vertical", + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "justify", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 939.9999777779914, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -141.00000230643664, + "~:y": 400.1413168166523 + } + }, + { + "~#point": { + "~:x": 746.7113407198956, + "~:y": 91.00002923471884 + } + }, + { + "~#point": { + "~:x": 904.5708240747189, + "~:y": 544.2995494560472 + } + }, + { + "~#point": { + "~:x": 16.85948104838637, + "~:y": 853.44083703798 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9443739144184007, + "~:b": 0.32887377640911386, + "~:c": -0.3288736988055956, + "~:d": 0.9443738873933434, + "~:e": 9.60589704809217e-15, + "~:f": -7.189545246067483e-13 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8", + "~:parent-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:position-data": [ + { + "~#rect": { + "~:y": 731.7204275648263, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "400px", + "~:font-weight": "400", + "~:y1": -19.5, + "~:width": 939.2666625976562, + "~:text-decoration": "rgba(20, 123, 215, 0.433)", + "~:letter-spacing": "normal", + "~:x": -88.2145780048542, + "~:x1": 0, + "~:y2": 499.5, + "~:fills": [ + { + "~:fill-color": "#147bd7", + "~:fill-opacity": 0.43333333333333335 + } + ], + "~:x2": 939.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 519, + "~:text": "HOLA" + } + } + ], + "~:frame-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -88.2145780048542, + "~:shadow": [ + { + "~:color": { + "~:color": "#1900ff", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0a7251cac", + "~:offset-x": -10 + }, + { + "~:color": { + "~:color": "#ea1111", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -88.2145780048542, + "~:y": 232.22042756482634, + "~:width": 939.9999777779914, + "~:height": 480.00001114304814, + "~:x1": -88.2145780048542, + "~:y1": 232.22042756482634, + "~:x2": 851.7853997731372, + "~:y2": 712.2204387078745 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 480.00001114304814, + "~:flip-y": null + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d66": { + "~#shape": { + "~:y": -580.7795287106788, + "~:transform": { + "~#matrix": { + "~:a": 0.9443738873933403, + "~:b": -0.32887377640911275, + "~:c": 0.32887369880559447, + "~:d": 0.9443739144183976, + "~:e": 2.2737367544323206e-13, + "~:f": 6.821210263296962e-13 + } + }, + "~:rotation": 340.79956734260065, + "~:last-resize-direction": "~:vertical", + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1otdj8747ov", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1ppxneff2xr", + "~:font-size": "400", + "~:font-weight": "400", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "HOLA" + } + ], + "~:text-transform": "none", + "~:text-align": "justify", + "~:font-id": "sourcesanspro", + "~:key": "2afvsygzvt", + "~:font-size": "400", + "~:font-weight": "400", + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "HOLA", + "~:width": 939.9999553167295, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -141.00001536206545, + "~:y": -412.8586424988404 + } + }, + { + "~#point": { + "~:x": 746.7115201226542, + "~:y": -722.0000288567821 + } + }, + { + "~#point": { + "~:x": 904.5708952607965, + "~:y": -268.70055649684616 + } + }, + { + "~#point": { + "~:x": 16.859359776077056, + "~:y": 40.44082986109797 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9443739144184007, + "~:b": 0.32887377640911386, + "~:c": -0.3288736988055956, + "~:d": 0.9443738873933434, + "~:e": 9.60589704809217e-15, + "~:f": -7.189545246067483e-13 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:constraints-v": "~:top", + "~:constraints-h": "~:left", + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d66", + "~:parent-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:position-data": [ + { + "~#rect": { + "~:y": -81.27952871067885, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "400px", + "~:font-weight": "400", + "~:y1": -19.5, + "~:width": 939.2666625976562, + "~:text-decoration": "rgba(177, 178, 181, 0.356)", + "~:letter-spacing": "normal", + "~:x": -88.21453770899959, + "~:x1": 0, + "~:y2": 499.5, + "~:fills": [ + { + "~:fill-color": "#b1b2b5", + "~:fill-opacity": 0.35555555555555557 + } + ], + "~:x2": 939.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 519, + "~:text": "HOLA" + } + } + ], + "~:frame-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 0.4166666666666667 + } + ], + "~:x": -88.21453770899959, + "~:shadow": [ + { + "~:color": { + "~:color": "#1900ff", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0a7251cac", + "~:offset-x": -10 + }, + { + "~:color": { + "~:color": "#ea1111", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u757a30c8-2a19-8062-8006-bdd7693703f6", + "~:offset-x": 20 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -88.21453770899959, + "~:y": -580.7795287106788, + "~:width": 939.9999553167295, + "~:height": 479.99985842567, + "~:x1": -88.21453770899959, + "~:y1": -580.7795287106788, + "~:x2": 851.7854176077299, + "~:y2": -100.77967028500882 + } + }, + "~:flip-x": null, + "~:height": 479.99985842567, + "~:flip-y": null + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d64": { + "~#shape": { + "~:y": -574.9999832321141, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": true, + "~:name": "Board", + "~:width": 1103.9998207331741, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": -186.99999775378137, + "~:y": -574.9999848183147 + } + }, + { + "~#point": { + "~:x": 916.9998229793928, + "~:y": -574.9999816459126 + } + }, + { + "~#point": { + "~:x": 916.9998208253946, + "~:y": -40.55006952257736 + } + }, + { + "~#point": { + "~:x": -186.9999999077786, + "~:y": -40.55007269497946 + } + } + ], + "~:r2": 0, + "~:show-content": false, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:r3": 0, + "~:r1": 0, + "~:hidden": false, + "~:opacity": 0.8, + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -186.99999883077953, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ffb200", + "~:opacity": 0.5888888888888889 + }, + "~:spread": 0, + "~:offset-y": -40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0be01f1e7", + "~:offset-x": -40 + }, + { + "~:color": { + "~:color": "#00d514", + "~:opacity": 0.5555555555555556 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ucac62c62-a28f-80cc-8006-c5bf5784705d", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": -186.99999883077953, + "~:y": -574.9999832321141, + "~:width": 1103.9998207331741, + "~:height": 534.4499121233357, + "~:x1": -186.99999883077953, + "~:y1": -574.9999832321141, + "~:x2": 916.9998219023946, + "~:y2": -40.55007110877841 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.4499121233357, + "~:flip-y": null, + "~:shapes": [ + "~u4c99f1a5-5581-806f-8006-c6e810ac2d65", + "~u4c99f1a5-5581-806f-8006-c6e810ac2d66" + ] + } + }, + "~u4c99f1a5-5581-806f-8006-c6e810ac2d65": { + "~#shape": { + "~:y": -142.05052225711233, + "~:transform": { + "~#matrix": { + "~:a": 0.9876772541628087, + "~:b": -0.15650444597331514, + "~:c": 0.1565043820633818, + "~:d": 0.987677264289788, + "~:e": 1.864464138634503e-11, + "~:f": 1.5916157281026244e-11 + } + }, + "~:rotation": 350.9959394515914, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.8679636613706, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 813.9999374477284, + "~:y": -123.8071608518776 + } + }, + { + "~#point": { + "~:x": 1036.0969103459738, + "~:y": -158.99999692184792 + } + }, + { + "~#point": { + "~:x": 1052.5298639971734, + "~:y": -55.2939249740125 + } + }, + { + "~#point": { + "~:x": 830.4328910989279, + "~:y": -20.101088904041262 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9876772642897899, + "~:b": 0.15650444597331545, + "~:c": -0.1565043820633821, + "~:d": 0.9876772541628106, + "~:e": -1.592394003803884e-11, + "~:f": -1.8637995790688502e-11 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d65", + "~:parent-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:frame-id": "~u4c99f1a5-5581-806f-8006-c6e810ac2d64", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 10 + } + ], + "~:x": 820.8309188917665, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#3d53e5", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u718f9fbe-f44a-80dc-8006-c6989bce7b0d", + "~:offset-x": 20 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 820.8309188917665, + "~:y": -142.05052225711233, + "~:width": 224.8679636613706, + "~:height": 104.99995868833639, + "~:x1": 820.8309188917665, + "~:y1": -142.05052225711233, + "~:x2": 1045.698882553137, + "~:y2": -37.05056356877594 + } + }, + "~:fills": [ + { + "~:fill-color": "#e17fda", + "~:fill-opacity": 0.3388888888888889 + } + ], + "~:flip-x": null, + "~:height": 104.99995868833639, + "~:flip-y": null + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7": { + "~#shape": { + "~:y": 670.9495170155224, + "~:transform": { + "~#matrix": { + "~:a": 0.9876772541628087, + "~:b": -0.15650444597331514, + "~:c": 0.1565043820633818, + "~:d": 0.987677264289788, + "~:e": 1.864464138634503e-11, + "~:f": 1.5916157281026244e-11 + } + }, + "~:rotation": 350.9959394515914, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": false, + "~:name": "Rectangle", + "~:width": 224.8679636613715, + "~:type": "~:rect", + "~:points": [ + { + "~#point": { + "~:x": 814.0000142069011, + "~:y": 689.1928784207576 + } + }, + { + "~#point": { + "~:x": 1036.0969871051466, + "~:y": 654.0000423507863 + } + }, + { + "~#point": { + "~:x": 1052.5299407563462, + "~:y": 757.7061142986222 + } + }, + { + "~#point": { + "~:x": 830.4329678580998, + "~:y": 792.8989503685934 + } + } + ], + "~:r2": 0, + "~:layout-item-h-sizing": "~:fix", + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9876772642897899, + "~:b": 0.15650444597331545, + "~:c": -0.1565043820633821, + "~:d": 0.9876772541628106, + "~:e": -1.592394003803884e-11, + "~:f": -1.8637995790688502e-11 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:layout-item-v-sizing": "~:fix", + "~:r3": 0, + "~:r1": 0, + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7", + "~:parent-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:frame-id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:strokes": [ + { + "~:stroke-alignment": "~:outer", + "~:stroke-style": "~:solid", + "~:stroke-color": "#000000", + "~:stroke-opacity": 1, + "~:stroke-width": 10 + } + ], + "~:x": 820.8309956509383, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#3d53e5", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 20, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u718f9fbe-f44a-80dc-8006-c6989bce7b0d", + "~:offset-x": 20 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 820.8309956509383, + "~:y": 670.9495170155224, + "~:width": 224.8679636613715, + "~:height": 104.99995868833685, + "~:x1": 820.8309956509383, + "~:y1": 670.9495170155224, + "~:x2": 1045.6989593123099, + "~:y2": 775.9494757038592 + } + }, + "~:fills": [ + { + "~:fill-color": "#e17fda", + "~:fill-opacity": 0.3388888888888889 + } + ], + "~:flip-x": null, + "~:height": 104.99995868833685, + "~:flip-y": null + } + }, + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6": { + "~#shape": { + "~:y": 237.99999500536433, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:hide-in-viewer": true, + "~:name": "Board", + "~:width": 1103.9998207331746, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": -186.99999728855437, + "~:y": 237.99999341916373 + } + }, + { + "~#point": { + "~:x": 916.9998234446202, + "~:y": 237.99999659156583 + } + }, + { + "~#point": { + "~:x": 916.9998212906212, + "~:y": 772.4499087149015 + } + }, + { + "~#point": { + "~:x": -186.9999994425516, + "~:y": 772.4499055424985 + } + } + ], + "~:r2": 0, + "~:show-content": true, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:page-id": "~u9502081a-e1a4-80bc-8006-c2b96872319a", + "~:r3": 0, + "~:blur": { + "~:id": "~u61d06cb5-830a-802f-8006-c6f910826daa", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:r1": 0, + "~:hidden": false, + "~:opacity": 0.8, + "~:id": "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 10, + "~:stroke-color": "#000000", + "~:stroke-opacity": 1 + } + ], + "~:x": -186.99999836555253, + "~:proportion": 1, + "~:shadow": [ + { + "~:color": { + "~:color": "#ffb200", + "~:opacity": 0.5888888888888889 + }, + "~:spread": 0, + "~:offset-y": -40, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u56e0aa75-f920-805c-8006-c6d0be01f1e7", + "~:offset-x": -40 + }, + { + "~:color": { + "~:color": "#00d514", + "~:opacity": 0.5555555555555556 + }, + "~:spread": 0, + "~:offset-y": 50, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ucac62c62-a28f-80cc-8006-c5bf5784705d", + "~:offset-x": 50 + } + ], + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": -186.99999836555253, + "~:y": 237.99999500536433, + "~:width": 1103.9998207331746, + "~:height": 534.4499121233357, + "~:x1": -186.99999836555253, + "~:y1": 237.99999500536433, + "~:x2": 916.9998223676221, + "~:y2": 772.4499071287 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 534.4499121233357, + "~:flip-y": null, + "~:shapes": [ + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e7", + "~u33e48bf0-9bf8-80a1-8006-c6f8b48ee6e8" + ] + } + } + }, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe73", + "~:name": "Page 1" + } + }, + "~:id": "~u44471494-966a-8178-8006-c5bd93f0fe72", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-images.json b/frontend/playwright/data/render-wasm/get-file-text-images.json index 18020f2c1e..e04435395a 100644 --- a/frontend/playwright/data/render-wasm/get-file-text-images.json +++ b/frontend/playwright/data/render-wasm/get-file-text-images.json @@ -4,6 +4,7 @@ "fdata/path-data", "plugins/runtime", "design-tokens/v1", + "variants/v1", "layout/grid", "styles/v2", "fdata/pointer-map", @@ -25,8 +26,8 @@ "~:has-media-trimmed": false, "~:comment-thread-seqn": 0, "~:name": "New File 7 (copy)", - "~:revn": 233, - "~:modified-at": "~m1753186774115", + "~:revn": 318, + "~:modified-at": "~m1757071793227", "~:vern": 0, "~:id": "~u4f89252d-ebbc-813e-8006-8699e4149b9a", "~:is-shared": false, @@ -99,7 +100,8 @@ "0004-clean-shadow-color", "0008-fix-library-colors-v4", "0003-convert-path-content-v2", - "0009-clean-library-colors" + "0009-clean-library-colors", + "0010-fix-swap-slots-pointing-non-existent-shapes" ] }, "~:version": 67, @@ -329,13 +331,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -351,6 +353,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e977f9e30ea", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -367,15 +405,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -474,13 +512,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 305.999979064909 + "~:y": 306.9999810914669 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 305.999979064909 + "~:y": 306.9999810914669 } } ], @@ -496,6 +534,35 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e968ea9bb4b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 308.34998719498253, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(21, 209, 46)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#15d12e", + "~:fill-opacity": 1 + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -519,21 +586,21 @@ "~:x": 188.99999672174454, "~:y": 262.9999810914669, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 262.9999810914669, "~:x2": 359.0000047683716, - "~:y2": 305.999979064909 + "~:y2": 306.9999810914669 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, "~u8e0276b0-5131-8065-8006-87c8c98fa23d": { "~#shape": { - "~:y": 601.000025231285, + "~:y": 579.9999966210555, "~:transform": { "~#matrix": { "~:a": 1, @@ -692,26 +759,26 @@ "~:points": [ { "~#point": { - "~:x": 533.9999873919224, - "~:y": 601.0000252312851 + "~:x": 669.0000026507115, + "~:y": 579.9999966210556 } }, { "~#point": { - "~:x": 818.0000525145931, - "~:y": 601.0000252312851 + "~:x": 953.0000677733822, + "~:y": 579.9999966210556 } }, { "~#point": { - "~:x": 818.0000525145931, - "~:y": 690.9999714607172 + "~:x": 953.0000677733822, + "~:y": 669.9999428504877 } }, { "~#point": { - "~:x": 533.9999873919224, - "~:y": 690.9999714607172 + "~:x": 669.0000026507115, + "~:y": 669.9999428504877 } } ], @@ -729,8 +796,120 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c8c98fa23d", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 669.0000026507116, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 714.0000026507116, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 759.0000026507116, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 625.3500027245711, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 804.0000026507116, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 668.5499996728133, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 669.0000026507116, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", - "~:x": 533.9999873919226, + "~:x": 669.0000026507116, "~:shadow": [ { "~:color": { @@ -748,14 +927,14 @@ ], "~:selrect": { "~#rect": { - "~:x": 533.9999873919226, - "~:y": 601.000025231285, + "~:x": 669.0000026507116, + "~:y": 579.9999966210555, "~:width": 284.00006512267055, "~:height": 89.99994622943211, - "~:x1": 533.9999873919226, - "~:y1": 601.000025231285, - "~:x2": 818.0000525145931, - "~:y2": 690.9999714607171 + "~:x1": 669.0000026507116, + "~:y1": 579.9999966210555, + "~:x2": 953.0000677733822, + "~:y2": 669.9999428504876 } }, "~:flip-x": null, @@ -871,6 +1050,30 @@ }, "~:id": "~uef609b51-0d34-80f3-8006-5e99460c12bb", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 596.1000958619669, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 144, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 185.92164040549193, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 144, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポくろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -953,7 +1156,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], "~:font-family": "sourcesanspro", "~:text": "萎ポくろ" } @@ -971,7 +1179,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], "~:font-family": "sourcesanspro" } ] @@ -1020,8 +1233,70 @@ "~:f": 0 } }, + "~:blur": { + "~:id": "~ufcdfaec2-c882-800a-8006-bdfe640d48c0", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e980c195547", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 468.3500178775157, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 72, + "~:text-decoration": "rgba(34, 68, 171, 0.617)", + "~:letter-spacing": "normal", + "~:x": 192.5000022321518, + "~:x1": 9.5, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポ" + } + }, + { + "~#rect": { + "~:y": 511.5500148257579, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 33.55000305175781, + "~:width": 72, + "~:text-decoration": "rgba(34, 68, 171, 0.617)", + "~:letter-spacing": "normal", + "~:x": 192.5000022321518, + "~:x1": 9.5, + "~:y2": 88.55000305175781, + "~:fills": [ + { + "~:fill-color": "#2244ab", + "~:fill-opacity": 0.6166666666666667 + } + ], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "くろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1076,6 +1351,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1f62xcal6hw", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" + }, { "~:line-height": "", "~:font-style": "normal", @@ -1096,7 +1393,7 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ " + "~:text": " " }, { "~:line-height": "", @@ -1127,7 +1424,7 @@ "~:text-transform": "none", "~:font-id": "sourcesanspro", "~:key": "59c3kg7hq8", - "~:font-size": "24", + "~:font-size": "0", "~:font-weight": "normal", "~:typography-ref-file": null, "~:font-variant-id": "regular", @@ -1206,15 +1503,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": " unicode ❤️" + "~:text": " unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "vff0hj0mq3", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "left", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "0", + "~:key": "1gghvlvyoud", + "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -1278,6 +1597,143 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c89da3209e", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 34.83332824707031, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 528.9999767398235, + "~:x1": 0, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 34.83332824707031, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ " + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 11.133331298828125, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 563.8333049868938, + "~:x1": 34.83332824707031, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 45.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "I " + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 6.116668701171875, + "~:text-decoration": "rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 574.966636285722, + "~:x1": 45.96665954589844, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 52.08332824707031, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "l" + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 35.93333435058594, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 581.0833049868938, + "~:x1": 52.08332824707031, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 88.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "ove" + } + }, + { + "~#rect": { + "~:y": 415.6499997209809, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 120.41667175292969, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 617.0166393374798, + "~:x1": 88.01666259765625, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 208.43333435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": " unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [], "~:x": 528.9999767398235, @@ -1407,13 +1863,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -1429,6 +1885,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e9771af0c6e", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1445,15 +1937,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -1566,13 +2058,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -1588,6 +2080,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e9775677e20", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1604,21 +2132,21 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, "~u2e773f0c-bc2a-8063-8006-75d73e978b13": { "~#shape": { - "~:y": 271.0000103742148, + "~:y": 271.00000374648164, "~:transform": { "~#matrix": { "~:a": 1, @@ -1630,7 +2158,7 @@ } }, "~:rotation": 0, - "~:grow-type": "~:fixed", + "~:grow-type": "~:auto-width", "~:content": { "~:type": "root", "~:key": "23iz9tepv1l", @@ -1648,7 +2176,7 @@ "~:typography-ref-id": null, "~:text-transform": "none", "~:font-id": "sourcesanspro", - "~:key": "t8mkaljm92", + "~:key": "16puxcfnj7p", "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, @@ -1662,15 +2190,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I love unicode ❤️" + "~:text": "🦍 I love unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23z3cwj10cs", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🦍" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "center", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "24", + "~:key": "xvgbdzwpy1", + "~:font-size": "0", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -1692,31 +2242,31 @@ "~:vertical-align": "center" }, "~:name": "❤️ I hate emoji ❤️", - "~:width": 337.10167609832115, + "~:width": 209.00000677171096, "~:type": "~:text", "~:points": [ { "~#point": { - "~:x": 401.0000094603646, - "~:y": 271.0000103742148 + "~:x": 401.00001987243246, + "~:y": 271.00000374648164 } }, { "~#point": { - "~:x": 738.1016855586857, - "~:y": 271.0000103742148 + "~:x": 610.0000266441434, + "~:y": 271.00000374648164 } }, { "~#point": { - "~:x": 738.1016855586857, - "~:y": 427.0000100565906 + "~:x": 610.0000266441434, + "~:y": 300.00000428348255 } }, { "~#point": { - "~:x": 401.0000094603646, - "~:y": 427.0000100565906 + "~:x": 401.00001987243246, + "~:y": 300.00000428348255 } } ], @@ -1734,6 +2284,35 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~u2e773f0c-bc2a-8063-8006-75d73e978b13", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 365.2500103742148, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": 61.75, + "~:width": 208.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 465.3333377074349, + "~:x1": 64.33332824707031, + "~:y2": 94.25, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 272.76666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I love unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -1744,7 +2323,7 @@ "~:stroke-opacity": 1 } ], - "~:x": 401.0000094603646, + "~:x": 401.0000198724324, "~:shadow": [ { "~:color": { @@ -1762,18 +2341,18 @@ ], "~:selrect": { "~#rect": { - "~:x": 401.0000094603646, - "~:y": 271.0000103742148, - "~:width": 337.10167609832115, - "~:height": 155.9999996823758, - "~:x1": 401.0000094603646, - "~:y1": 271.0000103742148, - "~:x2": 738.1016855586857, - "~:y2": 427.0000100565906 + "~:x": 401.0000198724324, + "~:y": 271.00000374648164, + "~:width": 209.00000677171096, + "~:height": 29.000000537000915, + "~:x1": 401.0000198724324, + "~:y1": 271.00000374648164, + "~:x2": 610.0000266441434, + "~:y2": 300.00000428348255 } }, "~:flip-x": null, - "~:height": 155.9999996823758, + "~:height": 29.000000537000915, "~:flip-y": null } }, @@ -1975,6 +2554,118 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e995b054836", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 339.16327306897387, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 384.16327306897387, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 429.16327306897387, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 684.6584327431164, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 474.16327306897387, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 727.8584296913585, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 339.16327306897387, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:x": 339.16327306897387, "~:selrect": { @@ -2020,6 +2711,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "16xfalefku7", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" + }, { "~:line-height": "", "~:font-style": "normal", @@ -2040,7 +2753,7 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I " + "~:text": " I " }, { "~:line-height": "", @@ -2084,15 +2797,37 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": " unicode ❤️" + "~:text": " unicode " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "20mlxdc1w6k", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🔥" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "left", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", - "~:font-size": "0", + "~:key": "26o9ihmqfo3", + "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, "~:text-direction": "ltr", @@ -2156,6 +2891,89 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e98ba9c0e14", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 45.96665954589844, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 528.9999767398235, + "~:x1": 0, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 45.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I " + } + }, + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 42.05000305175781, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 574.966636285722, + "~:x1": 45.96665954589844, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 88.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "love" + } + }, + { + "~#rect": { + "~:y": 459.6499959062836, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 120.41667175292969, + "~:text-decoration": "line-through rgb(207, 34, 34)", + "~:letter-spacing": "normal", + "~:x": 617.0166393374798, + "~:x1": 88.01666259765625, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#cf2222", + "~:fill-opacity": 1 + } + ], + "~:x2": 208.43333435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": " unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [], "~:x": 528.9999767398235, @@ -2282,13 +3100,65 @@ "~:f": 0 } }, + "~:blur": { + "~:id": "~u8df74ea5-9311-8065-8006-bdfdeeb5d79d", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, "~:id": "~uef609b51-0d34-80f3-8006-5e9934d0368b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 468.3500177125625, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 72, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 276.4999941259201, + "~:x1": 9.5, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポ" + } + }, + { + "~#rect": { + "~:y": 511.55001466080466, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 33.55000305175781, + "~:width": 72, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 276.4999941259201, + "~:x1": 9.5, + "~:y2": 88.55000305175781, + "~:fills": [], + "~:x2": 81.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "くろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { "~:stroke-style": "~:solid", - "~:stroke-alignment": "~:outer", + "~:stroke-alignment": "~:inner", "~:stroke-width": 1, "~:stroke-color": "#13a9f5", "~:stroke-opacity": 1 @@ -2304,7 +3174,7 @@ "~:spread": 0, "~:offset-y": 4, "~:style": "~:drop-shadow", - "~:blur": 4, + "~:blur": 2, "~:hidden": false, "~:id": "~uef609b51-0d34-80f3-8006-5e99383d5786", "~:offset-x": 4 @@ -2329,7 +3199,7 @@ }, "~uef609b51-0d34-80f3-8006-5e9880f79b0b": { "~#shape": { - "~:y": 269.00000893934515, + "~:y": 236.99999557797076, "~:transform": { "~#matrix": { "~:a": 1, @@ -2353,6 +3223,28 @@ "~:line-height": "1.2", "~:font-style": "normal", "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "1mn62cp66z5", + "~:font-size": "24", + "~:font-weight": "normal", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", + "~:text": "🦍 I love unicode 🦍" + }, { "~:line-height": "", "~:font-style": "normal", @@ -2373,14 +3265,14 @@ } ], "~:font-family": "\"Droid Sans Mono\", \"monospace\", monospace", - "~:text": "❤️ I love unicode ❤️" + "~:text": "" } ], "~:typography-ref-id": null, "~:text-transform": "none", "~:text-align": "right", "~:font-id": "sourcesanspro", - "~:key": "2bd6up3z17w", + "~:key": "1igf9c5g7qb", "~:font-size": "24", "~:font-weight": "normal", "~:typography-ref-file": null, @@ -2408,26 +3300,26 @@ "~:points": [ { "~#point": { - "~:x": 439.0000065171845, - "~:y": 269.00000893934515 + "~:x": 459.9999940731069, + "~:y": 236.99999557797076 } }, { "~#point": { - "~:x": 737.9999993406883, - "~:y": 269.00000893934515 + "~:x": 758.9999868966107, + "~:y": 236.99999557797076 } }, { "~#point": { - "~:x": 737.9999993406883, - "~:y": 298.0000082477825 + "~:x": 758.9999868966107, + "~:y": 265.99999056507147 } }, { "~#point": { - "~:x": 439.0000065171845, - "~:y": 298.0000082477825 + "~:x": 459.9999940731069, + "~:y": 265.99999056507147 } } ], @@ -2445,6 +3337,35 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e9880f79b0b", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 299.6499723182514, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "24px", + "~:font-weight": "400", + "~:y1": -1.850006103515625, + "~:width": 208.43333435058594, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 529.5666721665986, + "~:x1": 90.56666564941406, + "~:y2": 30.649993896484375, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 299, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 32.5, + "~:text": "❤️ I love unicode ❤️" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2455,21 +3376,21 @@ "~:stroke-opacity": 1 } ], - "~:x": 439.0000065171845, + "~:x": 459.9999940731069, "~:selrect": { "~#rect": { - "~:x": 439.0000065171845, - "~:y": 269.00000893934515, + "~:x": 459.9999940731069, + "~:y": 236.99999557797076, "~:width": 298.9999928235038, - "~:height": 28.99999930843734, - "~:x1": 439.0000065171845, - "~:y1": 269.00000893934515, - "~:x2": 737.9999993406883, - "~:y2": 298.0000082477825 + "~:height": 28.999994987100706, + "~:x1": 459.9999940731069, + "~:y1": 236.99999557797076, + "~:x2": 758.9999868966107, + "~:y2": 265.99999056507147 } }, "~:flip-x": null, - "~:height": 28.99999930843734, + "~:height": 28.999994987100706, "~:flip-y": null } }, @@ -2672,6 +3593,96 @@ "~:hidden": false, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e98597c0d17", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 528.9999944726542, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 573.9999944726542, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 618.9999944726542, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 522.3500189623526, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 663.9999944726542, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:x": 528.9999944726542, "~:selrect": { @@ -2800,13 +3811,13 @@ { "~#point": { "~:x": 359.0000047683716, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } }, { "~#point": { "~:x": 188.99999672174454, - "~:y": 361.99997143551445 + "~:y": 362.9999734620724 } } ], @@ -2822,6 +3833,42 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e974ec5dede", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 364.349979565588, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999672174454, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-opacity": 1, + "~:fill-image": { + "~:id": "~u4f89252d-ebbc-813e-8006-8699e4170e18", + "~:width": 443, + "~:height": 441, + "~:mtype": "image/png", + "~:name": "pattern.png", + "~:keep-aspect-ratio": true + } + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2838,15 +3885,15 @@ "~:x": 188.99999672174454, "~:y": 318.9999734620724, "~:width": 170.00000804662704, - "~:height": 42.99999797344208, + "~:height": 44, "~:x1": 188.99999672174454, "~:y1": 318.9999734620724, "~:x2": 359.0000047683716, - "~:y2": 361.99997143551445 + "~:y2": 362.9999734620724 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } }, @@ -2958,6 +4005,30 @@ }, "~:id": "~u4b4f5ff7-44ac-808a-8006-5e979761b8f6", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 416.3500138978643, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -9.649993896484375, + "~:width": 144, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 188.99999416516704, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [], + "~:x2": 144, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 55, + "~:text": "萎ポくろ" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -2988,7 +4059,7 @@ }, "~uef609b51-0d34-80f3-8006-5e9929d3fa47": { "~#shape": { - "~:y": 537.9999565667342, + "~:y": 526.9999908990096, "~:transform": { "~#matrix": { "~:a": 1, @@ -3025,7 +4096,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "🔥" }, @@ -3042,7 +4118,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "👩🏿\u200d🚀" }, @@ -3059,7 +4140,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "👺" }, @@ -3076,7 +4162,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "🚀" } @@ -3094,7 +4185,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro" }, { @@ -3114,7 +4210,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro", "~:text": "" } @@ -3132,7 +4233,12 @@ "~:font-variant-id": "regular", "~:text-decoration": "none", "~:letter-spacing": "0", - "~:fills": [], + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], "~:font-family": "sourcesanspro" } ] @@ -3147,26 +4253,26 @@ "~:points": [ { "~#point": { - "~:x": 441.9999797625279, - "~:y": 537.9999565667343 + "~:x": 450.0000245852208, + "~:y": 526.9999908990097 } }, { "~#point": { - "~:x": 726.0000448851986, - "~:y": 537.9999565667343 + "~:x": 734.0000897078914, + "~:y": 526.9999908990097 } }, { "~#point": { - "~:x": 726.0000448851986, - "~:y": 627.9999027961665 + "~:x": 734.0000897078914, + "~:y": 616.9999371284418 } }, { "~#point": { - "~:x": 441.9999797625279, - "~:y": 627.9999027961665 + "~:x": 450.0000245852208, + "~:y": 616.9999371284418 } } ], @@ -3184,8 +4290,145 @@ "~:layout-item-v-sizing": "~:fix", "~:id": "~uef609b51-0d34-80f3-8006-5e9929d3fa47", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 450.00002458522084, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 45, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🔥" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 495.00002458522084, + "~:x1": 45, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 90, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👩🏿\u200d🚀" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 540.0000245852209, + "~:x1": 90, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 135, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "👺" + } + }, + { + "~#rect": { + "~:y": 572.3499970025252, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 45, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 585.0000245852209, + "~:x1": 135, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 180, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "🚀" + } + }, + { + "~#rect": { + "~:y": 615.5499939507674, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": 41.05000305175781, + "~:width": 7.26666259765625, + "~:text-decoration": "rgb(177, 178, 181)", + "~:letter-spacing": "normal", + "~:x": 450.00002458522084, + "~:x1": 0, + "~:y2": 88.55000305175781, + "~:fills": [ + { + "~:fill-color": "#B1B2B5", + "~:fill-opacity": 1 + } + ], + "~:x2": 7.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": " " + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", - "~:x": 441.99997976252797, + "~:x": 450.00002458522084, "~:shadow": [ { "~:color": { @@ -3203,14 +4446,14 @@ ], "~:selrect": { "~#rect": { - "~:x": 441.99997976252797, - "~:y": 537.9999565667342, + "~:x": 450.00002458522084, + "~:y": 526.9999908990096, "~:width": 284.0000651226706, "~:height": 89.99994622943211, - "~:x1": 441.99997976252797, - "~:y1": 537.9999565667342, - "~:x2": 726.0000448851986, - "~:y2": 627.9999027961663 + "~:x1": 450.00002458522084, + "~:y1": 526.9999908990096, + "~:x2": 734.0000897078914, + "~:y2": 616.9999371284417 } }, "~:flip-x": null, @@ -3220,7 +4463,7 @@ }, "~u8e0276b0-5131-8065-8006-87c8d5780f60": { "~#shape": { - "~:y": 213.00001923843956, + "~:y": 166.00000568175594, "~:transform": { "~#matrix": { "~:a": 1, @@ -3295,34 +4538,35 @@ }, "~:hide-in-viewer": false, "~:name": "Text", - "~:width": 170.00000804662704, + "~:width": 170, "~:type": "~:text", "~:points": [ { "~#point": { - "~:x": 186.99999576807022, - "~:y": 213.00001923843956 + "~:x": 372.0000051221425, + "~:y": 166.00000568175594 } }, { "~#point": { - "~:x": 357.00000381469727, - "~:y": 213.00001923843956 + "~:x": 542.0000051221425, + "~:y": 166.00000568175594 } }, { "~#point": { - "~:x": 357.00000381469727, - "~:y": 256.00001721188164 + "~:x": 542.0000051221425, + "~:y": 210.00000568175594 } }, { "~#point": { - "~:x": 186.99999576807022, - "~:y": 256.00001721188164 + "~:x": 372.0000051221425, + "~:y": 210.00000568175594 } } ], + "~:layout-item-h-sizing": "~:fix", "~:transform-inverse": { "~#matrix": { "~:a": 1, @@ -3333,8 +4577,38 @@ "~:f": 0 } }, + "~:layout-item-v-sizing": "~:fix", "~:id": "~u8e0276b0-5131-8065-8006-87c8d5780f60", "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 211.35001178527156, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "36px", + "~:font-weight": "400", + "~:y1": -2.149993896484375, + "~:width": 169.36666870117188, + "~:text-decoration": "rgb(21, 209, 46)", + "~:letter-spacing": "normal", + "~:x": 372.0000051221425, + "~:x1": 0, + "~:y2": 45.350006103515625, + "~:fills": [ + { + "~:fill-color": "#15d12e", + "~:fill-opacity": 1 + } + ], + "~:x2": 169.36666870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 47.5, + "~:text": "hello world" + } + } + ], "~:frame-id": "~u00000000-0000-0000-0000-000000000000", "~:strokes": [ { @@ -3352,7 +4626,7 @@ } } ], - "~:x": 186.99999576807022, + "~:x": 372.0000051221425, "~:shadow": [ { "~:color": { @@ -3370,18 +4644,18 @@ ], "~:selrect": { "~#rect": { - "~:x": 186.99999576807022, - "~:y": 213.00001923843956, - "~:width": 170.00000804662704, - "~:height": 42.99999797344208, - "~:x1": 186.99999576807022, - "~:y1": 213.00001923843956, - "~:x2": 357.00000381469727, - "~:y2": 256.00001721188164 + "~:x": 372.0000051221425, + "~:y": 166.00000568175594, + "~:width": 170, + "~:height": 44, + "~:x1": 372.0000051221425, + "~:y1": 166.00000568175594, + "~:x2": 542.0000051221425, + "~:y2": 210.00000568175594 } }, "~:flip-x": null, - "~:height": 42.99999797344208, + "~:height": 44, "~:flip-y": null } } diff --git a/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json b/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json new file mode 100644 index 0000000000..560dde73cd --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-leaves-decoration.json @@ -0,0 +1,5728 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "check_multiple_decorations_and_fonts (copy) 2", + "~:revn": 253, + "~:modified-at": "~m1757072822684", + "~:vern": 0, + "~:id": "~u44471494-966a-8178-8006-c1b0e4befad3", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756197191725", + "~:data": { + "~:pages": [ + "~ub4cb802d-4245-807d-8006-b4a4b90b79cd" + ], + "~:pages-index": { + "~ub4cb802d-4245-807d-8006-b4a4b90b79cd": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u02222a8b-99ee-803c-8006-b4a5d6ab5258", + "~u3ae2c7c2-74be-808c-8006-b4a9af001a14", + "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2", + "~u73ef3085-9adf-8063-8006-b4ac6c34678a", + "~u0b78601e-aeb6-8065-8006-b4ae461f507b", + "~u0b78601e-aeb6-8065-8006-b4ae598da346", + "~u372dc781-22b4-808b-8006-b4d381e231cc", + "~u372dc781-22b4-808b-8006-b4d32b23831d", + "~u372dc781-22b4-808b-8006-b4d371b35ffb", + "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56" + ] + } + }, + "~u73ef3085-9adf-8063-8006-b4ac6c34678a": { + "~#shape": { + "~:y": 902.0000095367432, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with styles and strokes", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 12.000000476837158, + "~:y": 902.0000095367432 + } + }, + { + "~#point": { + "~:x": 914.6199793815613, + "~:y": 902.0000095367432 + } + }, + { + "~#point": { + "~:x": 914.6199793815613, + "~:y": 1191.0000095367432 + } + }, + { + "~#point": { + "~:x": 12.000000476837158, + "~:y": 1191.0000095367432 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u73ef3085-9adf-8063-8006-b4ac6c34678a", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 541.2333374023438, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 105.5333251953125, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 553.2333378791809, + "~:x1": 541.2333374023438, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 961.800012588501, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 242.60000610351562, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 658.7666630744934, + "~:x1": 646.7666625976562, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 189.93333435058594, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.48333740234375, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 201.9333348274231, + "~:x1": 189.93333435058594, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 226.86666870117188, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 214.41667222976685, + "~:x1": 202.4166717529297, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 233.81666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 441.28332567214966, + "~:x1": 429.2833251953125, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 162.06666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 675.0999760627747, + "~:x1": 663.0999755859375, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1019.4000034332275, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.483322143554688, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 837.1666874885559, + "~:x1": 825.1666870117188, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1077.0000095367432, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 335.3500061035156, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 12.000000476837158, + "~:x1": 0, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 1077.0000095367432, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 220.56666564941406, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 347.3500065803528, + "~:x1": 335.3500061035156, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#c62d2d", + "~:stroke-opacity": 1 + } + ], + "~:x": 12.000000476837158, + "~:selrect": { + "~#rect": { + "~:x": 12.000000476837158, + "~:y": 902.0000095367432, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 12.000000476837158, + "~:y1": 902.0000095367432, + "~:x2": 914.6199793815613, + "~:y2": 1191.0000095367432 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u372dc781-22b4-808b-8006-b4d371b35ffb": { + "~#shape": { + "~:y": 571.7656477947236, + "~:transform": { + "~#matrix": { + "~:a": 0.9952165422528338, + "~:b": -0.09769357208288199, + "~:c": 0.09769403860773807, + "~:d": 0.995216496457183, + "~:e": 3.865352482534945e-12, + "~:f": 2.5011104298755527e-12 + } + }, + "~:rotation": 354.393619242564, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "ofebpym2li", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "entangle with" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "e0l9fbir9t", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 1", + "~:width": 347.00040933215763, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1791.9998194733364, + "~:y": 588.8996672430844 + } + }, + { + "~#point": { + "~:x": 2137.3403670092043, + "~:y": 554.9999577412037 + } + }, + { + "~#point": { + "~:x": 2144.86280026297, + "~:y": 631.6315493340364 + } + }, + { + "~#point": { + "~:x": 1799.522252727099, + "~:y": 665.5312588359168 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9952164964572922, + "~:b": 0.0976935720828927, + "~:c": -0.09769403860774878, + "~:d": 0.995216542252943, + "~:e": -3.602518976342419e-12, + "~:f": -2.8667665651918355e-12 + } + }, + "~:id": "~u372dc781-22b4-808b-8006-b4d371b35ffb", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 650.2785904104855, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 379.5333251953125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1794.851845488379, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 379.5333251953125, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "entangle with" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1794.9311052020744, + "~:selrect": { + "~#rect": { + "~:x": 1794.9311052020744, + "~:y": 571.7656477947236, + "~:width": 347.00040933215763, + "~:height": 76.99992098767355, + "~:x1": 1794.9311052020744, + "~:y1": 571.7656477947236, + "~:x2": 2141.931514534232, + "~:y2": 648.7655687823972 + } + }, + "~:flip-x": false, + "~:height": 76.99992098767355, + "~:flip-y": false + } + }, + "~u372dc781-22b4-808b-8006-b4d32b23831d": { + "~#shape": { + "~:y": 721.9912496728758, + "~:transform": { + "~#matrix": { + "~:a": 0.9979062226750979, + "~:b": 0.06467743614521781, + "~:c": -0.0646769110437404, + "~:d": 0.9979062567084362, + "~:e": 1.6143530956469476e-11, + "~:f": 8.640199666842818e-12 + } + }, + "~:rotation": 3.7083231923678, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "16mtpdh59ga", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "kinds of stroke" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "pn0g2pci1v", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "4b6outrc3n", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 2", + "~:width": 651.5976369308551, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1403.9800868616605, + "~:y": 700.9998211476991 + } + }, + { + "~#point": { + "~:x": 2054.2134457049383, + "~:y": 743.1434959059359 + } + }, + { + "~#point": { + "~:x": 2049.2332981915206, + "~:y": 819.9826484450987 + } + }, + { + "~#point": { + "~:x": 1398.9999393482426, + "~:y": 777.8389736868622 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9979062567085724, + "~:b": -0.06467743614522664, + "~:c": 0.06467691104374923, + "~:d": 0.997906222675234, + "~:e": -1.666855197208204e-11, + "~:f": -7.57798682010339e-12 + } + }, + "~:id": "~u372dc781-22b4-808b-8006-b4d32b23831d", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 801.8906385194807, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 422.25, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1400.8079278537045, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 422.25, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "kinds of stroke" + } + }, + { + "~#rect": { + "~:y": 801.8906385194807, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 16.633331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1823.0579278537045, + "~:x1": 422.25, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 438.8833312988281, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": " " + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1400.8078740611627, + "~:selrect": { + "~#rect": { + "~:x": 1400.8078740611627, + "~:y": 721.9912496728758, + "~:width": 651.5976369308551, + "~:height": 76.99997024704669, + "~:x1": 1400.8078740611627, + "~:y1": 721.9912496728758, + "~:x2": 2052.4055109920178, + "~:y2": 798.9912199199225 + } + }, + "~:flip-x": null, + "~:height": 76.99997024704669, + "~:flip-y": null + } + }, + "~u02222a8b-99ee-803c-8006-b4a5d6ab5258": { + "~#shape": { + "~:y": 51.00000008146496, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles", + "~:width": 874.6199485640761, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 26.99999924039914, + "~:y": 51.00000008146496 + } + }, + { + "~#point": { + "~:x": 901.6199478044753, + "~:y": 51.00000008146496 + } + }, + { + "~#point": { + "~:x": 901.6199478044753, + "~:y": 225.0000036577428 + } + }, + { + "~#point": { + "~:x": 26.99999924039914, + "~:y": 225.0000036577428 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u02222a8b-99ee-803c-8006-b4a5d6ab5258", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 490.91668701171875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 490.91668701171875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 95.66665649414062, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 517.9166838977005, + "~:x1": 490.91668701171875, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 586.5833435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 111.30000972747621, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 213.13333129882812, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 613.583309874263, + "~:x1": 586.5833129882812, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 799.7166442871094, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 176.85000610351562, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 176.85000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 9.683334350585938, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 203.8500029894974, + "~:x1": 176.85000610351562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 186.53334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 209.59999084472656, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 213.53333734008334, + "~:x1": 186.53334045410156, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 396.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 202.88333129882812, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 423.1333281848099, + "~:x1": 396.1333312988281, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 599.0166625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 148.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 626.016659483638, + "~:x1": 599.0166625976562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 747.4499969482422, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 168.90000057220277, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 75.56666564941406, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 774.450009093013, + "~:x1": 747.4500122070312, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 823.0166778564453, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 226.5000066757184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 236.10000610351562, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 26.999996885981773, + "~:x1": 0, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 236.10000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 226.5000066757184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 211.93333435058594, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 263.1000029894974, + "~:x1": 236.10000610351562, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 448.03334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 26.99999924039912, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u87480ed2-12e1-804c-8006-c0758bb799fe", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 26.99999924039912, + "~:y": 51.00000008146496, + "~:width": 874.6199485640761, + "~:height": 174.00000357627783, + "~:x1": 26.99999924039912, + "~:y1": 51.00000008146496, + "~:x2": 901.6199478044753, + "~:y2": 225.0000036577428 + } + }, + "~:flip-x": null, + "~:height": 174.00000357627783, + "~:flip-y": null + } + }, + "~u0b78601e-aeb6-8065-8006-b4ae461f507b": { + "~#shape": { + "~:y": 1158.9999732971191, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles and smooth font", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 13.999999761581421, + "~:y": 1158.9999732971191 + } + }, + { + "~#point": { + "~:x": 916.6199786663055, + "~:y": 1158.9999732971191 + } + }, + { + "~#point": { + "~:x": 916.6199786663055, + "~:y": 1447.9999732971191 + } + }, + { + "~#point": { + "~:x": 13.999999761581421, + "~:y": 1447.9999732971191 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u0b78601e-aeb6-8065-8006-b4ae461f507b", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 541.2333374023438, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 105.5333251953125, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 555.2333371639252, + "~:x1": 541.2333374023438, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 1218.799976348877, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.1999969482421875, + "~:width": 242.60000610351562, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 660.7666623592377, + "~:x1": 646.7666625976562, + "~:y2": 59.80000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 189.93333435058594, + "~:text-decoration": "line-through rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.48333740234375, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 203.93333411216736, + "~:x1": 189.93333435058594, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 226.86666870117188, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 216.4166715145111, + "~:x1": 202.4166717529297, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 233.81666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 443.2833249568939, + "~:x1": 429.2833251953125, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 162.06666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 677.0999753475189, + "~:x1": 663.0999755859375, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1276.3999671936035, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.399993896484375, + "~:width": 12.483322143554688, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 839.1666867733002, + "~:x1": 825.1666870117188, + "~:y2": 117.39999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1333.9999732971191, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 335.3500061035156, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 13.999999761581421, + "~:x1": 0, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 1333.9999732971191, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113, + "~:width": 220.56666564941406, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 349.35000586509705, + "~:x1": 335.3500061035156, + "~:y2": 175, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 13.999999761581421, + "~:selrect": { + "~#rect": { + "~:x": 13.999999761581421, + "~:y": 1158.9999732971191, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 13.999999761581421, + "~:y1": 1158.9999732971191, + "~:x2": 916.6199786663055, + "~:y2": 1447.9999732971191 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u3ae2c7c2-74be-808c-8006-b4a9af001a14": { + "~#shape": { + "~:y": 315.99999931258725, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different color and font", + "~:width": 824.9510596295723, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 31.00000099539099, + "~:y": 315.99999931258725 + } + }, + { + "~#point": { + "~:x": 855.9510606249634, + "~:y": 315.99999931258725 + } + }, + { + "~#point": { + "~:x": 855.9510606249634, + "~:y": 490.0000003407674 + } + }, + { + "~#point": { + "~:x": 31.00000099539099, + "~:y": 490.0000003407674 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u3ae2c7c2-74be-808c-8006-b4a9af001a14", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 612.8333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 612.8333129882812, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 111.06666564941406, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 643.8333132452734, + "~:x1": 612.8333129882812, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 723.8999786376953, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 375.29999923706055, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -1.6999969482421875, + "~:width": 17.383346557617188, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 754.9000246710547, + "~:x1": 723.9000244140625, + "~:y2": 59.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 741.2833709716797, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 263.48333740234375, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 263.48333740234375, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "other, the " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 231.5, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 294.4833376593359, + "~:x1": 263.48333740234375, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 494.98333740234375, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 17.383331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 525.9833376593359, + "~:x1": 494.98333740234375, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 512.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 256.79998779296875, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 543.3666994757422, + "~:x1": 512.36669921875, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 769.1666870117188, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 432.8999900817871, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 55.899993896484375, + "~:width": 17.383331298828125, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 800.1666872687109, + "~:x1": 769.1666870117188, + "~:y2": 116.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 786.5500183105469, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 254.71665954589844, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 254.71665954589844, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "system is " + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 176.25, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 285.7166598028906, + "~:x1": 254.71665954589844, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 430.96665954589844, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 490.49999618530273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 113.5, + "~:width": 256.3500061035156, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 461.96667506167967, + "~:x1": 430.9666748046875, + "~:y2": 174.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 687.3166809082031, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": " for most " + } + }, + { + "~#rect": { + "~:y": 548.1000022888184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 171.10000610351562, + "~:width": 170.01666259765625, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 31.000000256992166, + "~:x1": 0, + "~:y2": 232.10000610351562, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 170.01666259765625, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "initial " + } + }, + { + "~#rect": { + "~:y": 548.1000022888184, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 171.10000610351562, + "~:width": 252.68333435058594, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 201.01666285464842, + "~:x1": 170.01666259765625, + "~:y2": 232.10000610351562, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 422.6999969482422, + "~:direction": "ltr", + "~:font-family": "\"Vampiro One\"", + "~:height": 61, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 31.00000099539102, + "~:selrect": { + "~#rect": { + "~:x": 31.00000099539102, + "~:y": 315.99999931258725, + "~:width": 824.9510596295723, + "~:height": 174.00000102818012, + "~:x1": 31.00000099539102, + "~:y1": 315.99999931258725, + "~:x2": 855.9510606249634, + "~:y2": 490.0000003407674 + } + }, + "~:flip-x": null, + "~:height": 174.00000102818012, + "~:flip-y": null + } + }, + "~u0b78601e-aeb6-8065-8006-b4ae598da346": { + "~#shape": { + "~:y": 64.99999809265137, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes with different styles and shadow", + "~:width": 902.6199789047241, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1007.9999961853027, + "~:y": 64.99999809265137 + } + }, + { + "~#point": { + "~:x": 1910.6199750900269, + "~:y": 64.99999809265137 + } + }, + { + "~#point": { + "~:x": 1910.6199750900269, + "~:y": 353.99999809265137 + } + }, + { + "~#point": { + "~:x": 1007.9999961853027, + "~:y": 353.99999809265137 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u0b78601e-aeb6-8065-8006-b4ae598da346", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 541.2333374023438, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 541.2333374023438, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 105.5333251953125, + "~:text-decoration": "line-through rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 1549.2333335876465, + "~:x1": 541.2333374023438, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 646.7666625976562, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 119.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -7, + "~:width": 242.60000610351562, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1654.766658782959, + "~:x1": 646.7666625976562, + "~:y2": 55, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 889.3666687011719, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 189.93333435058594, + "~:text-decoration": "line-through rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 189.93333435058594, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 12.48333740234375, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1197.9333305358887, + "~:x1": 189.93333435058594, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 202.4166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 226.86666870117188, + "~:text-decoration": "line-through rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 1210.4166679382324, + "~:x1": 202.4166717529297, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 429.28334045410156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 233.81666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1437.2833213806152, + "~:x1": 429.2833251953125, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.0999908447266, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 162.06666564941406, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1671.0999717712402, + "~:x1": 663.0999755859375, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 825.1666412353516, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 167.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 41, + "~:width": 12.483322143554688, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1833.1666831970215, + "~:x1": 825.1666870117188, + "~:y2": 103, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 837.6500091552734, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 215.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 89, + "~:width": 335.3500061035156, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1007.9999961853027, + "~:x1": 0, + "~:y2": 151, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 335.3500061035156, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "for most initial " + } + }, + { + "~#rect": { + "~:y": 215.99999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 89, + "~:width": 220.56666564941406, + "~:text-decoration": "line-through rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 1343.3500022888184, + "~:x1": 335.3500061035156, + "~:y2": 151, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 555.9166717529297, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 62, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 1007.9999961853027, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 4, + "~:hidden": false, + "~:id": "~u4943b8c5-d461-806f-8006-b73eda553863", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": 1007.9999961853027, + "~:y": 64.99999809265137, + "~:width": 902.6199789047241, + "~:height": 289, + "~:x1": 1007.9999961853027, + "~:y1": 64.99999809265137, + "~:x2": 1910.6199750900269, + "~:y2": 353.99999809265137 + } + }, + "~:flip-x": null, + "~:height": 289, + "~:flip-y": null + } + }, + "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2": { + "~#shape": { + "~:y": 622.9999774894502, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1qg2rfjeltu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "When three bodies orbit " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "6jblrptau9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "each" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "c8k8ui5e7a", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " other, the " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "12yz53vlcq9", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "resulting" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "17560zmv6qd", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "2bzh4tglr6t", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "dynamical" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1117tsar9pu", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " system is " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "nmaiszc59b", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "chaotic" + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "haol76vdi7", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": " for most initial " + }, + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "1110bgrqyy", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "conditions" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "qe37ujule6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Multiple nodes thin underline", + "~:width": 829.9510483261171, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 18.000000167961677, + "~:y": 622.9999774894502 + } + }, + { + "~#point": { + "~:x": 847.9510484940788, + "~:y": 622.9999774894502 + } + }, + { + "~#point": { + "~:x": 847.9510484940788, + "~:y": 796.9999742111947 + } + }, + { + "~#point": { + "~:x": 18.000000167961677, + "~:y": 796.9999742111947 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u3ae2c7c2-74be-808c-8006-b4a9b7db5fd2", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 490.91668701171875, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 490.91668701171875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "When three bodies orbit " + } + }, + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 95.66665649414062, + "~:text-decoration": "underline rgb(218, 26, 26)", + "~:letter-spacing": "normal", + "~:x": 508.91668721174767, + "~:x1": 490.91668701171875, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#da1a1a", + "~:fill-opacity": 1 + } + ], + "~:x2": 586.5833435058594, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 683.2999839782715, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 213.13333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 604.5833131883102, + "~:x1": 586.5833129882812, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 799.7166442871094, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 176.85000610351562, + "~:text-decoration": "underline rgb(71, 229, 54)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#47e536", + "~:fill-opacity": 1 + } + ], + "~:x2": 176.85000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 9.683334350585938, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 194.85000630354455, + "~:x1": 176.85000610351562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 186.53334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 209.59999084472656, + "~:text-decoration": "underline rgb(131, 17, 196)", + "~:letter-spacing": "normal", + "~:x": 204.53334065413048, + "~:x1": 186.53334045410156, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#8311c4", + "~:fill-opacity": 1 + } + ], + "~:x2": 396.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 202.88333129882812, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 414.13333149885705, + "~:x1": 396.1333312988281, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 599.0166625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 148.43333435058594, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 617.0166627976852, + "~:x1": 599.0166625976562, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 747.4499969482422, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 740.899974822998, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 75.56666564941406, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 765.4500124070602, + "~:x1": 747.4500122070312, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 823.0166778564453, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 798.4999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 236.10000610351562, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 18.00000020002892, + "~:x1": 0, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 236.10000610351562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 798.4999809265137, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 112.5, + "~:width": 211.93333435058594, + "~:text-decoration": "underline rgb(7, 185, 185)", + "~:letter-spacing": "normal", + "~:x": 254.10000630354455, + "~:x1": 236.10000610351562, + "~:y2": 175.5, + "~:fills": [ + { + "~:fill-color": "#07b9b9", + "~:fill-opacity": 1 + } + ], + "~:x2": 448.03334045410156, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "conditions" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 18.00000016796173, + "~:selrect": { + "~#rect": { + "~:x": 18.00000016796173, + "~:y": 622.9999774894502, + "~:width": 829.9510483261171, + "~:height": 173.99999672174454, + "~:x1": 18.00000016796173, + "~:y1": 622.9999774894502, + "~:x2": 847.9510484940788, + "~:y2": 796.9999742111947 + } + }, + "~:flip-x": null, + "~:height": 173.99999672174454, + "~:flip-y": null + } + }, + "~u372dc781-22b4-808b-8006-b4d381e231cc": { + "~#shape": { + "~:y": 1030.1928728054145, + "~:transform": { + "~#matrix": { + "~:a": 0.9667771933303442, + "~:b": -0.2556205360613699, + "~:c": 0.25561985332985415, + "~:d": 0.9667773738475791, + "~:e": 7.73070496506989e-12, + "~:f": 4.320099833421409e-12 + } + }, + "~:rotation": 345.18964078504564, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "2a53nvhqyyr", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "ou0m2kc4di", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom", + "~:text": "design" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "custom-7358c66e-177c-80f6-8006-c1b0d113ec7a", + "~:key": "lei7j6hl8", + "~:font-size": "64", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "normal-400", + "~:text-decoration": "underline", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:font-family": "Tinos Custom" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "note 3", + "~:width": 168.0000082191185, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1418.9999686428457, + "~:y": 1052.9440733902131 + } + }, + { + "~#point": { + "~:x": 1581.4185450684, + "~:y": 1009.9998212309276 + } + }, + { + "~#point": { + "~:x": 1601.1013260686657, + "~:y": 1084.4418767973168 + } + }, + { + "~#point": { + "~:x": 1438.6827496431108, + "~:y": 1127.3861289566028 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 0.9667773738478213, + "~:b": 0.2556205360614339, + "~:c": -0.25561985332991816, + "~:d": 0.9667771933305863, + "~:e": -6.369567358332796e-12, + "~:f": -6.152700939167038e-12 + } + }, + "~:layout-item-v-sizing": "~:fix", + "~:id": "~u372dc781-22b4-808b-8006-b4d381e231cc", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 1107.7773422702744, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "64px", + "~:font-weight": "200", + "~:y1": -3.100006103515625, + "~:width": 188.8333282470703, + "~:text-decoration": "underline rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1425.7019294316813, + "~:x1": 0, + "~:y2": 79.89999389648438, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 188.8333282470703, + "~:direction": "ltr", + "~:font-family": "\"Sour Gummy\"", + "~:height": 83, + "~:text": "design" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:x": 1426.0506432461964, + "~:selrect": { + "~#rect": { + "~:x": 1426.0506432461964, + "~:y": 1030.1928728054145, + "~:width": 168.0000082191185, + "~:height": 77.00020457670121, + "~:x1": 1426.0506432461964, + "~:y1": 1030.1928728054145, + "~:x2": 1594.0506514653148, + "~:y2": 1107.1930773821157 + } + }, + "~:flip-x": null, + "~:height": 77.00020457670121, + "~:flip-y": null + } + }, + "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56": { + "~#shape": { + "~:y": 544.9999732821145, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "26uqr82pxgl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1qg2rfjeltu", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "When three " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1i5z272bai3", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "bodies" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "juq703mtm3", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "2fbxrvcprv9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "orbit" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1qcp8fvrfct", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "9madaw4nm", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "6jblrptau9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "each" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "c8k8ui5e7a", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " other, the " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "12yz53vlcq9", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "resulting" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "17560zmv6qd", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "2bzh4tglr6t", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "dynamical" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1117tsar9pu", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "9wu2w9l2z1", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " system is " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "nmaiszc59b", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "chaotic" + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "haol76vdi7", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " for most initial " + }, + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "1110bgrqyy", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "conditions " + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "qe37ujule6", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "line-through", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + }, + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "16hglqhlep1", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": "" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "2s11myqei4", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + }, + { + "~:line-height": "4", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "gfont-sofia-sans", + "~:key": "dniyoqo1os", + "~:font-size": "72", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans", + "~:text": " " + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "gfont-sofia-sans", + "~:key": "ljvpiew0gz", + "~:font-size": "0", + "~:font-weight": "600", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "600", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 0 + } + ], + "~:font-family": "Sofia Sans" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "The Three-Kinds-Of-Stroke Problem", + "~:width": 1313.8100164113944, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": 1123.9999631135577, + "~:y": 544.9999732821145 + } + }, + { + "~#point": { + "~:x": 2437.8099795249523, + "~:y": 544.9999732821145 + } + }, + { + "~#point": { + "~:x": 2437.8099795249523, + "~:y": 1984.9999947397866 + } + }, + { + "~#point": { + "~:x": 1123.9999631135577, + "~:y": 1984.9999947397866 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u8db91f66-0aee-80fd-8006-b4d0d15a1e56", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 378.5333251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1156.3166287629715, + "~:x1": 32.31666564941406, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 410.84999084472656, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "When three " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 205.3333282470703, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1534.849969217073, + "~:x1": 410.8500061035156, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 616.1833343505859, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "bodies" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1740.1833127229324, + "~:x1": 616.183349609375, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 631.0833435058594, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 148.70001220703125, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1755.0832761018387, + "~:x1": 631.0833129882812, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 779.7833251953125, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "orbit" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1903.78328830887, + "~:x1": 779.7833251953125, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 794.6833190917969, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 151.2833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1918.6833127229324, + "~:x1": 794.683349609375, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 945.9666748046875, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "each" + } + }, + { + "~#rect": { + "~:y": 732.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 100.5, + "~:width": 335.51666259765625, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2069.966637918245, + "~:x1": 945.9666748046875, + "~:y2": 187.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1281.4833374023438, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " other, the " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 275.83331298828125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1136.533303567659, + "~:x1": 12.533340454101562, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 288.3666534423828, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "resulting" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 14.899993896484375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1412.3666318147293, + "~:x1": 288.3666687011719, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 303.26666259765625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 319.1500244140625, + "~:text-decoration": "line-through rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1427.2666257112137, + "~:x1": 303.26666259765625, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 622.4166870117188, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "dynamical" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 324.45001220703125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1746.4166501252762, + "~:x1": 622.4166870117188, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 946.86669921875, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " system is " + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 235.14999389648438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2070.8666623323074, + "~:x1": 946.86669921875, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1182.0166931152344, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "chaotic" + } + }, + { + "~#rect": { + "~:y": 1020.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 388.5, + "~:width": 119.25, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 2306.0165646760574, + "~:x1": 1182.0166015625, + "~:y2": 475.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1301.2666015625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " for " + } + }, + { + "~#rect": { + "~:y": 1308.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 676.5, + "~:width": 364.1499938964844, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1422.9833005159012, + "~:x1": 298.98333740234375, + "~:y2": 763.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 663.1333312988281, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "most initial " + } + }, + { + "~#rect": { + "~:y": 1308.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 676.5, + "~:width": 351.683349609375, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1787.1332638948074, + "~:x1": 663.13330078125, + "~:y2": 763.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 1014.816650390625, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": "conndition " + } + }, + { + "~#rect": { + "~:y": 1596.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 964.5, + "~:width": 14.900009155273438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1773.4499753205887, + "~:x1": 649.4500122070312, + "~:y2": 1051.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 664.3500213623047, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + }, + { + "~#rect": { + "~:y": 1884.4999732821145, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "72px", + "~:font-weight": "600", + "~:y1": 1252.5, + "~:width": 14.900009155273438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": 1773.4499753205887, + "~:x1": 649.4500122070312, + "~:y2": 1339.5, + "~:fills": [ + { + "~:fill-color": "#000000", + "~:fill-opacity": 1 + } + ], + "~:x2": 664.3500213623047, + "~:direction": "ltr", + "~:font-family": "\"Sofia Sans\"", + "~:height": 87, + "~:text": " " + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 2, + "~:stroke-color": "#d324ee", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 2, + "~:stroke-color": "#0ca6ff", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 2, + "~:stroke-color": "#84ac00", + "~:stroke-opacity": 1 + } + ], + "~:x": 1123.9999631135574, + "~:selrect": { + "~#rect": { + "~:x": 1123.9999631135574, + "~:y": 544.9999732821145, + "~:width": 1313.8100164113944, + "~:height": 1440.0000214576721, + "~:x1": 1123.9999631135574, + "~:y1": 544.9999732821145, + "~:x2": 2437.809979524952, + "~:y2": 1984.9999947397866 + } + }, + "~:flip-x": null, + "~:height": 1440.0000214576721, + "~:flip-y": null + } + } + }, + "~:id": "~ub4cb802d-4245-807d-8006-b4a4b90b79cd", + "~:name": "Page 1", + "~:background": "#e8e9ea" + } + }, + "~:id": "~u44471494-966a-8178-8006-c1b0e4befad3", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + }, + "~:typographies": { + "~:count": 0, + "~:sample": [] + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json b/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json new file mode 100644 index 0000000000..06ee07870a --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-shadows-and-blurs.json @@ -0,0 +1,4701 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "text_strokes_shadows_opacity_blur", + "~:revn": 333, + "~:modified-at": "~m1757067323203", + "~:vern": 0, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a3", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756805434187", + "~:data": { + "~:pages": [ + "~u15b74473-2908-8094-8006-bdb4fbd2c6a4" + ], + "~:pages-index": { + "~u15b74473-2908-8094-8006-bdb4fbd2c6a4": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~uc469627b-737e-80a7-8006-c19b9bc554c9", + "~uc469627b-737e-80a7-8006-c19b9bc596e8", + "~uc469627b-737e-80a7-8006-c19b9bc596e9", + "~u199bd8a8-1f62-8077-8006-c09980f8a086", + "~u199bd8a8-1f62-8077-8006-c099c4d01fb8", + "~u199bd8a8-1f62-8077-8006-c099e8f3d114", + "~u199bd8a8-1f62-8077-8006-c09980f8a088", + "~u199bd8a8-1f62-8077-8006-c09918f84a1a", + "~u199bd8a8-1f62-8077-8006-c09918f84a1b", + "~u199bd8a8-1f62-8077-8006-c09918f84a1c", + "~u920149f5-9682-80b4-8006-bf004ecf1a26", + "~u920149f5-9682-80b4-8006-bf004ecf48a8", + "~u920149f5-9682-80b4-8006-bf004ecf48a9", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb4", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb5", + "~ua43799d4-2e7f-80d2-8006-bef061e80cb6", + "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42", + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d", + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b3", + "~ud50240ec-f763-80e3-8006-beef18e3ac34", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b4", + "~ud50240ec-f763-80e3-8006-beef280f5cb6", + "~ud50240ec-f763-80e3-8006-beef3ba2c4b5" + ] + } + }, + "~u199bd8a8-1f62-8077-8006-c09980f8a086": { + "~#shape": { + "~:y": 8340.999804016881, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 662.0000551742614, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297040166, + "~:y": 8340.999804016881 + } + }, + { + "~#point": { + "~:x": -10349.000241865904, + "~:y": 8340.999804016881 + } + }, + { + "~#point": { + "~:x": -10349.000241865904, + "~:y": 8398.999804302288 + } + }, + { + "~#point": { + "~:x": -11011.000297040166, + "~:y": 8398.999804302288 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09980f8a086", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8401.049807068639, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 661.316650390625, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297040166, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 661.316650390625, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297040166, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297040166, + "~:y": 8340.999804016881, + "~:width": 662.0000551742614, + "~:height": 58.00000028540671, + "~:x1": -11011.000297040166, + "~:y1": 8340.999804016881, + "~:x2": -10349.000241865904, + "~:y2": 8398.999804302288 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb6": { + "~#shape": { + "~:y": 8593.000470161438, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 839, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8593.000470161438 + } + }, + { + "~#point": { + "~:x": -11093.999999999969, + "~:y": 8593.000470161438 + } + }, + { + "~#point": { + "~:x": -11093.999999999969, + "~:y": 8651.000470446845 + } + }, + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8651.000470446845 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd76a79a8", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8653.300473213196, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 838.7000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999969, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 838.7000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "inner shadow + no fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999969, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999969, + "~:y": 8593.000470161438, + "~:width": 839, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999969, + "~:y1": 8593.000470161438, + "~:x2": -11093.999999999969, + "~:y2": 8651.000470446845 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb4": { + "~#shape": { + "~:y": 8466.000139590858, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 835, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 8466.000139590858 + } + }, + { + "~#point": { + "~:x": -11098, + "~:y": 8466.000139590858 + } + }, + { + "~#point": { + "~:x": -11098, + "~:y": 8524.000139859878 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8524.000139859878 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefafd2df5f", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8526.050142642616, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 834.9833374023438, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 834.9833374023438, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933, + "~:y": 8466.000139590858, + "~:width": 835, + "~:height": 58.00000026901944, + "~:x1": -11933, + "~:y1": 8466.000139590858, + "~:x2": -11098, + "~:y2": 8524.000139859878 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000026901944, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-bef061e80cb5": { + "~#shape": { + "~:y": 8528.999816596508, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 858, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8528.999816596508 + } + }, + { + "~#point": { + "~:x": -11074.999999999978, + "~:y": 8528.999816596508 + } + }, + { + "~#point": { + "~:x": -11074.999999999978, + "~:y": 8586.999816881915 + } + }, + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8586.999816881915 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd4d05fa5", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-bef061e80cb5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8589.299819648266, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 857.4666748046875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999978, + "~:x1": 0, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 857.4666748046875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "inner shadow + no fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999978, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999978, + "~:y": 8528.999816596508, + "~:width": 858, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999978, + "~:y1": 8528.999816596508, + "~:x2": -11074.999999999978, + "~:y2": 8586.999816881915 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d": { + "~#shape": { + "~:y": 8337.999809026718, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 849, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8337.999809026718 + } + }, + { + "~#point": { + "~:x": -11083.999999999978, + "~:y": 8337.999809026718 + } + }, + { + "~#point": { + "~:x": -11083.999999999978, + "~:y": 8395.999809312125 + } + }, + { + "~#point": { + "~:x": -11932.999999999978, + "~:y": 8395.999809312125 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd4d05fa5", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2d", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8398.049812078476, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 848.0499877929688, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999978, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 848.0499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999978, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999978, + "~:y": 8337.999809026718, + "~:width": 849, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999978, + "~:y1": 8337.999809026718, + "~:x2": -11083.999999999978, + "~:y2": 8395.999809312125 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf1a26": { + "~#shape": { + "~:y": 7888.999850913791, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 649, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029712164, + "~:y": 7888.999850913791 + } + }, + { + "~#point": { + "~:x": -10362.00029712164, + "~:y": 7888.999850913791 + } + }, + { + "~#point": { + "~:x": -10362.00029712164, + "~:y": 7946.999851199198 + } + }, + { + "~#point": { + "~:x": -11011.00029712164, + "~:y": 7946.999851199198 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf1a26", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 7949.049853965549, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 648.25, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029712164, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 648.25, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029712164, + "~:shadow": [ + { + "~:color": { + "~:color": "#da0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029712164, + "~:y": 7888.999850913791, + "~:width": 649, + "~:height": 58.00000028540671, + "~:x1": -11011.00029712164, + "~:y1": 7888.999850913791, + "~:x2": -10362.00029712164, + "~:y2": 7946.999851199198 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e": { + "~#shape": { + "~:y": 8402.000462532043, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 830, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8402.000462532043 + } + }, + { + "~#point": { + "~:x": -11102.999999999969, + "~:y": 8402.000462532043 + } + }, + { + "~#point": { + "~:x": -11102.999999999969, + "~:y": 8460.00046281745 + } + }, + { + "~#point": { + "~:x": -11932.999999999969, + "~:y": 8460.00046281745 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefd76a79a8", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c9a2e", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8462.050465583801, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 829.2833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999969, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 829.2833251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999969, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999969, + "~:y": 8402.000462532043, + "~:width": 830, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999969, + "~:y1": 8402.000462532043, + "~:x2": -11102.999999999969, + "~:y2": 8460.00046281745 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf48a9": { + "~#shape": { + "~:y": 8017.999770209102, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 652, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297121609, + "~:y": 8017.999770209102 + } + }, + { + "~#point": { + "~:x": -10359.000297121609, + "~:y": 8017.999770209102 + } + }, + { + "~#point": { + "~:x": -10359.000297121609, + "~:y": 8075.999770494509 + } + }, + { + "~#point": { + "~:x": -11011.000297121609, + "~:y": 8075.999770494509 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf48a9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8078.04977326086, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 651.8333129882812, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297121609, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 651.8333129882812, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297121609, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297121609, + "~:y": 8017.999770209102, + "~:width": 652, + "~:height": 58.00000028540671, + "~:x1": -11011.000297121609, + "~:y1": 8017.999770209102, + "~:x2": -10359.000297121609, + "~:y2": 8075.999770494509 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u920149f5-9682-80b4-8006-bf004ecf48a8": { + "~#shape": { + "~:y": 7954.000052977608, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 671, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297121618, + "~:y": 7954.000052977608 + } + }, + { + "~#point": { + "~:x": -10340.000297121618, + "~:y": 7954.000052977608 + } + }, + { + "~#point": { + "~:x": -10340.000297121618, + "~:y": 8012.000056715959 + } + }, + { + "~#point": { + "~:x": -11011.000297121618, + "~:y": 8012.000056715959 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u920149f5-9682-80b4-8006-bf004ecf48a8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8014.050056029366, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 670.5999755859375, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297121618, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 670.5999755859375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297121618, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297121618, + "~:y": 7954.000052977608, + "~:width": 671, + "~:height": 58.00000373835064, + "~:x1": -11011.000297121618, + "~:y1": 7954.000052977608, + "~:x2": -10340.000297121618, + "~:y2": 8012.000056715959 + } + }, + "~:flip-x": null, + "~:height": 58.00000373835064, + "~:flip-y": null + } + }, + "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42": { + "~#shape": { + "~:y": 8275.000131964684, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 826.0000000000018, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 8275.000131964684 + } + }, + { + "~#point": { + "~:x": -11106.999999999998, + "~:y": 8275.000131964684 + } + }, + { + "~#point": { + "~:x": -11106.999999999998, + "~:y": 8333.00013225009 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8333.00013225009 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~ua43799d4-2e7f-80d2-8006-beefafd2df5f", + "~:type": "~:layer-blur", + "~:value": 1, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~ua43799d4-2e7f-80d2-8006-beef9d2c4b42", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8335.050135016441, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 825.7000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 825.7000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933, + "~:y": 8275.000131964684, + "~:width": 826.0000000000018, + "~:height": 58.00000028540671, + "~:x1": -11933, + "~:y1": 8275.000131964684, + "~:x2": -11106.999999999998, + "~:y2": 8333.00013225009 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09980f8a088": { + "~#shape": { + "~:y": 8405.99951793518, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 643.0000638284164, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297093136, + "~:y": 8405.99951793518 + } + }, + { + "~#point": { + "~:x": -10368.00023326472, + "~:y": 8405.99951793518 + } + }, + { + "~#point": { + "~:x": -10368.00023326472, + "~:y": 8463.999518220588 + } + }, + { + "~#point": { + "~:x": -11011.000297093136, + "~:y": 8463.999518220588 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09980f8a088", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8466.049520986939, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 642.5499877929688, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297093138, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 642.5499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11011.000297093138, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297093138, + "~:y": 8405.99951793518, + "~:width": 643.0000638284164, + "~:height": 58.00000028540671, + "~:x1": -11011.000297093138, + "~:y1": 8405.99951793518, + "~:x2": -10368.000233264722, + "~:y2": 8463.999518220588 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc596e9": { + "~#shape": { + "~:y": 8599.999635622788, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 768, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297063973, + "~:y": 8599.999635622788 + } + }, + { + "~#point": { + "~:x": -10243.000297063973, + "~:y": 8599.999635622788 + } + }, + { + "~#point": { + "~:x": -10243.000297063973, + "~:y": 8657.999635908194 + } + }, + { + "~#point": { + "~:x": -11011.000297063973, + "~:y": 8657.999635908194 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34bf392", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc596e9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8660.049638674545, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 767.3333129882812, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297063973, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 767.3333129882812, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11011.000297063973, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297063973, + "~:y": 8599.999635622788, + "~:width": 768, + "~:height": 58.00000028540671, + "~:x1": -11011.000297063973, + "~:y1": 8599.999635622788, + "~:x2": -10243.000297063973, + "~:y2": 8657.999635908194 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc554c9": { + "~#shape": { + "~:y": 8534.999921823697, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 787, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029706397, + "~:y": 8534.999921823697 + } + }, + { + "~#point": { + "~:x": -10224.00029706397, + "~:y": 8534.999921823697 + } + }, + { + "~#point": { + "~:x": -10224.00029706397, + "~:y": 8592.999922109104 + } + }, + { + "~#point": { + "~:x": -11011.00029706397, + "~:y": 8592.999922109104 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34d410f", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc554c9", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8595.049924875455, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 786.0999755859375, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.00029706397, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 786.0999755859375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029706397, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029706397, + "~:y": 8534.999921823697, + "~:width": 787, + "~:height": 58.00000028540671, + "~:x1": -11011.00029706397, + "~:y1": 8534.999921823697, + "~:x2": -10224.00029706397, + "~:y2": 8592.999922109104 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~uc469627b-737e-80a7-8006-c19b9bc596e8": { + "~#shape": { + "~:y": 8471.000207687573, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 764, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297023293, + "~:y": 8471.000207687573 + } + }, + { + "~#point": { + "~:x": -10247.000297023293, + "~:y": 8471.000207687573 + } + }, + { + "~#point": { + "~:x": -10247.000297023293, + "~:y": 8529.00020797298 + } + }, + { + "~#point": { + "~:x": -11011.000297023293, + "~:y": 8529.00020797298 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~uc469627b-737e-80a7-8006-c19bc34dee28", + "~:type": "~:layer-blur", + "~:value": 4, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~uc469627b-737e-80a7-8006-c19b9bc596e8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8531.050210739331, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 763.75, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297023293, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 763.75, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297023293, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297023293, + "~:y": 8471.000207687573, + "~:width": 764, + "~:height": 58.00000028540671, + "~:x1": -11011.000297023293, + "~:y1": 8471.000207687573, + "~:x2": -10247.000297023293, + "~:y2": 8529.00020797298 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c099e8f3d114": { + "~#shape": { + "~:y": 8277.000090476804, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 639, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297067703, + "~:y": 8277.000090476804 + } + }, + { + "~#point": { + "~:x": -10372.000297067703, + "~:y": 8277.000090476804 + } + }, + { + "~#point": { + "~:x": -10372.000297067703, + "~:y": 8335.00009076221 + } + }, + { + "~#point": { + "~:x": -11011.000297067703, + "~:y": 8335.00009076221 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c099e8f3d114", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8337.050093528562, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 638.9666748046875, + "~:text-decoration": "rgb(70, 214, 34)", + "~:letter-spacing": "normal", + "~:x": -11011.000297067703, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#46d622", + "~:fill-opacity": 1 + } + ], + "~:x2": 638.9666748046875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297067703, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297067703, + "~:y": 8277.000090476804, + "~:width": 639, + "~:height": 58.00000028540671, + "~:x1": -11011.000297067703, + "~:y1": 8277.000090476804, + "~:x2": -10372.000297067703, + "~:y2": 8335.00009076221 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b3": { + "~#shape": { + "~:y": 8084.000120898814, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 711, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933.00000005209, + "~:y": 8084.000120898814 + } + }, + { + "~#point": { + "~:x": -11222.00000005209, + "~:y": 8084.000120898814 + } + }, + { + "~#point": { + "~:x": -11222.00000005209, + "~:y": 8142.000121184221 + } + }, + { + "~#point": { + "~:x": -11933.00000005209, + "~:y": 8142.000121184221 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b3", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8144.050123950572, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 710.2000122070312, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933.00000005209, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 710.2000122070312, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933.00000005209, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933.00000005209, + "~:y": 8084.000120898814, + "~:width": 711, + "~:height": 58.00000028540671, + "~:x1": -11933.00000005209, + "~:y1": 8084.000120898814, + "~:x2": -11222.00000005209, + "~:y2": 8142.000121184221 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b4": { + "~#shape": { + "~:y": 8147.999797905316, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 733, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098394, + "~:y": 8147.999797905316 + } + }, + { + "~#point": { + "~:x": -11199.999999098394, + "~:y": 8147.999797905316 + } + }, + { + "~#point": { + "~:x": -11199.999999098394, + "~:y": 8205.999801643668 + } + }, + { + "~#point": { + "~:x": -11932.999999098394, + "~:y": 8205.999801643668 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8208.049800957073, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 732.5499877929688, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098394, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 732.5499877929688, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999098394, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098394, + "~:y": 8147.999797905316, + "~:width": 733, + "~:height": 58.00000373835155, + "~:x1": -11932.999999098394, + "~:y1": 8147.999797905316, + "~:x2": -11199.999999098394, + "~:y2": 8205.999801643668 + } + }, + "~:flip-x": null, + "~:height": 58.00000373835155, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef18e3ac34": { + "~#shape": { + "~:y": 7956.999790430069, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 724.0000642528557, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933, + "~:y": 7956.999790430069 + } + }, + { + "~#point": { + "~:x": -11208.999935747144, + "~:y": 7956.999790430069 + } + }, + { + "~#point": { + "~:x": -11208.999935747144, + "~:y": 8014.999790715476 + } + }, + { + "~#point": { + "~:x": -11933, + "~:y": 8014.999790715476 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef18e3ac34", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8017.049793481827, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 723.2666625976562, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999999998, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 723.2666625976562, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999999998, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999999998, + "~:y": 7956.999790430069, + "~:width": 724.0000642528557, + "~:height": 58.00000028540671, + "~:x1": -11932.999999999998, + "~:y1": 7956.999790430069, + "~:x2": -11208.999935747142, + "~:y2": 8014.999790715476 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef3ba2c4b5": { + "~#shape": { + "~:y": 8211.000454923244, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + no fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 714, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8211.000454923244 + } + }, + { + "~#point": { + "~:x": -11218.999999098385, + "~:y": 8211.000454923244 + } + }, + { + "~#point": { + "~:x": -11218.999999098385, + "~:y": 8269.00045520865 + } + }, + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8269.00045520865 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef3ba2c4b5", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8271.050457975001, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 713.7833251953125, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098385, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 713.7833251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + no fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11932.999999098385, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098385, + "~:y": 8211.000454923244, + "~:width": 714, + "~:height": 58.00000028540671, + "~:x1": -11932.999999098385, + "~:y1": 8211.000454923244, + "~:x2": -11218.999999098385, + "~:y2": 8269.00045520865 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~ud50240ec-f763-80e3-8006-beef280f5cb6": { + "~#shape": { + "~:y": 8019.999955674739, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 705.0000649508474, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8019.999955674739 + } + }, + { + "~#point": { + "~:x": -11227.999934147538, + "~:y": 8019.999955674739 + } + }, + { + "~#point": { + "~:x": -11227.999934147538, + "~:y": 8077.999955960146 + } + }, + { + "~#point": { + "~:x": -11932.999999098385, + "~:y": 8077.999955960146 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef280f5cb6", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8080.049958726497, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 704.5, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11932.999999098385, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 704.5, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 0.6611111111111111 + } + ], + "~:x": -11932.999999098385, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11932.999999098385, + "~:y": 8019.999955674739, + "~:width": 705.0000649508474, + "~:height": 58.00000028540671, + "~:x1": -11932.999999098385, + "~:y1": 8019.999955674739, + "~:x2": -11227.999934147538, + "~:y2": 8077.999955960146 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1c": { + "~#shape": { + "~:y": 8212.000376701355, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + outer stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 776.9999690055847, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.000297005885, + "~:y": 8212.000376701355 + } + }, + { + "~#point": { + "~:x": -10234.0003280003, + "~:y": 8212.000376701355 + } + }, + { + "~#point": { + "~:x": -10234.0003280003, + "~:y": 8270.000376986762 + } + }, + { + "~#point": { + "~:x": -11011.000297005885, + "~:y": 8270.000376986762 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e7a9433", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1c", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8272.050379753113, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 776.61669921875, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.000297005885, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 776.61669921875, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + outer stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.000297005885, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.000297005885, + "~:y": 8212.000376701355, + "~:width": 776.9999690055847, + "~:height": 58.00000028540671, + "~:x1": -11011.000297005885, + "~:y1": 8212.000376701355, + "~:x2": -10234.0003280003, + "~:y2": 8270.000376986762 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1a": { + "~#shape": { + "~:y": 8082.999973101323, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 774.0000381469727, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029706955, + "~:y": 8082.999973101323 + } + }, + { + "~#point": { + "~:x": -10237.000258922577, + "~:y": 8082.999973101323 + } + }, + { + "~#point": { + "~:x": -10237.000258922577, + "~:y": 8140.99997338673 + } + }, + { + "~#point": { + "~:x": -11011.00029706955, + "~:y": 8140.99997338673 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e78ddd1", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1a", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8143.049976153081, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 773.0333251953125, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029706955, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 773.0333251953125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029706955, + "~:shadow": [ + { + "~:color": { + "~:color": "#da0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029706955, + "~:y": 8082.999973101323, + "~:width": 774.0000381469727, + "~:height": 58.00000028540671, + "~:x1": -11011.00029706955, + "~:y1": 8082.999973101323, + "~:x2": -10237.000258922577, + "~:y2": 8140.99997338673 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c09918f84a1b": { + "~#shape": { + "~:y": 8148.000173137, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "inner shadow + fill + blur + center stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 795.9999673366547, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11011.00029707068, + "~:y": 8148.000173136999 + } + }, + { + "~#point": { + "~:x": -10215.000329734024, + "~:y": 8148.000173136999 + } + }, + { + "~#point": { + "~:x": -10215.000329734024, + "~:y": 8206.000176871226 + } + }, + { + "~#point": { + "~:x": -11011.00029707068, + "~:y": 8206.000176871226 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:blur": { + "~:id": "~u199bd8a8-1f62-8077-8006-c0991e79c1d7", + "~:type": "~:layer-blur", + "~:value": 2, + "~:hidden": false + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c09918f84a1b", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 8208.050176188757, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 795.38330078125, + "~:text-decoration": "rgb(156, 57, 255)", + "~:letter-spacing": "normal", + "~:x": -11011.00029707068, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [ + { + "~:fill-color": "#9c39ff", + "~:fill-opacity": 1 + } + ], + "~:x2": 795.38330078125, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "inner shadow + fill + blur + center stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:center", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11011.00029707068, + "~:shadow": [ + { + "~:color": { + "~:color": "#ee0c0c", + "~:opacity": 0.5 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:inner-shadow", + "~:blur": 2, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11011.00029707068, + "~:y": 8148.000173137, + "~:width": 795.9999673366547, + "~:height": 58.000003734226084, + "~:x1": -11011.00029707068, + "~:y1": 8148.000173137, + "~:x2": -10215.000329734024, + "~:y2": 8206.000176871226 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.000003734226084, + "~:flip-y": null + } + }, + "~u199bd8a8-1f62-8077-8006-c099c4d01fb8": { + "~#shape": { + "~:y": 7893.000113364988, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:auto-width", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "h459uv2brp", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "drop shadow + no fill + inner stroke" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "left", + "~:font-id": "sourcesanspro", + "~:key": "1c7ib7rc046", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 701.0000560127901, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -11933.000132173522, + "~:y": 7893.000113364988 + } + }, + { + "~#point": { + "~:x": -11232.000076160732, + "~:y": 7893.000113364988 + } + }, + { + "~#point": { + "~:x": -11232.000076160732, + "~:y": 7951.000113650394 + } + }, + { + "~#point": { + "~:x": -11933.000132173522, + "~:y": 7951.000113650394 + } + } + ], + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u199bd8a8-1f62-8077-8006-c099c4d01fb8", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": 7953.050116416745, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.4499969482421875, + "~:width": 700.9166870117188, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -11933.000132173522, + "~:x1": 0, + "~:y2": 60.05000305175781, + "~:fills": [], + "~:x2": 700.9166870117188, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 62.5, + "~:text": "drop shadow + no fill + inner stroke" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#040cff", + "~:stroke-opacity": 1 + } + ], + "~:x": -11933.000132173522, + "~:shadow": [ + { + "~:color": { + "~:color": "#000000", + "~:opacity": 0.2 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~ud50240ec-f763-80e3-8006-beef01c35b41", + "~:offset-x": 4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -11933.000132173522, + "~:y": 7893.000113364988, + "~:width": 701.0000560127901, + "~:height": 58.00000028540671, + "~:x1": -11933.000132173522, + "~:y1": 7893.000113364988, + "~:x2": -11232.000076160732, + "~:y2": 7951.000113650394 + } + }, + "~:fills": [], + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + } + }, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a4", + "~:name": "Page 1" + } + }, + "~:id": "~u15b74473-2908-8094-8006-bdb4fbd2c6a3", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json b/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json new file mode 100644 index 0000000000..6214ef93cb --- /dev/null +++ b/frontend/playwright/data/render-wasm/get-file-text-shadows-combination.json @@ -0,0 +1,905 @@ +{ + "~:features": { + "~#set": [ + "fdata/path-data", + "plugins/runtime", + "design-tokens/v1", + "variants/v1", + "layout/grid", + "styles/v2", + "fdata/objects-map", + "render-wasm/v1", + "components/v2", + "fdata/shape-data-type" + ] + }, + "~:team-id": "~u6bd7c17d-4f59-815e-8006-5c1f6882469a", + "~:permissions": { + "~:type": "~:membership", + "~:is-owner": true, + "~:is-admin": true, + "~:can-edit": true, + "~:can-read": true, + "~:is-logged": true + }, + "~:has-media-trimmed": false, + "~:comment-thread-seqn": 0, + "~:name": "New File 2", + "~:revn": 401, + "~:modified-at": "~m1757076417573", + "~:vern": 0, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c73", + "~:is-shared": false, + "~:migrations": { + "~#ordered-set": [ + "legacy-2", + "legacy-3", + "legacy-5", + "legacy-6", + "legacy-7", + "legacy-8", + "legacy-9", + "legacy-10", + "legacy-11", + "legacy-12", + "legacy-13", + "legacy-14", + "legacy-16", + "legacy-17", + "legacy-18", + "legacy-19", + "legacy-25", + "legacy-26", + "legacy-27", + "legacy-28", + "legacy-29", + "legacy-31", + "legacy-32", + "legacy-33", + "legacy-34", + "legacy-36", + "legacy-37", + "legacy-38", + "legacy-39", + "legacy-40", + "legacy-41", + "legacy-42", + "legacy-43", + "legacy-44", + "legacy-45", + "legacy-46", + "legacy-47", + "legacy-48", + "legacy-49", + "legacy-50", + "legacy-51", + "legacy-52", + "legacy-53", + "legacy-54", + "legacy-55", + "legacy-56", + "legacy-57", + "legacy-59", + "legacy-62", + "legacy-65", + "legacy-66", + "legacy-67", + "0001-remove-tokens-from-groups", + "0002-normalize-bool-content-v2", + "0002-clean-shape-interactions", + "0003-fix-root-shape", + "0003-convert-path-content-v2", + "0004-clean-shadow-color", + "0005-deprecate-image-type", + "0006-fix-old-texts-fills", + "0007-clear-invalid-strokes-and-fills-v2", + "0008-fix-library-colors-v4", + "0009-clean-library-colors", + "0009-add-partial-text-touched-flags", + "0010-fix-swap-slots-pointing-non-existent-shapes" + ] + }, + "~:version": 67, + "~:project-id": "~u6bd7c17d-4f59-815e-8006-5c1f68846e43", + "~:created-at": "~m1756728830560", + "~:data": { + "~:pages": [ + "~u15b74473-2908-8094-8006-bc90c3982c74" + ], + "~:pages-index": { + "~u15b74473-2908-8094-8006-bc90c3982c74": { + "~:objects": { + "~u00000000-0000-0000-0000-000000000000": { + "~#shape": { + "~:y": 0, + "~:hide-fill-on-export": false, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:name": "Root Frame", + "~:width": 0.01, + "~:type": "~:frame", + "~:points": [ + { + "~#point": { + "~:x": 0, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0 + } + }, + { + "~#point": { + "~:x": 0.01, + "~:y": 0.01 + } + }, + { + "~#point": { + "~:x": 0, + "~:y": 0.01 + } + } + ], + "~:r2": 0, + "~:proportion-lock": false, + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:r3": 0, + "~:r1": 0, + "~:id": "~u00000000-0000-0000-0000-000000000000", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [], + "~:x": 0, + "~:proportion": 1, + "~:r4": 0, + "~:selrect": { + "~#rect": { + "~:x": 0, + "~:y": 0, + "~:width": 0.01, + "~:height": 0.01, + "~:x1": 0, + "~:y1": 0, + "~:x2": 0.01, + "~:y2": 0.01 + } + }, + "~:fills": [ + { + "~:fill-color": "#FFFFFF", + "~:fill-opacity": 1 + } + ], + "~:flip-x": null, + "~:height": 0.01, + "~:flip-y": null, + "~:shapes": [ + "~u88db2850-996a-804f-8006-c063323d68a4", + "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae", + "~uf94516f3-2d43-80b3-8006-c1b60a252bcf" + ] + } + }, + "~u88db2850-996a-804f-8006-c063323d68a4": { + "~#shape": { + "~:y": -865.0000046417117, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and no fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 506.1299901710943, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -251.00000411998855, + "~:y": -865.0000046417117 + } + }, + { + "~#point": { + "~:x": 255.12998605110573, + "~:y": -865.0000046417117 + } + }, + { + "~#point": { + "~:x": 255.12998605110573, + "~:y": -749.0000040708983 + } + }, + { + "~#point": { + "~:x": -251.00000411998855, + "~:y": -749.0000040708983 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~u88db2850-996a-804f-8006-c063323d68a4", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -804.7000015899539, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 464.2166748046875, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -230.05000717174636, + "~:x1": 20.949996948242188, + "~:y2": 60.30000305175781, + "~:fills": [], + "~:x2": 485.1666717529297, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple " + } + }, + { + "~#rect": { + "~:y": -747.1000107452273, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 354.3333435058594, + "~:text-decoration": "rgb(0, 0, 0)", + "~:letter-spacing": "normal", + "~:x": -175.10001022350417, + "~:x1": 75.89999389648438, + "~:y2": 117.89999389648438, + "~:fills": [], + "~:x2": 430.23333740234375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "strokes and no fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#00ff11", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 1, + "~:stroke-color": "#ff00b1", + "~:stroke-opacity": 1 + } + ], + "~:x": -251.00000411998855, + "~:shadow": [ + { + "~:color": { + "~:color": "#7750e1", + "~:opacity": 0.4722222222222222 + }, + "~:spread": 0, + "~:offset-y": 10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 10 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -10, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -10 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -251.00000411998855, + "~:y": -865.0000046417117, + "~:width": 506.1299901710943, + "~:height": 116.00000057081343, + "~:x1": -251.00000411998855, + "~:y1": -865.0000046417117, + "~:x2": 255.12998605110573, + "~:y2": -749.0000040708983 + } + }, + "~:flip-x": null, + "~:height": 116.00000057081343, + "~:flip-y": null + } + }, + "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae": { + "~#shape": { + "~:y": -723.9999884292483, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:last-resize-direction": "~:horizontal", + "~:grow-type": "~:auto-height", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and solid fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 609.1300277709961, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -303.0000086630885, + "~:y": -723.9999884292483 + } + }, + { + "~#point": { + "~:x": 306.1300191079076, + "~:y": -723.9999884292483 + } + }, + { + "~#point": { + "~:x": 306.1300191079076, + "~:y": -607.9999878584349 + } + }, + { + "~#point": { + "~:x": -303.0000086630885, + "~:y": -607.9999878584349 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5c96d7dae", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -663.6999853774905, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 464.2166748046875, + "~:text-decoration": "rgb(33, 76, 205)", + "~:letter-spacing": "normal", + "~:x": -230.55001171484633, + "~:x1": 72.44999694824219, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:x2": 536.6666717529297, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple " + } + }, + { + "~#rect": { + "~:y": -606.099994532764, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 398.8500061035156, + "~:text-decoration": "rgb(33, 76, 205)", + "~:letter-spacing": "normal", + "~:x": -197.8666773642604, + "~:x1": 105.13333129882812, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#214ccd", + "~:fill-opacity": 1 + } + ], + "~:x2": 503.98333740234375, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "strokes and solid fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:inner", + "~:stroke-width": 1, + "~:stroke-color": "#00ff11", + "~:stroke-opacity": 1 + }, + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 3, + "~:stroke-color": "#ff00b1", + "~:stroke-opacity": 1 + } + ], + "~:x": -303.0000086630885, + "~:shadow": [ + { + "~:color": { + "~:color": "#7750e1", + "~:opacity": 0.4722222222222222 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 4 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -303.0000086630885, + "~:y": -723.9999884292483, + "~:width": 609.1300277709961, + "~:height": 116.00000057081343, + "~:x1": -303.0000086630885, + "~:y1": -723.9999884292483, + "~:x2": 306.1300191079076, + "~:y2": -607.9999878584349 + } + }, + "~:flip-x": null, + "~:height": 116.00000057081343, + "~:flip-y": null + } + }, + "~uf94516f3-2d43-80b3-8006-c1b60a252bcf": { + "~#shape": { + "~:y": -581.9999718032777, + "~:transform": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:rotation": 0, + "~:grow-type": "~:fixed", + "~:content": { + "~:type": "root", + "~:key": "1ygxrlda8tl", + "~:children": [ + { + "~:type": "paragraph-set", + "~:children": [ + { + "~:line-height": "1.2", + "~:font-style": "normal", + "~:children": [ + { + "~:line-height": "", + "~:font-style": "normal", + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:font-id": "sourcesanspro", + "~:key": "23svy7uenp6", + "~:font-size": "48", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:font-family": "sourcesanspro", + "~:text": "shadows with multiple strokes and transparent fill" + } + ], + "~:typography-ref-id": null, + "~:text-transform": "none", + "~:text-align": "center", + "~:font-id": "sourcesanspro", + "~:key": "e92bgu67k4", + "~:font-size": "0", + "~:font-weight": "400", + "~:typography-ref-file": null, + "~:text-direction": "ltr", + "~:type": "paragraph", + "~:font-variant-id": "regular", + "~:text-decoration": "none", + "~:letter-spacing": "0", + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:font-family": "sourcesanspro" + } + ] + } + ], + "~:vertical-align": "top" + }, + "~:hide-in-viewer": false, + "~:name": "Text", + "~:width": 753.1299834251404, + "~:type": "~:text", + "~:points": [ + { + "~#point": { + "~:x": -374.99998553834683, + "~:y": -581.9999718032777 + } + }, + { + "~#point": { + "~:x": 378.1299978867936, + "~:y": -581.9999718032777 + } + }, + { + "~#point": { + "~:x": 378.1299978867936, + "~:y": -523.999971517871 + } + }, + { + "~#point": { + "~:x": -374.99998553834683, + "~:y": -523.999971517871 + } + } + ], + "~:layout-item-h-sizing": "~:fix", + "~:transform-inverse": { + "~#matrix": { + "~:a": 1, + "~:b": 0, + "~:c": 0, + "~:d": 1, + "~:e": 0, + "~:f": 0 + } + }, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b60a252bcf", + "~:parent-id": "~u00000000-0000-0000-0000-000000000000", + "~:position-data": [ + { + "~#rect": { + "~:y": -521.6999687515199, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": -2.6999969482421875, + "~:width": 706.3333740234375, + "~:text-decoration": "rgba(255, 119, 0, 0.383)", + "~:letter-spacing": "normal", + "~:x": -351.5999916418624, + "~:x1": 23.399993896484375, + "~:y2": 60.30000305175781, + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:x2": 729.7333679199219, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "shadows with multiple strokes and " + } + }, + { + "~#rect": { + "~:y": -464.09997790679336, + "~:font-style": "normal", + "~:text-transform": "none", + "~:font-size": "48px", + "~:font-weight": "400", + "~:y1": 54.899993896484375, + "~:width": 295.48333740234375, + "~:text-decoration": "rgba(255, 119, 0, 0.383)", + "~:letter-spacing": "normal", + "~:x": -146.18331988893272, + "~:x1": 228.81666564941406, + "~:y2": 117.89999389648438, + "~:fills": [ + { + "~:fill-color": "#ff7700", + "~:fill-opacity": 0.38333333333333336 + } + ], + "~:x2": 524.3000030517578, + "~:direction": "ltr", + "~:font-family": "\"sourcesanspro\"", + "~:height": 63, + "~:text": "transparent fill" + } + } + ], + "~:frame-id": "~u00000000-0000-0000-0000-000000000000", + "~:strokes": [ + { + "~:stroke-style": "~:solid", + "~:stroke-alignment": "~:outer", + "~:stroke-width": 3, + "~:stroke-color": "#ff00b0", + "~:stroke-opacity": 0.37222222222222223 + } + ], + "~:x": -374.9999855383468, + "~:shadow": [ + { + "~:color": { + "~:color": "#00fb08", + "~:opacity": 1 + }, + "~:spread": 0, + "~:offset-y": 4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~uf94516f3-2d43-80b3-8006-c1b5b7323de5", + "~:offset-x": 4 + }, + { + "~:color": { + "~:color": "#559fe1", + "~:opacity": 0.7333333333333333 + }, + "~:spread": 0, + "~:offset-y": -4, + "~:style": "~:drop-shadow", + "~:blur": 0, + "~:hidden": false, + "~:id": "~u427eca67-5b7f-80e6-8006-c0a7398ff4b4", + "~:offset-x": -4 + } + ], + "~:selrect": { + "~#rect": { + "~:x": -374.9999855383468, + "~:y": -581.9999718032777, + "~:width": 753.1299834251404, + "~:height": 58.00000028540671, + "~:x1": -374.9999855383468, + "~:y1": -581.9999718032777, + "~:x2": 378.1299978867936, + "~:y2": -523.999971517871 + } + }, + "~:flip-x": null, + "~:height": 58.00000028540671, + "~:flip-y": null + } + } + }, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c74", + "~:name": "Page 1" + } + }, + "~:id": "~u15b74473-2908-8094-8006-bc90c3982c73", + "~:options": { + "~:components-v2": true, + "~:base-font-size": "16px" + } + } +} \ No newline at end of file diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js b/frontend/playwright/ui/render-wasm-specs/texts.spec.js index f7fcb4b754..9657ee1393 100644 --- a/frontend/playwright/ui/render-wasm-specs/texts.spec.js +++ b/frontend/playwright/ui/render-wasm-specs/texts.spec.js @@ -227,6 +227,71 @@ test("Renders a file with multiple emoji", async ({ page }) => { await expect(workspace.canvas).toHaveScreenshot(); }); +test("Renders a file with multiple text shadows, strokes, and blur combinations", async ({ page }) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + + await workspace.mockGetFile( + "render-wasm/get-file-text-shadows-and-blurs.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bdb4fbd2c6a4", + }); + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with different text leaves decoration", async ({ page }) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-text-leaves-decoration.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bdb4fbd2c6a4", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + +test("Renders a file with different text shadows combinations", async ({ page }) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-text-shadows-combination.json", + ); + + await workspace.goToWorkspace({ + id: "15b74473-2908-8094-8006-bdb4fbd2c6a3", + pageId: "15b74473-2908-8094-8006-bc90c3982c74", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + + +test("Renders a file with text in frames and different strokes, shadows, and blurs", async ({ page }) => { + const workspace = new WasmWorkspacePage(page); + await workspace.setupEmptyFile(); + await workspace.mockGetFile( + "render-wasm/get-file-frame-clipping-shadows-and-texts.json", + ); + + await workspace.goToWorkspace({ + id: "44471494-966a-8178-8006-c5bd93f0fe72", + pageId: "44471494-966a-8178-8006-c5bd93f0fe73", + }); + + await workspace.waitForFirstRender(); + await expect(workspace.canvas).toHaveScreenshot(); +}); + test("Renders a file with texts with different alignments", async ({ page, }) => { diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png new file mode 100644 index 0000000000..d519d9afab Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-leaves-decoration-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png new file mode 100644 index 0000000000..ff8b34555d Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-different-text-shadows-combinations-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png index 3fbabb451d..bde8aa497e 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-emoji-and-text-decoration-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png new file mode 100644 index 0000000000..6475826679 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-multiple-text-shadows-strokes-and-blur-combinations-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png index 0fc974b205..d4f7241ea5 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-styled-texts-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png new file mode 100644 index 0000000000..75d9405c45 Binary files /dev/null and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-text-in-frames-and-different-strokes-shadows-and-blurs-1.png differ diff --git a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png index 565b69d0bf..767cc7a0ed 100644 Binary files a/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png and b/frontend/playwright/ui/render-wasm-specs/texts.spec.js-snapshots/Renders-a-file-with-texts-with-images-1.png differ diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs index dfbb318d57..3f86983e98 100644 --- a/render-wasm/src/render.rs +++ b/render-wasm/src/render.rs @@ -436,6 +436,9 @@ impl RenderState { let paint = skia::Paint::default(); + self.surfaces + .draw_into(SurfaceId::TextDropShadows, SurfaceId::Current, Some(&paint)); + self.surfaces .draw_into(SurfaceId::Fills, SurfaceId::Current, Some(&paint)); @@ -457,8 +460,10 @@ impl RenderState { .draw_into(SurfaceId::InnerShadows, SurfaceId::Current, Some(&paint)); } - let surface_ids = - SurfaceId::Strokes as u32 | SurfaceId::Fills as u32 | SurfaceId::InnerShadows as u32; + let surface_ids = SurfaceId::Strokes as u32 + | SurfaceId::Fills as u32 + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().clear(skia::Color::TRANSPARENT); @@ -485,8 +490,10 @@ impl RenderState { fills_surface_id: SurfaceId, strokes_surface_id: SurfaceId, innershadows_surface_id: SurfaceId, + text_drop_shadows_surface_id: SurfaceId, apply_to_current_surface: bool, offset: Option<(f32, f32)>, + parent_shadows: Option>, ) { let shape = if let Some(scale_content) = scale_content { &shape.scale_content(*scale_content) @@ -494,8 +501,10 @@ impl RenderState { shape }; - let surface_ids = - fills_surface_id as u32 | strokes_surface_id as u32 | innershadows_surface_id as u32; + let surface_ids = fills_surface_id as u32 + | strokes_surface_id as u32 + | innershadows_surface_id as u32 + | text_drop_shadows_surface_id as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().save(); }); @@ -604,72 +613,139 @@ impl RenderState { }); let text_content = text_content.new_bounds(shape.selrect()); + let drop_shadows = shape.drop_shadow_paints(); let inner_shadows = shape.inner_shadow_paints(); let blur_filter = shape.image_filter(1.); - let blur_mask = shape.mask_filter(1.); - let mut paragraphs = paragraph_builder_group_from_text( - &text_content, - blur_filter.as_ref(), - blur_mask.as_ref(), - None, - ); - let count_inner_strokes = shape.count_visible_inner_strokes(); - text::render(self, &shape, &mut paragraphs, Some(fills_surface_id)); - for stroke in shape.visible_strokes().rev() { - let mut stroke_paragraphs = stroke_paragraph_builder_group_from_text( - &text_content, - stroke, - &shape.selrect(), - blur_filter.as_ref(), - blur_mask.as_ref(), - None, - count_inner_strokes, - ); + let mut paragraphs = paragraph_builder_group_from_text(&text_content, None); + let mut paragraphs_with_shadows = + paragraph_builder_group_from_text(&text_content, Some(true)); + let mut stroke_paragraphs_list = shape + .visible_strokes() + .map(|stroke| { + stroke_paragraph_builder_group_from_text( + &text_content, + stroke, + &shape.selrect(), + count_inner_strokes, + None, + ) + }) + .collect::>(); - strokes::render( - self, - &shape, - stroke, - Some(strokes_surface_id), - None, - Some(&mut stroke_paragraphs), - antialias, - ); + let mut stroke_paragraphs_with_shadows_list = shape + .visible_strokes() + .map(|stroke| { + stroke_paragraph_builder_group_from_text( + &text_content, + stroke, + &shape.selrect(), + count_inner_strokes, + Some(true), + ) + }) + .collect::>(); - for inner_shadow in &inner_shadows { - let mut stroke_paragraphs_with_inner_shadows = - stroke_paragraph_builder_group_from_text( - &text_content, - stroke, - &shape.selrect(), + if let Some(parent_shadows) = parent_shadows { + if !shape.has_visible_strokes() { + for shadow in &parent_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + text_drop_shadows_surface_id.into(), + Some(shadow), blur_filter.as_ref(), - blur_mask.as_ref(), - Some(inner_shadow), - count_inner_strokes, ); - shadows::render_text_inner_shadows( + } + } else { + shadows::render_text_shadows( self, &shape, - &mut stroke_paragraphs_with_inner_shadows, - innershadows_surface_id, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + text_drop_shadows_surface_id.into(), + &parent_shadows, + &blur_filter, ); } - } + } else { + // 1. Text drop shadows + if !shape.has_visible_strokes() { + for shadow in &drop_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + text_drop_shadows_surface_id.into(), + Some(shadow), + blur_filter.as_ref(), + ); + } + } - for inner_shadow in &inner_shadows { - let mut paragraphs_with_inner_shadows = paragraph_builder_group_from_text( - &text_content, + // 2. Text fills + text::render( + Some(self), + None, + &shape, + &mut paragraphs, + Some(fills_surface_id), + None, blur_filter.as_ref(), - blur_mask.as_ref(), - Some(inner_shadow), ); - shadows::render_text_inner_shadows( + + // 3. Stroke drop shadows + shadows::render_text_shadows( self, &shape, - &mut paragraphs_with_inner_shadows, - innershadows_surface_id, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + text_drop_shadows_surface_id.into(), + &drop_shadows, + &blur_filter, ); + + // 4. Stroke fills + for stroke_paragraphs in stroke_paragraphs_list.iter_mut() { + text::render( + Some(self), + None, + &shape, + stroke_paragraphs, + Some(strokes_surface_id), + None, + blur_filter.as_ref(), + ); + } + + // 5. Stroke inner shadows + shadows::render_text_shadows( + self, + &shape, + &mut paragraphs_with_shadows, + &mut stroke_paragraphs_with_shadows_list, + Some(innershadows_surface_id), + &inner_shadows, + &blur_filter, + ); + + // 6. Fill Inner shadows + if !shape.has_visible_strokes() { + for shadow in &inner_shadows { + text::render( + Some(self), + None, + &shape, + &mut paragraphs_with_shadows, + Some(innershadows_surface_id), + Some(shadow), + blur_filter.as_ref(), + ); + } + } } } _ => { @@ -718,7 +794,6 @@ impl RenderState { stroke, Some(strokes_surface_id), None, - None, antialias, ); shadows::render_stroke_inner_shadows( @@ -815,8 +890,10 @@ impl RenderState { performance::begin_measure!("start_render_loop"); self.reset_canvas(); - let surface_ids = - SurfaceId::Strokes as u32 | SurfaceId::Fills as u32 | SurfaceId::InnerShadows as u32; + let surface_ids = SurfaceId::Strokes as u32 + | SurfaceId::Fills as u32 + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32; self.surfaces.apply_mut(surface_ids, |s| { s.canvas().scale((scale, scale)); }); @@ -997,8 +1074,10 @@ impl RenderState { SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::InnerShadows, + SurfaceId::TextDropShadows, true, None, + None, ); } @@ -1098,7 +1177,6 @@ impl RenderState { self.surfaces .canvas(SurfaceId::DropShadows) .save_layer(&layer_rec); - self.surfaces .canvas(SurfaceId::DropShadows) .scale((scale, scale)); @@ -1116,8 +1194,10 @@ impl RenderState { SurfaceId::DropShadows, SurfaceId::DropShadows, SurfaceId::DropShadows, + SurfaceId::DropShadows, false, Some((shadow.offset.0, shadow.offset.1)), + None, ); self.surfaces.canvas(SurfaceId::DropShadows).restore(); @@ -1133,6 +1213,7 @@ impl RenderState { ) -> Result<(bool, bool), String> { let mut iteration = 0; let mut is_empty = true; + while let Some(node_render_state) = self.pending_nodes.pop() { let NodeRenderState { id: node_id, @@ -1199,80 +1280,128 @@ impl RenderState { } self.render_shape_enter(element, mask); + if !node_render_state.is_root() && self.focus_mode.is_active() { - let scale = self.get_scale(); + let scale: f32 = self.get_scale(); let translation = self .surfaces .get_render_context_translation(self.render_area, scale); - // Shadow rendering technique: Two-pass approach for proper opacity handling - // - // The shadow rendering uses a two-pass technique to ensure that overlapping - // shadow areas maintain correct opacity without unwanted darkening: - // - // 1. First pass: Render shadow shape in pure black (alpha channel preserved) - // - This creates the shadow silhouette with proper alpha gradients - // - The black color acts as a mask for the final shadow color - // - // 2. Second pass: Apply actual shadow color using SrcIn blend mode - // - SrcIn preserves the alpha channel from the black shadow - // - Only the color channels are replaced, maintaining transparency - // - This prevents overlapping shadows from accumulating opacity - // - // This approach is essential for complex shapes with transparency where - // multiple shadow areas might overlap, ensuring visual consistency. - for shadow in element.drop_shadows().rev().filter(|s| !s.hidden()) { - let paint = skia::Paint::default(); - let layer_rec = skia::canvas::SaveLayerRec::default().paint(&paint); - self.surfaces - .canvas(SurfaceId::DropShadows) - .save_layer(&layer_rec); + // For text shapes, render drop shadow using text rendering logic + if !matches!(element.shape_type, Type::Text(_)) { + // Shadow rendering technique: Two-pass approach for proper opacity handling + // + // The shadow rendering uses a two-pass technique to ensure that overlapping + // shadow areas maintain correct opacity without unwanted darkening: + // + // 1. First pass: Render shadow shape in pure black (alpha channel preserved) + // - This creates the shadow silhouette with proper alpha gradients + // - The black color acts as a mask for the final shadow color + // + // 2. Second pass: Apply actual shadow color using SrcIn blend mode + // - SrcIn preserves the alpha channel from the black shadow + // - Only the color channels are replaced, maintaining transparency + // - This prevents overlapping shadows from accumulating opacity + // + // This approach is essential for complex shapes with transparency where + // multiple shadow areas might overlap, ensuring visual consistency. + for shadow in element.drop_shadows_visible() { + let paint = skia::Paint::default(); + let layer_rec = skia::canvas::SaveLayerRec::default().paint(&paint); - // First pass: Render shadow in black to establish alpha mask - self.render_drop_black_shadow( - tree, - modifiers, - structure, - element, - shadow, - scale_content.get(&element.id), - clip_bounds, - scale, - translation, - ); + self.surfaces + .canvas(SurfaceId::DropShadows) + .save_layer(&layer_rec); - // Nested shapes shadowing - apply black shadow to child shapes too - for shadow_shape_id in element.children.iter() { - let shadow_shape = tree.get(shadow_shape_id).unwrap(); - let clip_bounds = node_render_state.get_shadow_clip_bounds( - element, - modifiers.get(&element.id), - shadow, - ); + // First pass: Render shadow in black to establish alpha mask self.render_drop_black_shadow( tree, modifiers, structure, - shadow_shape, + element, shadow, scale_content.get(&element.id), clip_bounds, scale, translation, ); + + // Nested shapes shadowing - apply black shadow to child shapes too + for shadow_shape_id in element.children.iter() { + let shadow_shape = tree.get(shadow_shape_id).unwrap(); + let clip_bounds = node_render_state.get_shadow_clip_bounds( + element, + modifiers.get(&element.id), + shadow, + ); + + if !matches!(shadow_shape.shape_type, Type::Text(_)) { + self.render_drop_black_shadow( + tree, + modifiers, + structure, + shadow_shape, + shadow, + scale_content.get(&element.id), + clip_bounds, + scale, + translation, + ); + } else { + let paint = skia::Paint::default(); + let layer_rec = skia::canvas::SaveLayerRec::default().paint(&paint); + + self.surfaces + .canvas(SurfaceId::DropShadows) + .save_layer(&layer_rec); + self.surfaces + .canvas(SurfaceId::DropShadows) + .scale((scale, scale)); + self.surfaces + .canvas(SurfaceId::DropShadows) + .translate(translation); + + let mut transformed_shadow: Cow = Cow::Borrowed(shadow); + // transformed_shadow.to_mut().offset = (0., 0.); + transformed_shadow.to_mut().color = skia::Color::BLACK; + transformed_shadow.to_mut().blur = transformed_shadow.blur * scale; + + let mut new_shadow_paint = skia::Paint::default(); + new_shadow_paint + .set_image_filter(transformed_shadow.get_drop_shadow_filter()); + new_shadow_paint.set_blend_mode(skia::BlendMode::SrcOver); + + self.render_shape( + tree, + modifiers, + structure, + shadow_shape, + scale_content.get(&element.id), + clip_bounds, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + SurfaceId::DropShadows, + true, + None, + Some(vec![new_shadow_paint.clone()]), + ); + self.surfaces.canvas(SurfaceId::DropShadows).restore(); + } + } + + // Second pass: Apply actual shadow color using SrcIn blend mode + // This preserves the alpha channel from the black shadow while + // replacing only the color channels, preventing opacity accumulation + let mut paint = skia::Paint::default(); + paint.set_color(shadow.color); + paint.set_blend_mode(skia::BlendMode::SrcIn); + self.surfaces + .canvas(SurfaceId::DropShadows) + .draw_paint(&paint); + + self.surfaces.canvas(SurfaceId::DropShadows).restore(); } - - // Second pass: Apply actual shadow color using SrcIn blend mode - // This preserves the alpha channel from the black shadow while - // replacing only the color channels, preventing opacity accumulation - let mut paint = skia::Paint::default(); - paint.set_color(shadow.color); - paint.set_blend_mode(skia::BlendMode::SrcIn); - self.surfaces - .canvas(SurfaceId::DropShadows) - .draw_paint(&paint); - - self.surfaces.canvas(SurfaceId::DropShadows).restore(); } self.surfaces @@ -1292,8 +1421,10 @@ impl RenderState { SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::InnerShadows, + SurfaceId::TextDropShadows, true, None, + None, ); self.surfaces diff --git a/render-wasm/src/render/shadows.rs b/render-wasm/src/render/shadows.rs index b150b080cc..7569c77180 100644 --- a/render-wasm/src/render/shadows.rs +++ b/render-wasm/src/render/shadows.rs @@ -1,9 +1,10 @@ use super::{RenderState, SurfaceId}; use crate::render::strokes; -use crate::render::text::{self}; use crate::shapes::{Shadow, Shape, Stroke, Type}; -use skia_safe::textlayout::ParagraphBuilder; -use skia_safe::{Paint, Path}; +use skia_safe::{canvas::SaveLayerRec, Paint, Path}; + +use crate::render::text; +use crate::textlayout::ParagraphBuilderGroup; // Fill Shadows pub fn render_fill_inner_shadows( @@ -46,7 +47,6 @@ pub fn render_stroke_inner_shadows( stroke, Some(surface_id), filter.as_ref(), - None, antialias, ) } @@ -76,15 +76,6 @@ pub fn render_text_path_stroke_drop_shadows( } } -pub fn render_text_inner_shadows( - render_state: &mut RenderState, - shape: &Shape, - paragraphs: &mut [Vec], - surface_id: SurfaceId, -) { - text::render(render_state, shape, paragraphs, Some(surface_id)); -} - // Render text paths (unused) #[allow(dead_code)] pub fn render_text_path_stroke_inner_shadows( @@ -129,3 +120,50 @@ fn render_shadow_paint( _ => {} } } + +pub fn render_text_shadows( + render_state: &mut RenderState, + shape: &Shape, + paragraphs: &mut [ParagraphBuilderGroup], + stroke_paragraphs_group: &mut [Vec], + surface_id: Option, + shadows: &[Paint], + blur_filter: &Option, +) { + if stroke_paragraphs_group.is_empty() { + return; + } + + let canvas = render_state + .surfaces + .canvas(surface_id.unwrap_or(SurfaceId::TextDropShadows)); + + for shadow in shadows { + let shadow_layer = SaveLayerRec::default().paint(shadow); + canvas.save_layer(&shadow_layer); + + text::render( + None, + Some(canvas), + shape, + paragraphs, + surface_id, + None, + blur_filter.as_ref(), + ); + + for stroke_paragraphs in stroke_paragraphs_group.iter_mut() { + text::render( + None, + Some(canvas), + shape, + stroke_paragraphs, + surface_id, + None, + blur_filter.as_ref(), + ); + } + + canvas.restore(); + } +} diff --git a/render-wasm/src/render/strokes.rs b/render-wasm/src/render/strokes.rs index 0b5ec3e6c9..62046d9ead 100644 --- a/render-wasm/src/render/strokes.rs +++ b/render-wasm/src/render/strokes.rs @@ -3,11 +3,10 @@ use std::collections::HashMap; use crate::math::{Matrix, Point, Rect}; use crate::shapes::{Corners, Fill, ImageFill, Path, Shape, Stroke, StrokeCap, StrokeKind, Type}; -use skia_safe::{self as skia, textlayout::ParagraphBuilder, ImageFilter, RRect}; +use skia_safe::{self as skia, ImageFilter, RRect}; use super::{RenderState, SurfaceId}; use crate::render::filters::compose_filters; -use crate::render::text::{self}; use crate::render::{get_dest_rect, get_source_rect}; // FIXME: See if we can simplify these arguments @@ -519,7 +518,6 @@ pub fn render( stroke: &Stroke, surface_id: Option, shadow: Option<&ImageFilter>, - paragraphs: Option<&mut Vec>>, antialias: bool, ) { let scale = render_state.get_scale(); @@ -564,14 +562,7 @@ pub fn render( shape.image_filter(1.).as_ref(), antialias, ), - Type::Text(_) => { - text::render( - render_state, - shape, - paragraphs.expect("Text shapes should have paragraphs"), - surface_id, - ); - } + Type::Text(_) => {} shape_type @ (Type::Path(_) | Type::Bool(_)) => { if let Some(path) = shape_type.path() { draw_stroke_on_path( diff --git a/render-wasm/src/render/surfaces.rs b/render-wasm/src/render/surfaces.rs index 7f18e2b5de..a3e6b8cc12 100644 --- a/render-wasm/src/render/surfaces.rs +++ b/render-wasm/src/render/surfaces.rs @@ -17,15 +17,16 @@ const TILE_SIZE_MULTIPLIER: i32 = 2; #[repr(u32)] #[derive(Debug, PartialEq, Clone, Copy)] pub enum SurfaceId { - Target = 0b0_0000_0001, - Cache = 0b0_0000_0010, - Current = 0b0_0000_0100, - Fills = 0b0_0000_1000, - Strokes = 0b0_0001_0000, - DropShadows = 0b0_0010_0000, - InnerShadows = 0b0_0100_0000, - UI = 0b0_1000_0000, - Debug = 0b1_0000_0000, + Target = 0b00_0000_0001, + Cache = 0b00_0000_0010, + Current = 0b00_0000_0100, + Fills = 0b00_0000_1000, + Strokes = 0b00_0001_0000, + DropShadows = 0b00_0010_0000, + InnerShadows = 0b00_0100_0000, + TextDropShadows = 0b00_1000_0000, + UI = 0b01_0000_0000, + Debug = 0b10_0000_0001, } pub struct Surfaces { @@ -42,6 +43,8 @@ pub struct Surfaces { drop_shadows: skia::Surface, // used for rendering over shadows. inner_shadows: skia::Surface, + // used for rendering text drop shadows + text_drop_shadows: skia::Surface, // used for displaying auxiliary workspace elements ui: skia::Surface, // for drawing debug info. @@ -73,6 +76,8 @@ impl Surfaces { gpu_state.create_surface_with_isize("drop_shadows".to_string(), extra_tile_dims); let inner_shadows = gpu_state.create_surface_with_isize("inner_shadows".to_string(), extra_tile_dims); + let text_drop_shadows = + gpu_state.create_surface_with_isize("text_drop_shadows".to_string(), extra_tile_dims); let shape_fills = gpu_state.create_surface_with_isize("shape_fills".to_string(), extra_tile_dims); let shape_strokes = @@ -88,6 +93,7 @@ impl Surfaces { current, drop_shadows, inner_shadows, + text_drop_shadows, shape_fills, shape_strokes, ui, @@ -166,6 +172,9 @@ impl Surfaces { if ids & SurfaceId::InnerShadows as u32 != 0 { f(self.get_mut(SurfaceId::InnerShadows)); } + if ids & SurfaceId::TextDropShadows as u32 != 0 { + f(self.get_mut(SurfaceId::TextDropShadows)); + } if ids & SurfaceId::DropShadows as u32 != 0 { f(self.get_mut(SurfaceId::DropShadows)); } @@ -189,11 +198,15 @@ impl Surfaces { pub fn update_render_context(&mut self, render_area: skia::Rect, scale: f32) { let translation = self.get_render_context_translation(render_area, scale); self.apply_mut( - SurfaceId::Fills as u32 | SurfaceId::Strokes as u32 | SurfaceId::InnerShadows as u32, + SurfaceId::Fills as u32 + | SurfaceId::Strokes as u32 + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32, |s| { - s.canvas().restore(); - s.canvas().save(); - s.canvas().translate(translation); + let canvas = s.canvas(); + canvas.reset_matrix(); + canvas.scale((scale, scale)); + canvas.translate(translation); }, ); } @@ -206,6 +219,7 @@ impl Surfaces { SurfaceId::Current => &mut self.current, SurfaceId::DropShadows => &mut self.drop_shadows, SurfaceId::InnerShadows => &mut self.inner_shadows, + SurfaceId::TextDropShadows => &mut self.text_drop_shadows, SurfaceId::Fills => &mut self.shape_fills, SurfaceId::Strokes => &mut self.shape_strokes, SurfaceId::Debug => &mut self.debug, @@ -257,13 +271,15 @@ impl Surfaces { pub fn reset(&mut self, color: skia::Color) { self.canvas(SurfaceId::Fills).restore_to_count(1); self.canvas(SurfaceId::InnerShadows).restore_to_count(1); + self.canvas(SurfaceId::TextDropShadows).restore_to_count(1); self.canvas(SurfaceId::Strokes).restore_to_count(1); self.canvas(SurfaceId::Current).restore_to_count(1); self.apply_mut( SurfaceId::Fills as u32 | SurfaceId::Strokes as u32 | SurfaceId::Current as u32 - | SurfaceId::InnerShadows as u32, + | SurfaceId::InnerShadows as u32 + | SurfaceId::TextDropShadows as u32, |s| { s.canvas().clear(color).reset_matrix(); }, diff --git a/render-wasm/src/render/text.rs b/render-wasm/src/render/text.rs index 25e4a58c76..f44ccecac1 100644 --- a/render-wasm/src/render/text.rs +++ b/render-wasm/src/render/text.rs @@ -1,22 +1,55 @@ use super::{RenderState, Shape, SurfaceId}; use crate::shapes::VerticalAlign; use skia_safe::{ - canvas::SaveLayerRec, textlayout::LineMetrics, textlayout::Paragraph, - textlayout::ParagraphBuilder, textlayout::RectHeightStyle, textlayout::RectWidthStyle, - textlayout::StyleMetrics, textlayout::TextDecoration, textlayout::TextStyle, Canvas, Paint, - Path, + canvas::SaveLayerRec, + textlayout::{ + LineMetrics, Paragraph, ParagraphBuilder, RectHeightStyle, RectWidthStyle, StyleMetrics, + TextDecoration, TextStyle, + }, + Canvas, ImageFilter, Paint, Path, }; pub fn render( - render_state: &mut RenderState, + render_state: Option<&mut RenderState>, + canvas: Option<&Canvas>, shape: &Shape, paragraphs: &mut [Vec], surface_id: Option, + shadow: Option<&Paint>, + blur: Option<&ImageFilter>, ) { - let canvas = render_state - .surfaces - .canvas(surface_id.unwrap_or(SurfaceId::Fills)); + let render_canvas = if let Some(rs) = render_state { + rs.surfaces.canvas(surface_id.unwrap_or(SurfaceId::Fills)) + } else if let Some(c) = canvas { + c + } else { + return; + }; + if let Some(blur_filter) = blur { + let mut blur_paint = Paint::default(); + blur_paint.set_image_filter(blur_filter.clone()); + let blur_layer = SaveLayerRec::default().paint(&blur_paint); + render_canvas.save_layer(&blur_layer); + } + + if let Some(shadow_paint) = shadow { + let layer_rec = SaveLayerRec::default().paint(shadow_paint); + render_canvas.save_layer(&layer_rec); + draw_text(render_canvas, shape, paragraphs); + render_canvas.restore(); + } else { + draw_text(render_canvas, shape, paragraphs); + } + + if blur.is_some() { + render_canvas.restore(); + } + + render_canvas.restore(); +} + +fn draw_text(canvas: &Canvas, shape: &Shape, paragraphs: &mut [Vec]) { // Width let paragraph_width = if let crate::shapes::Type::Text(text_content) = &shape.shape_type { text_content.width() @@ -63,8 +96,6 @@ pub fn render( global_offset_y = group_offset_y; } } - - canvas.restore(); } fn draw_text_decorations( @@ -286,11 +317,11 @@ pub fn render_as_path( // let text_content = text_content.new_bounds(shape.selrect()); // let paths = text_content.get_paths(antialias); -// shadows::render_text_drop_shadows(self, &shape, &paths, antialias); +// shadows::render_text_shadows(self, &shape, &paths, antialias); // text::render(self, &paths, None, None); // for stroke in shape.visible_strokes().rev() { -// shadows::render_text_path_stroke_drop_shadows( +// shadows::render_text_path_stroke_shadows( // self, &shape, &paths, stroke, antialias, // ); // strokes::render_text_paths(self, &shape, stroke, &paths, None, None, antialias); diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index 8bdd9eaae8..4e39473d2b 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -573,6 +573,12 @@ impl Shape { .filter(|stroke| stroke.width > MIN_STROKE_WIDTH) } + pub fn has_visible_strokes(&self) -> bool { + self.strokes + .iter() + .any(|stroke| stroke.width > MIN_STROKE_WIDTH) + } + pub fn add_stroke(&mut self, s: Stroke) { self.invalidate_extrect(); self.strokes.push(s) @@ -984,6 +990,7 @@ impl Shape { } } + #[allow(dead_code)] pub fn mask_filter(&self, scale: f32) -> Option { if !self.blur.hidden { match self.blur.blur_type { @@ -1022,6 +1029,12 @@ impl Shape { .filter(|shadow| shadow.style() == ShadowStyle::Drop) } + pub fn drop_shadows_visible(&self) -> impl DoubleEndedIterator { + self.shadows + .iter() + .filter(|shadow| shadow.style() == ShadowStyle::Drop && !shadow.hidden()) + } + pub fn inner_shadows(&self) -> impl DoubleEndedIterator { self.shadows .iter() @@ -1162,11 +1175,6 @@ impl Shape { !self.fills.is_empty() } - #[allow(dead_code)] - pub fn has_visible_inner_strokes(&self) -> bool { - self.visible_strokes().any(|s| s.kind == StrokeKind::Inner) - } - pub fn count_visible_inner_strokes(&self) -> usize { self.visible_strokes() .filter(|s| s.kind == StrokeKind::Inner) @@ -1210,6 +1218,20 @@ impl Shape { } } + pub fn drop_shadow_paints(&self) -> Vec { + let drop_shadows: Vec<&crate::shapes::shadows::Shadow> = + self.drop_shadows().filter(|s| !s.hidden()).collect(); + drop_shadows + .into_iter() + .map(|shadow| { + let mut paint = skia_safe::Paint::default(); + let filter = shadow.get_drop_shadow_filter(); + paint.set_image_filter(filter); + paint + }) + .collect() + } + pub fn inner_shadow_paints(&self) -> Vec { let inner_shadows: Vec<&crate::shapes::shadows::Shadow> = self.inner_shadows().filter(|s| !s.hidden()).collect(); diff --git a/render-wasm/src/shapes/fills.rs b/render-wasm/src/shapes/fills.rs index 925fd25ddd..6a772527eb 100644 --- a/render-wasm/src/shapes/fills.rs +++ b/render-wasm/src/shapes/fills.rs @@ -255,7 +255,12 @@ pub fn merge_fills(fills: &[Fill], bounding_box: Rect) -> skia::Paint { fills_paint } -pub fn set_paint_fill(paint: &mut Paint, fill: &Fill, bounding_box: &Rect) { +pub fn set_paint_fill(paint: &mut Paint, fill: &Fill, bounding_box: &Rect, remove_alpha: bool) { + if remove_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + return; + } let shader = get_fill_shader(fill, bounding_box); if let Some(shader) = shader { paint.set_shader(shader); diff --git a/render-wasm/src/shapes/modifiers.rs b/render-wasm/src/shapes/modifiers.rs index a74f201c3e..7ba3b06628 100644 --- a/render-wasm/src/shapes/modifiers.rs +++ b/render-wasm/src/shapes/modifiers.rs @@ -200,7 +200,7 @@ fn propagate_transform( match content.grow_type() { GrowType::AutoHeight => { let paragraph_width = shape_bounds_after.width(); - let mut paragraphs = paragraph_builder_group_from_text(content, None, None, None); + let mut paragraphs = paragraph_builder_group_from_text(content, None); let height = auto_height(&mut paragraphs, paragraph_width); let resize_transform = math::resize_matrix( &shape_bounds_after, @@ -213,7 +213,7 @@ fn propagate_transform( } GrowType::AutoWidth => { let paragraph_width = content.width(); - let mut paragraphs = paragraph_builder_group_from_text(content, None, None, None); + let mut paragraphs = paragraph_builder_group_from_text(content, None); let height = auto_height(&mut paragraphs, paragraph_width); let resize_transform = math::resize_matrix( &shape_bounds_after, diff --git a/render-wasm/src/shapes/strokes.rs b/render-wasm/src/shapes/strokes.rs index e080a782c3..c69de1ffcb 100644 --- a/render-wasm/src/shapes/strokes.rs +++ b/render-wasm/src/shapes/strokes.rs @@ -264,4 +264,11 @@ impl Stroke { paint } + + pub fn is_transparent(&self) -> bool { + match &self.fill { + Fill::Solid(SolidColor(color)) => color.a() == 0, + _ => false, + } + } } diff --git a/render-wasm/src/shapes/text.rs b/render-wasm/src/shapes/text.rs index 35fb4b42a8..00584712e2 100644 --- a/render-wasm/src/shapes/text.rs +++ b/render-wasm/src/shapes/text.rs @@ -4,7 +4,11 @@ use crate::{ textlayout::paragraph_builder_group_from_text, }; -use skia_safe::{self as skia, paint::Paint, textlayout::ParagraphStyle, ImageFilter, MaskFilter}; +use skia_safe::{ + self as skia, + paint::{self, Paint}, + textlayout::ParagraphStyle, +}; use std::collections::HashSet; use super::FontFamily; @@ -86,7 +90,7 @@ impl TextContent { pub fn width(&self) -> f32 { if self.grow_type() == GrowType::AutoWidth { - let temp_paragraphs = paragraph_builder_group_from_text(self, None, None, None); + let temp_paragraphs = paragraph_builder_group_from_text(self, None); let mut temp_paragraphs = temp_paragraphs; auto_width(&mut temp_paragraphs, f32::MAX).ceil() } else { @@ -104,7 +108,7 @@ impl TextContent { pub fn visual_bounds(&self) -> (f32, f32) { let paragraph_width = self.width(); - let mut paragraphs = paragraph_builder_group_from_text(self, None, None, None); + let mut paragraphs = paragraph_builder_group_from_text(self, None); let paragraph_height = auto_height(&mut paragraphs, paragraph_width); (paragraph_width, paragraph_height) } @@ -308,26 +312,20 @@ impl TextLeaf { &self, content_bounds: &Rect, fallback_fonts: &HashSet, - _blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - shadow: Option<&Paint>, + remove_alpha: bool, ) -> skia::textlayout::TextStyle { let mut style = skia::textlayout::TextStyle::default(); - if shadow.is_some() { - let paint = shadow.unwrap().clone(); - style.set_foreground_paint(&paint); + let mut paint = paint::Paint::default(); + + if remove_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); } else { - let paint = merge_fills(&self.fills, *content_bounds); - style.set_foreground_paint(&paint); - } - - if let Some(blur_mask) = blur_mask { - let mut paint = skia::Paint::default(); - paint.set_mask_filter(blur_mask.clone()); - style.set_foreground_paint(&paint); + paint = merge_fills(&self.fills, *content_bounds); } + style.set_foreground_paint(&paint); style.set_font_size(self.font_size); style.set_letter_spacing(self.letter_spacing); style.set_half_leading(false); @@ -359,12 +357,20 @@ impl TextLeaf { &self, stroke_paint: &Paint, fallback_fonts: &HashSet, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - shadow: Option<&Paint>, + remove_alpha: bool, ) -> skia::textlayout::TextStyle { - let mut style = self.to_style(&Rect::default(), fallback_fonts, blur, blur_mask, shadow); - style.set_foreground_paint(stroke_paint); + let mut style = self.to_style(&Rect::default(), fallback_fonts, remove_alpha); + if remove_alpha { + let mut paint = skia::Paint::default(); + paint.set_style(stroke_paint.style()); + paint.set_stroke_width(stroke_paint.stroke_width()); + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + style.set_foreground_paint(&paint); + } else { + style.set_foreground_paint(stroke_paint); + } + style.set_font_size(self.font_size); style.set_letter_spacing(self.letter_spacing); style.set_decoration_type(match self.text_decoration { @@ -406,9 +412,6 @@ impl TextLeaf { } pub fn is_transparent(&self) -> bool { - if self.fills.is_empty() { - return true; - } self.fills.iter().all(|fill| match fill { shapes::Fill::Solid(shapes::SolidColor(color)) => color.a() == 0, _ => false, diff --git a/render-wasm/src/shapes/text_paths.rs b/render-wasm/src/shapes/text_paths.rs index 0cf874cdb2..35ba08563e 100644 --- a/render-wasm/src/shapes/text_paths.rs +++ b/render-wasm/src/shapes/text_paths.rs @@ -20,7 +20,7 @@ impl TextPaths { let mut paths = Vec::new(); let mut offset_y = self.bounds.y(); - let mut paragraphs = paragraph_builder_group_from_text(&self.0, None, None, None); + let mut paragraphs = paragraph_builder_group_from_text(&self.0, None); for paragraphs in paragraphs.iter_mut() { for paragraph_builder in paragraphs.iter_mut() { diff --git a/render-wasm/src/textlayout.rs b/render-wasm/src/textlayout.rs index fc69b4cc6e..d43779e772 100644 --- a/render-wasm/src/textlayout.rs +++ b/render-wasm/src/textlayout.rs @@ -1,7 +1,6 @@ -use skia_safe::{self as skia, textlayout::ParagraphBuilder, ImageFilter, MaskFilter, Paint, Rect}; +use skia_safe::{self as skia, textlayout::ParagraphBuilder, Paint, Rect}; use crate::{ - render::filters::compose_filters, shapes::{merge_fills, set_paint_fill, Stroke, StrokeKind, TextContent}, utils::{get_fallback_fonts, get_font_collection}, }; @@ -51,13 +50,11 @@ pub fn build_paragraphs_with_width( .collect() } -type ParagraphBuilderGroup = Vec; +pub type ParagraphBuilderGroup = Vec; pub fn paragraph_builder_group_from_text( text_content: &TextContent, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - shadow: Option<&Paint>, + use_shadow: Option, ) -> Vec { let fonts = get_font_collection(); let fallback_fonts = get_fallback_fonts(); @@ -67,13 +64,8 @@ pub fn paragraph_builder_group_from_text( let paragraph_style = paragraph.paragraph_to_style(); let mut builder = ParagraphBuilder::new(¶graph_style, fonts); for leaf in paragraph.children() { - let text_style = leaf.to_style( - &text_content.bounds(), - fallback_fonts, - blur, - blur_mask, - shadow, - ); + let remove_alpha = use_shadow.unwrap_or(false) && !leaf.is_transparent(); + let text_style = leaf.to_style(&text_content.bounds(), fallback_fonts, remove_alpha); let text = leaf.apply_text_transform(); builder.push_style(&text_style); builder.add_text(&text); @@ -88,43 +80,27 @@ pub fn stroke_paragraph_builder_group_from_text( text_content: &TextContent, stroke: &Stroke, bounds: &Rect, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - shadow: Option<&Paint>, count_inner_strokes: usize, + use_shadow: Option, ) -> Vec { let fallback_fonts = get_fallback_fonts(); let fonts = get_font_collection(); let mut paragraph_group = Vec::new(); + let remove_stroke_alpha = use_shadow.unwrap_or(false) && !stroke.is_transparent(); for paragraph in text_content.paragraphs() { let mut stroke_paragraphs_map: std::collections::HashMap = std::collections::HashMap::new(); for leaf in paragraph.children().iter() { - let mut text_paint = merge_fills(leaf.fills(), *bounds); - if let Some(blur_mask) = blur_mask { - text_paint.set_mask_filter(blur_mask.clone()); - } - - let stroke_paints = if shadow.is_some() { - get_text_stroke_paints_with_shadows( - stroke, - blur, - blur_mask, - shadow, - leaf.is_transparent(), - ) - } else { - get_text_stroke_paints( - stroke, - bounds, - &text_paint, - blur, - blur_mask, - count_inner_strokes, - ) - }; + let text_paint: skia_safe::Handle<_> = merge_fills(leaf.fills(), *bounds); + let stroke_paints = get_text_stroke_paints( + stroke, + bounds, + &text_paint, + count_inner_strokes, + remove_stroke_alpha, + ); let text: String = leaf.apply_text_transform(); @@ -134,8 +110,9 @@ pub fn stroke_paragraph_builder_group_from_text( ParagraphBuilder::new(¶graph_style, fonts) }); let stroke_paint = stroke_paint.clone(); + let remove_alpha = use_shadow.unwrap_or(false) && !leaf.is_transparent(); let stroke_style = - leaf.to_stroke_style(&stroke_paint, fallback_fonts, blur, blur_mask, None); + leaf.to_stroke_style(&stroke_paint, fallback_fonts, remove_alpha); builder.push_style(&stroke_style); builder.add_text(&text); } @@ -158,101 +135,12 @@ fn get_built_paragraphs( build_paragraphs_with_width(paragraphs, width) } -fn get_text_stroke_paints_with_shadows( - stroke: &Stroke, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, - shadow: Option<&Paint>, - is_transparent: bool, -) -> Vec { - let mut paints = Vec::new(); - - match stroke.kind { - StrokeKind::Inner => { - let mut paint = Paint::default(); - paint.set_style(skia::PaintStyle::Fill); - paint.set_anti_alias(true); - - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - - if let Some(shadow) = shadow { - paint.set_image_filter(shadow.image_filter()); - } - - paints.push(paint.clone()); - - if is_transparent { - let image_filter = skia_safe::image_filters::erode( - (stroke.width, stroke.width), - paint.image_filter(), - None, - ); - paint.set_image_filter(image_filter); - paint.set_blend_mode(skia::BlendMode::DstOut); - paints.push(paint.clone()); - } - } - StrokeKind::Center => { - let mut paint = skia_safe::Paint::default(); - paint.set_anti_alias(true); - paint.set_stroke_width(stroke.width); - - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - - if let Some(shadow) = shadow { - paint.set_image_filter(shadow.image_filter()); - } - - if is_transparent { - paint.set_style(skia::PaintStyle::Stroke); - } else { - paint.set_style(skia::PaintStyle::StrokeAndFill); - } - - paints.push(paint); - } - StrokeKind::Outer => { - let mut paint = skia_safe::Paint::default(); - paint.set_style(skia::PaintStyle::StrokeAndFill); - paint.set_anti_alias(true); - paint.set_stroke_width(stroke.width * 2.0); - - if let Some(blur_mask) = blur_mask { - paint.set_mask_filter(blur_mask.clone()); - } - - if let Some(shadow) = shadow { - paint.set_image_filter(shadow.image_filter()); - } - - paints.push(paint.clone()); - - if is_transparent { - let image_filter = skia_safe::image_filters::erode( - (stroke.width, stroke.width), - paint.image_filter(), - None, - ); - paint.set_image_filter(image_filter); - paint.set_blend_mode(skia::BlendMode::DstOut); - paints.push(paint.clone()); - } - } - } - paints -} - fn get_text_stroke_paints( stroke: &Stroke, bounds: &Rect, text_paint: &Paint, - blur: Option<&ImageFilter>, - blur_mask: Option<&MaskFilter>, count_inner_strokes: usize, + remove_stroke_alpha: bool, ) -> Vec { let mut paints = Vec::new(); @@ -269,34 +157,37 @@ fn get_text_stroke_paints( let mut paint = text_paint.clone(); paint.set_style(skia::PaintStyle::Fill); paint.set_anti_alias(true); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } paints.push(paint); + let mut paint = skia::Paint::default(); paint.set_style(skia::PaintStyle::Stroke); paint.set_blend_mode(skia::BlendMode::SrcIn); paint.set_anti_alias(true); paint.set_stroke_width(stroke.width * 2.0); - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); paints.push(paint); } else { - let mut paint = text_paint.clone(); + let mut paint = skia::Paint::default(); + if remove_stroke_alpha { + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); + } else { + paint = text_paint.clone(); + set_paint_fill(&mut paint, &stroke.fill, bounds, false); + } + paint.set_style(skia::PaintStyle::Fill); paint.set_anti_alias(false); - set_paint_fill(&mut paint, &stroke.fill, bounds); paints.push(paint); let mut paint = skia::Paint::default(); let image_filter = skia_safe::image_filters::erode((stroke.width, stroke.width), None, None); - let filter = compose_filters(blur, image_filter.as_ref()); - paint.set_image_filter(filter); + paint.set_image_filter(image_filter); paint.set_anti_alias(false); + paint.set_color(skia::Color::BLACK); + paint.set_alpha(255); paint.set_blend_mode(skia::BlendMode::DstOut); paints.push(paint); } @@ -306,12 +197,7 @@ fn get_text_stroke_paints( paint.set_style(skia::PaintStyle::Stroke); paint.set_anti_alias(true); paint.set_stroke_width(stroke.width); - - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur) = blur { - paint.set_image_filter(blur.clone()); - } - + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); paints.push(paint); } StrokeKind::Outer => { @@ -320,10 +206,7 @@ fn get_text_stroke_paints( paint.set_blend_mode(skia::BlendMode::DstOver); paint.set_anti_alias(true); paint.set_stroke_width(stroke.width * 2.0); - set_paint_fill(&mut paint, &stroke.fill, bounds); - if let Some(blur_mask) = blur_mask { - paint.set_mask_filter(blur_mask.clone()); - } + set_paint_fill(&mut paint, &stroke.fill, bounds, remove_stroke_alpha); paints.push(paint); let mut paint = skia::Paint::default(); diff --git a/render-wasm/src/wasm/text.rs b/render-wasm/src/wasm/text.rs index e6cd77ded5..2c791e4350 100644 --- a/render-wasm/src/wasm/text.rs +++ b/render-wasm/src/wasm/text.rs @@ -46,7 +46,7 @@ pub extern "C" fn get_text_dimensions() -> *mut u8 { if let Type::Text(content) = &shape.shape_type { // 1. Reset Paragraphs let paragraph_width = content.width(); - let mut paragraphs = paragraph_builder_group_from_text(content, None, None, None); + let mut paragraphs = paragraph_builder_group_from_text(content, None); let built_paragraphs = build_paragraphs_with_width(&mut paragraphs, paragraph_width); // 2. Max Width Calculation @@ -58,14 +58,12 @@ pub extern "C" fn get_text_dimensions() -> *mut u8 { // 3. Width and Height Calculation match content.grow_type() { GrowType::AutoHeight => { - let mut paragraph_height = - paragraph_builder_group_from_text(content, None, None, None); + let mut paragraph_height = paragraph_builder_group_from_text(content, None); height = auto_height(&mut paragraph_height, paragraph_width).ceil(); } GrowType::AutoWidth => { width = paragraph_width; - let mut paragraph_height = - paragraph_builder_group_from_text(content, None, None, None); + let mut paragraph_height = paragraph_builder_group_from_text(content, None); height = auto_height(&mut paragraph_height, paragraph_width).ceil(); } GrowType::Fixed => {}