penpot/frontend/playwright/data/text-editor/get-file-12325.json
Belén Albeza c99980327f
🐛 Resize fit-content flex boards while typing in v3 text editor (#12330)
* 🐛 Resize fit-content flex boards while typing in v3 text editor

Typing in an auto-width text did not resize its fit-content layout
parent until the editor closed. The v3 editor now previews the live
text size in the layout on each keystroke, also when the text sits
in a group.

* 🐛 Preview text layout when typing with a pending caret style

Both v3 editor commit paths share v3-update-editor-content.

* 🐛 Skip the layout preview for absolute texts

Absolute layout items do not affect their board.

* ⚡ Preview text layout only when the text size changes

Each preview propagates modifiers, so skip unchanged sizes.

* 🐛 Leave interactive render mode when the v3 editor closes

Finalize only ends it when it applies geometry.
2026-10-19 15:06:56 +02:00

728 lines
22 KiB
JSON

{
"~:features": {
"~#set": [
"fdata/path-data",
"plugins/runtime",
"design-tokens/v1",
"layout/grid",
"styles/v2",
"fdata/pointer-map",
"fdata/objects-map",
"components/v2",
"fdata/shape-data-type",
"text-editor/v2"
]
},
"~:team-id": "~u9e6e22b2-db76-81d6-8006-75d7cdbb8bad",
"~: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": "Bug 12325",
"~:revn": 3,
"~:modified-at": "~m1753957736516",
"~:vern": 0,
"~:id": "~u238a17e0-75ff-8075-8006-934586ea2230",
"~: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"
]
},
"~:version": 67,
"~:project-id": "~u9e6e22b2-db76-81d6-8006-75d7cdc30669",
"~:created-at": "~m1753957644225",
"~:data": {
"~:pages": ["~u238a17e0-75ff-8075-8006-934586ea2231"],
"~:pages-index": {
"~u238a17e0-75ff-8075-8006-934586ea2231": {
"~:objects": {
"~u00000000-0000-0000-0000-000000000000": {
"~#shape": {
"~:y": 0,
"~:hide-fill-on-export": false,
"~:transform": {
"~#matrix": {
"~:a": 1.0,
"~:b": 0.0,
"~:c": 0.0,
"~:d": 1.0,
"~:e": 0.0,
"~:f": 0.0
}
},
"~:rotation": 0,
"~:name": "Root Frame",
"~:width": 0.01,
"~:type": "~:frame",
"~:points": [
{
"~#point": {
"~:x": 0.0,
"~:y": 0.0
}
},
{
"~#point": {
"~:x": 0.01,
"~:y": 0.0
}
},
{
"~#point": {
"~:x": 0.01,
"~:y": 0.01
}
},
{
"~#point": {
"~:x": 0.0,
"~:y": 0.01
}
}
],
"~:r2": 0,
"~:proportion-lock": false,
"~:transform-inverse": {
"~#matrix": {
"~:a": 1.0,
"~:b": 0.0,
"~:c": 0.0,
"~:d": 1.0,
"~:e": 0.0,
"~:f": 0.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.0,
"~: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": [
"~uc0a701d6-7df9-80ac-8008-c9e6c5b7f7f4",
"~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2"
]
}
},
"~uc0a701d6-7df9-80ac-8008-c9e6c5b7f7f4": {
"~#shape": {
"~:id": "~uc0a701d6-7df9-80ac-8008-c9e6c5b7f7f4",
"~:name": "Text board",
"~:type": "~:frame",
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
"~:shapes": ["~uc0a701d6-7df9-80ac-8008-c9e6c47fbce4"],
"~:fills": [
{
"~:fill-color": "#B1B2B5",
"~:fill-opacity": 1
}
],
"~:strokes": [],
"~:hide-fill-on-export": false,
"~:show-content": true,
"~:proportion-lock": false,
"~:proportion": 1,
"~:r1": 0,
"~:r2": 0,
"~:r3": 0,
"~:r4": 0,
"~:layout": "~:flex",
"~:layout-flex-dir": "~:row",
"~:layout-wrap-type": "~:nowrap",
"~:layout-gap-type": "~:multiple",
"~:layout-gap": {
"~:row-gap": 0,
"~:column-gap": 0
},
"~:layout-padding-type": "~:simple",
"~:layout-padding": {
"~:p1": 0,
"~:p2": 0,
"~:p3": 0,
"~:p4": 0
},
"~:layout-align-items": "~:start",
"~:layout-justify-content": "~:start",
"~:layout-align-content": "~:stretch",
"~:layout-item-h-sizing": "~:auto",
"~:layout-item-v-sizing": "~:auto",
"~:x": 0,
"~:y": 0,
"~:width": 99.99999904632568,
"~:height": 17,
"~:transform": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:transform-inverse": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:rotation": 0,
"~:points": [
{
"~#point": {
"~:x": 0,
"~:y": 0
}
},
{
"~#point": {
"~:x": 99.99999904632568,
"~:y": 0
}
},
{
"~#point": {
"~:x": 99.99999904632568,
"~:y": 17
}
},
{
"~#point": {
"~:x": 0,
"~:y": 17
}
}
],
"~:selrect": {
"~#rect": {
"~:x": 0,
"~:y": 0,
"~:width": 99.99999904632568,
"~:height": 17,
"~:x1": 0,
"~:y1": 0,
"~:x2": 99.99999904632568,
"~:y2": 17
}
}
}
},
"~uc0a701d6-7df9-80ac-8008-c9e6c47fbce4": {
"~#shape": {
"~:id": "~uc0a701d6-7df9-80ac-8008-c9e6c47fbce4",
"~:name": "Hello wide world",
"~:type": "~:text",
"~:grow-type": "~:auto-width",
"~:parent-id": "~uc0a701d6-7df9-80ac-8008-c9e6c5b7f7f4",
"~:frame-id": "~uc0a701d6-7df9-80ac-8008-c9e6c5b7f7f4",
"~:content": {
"~:type": "root",
"~:children": [
{
"~:type": "paragraph-set",
"~:children": [
{
"~:type": "paragraph",
"~:children": [
{
"~:line-height": "1.2",
"~:font-style": "normal",
"~:typography-ref-id": null,
"~:text-transform": "none",
"~:text-align": "left",
"~:font-id": "sourcesanspro",
"~:font-size": "14",
"~:font-weight": "400",
"~:typography-ref-file": null,
"~:text-direction": "ltr",
"~:font-variant-id": "regular",
"~:text-decoration": "none",
"~:letter-spacing": "0",
"~:fills": [
{
"~:fill-color": "#000000",
"~:fill-opacity": 1
}
],
"~:font-family": "sourcesanspro",
"~:text": "Hello wide world"
}
]
}
]
}
]
},
"~:x": 0,
"~:y": 0,
"~:width": 99.99999904632568,
"~:height": 17,
"~:transform": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:transform-inverse": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:rotation": 0,
"~:points": [
{
"~#point": {
"~:x": 0,
"~:y": 0
}
},
{
"~#point": {
"~:x": 99.99999904632568,
"~:y": 0
}
},
{
"~#point": {
"~:x": 99.99999904632568,
"~:y": 17
}
},
{
"~#point": {
"~:x": 0,
"~:y": 17
}
}
],
"~:selrect": {
"~#rect": {
"~:x": 0,
"~:y": 0,
"~:width": 99.99999904632568,
"~:height": 17,
"~:x1": 0,
"~:y1": 0,
"~:x2": 99.99999904632568,
"~:y2": 17
}
}
}
},
"~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2": {
"~#shape": {
"~:id": "~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2",
"~:name": "Group board",
"~:type": "~:frame",
"~:parent-id": "~u00000000-0000-0000-0000-000000000000",
"~:frame-id": "~u00000000-0000-0000-0000-000000000000",
"~:shapes": ["~uc0a701d6-7df9-80ac-8008-c9e6ca7a304a"],
"~:fills": [
{
"~:fill-color": "#B1B2B5",
"~:fill-opacity": 1
}
],
"~:strokes": [],
"~:hide-fill-on-export": false,
"~:show-content": true,
"~:proportion-lock": false,
"~:proportion": 1,
"~:r1": 0,
"~:r2": 0,
"~:r3": 0,
"~:r4": 0,
"~:layout": "~:flex",
"~:layout-flex-dir": "~:row",
"~:layout-wrap-type": "~:nowrap",
"~:layout-gap-type": "~:multiple",
"~:layout-gap": {
"~:row-gap": 0,
"~:column-gap": 0
},
"~:layout-padding-type": "~:simple",
"~:layout-padding": {
"~:p1": 0,
"~:p2": 0,
"~:p3": 0,
"~:p4": 0
},
"~:layout-align-items": "~:start",
"~:layout-justify-content": "~:start",
"~:layout-align-content": "~:stretch",
"~:layout-item-h-sizing": "~:auto",
"~:layout-item-v-sizing": "~:auto",
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:transform": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:transform-inverse": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:rotation": 0,
"~:points": [
{
"~#point": {
"~:x": 0,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 117
}
},
{
"~#point": {
"~:x": 0,
"~:y": 117
}
}
],
"~:selrect": {
"~#rect": {
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:x1": 0,
"~:y1": 100,
"~:x2": 120.99999821186066,
"~:y2": 117
}
}
}
},
"~uc0a701d6-7df9-80ac-8008-c9e6ca7a304a": {
"~#shape": {
"~:id": "~uc0a701d6-7df9-80ac-8008-c9e6ca7a304a",
"~:name": "Group",
"~:type": "~:group",
"~:parent-id": "~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2",
"~:frame-id": "~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2",
"~:shapes": ["~uc0a701d6-7df9-80ac-8008-c9e6c781a50f"],
"~:fills": [],
"~:strokes": [],
"~:proportion-lock": false,
"~:proportion": 1,
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:transform": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:transform-inverse": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:rotation": 0,
"~:points": [
{
"~#point": {
"~:x": 0,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 117
}
},
{
"~#point": {
"~:x": 0,
"~:y": 117
}
}
],
"~:selrect": {
"~#rect": {
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:x1": 0,
"~:y1": 100,
"~:x2": 120.99999821186066,
"~:y2": 117
}
}
}
},
"~uc0a701d6-7df9-80ac-8008-c9e6c781a50f": {
"~#shape": {
"~:id": "~uc0a701d6-7df9-80ac-8008-c9e6c781a50f",
"~:name": "Hello grouped world",
"~:type": "~:text",
"~:grow-type": "~:auto-width",
"~:parent-id": "~uc0a701d6-7df9-80ac-8008-c9e6ca7a304a",
"~:frame-id": "~uc0a701d6-7df9-80ac-8008-c9e6c8b2a9e2",
"~:content": {
"~:type": "root",
"~:children": [
{
"~:type": "paragraph-set",
"~:children": [
{
"~:type": "paragraph",
"~:children": [
{
"~:line-height": "1.2",
"~:font-style": "normal",
"~:typography-ref-id": null,
"~:text-transform": "none",
"~:text-align": "left",
"~:font-id": "sourcesanspro",
"~:font-size": "14",
"~:font-weight": "400",
"~:typography-ref-file": null,
"~:text-direction": "ltr",
"~:font-variant-id": "regular",
"~:text-decoration": "none",
"~:letter-spacing": "0",
"~:fills": [
{
"~:fill-color": "#000000",
"~:fill-opacity": 1
}
],
"~:font-family": "sourcesanspro",
"~:text": "Hello grouped world"
}
]
}
]
}
]
},
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:transform": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:transform-inverse": {
"~#matrix": {
"~:a": 1,
"~:b": 0,
"~:c": 0,
"~:d": 1,
"~:e": 0,
"~:f": 0
}
},
"~:rotation": 0,
"~:points": [
{
"~#point": {
"~:x": 0,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 100
}
},
{
"~#point": {
"~:x": 120.99999821186066,
"~:y": 117
}
},
{
"~#point": {
"~:x": 0,
"~:y": 117
}
}
],
"~:selrect": {
"~#rect": {
"~:x": 0,
"~:y": 100,
"~:width": 120.99999821186066,
"~:height": 17,
"~:x1": 0,
"~:y1": 100,
"~:x2": 120.99999821186066,
"~:y2": 117
}
}
}
}
},
"~:id": "~u238a17e0-75ff-8075-8006-934586ea2231",
"~:name": "Page 1"
}
},
"~:id": "~u238a17e0-75ff-8075-8006-934586ea2230",
"~:options": {
"~:components-v2": true,
"~:base-font-size": "16px"
}
}
}