Tldraw/packages/tlschema/api/api.json

9761 wiersze
312 KiB
JSON
Czysty Zwykły widok Historia

{
"metadata": {
"toolPackage": "@microsoft/api-extractor",
"toolVersion": "7.41.0",
"schemaVersion": 1011,
"oldestForwardsCompatibleVersion": 1001,
"tsdocConfig": {
"$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
"noStandardTags": true,
"tagDefinitions": [
{
"tagName": "@alpha",
"syntaxKind": "modifier"
},
{
"tagName": "@beta",
"syntaxKind": "modifier"
},
{
"tagName": "@defaultValue",
"syntaxKind": "block"
},
{
"tagName": "@decorator",
"syntaxKind": "block",
"allowMultiple": true
},
{
"tagName": "@deprecated",
"syntaxKind": "block"
},
{
"tagName": "@eventProperty",
"syntaxKind": "modifier"
},
{
"tagName": "@example",
"syntaxKind": "block",
"allowMultiple": true
},
{
"tagName": "@experimental",
"syntaxKind": "modifier"
},
{
"tagName": "@inheritDoc",
"syntaxKind": "inline"
},
{
"tagName": "@internal",
"syntaxKind": "modifier"
},
{
"tagName": "@label",
"syntaxKind": "inline"
},
{
"tagName": "@link",
"syntaxKind": "inline",
"allowMultiple": true
},
{
"tagName": "@override",
"syntaxKind": "modifier"
},
{
"tagName": "@packageDocumentation",
"syntaxKind": "modifier"
},
{
"tagName": "@param",
"syntaxKind": "block",
"allowMultiple": true
},
{
"tagName": "@privateRemarks",
"syntaxKind": "block"
},
{
"tagName": "@public",
"syntaxKind": "modifier"
},
{
"tagName": "@readonly",
"syntaxKind": "modifier"
},
{
"tagName": "@remarks",
"syntaxKind": "block"
},
{
"tagName": "@returns",
"syntaxKind": "block"
},
{
"tagName": "@sealed",
"syntaxKind": "modifier"
},
{
"tagName": "@see",
"syntaxKind": "block"
},
{
"tagName": "@throws",
"syntaxKind": "block",
"allowMultiple": true
},
{
"tagName": "@typeParam",
"syntaxKind": "block",
"allowMultiple": true
},
{
"tagName": "@virtual",
"syntaxKind": "modifier"
},
{
"tagName": "@betaDocumentation",
"syntaxKind": "modifier"
},
{
"tagName": "@internalRemarks",
"syntaxKind": "block"
},
{
"tagName": "@preapproved",
"syntaxKind": "modifier"
}
],
"supportForTags": {
"@alpha": true,
"@beta": true,
"@defaultValue": true,
"@decorator": true,
"@deprecated": true,
"@eventProperty": true,
"@example": true,
"@experimental": true,
"@inheritDoc": true,
"@internal": true,
"@label": true,
"@link": true,
"@override": true,
"@packageDocumentation": true,
"@param": true,
"@privateRemarks": true,
"@public": true,
"@readonly": true,
"@remarks": true,
"@returns": true,
"@sealed": true,
"@see": true,
"@throws": true,
"@typeParam": true,
"@virtual": true,
"@betaDocumentation": true,
"@internalRemarks": true,
"@preapproved": true
},
"reportUnsupportedHtmlElements": false
}
},
"kind": "Package",
"canonicalReference": "@tldraw/tlschema!",
"docComment": "",
"name": "@tldraw/tlschema",
"preserveMemberOrder": false,
"members": [
{
"kind": "EntryPoint",
"canonicalReference": "@tldraw/tlschema!",
"name": "",
"preserveMemberOrder": false,
"members": [
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!ArrowShapeArrowheadEndStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "ArrowShapeArrowheadEndStyle: "
},
{
"kind": "Content",
"text": "import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow\" | \"bar\" | \"diamond\" | \"dot\" | \"inverted\" | \"none\" | \"pipe\" | \"square\" | \"triangle\">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "ArrowShapeArrowheadEndStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!ArrowShapeArrowheadStartStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "ArrowShapeArrowheadStartStyle: "
},
{
"kind": "Content",
"text": "import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow\" | \"bar\" | \"diamond\" | \"dot\" | \"inverted\" | \"none\" | \"pipe\" | \"square\" | \"triangle\">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "ArrowShapeArrowheadStartStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!arrowShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "arrowShapeProps: "
},
{
"kind": "Content",
"text": "{\n labelColor: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n color: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n fill: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"none\" | \"pattern\" | \"semi\" | \"solid\">;\n dash: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"dashed\" | \"dotted\" | \"draw\" | \"solid\">;\n size: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n arrowheadStart: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow\" | \"bar\" | \"diamond\" | \"dot\" | \"inverted\" | \"none\" | \"pipe\" | \"square\" | \"triangle\">;\n arrowheadEnd: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow\" | \"bar\" | \"diamond\" | \"dot\" | \"inverted\" | \"none\" | \"pipe\" | \"square\" | \"triangle\">;\n font: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"draw\" | \"mono\" | \"sans\" | \"serif\">;\n start: "
},
{
"kind": "Reference",
"text": "T.UnionValidator",
"canonicalReference": "@tldraw/validate!UnionValidator:class"
},
{
"kind": "Content",
"text": "<\"type\", {\n binding: "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
"text": "<{\n type: \"binding\";\n boundShapeId: import(\"..\")."
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";\n normalizedAnchor: import(\"../misc/geometry-types\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": ";\n isExact: boolean;\n isPrecise: boolean;\n } & {}>;\n point: "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<{\n x: number;\n y: number;\n type: \"point\";\n } & {}>;\n }, never>;\n end: "
},
{
"kind": "Reference",
"text": "T.UnionValidator",
"canonicalReference": "@tldraw/validate!UnionValidator:class"
},
{
"kind": "Content",
"text": "<\"type\", {\n binding: "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
"text": "<{\n type: \"binding\";\n boundShapeId: import(\"..\")."
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";\n normalizedAnchor: import(\"../misc/geometry-types\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": ";\n isExact: boolean;\n isPrecise: boolean;\n } & {}>;\n point: "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<{\n x: number;\n y: number;\n type: \"point\";\n } & {}>;\n }, never>;\n bend: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n text: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
arrows: add ability to change label placement (#2557) This adds the ability to drag the label on an arrow to a different location within the line segment/arc. https://github.com/tldraw/tldraw/assets/469604/dbd2ee35-bebc-48d6-b8ee-fcf12ce91fa5 - A lot of the complexity lay in ensuring a fixed distance from the ends of the arrowheads. - I added a new type of handle `text-adjust` that makes the text box the very handle itself. - I added a `ARROW_HANDLES` enum - we should use more enums! - The bulk of the changes are in ArrowShapeUtil — check that out in particular obviously :) Along the way, I tried to improve a couple spots as I touched them: - added some more documentation to Vec.ts because some of the functions in there were obscure/new to me. (at least the naming, hah) - added `getPointOnCircle` which was being done in a couple places independently and refactored those places. ### Questions - the `getPointOnCircle` API changed. Is this considered breaking and/or should I leave the signature the same? Wasn't sure if it was a big deal or not. - I made `labelPosition` in the schema always but I guess it could have been optional? Lemme know if there's a preference. - Any feedback on tests? Happy to expand those if necessary. ### Change Type - [ ] `patch` — Bug fix - [x] `minor` — New feature - [ ] `major` — Breaking change - [ ] `dependencies` — Changes to package dependencies[^1] - [ ] `documentation` — Changes to the documentation only[^2] - [ ] `tests` — Changes to any test code only[^2] - [ ] `internal` — Any other changes that don't affect the published package[^2] - [ ] I don't know [^1]: publishes a `patch` release, for devDependencies use `internal` [^2]: will not publish a new version ### Test Plan 1. For arrow in [straightArrow, curvedArrow] test the following: a. Label in the middle b. Label at both ends of the arrow c. Test arrows in different directions d. Rotating the endpoints and seeing that the label stays at the end of the arrow at a fixed width. e. Test different stroke widths. f. Test with different arrowheads. 2. Also, test arcs that are more circle like than arc-like. - [x] Unit Tests - [ ] End to end tests ### Release Notes - Adds ability to change label position on arrows. --------- Co-authored-by: Steve Ruiz <steveruizok@gmail.com> Co-authored-by: alex <alex@dytry.ch>
2024-01-24 10:19:20 +00:00
"text": "<string>;\n labelPosition: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "arrowShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
arrows: add ability to change label placement (#2557) This adds the ability to drag the label on an arrow to a different location within the line segment/arc. https://github.com/tldraw/tldraw/assets/469604/dbd2ee35-bebc-48d6-b8ee-fcf12ce91fa5 - A lot of the complexity lay in ensuring a fixed distance from the ends of the arrowheads. - I added a new type of handle `text-adjust` that makes the text box the very handle itself. - I added a `ARROW_HANDLES` enum - we should use more enums! - The bulk of the changes are in ArrowShapeUtil — check that out in particular obviously :) Along the way, I tried to improve a couple spots as I touched them: - added some more documentation to Vec.ts because some of the functions in there were obscure/new to me. (at least the naming, hah) - added `getPointOnCircle` which was being done in a couple places independently and refactored those places. ### Questions - the `getPointOnCircle` API changed. Is this considered breaking and/or should I leave the signature the same? Wasn't sure if it was a big deal or not. - I made `labelPosition` in the schema always but I guess it could have been optional? Lemme know if there's a preference. - Any feedback on tests? Happy to expand those if necessary. ### Change Type - [ ] `patch` — Bug fix - [x] `minor` — New feature - [ ] `major` — Breaking change - [ ] `dependencies` — Changes to package dependencies[^1] - [ ] `documentation` — Changes to the documentation only[^2] - [ ] `tests` — Changes to any test code only[^2] - [ ] `internal` — Any other changes that don't affect the published package[^2] - [ ] I don't know [^1]: publishes a `patch` release, for devDependencies use `internal` [^2]: will not publish a new version ### Test Plan 1. For arrow in [straightArrow, curvedArrow] test the following: a. Label in the middle b. Label at both ends of the arrow c. Test arrows in different directions d. Rotating the endpoints and seeing that the label stays at the end of the arrow at a fixed width. e. Test different stroke widths. f. Test with different arrowheads. 2. Also, test arcs that are more circle like than arc-like. - [x] Unit Tests - [ ] End to end tests ### Release Notes - Adds ability to change label position on arrows. --------- Co-authored-by: Steve Ruiz <steveruizok@gmail.com> Co-authored-by: alex <alex@dytry.ch>
2024-01-24 10:19:20 +00:00
"endIndex": 44
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!assetIdValidator:var",
"docComment": "/**\n * A validator for asset record type Ids.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "assetIdValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLBaseAsset.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "assetIdValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!AssetRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "AssetRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLAsset",
"canonicalReference": "@tldraw/tlschema!TLAsset:type"
},
{
"kind": "Content",
"text": ", \"props\" | \"type\">"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLAsset.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "AssetRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!bookmarkShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "bookmarkShapeProps: "
},
{
"kind": "Content",
"text": "{\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n assetId: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<import(\"..\")."
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": " | null>;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBookmarkShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "bookmarkShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 12
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface",
"docComment": "/**\n * A serializable model for 2D boxes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface BoxModel "
}
],
"fileUrlPath": "packages/tlschema/src/misc/geometry-types.ts",
"releaseTag": "Public",
"name": "BoxModel",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!BoxModel#h:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "h: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "h",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!BoxModel#w:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "w: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "w",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!BoxModel#x:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "x: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "x",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!BoxModel#y:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "y: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "y",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": []
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!boxModelValidator:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "boxModelValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/misc/geometry-types.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "boxModelValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!CameraRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "CameraRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLCamera",
"canonicalReference": "@tldraw/tlschema!TLCamera:interface"
},
{
"kind": "Content",
"text": ", never>"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLCamera.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "CameraRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!canvasUiColorTypeValidator:var",
"docComment": "/**\n * A validator for the colors used by tldraw's default shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "canvasUiColorTypeValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<\"accent\" | \"black\" | \"laser\" | \"muted-1\" | \"selection-fill\" | \"selection-stroke\" | \"white\">"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLColor.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "canvasUiColorTypeValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!createAssetValidator:function(1)",
"docComment": "/**\n * Create a validator for an asset record type.\n *\n * @param type - The type of the asset\n *\n * @param props - The validator for the asset's props\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function createAssetValidator<Type extends "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", Props extends "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ">(type: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ", props: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<Props>"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
"text": "<{ [P in \"id\" | \"meta\" | \"typeName\" | (undefined extends Props ? never : \"props\") | (undefined extends Type ? never : \"type\")]: {\n id: "
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ";\n typeName: 'asset';\n type: Type;\n props: Props;\n meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";\n}[P]; } & { [P_1 in (undefined extends Props ? \"props\" : never) | (undefined extends Type ? \"type\" : never)]?: {\n id: "
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ";\n typeName: 'asset';\n type: Type;\n props: Props;\n meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";\n}[P_1] | undefined; }>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLBaseAsset.ts",
"returnTypeTokenRange": {
"startIndex": 10,
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"endIndex": 20
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "type",
"parameterTypeTokenRange": {
"startIndex": 5,
"endIndex": 6
},
"isOptional": false
},
{
"parameterName": "props",
"parameterTypeTokenRange": {
"startIndex": 7,
"endIndex": 9
},
"isOptional": false
}
],
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
},
{
"typeParameterName": "Props",
"constraintTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"name": "createAssetValidator"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!createPresenceStateDerivation:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "createPresenceStateDerivation: ($user: "
},
{
"kind": "Reference",
"text": "Signal",
"canonicalReference": "@tldraw/state!Signal:interface"
},
{
"kind": "Content",
"text": "<{\n id: string;\n color: string;\n name: string;\n}>"
},
{
"kind": "Content",
"text": ", instanceId?: "
},
{
"kind": "Reference",
"text": "TLInstancePresence",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence:interface"
},
{
"kind": "Content",
"text": "['id']"
},
{
"kind": "Content",
"text": ") => "
},
{
"kind": "Content",
"text": "(store: "
},
{
"kind": "Reference",
"text": "TLStore",
"canonicalReference": "@tldraw/tlschema!TLStore:type"
},
{
"kind": "Content",
"text": ") => "
},
{
"kind": "Reference",
"text": "Signal",
"canonicalReference": "@tldraw/state!Signal:interface"
},
{
"kind": "Content",
"text": "<null | "
},
{
"kind": "Reference",
"text": "TLInstancePresence",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence:interface"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/createPresenceStateDerivation.ts",
"returnTypeTokenRange": {
"startIndex": 7,
"endIndex": 14
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "$user",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"isOptional": false
},
{
"parameterName": "instanceId",
"parameterTypeTokenRange": {
"startIndex": 4,
"endIndex": 6
},
"isOptional": true
}
],
"name": "createPresenceStateDerivation"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!createShapeId:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function createShapeId(id?: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "id",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": true
}
],
"name": "createShapeId"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!createShapeValidator:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function createShapeValidator<Type extends "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", Props extends "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ", Meta extends "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ">(type: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ", props?: "
},
{
"kind": "Content",
"text": "{\n [K in keyof Props]: "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Props[K]>;\n}"
},
{
"kind": "Content",
"text": ", meta?: "
},
{
"kind": "Content",
"text": "{\n [K in keyof Meta]: "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Meta[K]>;\n}"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "T.ObjectValidator",
"canonicalReference": "@tldraw/validate!ObjectValidator:class"
},
{
"kind": "Content",
"text": "<{ [P in \"id\" | \"index\" | \"isLocked\" | \"meta\" | \"opacity\" | \"parentId\" | \"rotation\" | \"typeName\" | \"x\" | \"y\" | (undefined extends Props ? never : \"props\") | (undefined extends Type ? never : \"type\")]: "
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<Type, Props>[P]; } & { [P_1 in (undefined extends Props ? \"props\" : never) | (undefined extends Type ? \"type\" : never)]?: "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<Type, Props>[P_1] | undefined; }>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBaseShape.ts",
"returnTypeTokenRange": {
"startIndex": 17,
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"endIndex": 23
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "type",
"parameterTypeTokenRange": {
"startIndex": 7,
"endIndex": 8
},
"isOptional": false
},
{
"parameterName": "props",
"parameterTypeTokenRange": {
"startIndex": 9,
"endIndex": 12
},
"isOptional": true
},
{
"parameterName": "meta",
"parameterTypeTokenRange": {
"startIndex": 13,
"endIndex": 16
},
"isOptional": true
}
],
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
},
{
"typeParameterName": "Props",
"constraintTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
},
{
"typeParameterName": "Meta",
"constraintTokenRange": {
"startIndex": 5,
"endIndex": 6
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"name": "createShapeValidator"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!createTLSchema:function(1)",
"docComment": "/**\n * Create a TLSchema with custom shapes. Custom shapes cannot override default shapes.\n *\n * @param opts - Options\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function createTLSchema({ shapes, }?: "
},
{
"kind": "Content",
"text": "{\n shapes?: "
},
{
"kind": "Reference",
"text": "Record",
"canonicalReference": "!Record:type"
},
{
"kind": "Content",
"text": "<string, "
},
{
"kind": "Reference",
"text": "SchemaShapeInfo",
"canonicalReference": "@tldraw/tlschema!SchemaShapeInfo:type"
},
{
"kind": "Content",
"text": ">;\n}"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "TLSchema",
"canonicalReference": "@tldraw/tlschema!TLSchema:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/createTLSchema.ts",
"returnTypeTokenRange": {
"startIndex": 7,
"endIndex": 8
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "{ shapes, }",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
},
"isOptional": true
}
],
"name": "createTLSchema"
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultColorStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultColorStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultColorStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultColorThemePalette:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultColorThemePalette: "
},
{
"kind": "Content",
"text": "{\n lightMode: "
},
{
"kind": "Reference",
"text": "TLDefaultColorTheme",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorTheme:type"
},
{
"kind": "Content",
"text": ";\n darkMode: "
},
{
"kind": "Reference",
"text": "TLDefaultColorTheme",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorTheme:type"
},
{
"kind": "Content",
"text": ";\n}"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultColorThemePalette",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultDashStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultDashStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"dashed\" | \"dotted\" | \"draw\" | \"solid\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLDashStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultDashStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultFillStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultFillStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"none\" | \"pattern\" | \"semi\" | \"solid\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLFillStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultFillStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultFontFamilies:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultFontFamilies: "
},
{
"kind": "Content",
"text": "{\n draw: string;\n sans: string;\n serif: string;\n mono: string;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLFontStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultFontFamilies",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultFontStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultFontStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"draw\" | \"mono\" | \"sans\" | \"serif\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLFontStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultFontStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultHorizontalAlignStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultHorizontalAlignStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end-legacy\" | \"end\" | \"middle-legacy\" | \"middle\" | \"start-legacy\" | \"start\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLHorizontalAlignStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultHorizontalAlignStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultSizeStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultSizeStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLSizeStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultSizeStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DefaultVerticalAlignStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DefaultVerticalAlignStyle: "
},
{
"kind": "Content",
"text": "import(\"./StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end\" | \"middle\" | \"start\">"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLVerticalAlignStyle.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DefaultVerticalAlignStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!DocumentRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "DocumentRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLDocument",
"canonicalReference": "@tldraw/tlschema!TLDocument:interface"
},
{
"kind": "Content",
"text": ", never>"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLDocument.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "DocumentRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!drawShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "drawShapeProps: "
},
{
"kind": "Content",
"text": "{\n color: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n fill: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"none\" | \"pattern\" | \"semi\" | \"solid\">;\n dash: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"dashed\" | \"dotted\" | \"draw\" | \"solid\">;\n size: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n segments: "
},
{
"kind": "Reference",
"text": "T.ArrayOfValidator",
"canonicalReference": "@tldraw/validate!ArrayOfValidator:class"
},
{
"kind": "Content",
"text": "<{\n type: \"free\" | \"straight\";\n points: import(\"../misc/geometry-types\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "[];\n } & {}>;\n isComplete: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n isClosed: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n isPen: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLDrawShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "drawShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 20
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!EMBED_DEFINITIONS:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "EMBED_DEFINITIONS: "
},
{
"kind": "Content",
"text": "readonly [{\n readonly type: \"tldraw\";\n readonly title: \"tldraw\";\n readonly hostnames: readonly [\"beta.tldraw.com\", \"tldraw.com\", \"localhost:3000\"];\n readonly minWidth: 300;\n readonly minHeight: 300;\n readonly width: 720;\n readonly height: 500;\n readonly doesResize: true;\n readonly overridePermissions: {\n readonly 'allow-top-navigation': true;\n };\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"figma\";\n readonly title: \"Figma\";\n readonly hostnames: readonly [\"figma.com\"];\n readonly width: 720;\n readonly height: 500;\n readonly doesResize: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"google_maps\";\n readonly title: \"Google Maps\";\n readonly hostnames: readonly [\"google.*\"];\n readonly width: 720;\n readonly height: 500;\n readonly doesResize: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"val_town\";\n readonly title: \"Val Town\";\n readonly hostnames: readonly [\"val.town\"];\n readonly minWidth: 260;\n readonly minHeight: 100;\n readonly width: 720;\n readonly height: 500;\n readonly doesResize: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"codesandbox\";\n readonly title: \"CodeSandbox\";\n readonly hostnames: readonly [\"codesandbox.io\"];\n readonly minWidth: 300;\n readonly minHeight: 300;\n readonly width: 720;\n readonly height: 500;\n readonly doesResize: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"codepen\";\n readonly title: \"Codepen\";\n readonly hostnames: readonly [\"codepen.io\"];\n readonly minWidth: 300;\n readonly minHeight: 300;\n readonly width: 520;\n readonly height: 400;\n readonly doesResize: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"scratch\";\n readonly title: \"Scratch\";\n readonly hostnames: readonly [\"scratch.mit.edu\"];\n readonly width: 520;\n readonly height: 400;\n readonly doesResize: false;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"youtube\";\n readonly title: \"YouTube\";\n readonly hostnames: readonly [\"*.youtube.com\", \"youtube.com\", \"youtu.be\"];\n readonly width: 800;\n readonly height: 450;\n readonly doesResize: true;\n readonly overridePermissions: {\n readonly 'allow-presentation': true;\n };\n readonly isAspectRatioLocked: true;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"google_calendar\";\n readonly title: \"Google Calendar\";\n readonly hostnames: readonly [\"calendar.google.*\"];\n readonly width: 720;\n readonly height: 500;\n readonly minWidth: 460;\n readonly minHeight: 360;\n readonly doesResize: true;\n readonly instructionLink: \"https://support.google.com/calendar/answer/41207?hl=en\";\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}, {\n readonly type: \"google_slides\";\n readonly title: \"Google Slides\";\n readonly hostnames: readonly [\"docs.google.*\"];\n readonly width: 720;\n readonly height: 500;\n readonly minWidth: 460;\n readonly minHeight: 360;\n readonly doesResize: true;\n readonly
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "EMBED_DEFINITIONS",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!EmbedDefinition:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type EmbedDefinition = "
},
{
"kind": "Content",
"text": "{\n readonly type: string;\n readonly title: string;\n readonly hostnames: readonly string[];\n readonly minWidth?: number;\n readonly minHeight?: number;\n readonly width: number;\n readonly height: number;\n readonly doesResize: boolean;\n readonly isAspectRatioLocked?: boolean;\n readonly overridePermissions?: "
},
{
"kind": "Reference",
"text": "TLEmbedShapePermissions",
"canonicalReference": "@tldraw/tlschema!TLEmbedShapePermissions:type"
},
{
"kind": "Content",
"text": ";\n readonly instructionLink?: string;\n readonly backgroundColor?: string;\n readonly overrideOutlineRadius?: number;\n readonly toEmbedUrl: (url: string) => string | undefined;\n readonly fromEmbedUrl: (url: string) => string | undefined;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"releaseTag": "Public",
"name": "EmbedDefinition",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!embedShapePermissionDefaults:var",
"docComment": "/**\n * Permissions with note inline from https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "embedShapePermissionDefaults: "
},
{
"kind": "Content",
"text": "{\n readonly 'allow-downloads-without-user-activation': false;\n readonly 'allow-downloads': false;\n readonly 'allow-modals': false;\n readonly 'allow-orientation-lock': false;\n readonly 'allow-pointer-lock': false;\n readonly 'allow-popups': true;\n readonly 'allow-popups-to-escape-sandbox': false;\n readonly 'allow-presentation': false;\n readonly 'allow-storage-access-by-user-activation': false;\n readonly 'allow-top-navigation': false;\n readonly 'allow-top-navigation-by-user-activation': false;\n readonly 'allow-scripts': true;\n readonly 'allow-same-origin': true;\n readonly 'allow-forms': true;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "embedShapePermissionDefaults",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!embedShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "embedShapeProps: "
},
{
"kind": "Content",
"text": "{\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "embedShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 8
}
},
{
"kind": "Class",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class",
"docComment": "/**\n * See {@link StyleProp} & {@link StyleProp.defineEnum}\n *\n * @remarks\n *\n * The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `EnumStyleProp` class.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare class EnumStyleProp<T> extends "
},
{
"kind": "Reference",
"text": "StyleProp",
"canonicalReference": "@tldraw/tlschema!StyleProp:class"
},
{
"kind": "Content",
"text": "<T>"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/styles/StyleProp.ts",
"releaseTag": "Public",
"typeParameters": [
{
"typeParameterName": "T",
"constraintTokenRange": {
"startIndex": 0,
"endIndex": 0
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"isAbstract": false,
"name": "EnumStyleProp",
"preserveMemberOrder": false,
"members": [
{
"kind": "Property",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp#values:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "readonly values: "
},
{
"kind": "Content",
"text": "readonly T[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": true,
"isOptional": false,
"releaseTag": "Public",
"name": "values",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isStatic": false,
"isProtected": false,
"isAbstract": false
}
],
"extendsTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"implementsTokenRanges": []
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!frameShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "frameShapeProps: "
},
{
"kind": "Content",
"text": "{\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n name: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLFrameShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "frameShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 8
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!GeoShapeGeoStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "GeoShapeGeoStyle: "
},
{
"kind": "Content",
"text": "import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow-down\" | \"arrow-left\" | \"arrow-right\" | \"arrow-up\" | \"check-box\" | \"cloud\" | \"diamond\" | \"ellipse\" | \"hexagon\" | \"octagon\" | \"oval\" | \"pentagon\" | \"rectangle\" | \"rhombus-2\" | \"rhombus\" | \"star\" | \"trapezoid\" | \"triangle\" | \"x-box\">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLGeoShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "GeoShapeGeoStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!geoShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "geoShapeProps: "
},
{
"kind": "Content",
"text": "{\n geo: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"arrow-down\" | \"arrow-left\" | \"arrow-right\" | \"arrow-up\" | \"check-box\" | \"cloud\" | \"diamond\" | \"ellipse\" | \"hexagon\" | \"octagon\" | \"oval\" | \"pentagon\" | \"rectangle\" | \"rhombus-2\" | \"rhombus\" | \"star\" | \"trapezoid\" | \"triangle\" | \"x-box\">;\n labelColor: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n color: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n fill: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"none\" | \"pattern\" | \"semi\" | \"solid\">;\n dash: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"dashed\" | \"dotted\" | \"draw\" | \"solid\">;\n size: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n font: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"draw\" | \"mono\" | \"sans\" | \"serif\">;\n align: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end-legacy\" | \"end\" | \"middle-legacy\" | \"middle\" | \"start-legacy\" | \"start\">;\n verticalAlign: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end\" | \"middle\" | \"start\">;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n growY: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n text: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLGeoShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "geoShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 30
}
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!getDefaultColorTheme:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function getDefaultColorTheme(opts: "
},
{
"kind": "Content",
"text": "{\n isDarkMode: boolean;\n}"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "TLDefaultColorTheme",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorTheme:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "opts",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": false
}
],
"name": "getDefaultColorTheme"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!getDefaultTranslationLocale:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function getDefaultTranslationLocale(): "
},
{
"kind": "Reference",
"text": "TLLanguage",
"canonicalReference": "@tldraw/tlschema!TLLanguage:type"
},
{
"kind": "Content",
"text": "['locale']"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/translations/translations.ts",
"returnTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [],
"name": "getDefaultTranslationLocale"
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!highlightShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "highlightShapeProps: "
},
{
"kind": "Content",
"text": "{\n color: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n size: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n segments: "
},
{
"kind": "Reference",
"text": "T.ArrayOfValidator",
"canonicalReference": "@tldraw/validate!ArrayOfValidator:class"
},
{
"kind": "Content",
"text": "<{\n type: \"free\" | \"straight\";\n points: import(\"..\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "[];\n } & {}>;\n isComplete: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n isPen: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLHighlightShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "highlightShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 14
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!imageShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "imageShapeProps: "
},
{
"kind": "Content",
"text": "{\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n playing: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n assetId: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<import(\"..\")."
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": " | null>;\n crop: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<({\n topLeft: import(\"../misc/geometry-types\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
"text": ";\n bottomRight: import(\"../misc/geometry-types\")."
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": ";\n } & {}) | null>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLImageShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "imageShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 20
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!InstancePageStateRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "InstancePageStateRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLInstancePageState",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState:interface"
},
{
"kind": "Content",
"text": ", \"pageId\">"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPageState.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "InstancePageStateRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!InstancePresenceRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "InstancePresenceRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLInstancePresence",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence:interface"
},
{
"kind": "Content",
"text": ", \"currentPageId\" | \"userId\" | \"userName\">"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPresence.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "InstancePresenceRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!isPageId:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function isPageId(id: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "id",
"canonicalReference": "@tldraw/tlschema!~id"
},
{
"kind": "Content",
"text": " is "
},
{
"kind": "Reference",
"text": "TLPageId",
"canonicalReference": "@tldraw/tlschema!TLPageId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPage.ts",
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 6
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "id",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": false
}
],
"name": "isPageId"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!isShape:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function isShape(record?: "
},
{
"kind": "Reference",
"text": "UnknownRecord",
"canonicalReference": "@tldraw/store!UnknownRecord:type"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "record",
"canonicalReference": "@tldraw/tlschema!~record"
},
{
"kind": "Content",
"text": " is "
},
{
"kind": "Reference",
"text": "TLShape",
"canonicalReference": "@tldraw/tlschema!TLShape:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 6
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "record",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": true
}
],
"name": "isShape"
},
{
"kind": "Function",
"canonicalReference": "@tldraw/tlschema!isShapeId:function(1)",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare function isShapeId(id?: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "id",
"canonicalReference": "@tldraw/tlschema!~id"
},
{
"kind": "Content",
"text": " is "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 6
},
"releaseTag": "Public",
"overloadIndex": 1,
"parameters": [
{
"parameterName": "id",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": true
}
],
"name": "isShapeId"
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!LANGUAGES:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "LANGUAGES: "
},
{
"kind": "Content",
"text": "readonly [{\n readonly locale: \"ca\";\n readonly label: \"Català\";\n}, {\n readonly locale: \"cs\";\n readonly label: \"Čeština\";\n}, {\n readonly locale: \"da\";\n readonly label: \"Danish\";\n}, {\n readonly locale: \"de\";\n readonly label: \"Deutsch\";\n}, {\n readonly locale: \"en\";\n readonly label: \"English\";\n}, {\n readonly locale: \"es\";\n readonly label: \"Español\";\n}, {\n readonly locale: \"fr\";\n readonly label: \"Français\";\n}, {\n readonly locale: \"gl\";\n readonly label: \"Galego\";\n}, {\n readonly locale: \"hr\";\n readonly label: \"Hrvatski\";\n}, {\n readonly locale: \"it\";\n readonly label: \"Italiano\";\n}, {\n readonly locale: \"hu\";\n readonly label: \"Magyar\";\n}, {\n readonly locale: \"no\";\n readonly label: \"Norwegian\";\n}, {\n readonly locale: \"pl\";\n readonly label: \"Polski\";\n}, {\n readonly locale: \"pt-br\";\n readonly label: \"Português - Brasil\";\n}, {\n readonly locale: \"pt-pt\";\n readonly label: \"Português - Europeu\";\n}, {\n readonly locale: \"ro\";\n readonly label: \"Română\";\n}, {\n readonly locale: \"ru\";\n readonly label: \"Russian\";\n}, {\n readonly locale: \"sl\";\n readonly label: \"Slovenščina\";\n}, {\n readonly locale: \"fi\";\n readonly label: \"Suomi\";\n}, {\n readonly locale: \"sv\";\n readonly label: \"Svenska\";\n}, {\n readonly locale: \"vi\";\n readonly label: \"Tiếng Việt\";\n}, {\n readonly locale: \"tr\";\n readonly label: \"Türkçe\";\n}, {\n readonly locale: \"uk\";\n readonly label: \"Ukrainian\";\n}, {\n readonly locale: \"he\";\n readonly label: \"עברית\";\n}, {\n readonly locale: \"ar\";\n readonly label: \"عربي\";\n}, {\n readonly locale: \"fa\";\n readonly label: \"فارسی\";\n}, {\n readonly locale: \"ku\";\n readonly label: \"کوردی\";\n}, {\n readonly locale: \"ne\";\n readonly label: \"नेपाली\";\n}, {\n readonly locale: \"hi-in\";\n readonly label: \"हिन्दी\";\n}, {\n readonly locale: \"te\";\n readonly label: \"తెలుగు\";\n}, {\n readonly locale: \"th\";\n readonly label: \"ภาษาไทย\";\n}, {\n readonly locale: \"my\";\n readonly label: \"မြန်မာစာ\";\n}, {\n readonly locale: \"ko-kr\";\n readonly label: \"한국어\";\n}, {\n readonly locale: \"ja\";\n readonly label: \"日本語\";\n}, {\n readonly locale: \"zh-cn\";\n readonly label: \"简体中文\";\n}, {\n readonly locale: \"zh-tw\";\n readonly label: \"繁體中文 (台灣)\";\n}]"
}
],
"fileUrlPath": "packages/tlschema/src/translations/languages.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "LANGUAGES",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!lineShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "lineShapeProps: "
},
{
"kind": "Content",
"text": "{\n color: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n dash: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"dashed\" | \"dotted\" | \"draw\" | \"solid\">;\n size: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n spline: import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"cubic\" | \"line\">;\n points: "
},
{
"kind": "Reference",
"text": "T.DictValidator",
"canonicalReference": "@tldraw/validate!DictValidator:class"
},
{
"kind": "Content",
"text": "<string, {\n id: string;\n x: number;\n y: number;\n index: "
},
{
"kind": "Reference",
"text": "IndexKey",
"canonicalReference": "@tldraw/utils!IndexKey:type"
},
{
"kind": "Content",
"text": ";\n } & {}>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLLineShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "lineShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 14
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!LineShapeSplineStyle:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "LineShapeSplineStyle: "
},
{
"kind": "Content",
"text": "import(\"../styles/StyleProp\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"cubic\" | \"line\">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLLineShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "LineShapeSplineStyle",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!noteShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "noteShapeProps: "
},
{
"kind": "Content",
"text": "{\n color: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n size: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n font: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"draw\" | \"mono\" | \"sans\" | \"serif\">;\n align: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end-legacy\" | \"end\" | \"middle-legacy\" | \"middle\" | \"start-legacy\" | \"start\">;\n verticalAlign: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end\" | \"middle\" | \"start\">;\n growY: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n text: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLNoteShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "noteShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 18
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!PageRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "PageRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLPage",
"canonicalReference": "@tldraw/tlschema!TLPage:interface"
},
{
"kind": "Content",
"text": ", \"index\" | \"name\">"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPage.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "PageRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!parentIdValidator:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "parentIdValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLParentId",
"canonicalReference": "@tldraw/tlschema!TLParentId:type"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBaseShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "parentIdValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!PointerRecordType:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "PointerRecordType: "
},
{
"kind": "Content",
"text": "import(\"@tldraw/store\")."
},
{
"kind": "Reference",
"text": "RecordType",
"canonicalReference": "@tldraw/store!RecordType:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLPointer",
"canonicalReference": "@tldraw/tlschema!~TLPointer:interface"
},
{
"kind": "Content",
"text": ", never>"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPointer.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "PointerRecordType",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!SchemaShapeInfo:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type SchemaShapeInfo = "
},
{
"kind": "Content",
"text": "{\n migrations?: "
},
{
"kind": "Reference",
"text": "Migrations",
"canonicalReference": "@tldraw/store!Migrations:interface"
},
{
"kind": "Content",
"text": ";\n props?: "
},
{
"kind": "Reference",
"text": "Record",
"canonicalReference": "!Record:type"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<string, "
},
{
"kind": "Reference",
"text": "AnyValidator",
"canonicalReference": "@tldraw/tlschema!~AnyValidator:type"
},
{
"kind": "Content",
"text": ">;\n meta?: "
},
{
"kind": "Reference",
"text": "Record",
"canonicalReference": "!Record:type"
},
{
"kind": "Content",
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"text": "<string, "
},
{
"kind": "Reference",
"text": "AnyValidator",
"canonicalReference": "@tldraw/tlschema!~AnyValidator:type"
},
{
"kind": "Content",
"text": ">;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/createTLSchema.ts",
"releaseTag": "Public",
"name": "SchemaShapeInfo",
"typeTokenRange": {
"startIndex": 1,
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
"endIndex": 12
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!shapeIdValidator:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "shapeIdValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBaseShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "shapeIdValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!ShapeProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type ShapeProps<Shape extends "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<any, any>"
},
{
"kind": "Content",
"text": "> = "
},
{
"kind": "Content",
"text": "{\n [K in keyof Shape['props']]: "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Shape['props'][K]>;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBaseShape.ts",
"releaseTag": "Public",
"name": "ShapeProps",
"typeParameters": [
{
"typeParameterName": "Shape",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"typeTokenRange": {
"startIndex": 4,
"endIndex": 7
}
},
{
"kind": "Class",
"canonicalReference": "@tldraw/tlschema!StyleProp:class",
"docComment": "/**\n * A `StyleProp` is a property of a shape that follows some special rules.\n *\n * 1. The same value can be set on lots of shapes at the same time.\n *\n * 2. The last used value is automatically saved and applied to new shapes.\n *\n * For example, {@link DefaultColorStyle} is a style prop used by tldraw's default shapes to set their color. If you try selecting several shapes on tldraw.com and changing their color, you'll see that the color is applied to all of them. Then, if you draw a new shape, it'll have the same color as the one you just set.\n *\n * You can use styles in your own shapes by either defining your own (see {@link StyleProp.define} and {@link StyleProp.defineEnum}) or using tldraw's default ones, like {@link DefaultColorStyle}. When you define a shape, pass a `props` object describing all of your shape's properties, using `StyleProp`s for the ones you want to be styles. See the {@link https://github.com/tldraw/tldraw/tree/main/apps/examples | custom styles example} for more.\n *\n * @remarks\n *\n * The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `StyleProp` class.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export declare class StyleProp<Type> implements "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Type>"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/styles/StyleProp.ts",
"releaseTag": "Public",
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 0,
"endIndex": 0
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"isAbstract": false,
"name": "StyleProp",
"preserveMemberOrder": false,
"members": [
{
"kind": "Property",
"canonicalReference": "@tldraw/tlschema!StyleProp#defaultValue:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "readonly defaultValue: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": true,
"isOptional": false,
"releaseTag": "Public",
"name": "defaultValue",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isStatic": false,
"isProtected": false,
"isAbstract": false
},
{
"kind": "Method",
"canonicalReference": "@tldraw/tlschema!StyleProp.define:member(1)",
"docComment": "/**\n * Define a new {@link StyleProp}.\n *\n * @param uniqueId - Each StyleProp must have a unique ID. We recommend you prefix this with your app/library name.\n *\n * @param options - - `defaultValue`: The default value for this style prop.\n *\n * - `type`: Optionally, describe what type of data you expect for this style prop.\n *\n * @example\n * ```ts\n * import {T} from '@tldraw/validate'\n * import {StyleProp} from '@tldraw/tlschema'\n *\n * const MyLineWidthProp = StyleProp.define('myApp:lineWidth', {\n * defaultValue: 1,\n * type: T.number,\n * })\n * ```\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "static define<Type>(uniqueId: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", options: "
},
{
"kind": "Content",
"text": "{\n defaultValue: Type;\n type?: "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Type>;\n }"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "StyleProp",
"canonicalReference": "@tldraw/tlschema!StyleProp:class"
},
{
"kind": "Content",
"text": "<Type>"
},
{
"kind": "Content",
"text": ";"
}
],
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 0,
"endIndex": 0
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"isStatic": true,
"returnTypeTokenRange": {
"startIndex": 7,
"endIndex": 9
},
"releaseTag": "Public",
"isProtected": false,
"overloadIndex": 1,
"parameters": [
{
"parameterName": "uniqueId",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": false
},
{
"parameterName": "options",
"parameterTypeTokenRange": {
"startIndex": 3,
"endIndex": 6
},
"isOptional": false
}
],
"isOptional": false,
"isAbstract": false,
"name": "define"
},
{
"kind": "Method",
"canonicalReference": "@tldraw/tlschema!StyleProp.defineEnum:member(1)",
"docComment": "/**\n * Define a new {@link StyleProp} as a list of possible values.\n *\n * @param uniqueId - Each StyleProp must have a unique ID. We recommend you prefix this with your app/library name.\n *\n * @param options - - `defaultValue`: The default value for this style prop.\n *\n * - `values`: An array of possible values of this style prop.\n *\n * @example\n * ```ts\n * import {StyleProp} from '@tldraw/tlschema'\n *\n * const MySizeProp = StyleProp.defineEnum('myApp:size', {\n * defaultValue: 'medium',\n * values: ['small', 'medium', 'large'],\n * })\n * ```\n *\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "static defineEnum<const Values extends "
},
{
"kind": "Content",
"text": "readonly unknown[]"
},
{
"kind": "Content",
"text": ">(uniqueId: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", options: "
},
{
"kind": "Content",
"text": "{\n defaultValue: Values[number];\n values: Values;\n }"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<Values[number]>"
},
{
"kind": "Content",
"text": ";"
}
],
"typeParameters": [
{
"typeParameterName": "Values",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"isStatic": true,
"returnTypeTokenRange": {
"startIndex": 7,
"endIndex": 9
},
"releaseTag": "Public",
"isProtected": false,
"overloadIndex": 1,
"parameters": [
{
"parameterName": "uniqueId",
"parameterTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"isOptional": false
},
{
"parameterName": "options",
"parameterTypeTokenRange": {
"startIndex": 5,
"endIndex": 6
},
"isOptional": false
}
],
"isOptional": false,
"isAbstract": false,
"name": "defineEnum"
},
{
"kind": "Property",
"canonicalReference": "@tldraw/tlschema!StyleProp#id:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "readonly id: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": true,
"isOptional": false,
"releaseTag": "Public",
"name": "id",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isStatic": false,
"isProtected": false,
"isAbstract": false
},
{
"kind": "Property",
"canonicalReference": "@tldraw/tlschema!StyleProp#type:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "readonly type: "
},
{
"kind": "Reference",
"text": "T.Validatable",
"canonicalReference": "@tldraw/validate!Validatable:type"
},
{
"kind": "Content",
"text": "<Type>"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": true,
"isOptional": false,
"releaseTag": "Public",
"name": "type",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"isStatic": false,
"isProtected": false,
"isAbstract": false
},
{
"kind": "Method",
"canonicalReference": "@tldraw/tlschema!StyleProp#validate:member(1)",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "validate(value: "
},
{
"kind": "Content",
"text": "unknown"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ";"
}
],
"isStatic": false,
"returnTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"releaseTag": "Public",
"isProtected": false,
"overloadIndex": 1,
"parameters": [
{
"parameterName": "value",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": false
}
],
"isOptional": false,
"isAbstract": false,
"name": "validate"
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
},
{
"kind": "Method",
"canonicalReference": "@tldraw/tlschema!StyleProp#validateUsingKnownGoodVersion:member(1)",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "validateUsingKnownGoodVersion(prevValue: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ", newValue: "
},
{
"kind": "Content",
"text": "unknown"
},
{
"kind": "Content",
"text": "): "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ";"
}
],
"isStatic": false,
"returnTypeTokenRange": {
"startIndex": 5,
"endIndex": 6
},
"releaseTag": "Public",
"isProtected": false,
"overloadIndex": 1,
"parameters": [
{
"parameterName": "prevValue",
"parameterTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"isOptional": false
},
{
"parameterName": "newValue",
"parameterTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"isOptional": false
}
],
"isOptional": false,
"isAbstract": false,
"name": "validateUsingKnownGoodVersion"
}
],
"implementsTokenRanges": [
{
"startIndex": 1,
"endIndex": 3
}
]
},
Faster validations + record reference stability at the same time (#2848) This PR adds a validation mode whereby previous known-to-be-valid values can be used to speed up the validation process itself. At the same time it enables us to do fine-grained equality checking on records much more quickly than by using something like lodash isEqual, and using that we can prevent triggering effects for record updates that don't actually alter any values in the store. Here's some preliminary perf testing of average time spent in `store.put()` during some common interactions | task | before (ms) | after (ms) | | ---- | ---- | ---- | | drawing lines | 0.0403 | 0.0214 | | drawing boxes | 0.0408 | 0.0348 | | translating lines | 0.0352 | 0.0042 | | translating boxes | 0.0051 | 0.0032 | | rotating lines | 0.0312 | 0.0065 | | rotating boxes | 0.0053 | 0.0035 | | brush selecting boxes | 0.0200 | 0.0232 | | traversal with shapes | 0.0130 | 0.0108 | | traversal without shapes | 0.0201 | 0.0173 | **traversal** means moving the camera and pointer around the canvas #### Discussion At the scale of hundredths of a millisecond these .put operations are so fast that even if they became literally instantaneous the change would not be human perceptible. That said, there is an overall marked improvement here. Especially for dealing with draw shapes. These figures are also mostly in line with expectations, aside from a couple of things: - I don't understand why the `brush selecting boxes` task got slower after the change. - I don't understand why the `traversal` tasks are slower than the `translating boxes` task, both before and after. I would expect that .putting shape records would be much slower than .putting pointer/camera records (since the latter have fewer and simpler properties) ### Change Type - [x] `patch` — Bug fix ### Test Plan 1. Add a step-by-step description of how to test your PR here. 2. - [ ] Unit Tests - [ ] End to end tests ### Release Notes - Add a brief release note for your PR here.
2024-02-20 12:35:25 +00:00
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!StylePropValue:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type StylePropValue<T extends "
},
{
"kind": "Reference",
"text": "StyleProp",
"canonicalReference": "@tldraw/tlschema!StyleProp:class"
},
{
"kind": "Content",
"text": "<any>"
},
{
"kind": "Content",
"text": "> = "
},
{
"kind": "Content",
"text": "T extends "
},
{
"kind": "Reference",
"text": "StyleProp",
"canonicalReference": "@tldraw/tlschema!StyleProp:class"
},
{
"kind": "Content",
"text": "<infer U> ? U : never"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/StyleProp.ts",
"releaseTag": "Public",
"name": "StylePropValue",
"typeParameters": [
{
"typeParameterName": "T",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 3
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"typeTokenRange": {
"startIndex": 4,
"endIndex": 7
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!textShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "textShapeProps: "
},
{
"kind": "Content",
"text": "{\n color: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"black\" | \"blue\" | \"green\" | \"grey\" | \"light-blue\" | \"light-green\" | \"light-red\" | \"light-violet\" | \"orange\" | \"red\" | \"violet\" | \"white\" | \"yellow\">;\n size: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"l\" | \"m\" | \"s\" | \"xl\">;\n font: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"draw\" | \"mono\" | \"sans\" | \"serif\">;\n align: import(\"..\")."
},
{
"kind": "Reference",
"text": "EnumStyleProp",
"canonicalReference": "@tldraw/tlschema!EnumStyleProp:class"
},
{
"kind": "Content",
"text": "<\"end-legacy\" | \"end\" | \"middle-legacy\" | \"middle\" | \"start-legacy\" | \"start\">;\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n text: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n scale: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n autoSize: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLTextShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "textShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 18
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!TL_CANVAS_UI_COLOR_TYPES:var",
"docComment": "/**\n * The colors used by tldraw's default shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "TL_CANVAS_UI_COLOR_TYPES: "
},
{
"kind": "Reference",
"text": "Set",
"canonicalReference": "!Set:interface"
},
{
"kind": "Content",
"text": "<\"accent\" | \"black\" | \"laser\" | \"muted-1\" | \"selection-fill\" | \"selection-stroke\" | \"white\">"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLColor.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "TL_CANVAS_UI_COLOR_TYPES",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLArrowShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLArrowShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'arrow', "
},
{
"kind": "Reference",
"text": "TLArrowShapeProps",
"canonicalReference": "@tldraw/tlschema!TLArrowShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"releaseTag": "Public",
"name": "TLArrowShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLArrowShapeArrowheadStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLArrowShapeArrowheadStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "ArrowShapeArrowheadStartStyle",
"canonicalReference": "@tldraw/tlschema!ArrowShapeArrowheadStartStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"releaseTag": "Public",
"name": "TLArrowShapeArrowheadStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLArrowShapeProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLArrowShapeProps = "
},
{
"kind": "Reference",
"text": "ShapePropsType",
"canonicalReference": "@tldraw/tlschema!~ShapePropsType:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "arrowShapeProps",
"canonicalReference": "@tldraw/tlschema!arrowShapeProps:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"releaseTag": "Public",
"name": "TLArrowShapeProps",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLArrowShapeTerminal:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLArrowShapeTerminal = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "ArrowShapeTerminal",
"canonicalReference": "@tldraw/tlschema!~ArrowShapeTerminal:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLArrowShape.ts",
"releaseTag": "Public",
"name": "TLArrowShapeTerminal",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLAsset:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLAsset = "
},
{
"kind": "Reference",
"text": "TLBookmarkAsset",
"canonicalReference": "@tldraw/tlschema!TLBookmarkAsset:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLImageAsset",
"canonicalReference": "@tldraw/tlschema!TLImageAsset:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLVideoAsset",
"canonicalReference": "@tldraw/tlschema!TLVideoAsset:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLAsset.ts",
"releaseTag": "Public",
"name": "TLAsset",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 6
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLAssetId = "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLBaseAsset",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset:interface"
},
{
"kind": "Content",
"text": "<any, any>>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLAsset.ts",
"releaseTag": "Public",
"name": "TLAssetId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLAssetPartial:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLAssetPartial<T extends "
},
{
"kind": "Reference",
"text": "TLAsset",
"canonicalReference": "@tldraw/tlschema!TLAsset:type"
},
{
"kind": "Content",
"text": " = "
},
{
"kind": "Reference",
"text": "TLAsset",
"canonicalReference": "@tldraw/tlschema!TLAsset:type"
},
{
"kind": "Content",
"text": "> = "
},
{
"kind": "Content",
"text": "T extends T ? {\n id: "
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ";\n type: T['type'];\n props?: "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<T['props']>;\n meta?: "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<T['meta']>;\n} & "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "Omit",
"canonicalReference": "!Omit:type"
},
{
"kind": "Content",
"text": "<T, 'id' | 'meta' | 'props' | 'type'>> : never"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLAsset.ts",
"releaseTag": "Public",
"name": "TLAssetPartial",
"typeParameters": [
{
"typeParameterName": "T",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
}
}
],
"typeTokenRange": {
"startIndex": 5,
"endIndex": 16
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLAssetShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLAssetShape = "
},
{
"kind": "Reference",
"text": "Extract",
"canonicalReference": "!Extract:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLShape",
"canonicalReference": "@tldraw/tlschema!TLShape:type"
},
{
"kind": "Content",
"text": ", {\n props: {\n assetId: "
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ";\n };\n}>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLAsset.ts",
"releaseTag": "Public",
"name": "TLAssetShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 7
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset:interface",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLBaseAsset<Type extends "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", Props> extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'asset', "
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLBaseAsset.ts",
"releaseTag": "Public",
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
},
{
"typeParameterName": "Props",
"constraintTokenRange": {
"startIndex": 0,
"endIndex": 0
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"name": "TLBaseAsset",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset#props:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "props: "
},
{
"kind": "Content",
"text": "Props"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "props",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset#type:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "type: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "type",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 3,
"endIndex": 7
}
]
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLBaseShape<Type extends "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ", Props extends "
},
{
"kind": "Content",
"text": "object"
},
{
"kind": "Content",
"text": "> extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'shape', "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBaseShape.ts",
"releaseTag": "Public",
"typeParameters": [
{
"typeParameterName": "Type",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
},
{
"typeParameterName": "Props",
"constraintTokenRange": {
"startIndex": 3,
"endIndex": 4
},
"defaultTypeTokenRange": {
"startIndex": 0,
"endIndex": 0
}
}
],
"name": "TLBaseShape",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#index:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "index: "
},
{
"kind": "Reference",
"text": "IndexKey",
"canonicalReference": "@tldraw/utils!IndexKey:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "index",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#isLocked:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isLocked: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isLocked",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#opacity:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "opacity: "
},
{
"kind": "Reference",
"text": "TLOpacityType",
"canonicalReference": "@tldraw/tlschema!TLOpacityType:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "opacity",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#parentId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "parentId: "
},
{
"kind": "Reference",
"text": "TLParentId",
"canonicalReference": "@tldraw/tlschema!TLParentId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "parentId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#props:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "props: "
},
{
"kind": "Content",
"text": "Props"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "props",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#rotation:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "rotation: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "rotation",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#type:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "type: "
},
{
"kind": "Content",
"text": "Type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "type",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#x:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "x: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "x",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLBaseShape#y:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "y: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "y",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 5,
"endIndex": 9
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLBookmarkAsset:type",
"docComment": "/**\n * An asset used for URL bookmarks, used by the TLBookmarkShape.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLBookmarkAsset = "
},
{
"kind": "Reference",
"text": "TLBaseAsset",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset:interface"
},
{
"kind": "Content",
"text": "<'bookmark', {\n title: string;\n description: string;\n image: string;\n src: null | string;\n}>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLBookmarkAsset.ts",
"releaseTag": "Public",
"name": "TLBookmarkAsset",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLBookmarkShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLBookmarkShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'bookmark', "
},
{
"kind": "Reference",
"text": "TLBookmarkShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLBookmarkShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLBookmarkShape.ts",
"releaseTag": "Public",
"name": "TLBookmarkShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLCamera:interface",
"docComment": "/**\n * A camera record.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLCamera extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'camera', "
},
{
"kind": "Reference",
"text": "TLCameraId",
"canonicalReference": "@tldraw/tlschema!TLCameraId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLCamera.ts",
"releaseTag": "Public",
"name": "TLCamera",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCamera#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCamera#x:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "x: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "x",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCamera#y:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "y: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "y",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCamera#z:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "z: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "z",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 5
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLCameraId:type",
"docComment": "/**\n * The id of a camera record.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLCameraId = "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLCamera",
"canonicalReference": "@tldraw/tlschema!TLCamera:interface"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLCamera.ts",
"releaseTag": "Public",
"name": "TLCameraId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLCanvasUiColor:type",
"docComment": "/**\n * A type for the colors used by tldraw's default shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLCanvasUiColor = "
},
{
"kind": "Reference",
"text": "SetValue",
"canonicalReference": "@tldraw/tlschema!~SetValue:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "TL_CANVAS_UI_COLOR_TYPES",
"canonicalReference": "@tldraw/tlschema!TL_CANVAS_UI_COLOR_TYPES:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLColor.ts",
"releaseTag": "Public",
"name": "TLCanvasUiColor",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLCursor:interface",
"docComment": "/**\n * A cursor used by tldraw.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLCursor "
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLCursor.ts",
"releaseTag": "Public",
"name": "TLCursor",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCursor#rotation:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "rotation: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "rotation",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLCursor#type:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "type: "
},
{
"kind": "Reference",
"text": "TLCursorType",
"canonicalReference": "@tldraw/tlschema!TLCursorType:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "type",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": []
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLCursorType:type",
"docComment": "/**\n * A type for the cursor types used by tldraw's default shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLCursorType = "
},
{
"kind": "Reference",
"text": "SetValue",
"canonicalReference": "@tldraw/tlschema!~SetValue:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "TL_CURSOR_TYPES",
"canonicalReference": "@tldraw/tlschema!~TL_CURSOR_TYPES:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLCursor.ts",
"releaseTag": "Public",
"name": "TLCursorType",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultColorStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultColorStyle",
"canonicalReference": "@tldraw/tlschema!DefaultColorStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultColorStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorTheme:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultColorTheme = "
},
{
"kind": "Reference",
"text": "Expand",
"canonicalReference": "@tldraw/utils!Expand:type"
},
{
"kind": "Content",
"text": "<{\n id: 'dark' | 'light';\n text: string;\n background: string;\n solid: string;\n} & "
},
{
"kind": "Reference",
"text": "Record",
"canonicalReference": "!Record:type"
},
{
"kind": "Content",
"text": "<(typeof "
},
{
"kind": "Reference",
"text": "colors",
"canonicalReference": "@tldraw/tlschema!~colors:var"
},
{
"kind": "Content",
"text": ")[number], "
},
{
"kind": "Reference",
"text": "TLDefaultColorThemeColor",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorThemeColor:type"
},
{
"kind": "Content",
"text": ">>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultColorTheme",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 9
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultColorThemeColor:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultColorThemeColor = "
},
{
"kind": "Content",
"text": "{\n solid: string;\n semi: string;\n pattern: string;\n highlight: {\n srgb: string;\n p3: string;\n };\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLColorStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultColorThemeColor",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultDashStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultDashStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultDashStyle",
"canonicalReference": "@tldraw/tlschema!DefaultDashStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLDashStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultDashStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultFillStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultFillStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultFillStyle",
"canonicalReference": "@tldraw/tlschema!DefaultFillStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLFillStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultFillStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultFontStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultFontStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultFontStyle",
"canonicalReference": "@tldraw/tlschema!DefaultFontStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLFontStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultFontStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultHorizontalAlignStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultHorizontalAlignStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultHorizontalAlignStyle",
"canonicalReference": "@tldraw/tlschema!DefaultHorizontalAlignStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLHorizontalAlignStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultHorizontalAlignStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultShape:type",
"docComment": "/**\n * The default set of shapes that are available in the editor.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultShape = "
},
{
"kind": "Reference",
"text": "TLArrowShape",
"canonicalReference": "@tldraw/tlschema!TLArrowShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLBookmarkShape",
"canonicalReference": "@tldraw/tlschema!TLBookmarkShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLDrawShape",
"canonicalReference": "@tldraw/tlschema!TLDrawShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLEmbedShape",
"canonicalReference": "@tldraw/tlschema!TLEmbedShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLFrameShape",
"canonicalReference": "@tldraw/tlschema!TLFrameShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLGeoShape",
"canonicalReference": "@tldraw/tlschema!TLGeoShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLGroupShape",
"canonicalReference": "@tldraw/tlschema!TLGroupShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLHighlightShape",
"canonicalReference": "@tldraw/tlschema!TLHighlightShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLImageShape",
"canonicalReference": "@tldraw/tlschema!TLImageShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLLineShape",
"canonicalReference": "@tldraw/tlschema!TLLineShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLNoteShape",
"canonicalReference": "@tldraw/tlschema!TLNoteShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLTextShape",
"canonicalReference": "@tldraw/tlschema!TLTextShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLVideoShape",
"canonicalReference": "@tldraw/tlschema!TLVideoShape:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLDefaultShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 26
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultSizeStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultSizeStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultSizeStyle",
"canonicalReference": "@tldraw/tlschema!DefaultSizeStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLSizeStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultSizeStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDefaultVerticalAlignStyle:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDefaultVerticalAlignStyle = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DefaultVerticalAlignStyle",
"canonicalReference": "@tldraw/tlschema!DefaultVerticalAlignStyle:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/styles/TLVerticalAlignStyle.ts",
"releaseTag": "Public",
"name": "TLDefaultVerticalAlignStyle",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!TLDOCUMENT_ID:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "TLDOCUMENT_ID: "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLDocument",
"canonicalReference": "@tldraw/tlschema!TLDocument:interface"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLDocument.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "TLDOCUMENT_ID",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLDocument:interface",
"docComment": "/**\n * TLDocument\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLDocument extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'document', "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLDocument",
"canonicalReference": "@tldraw/tlschema!TLDocument:interface"
},
{
"kind": "Content",
"text": ">>"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLDocument.ts",
"releaseTag": "Public",
"name": "TLDocument",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLDocument#gridSize:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "gridSize: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "gridSize",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLDocument#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLDocument#name:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "name: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "name",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 7
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDrawShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDrawShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'draw', "
},
{
"kind": "Reference",
"text": "TLDrawShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLDrawShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLDrawShape.ts",
"releaseTag": "Public",
"name": "TLDrawShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLDrawShapeSegment:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLDrawShapeSegment = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "DrawShapeSegment",
"canonicalReference": "@tldraw/tlschema!~DrawShapeSegment:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLDrawShape.ts",
"releaseTag": "Public",
"name": "TLDrawShapeSegment",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLEmbedShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLEmbedShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'embed', "
},
{
"kind": "Reference",
"text": "TLEmbedShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLEmbedShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"releaseTag": "Public",
"name": "TLEmbedShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLEmbedShapePermissions:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLEmbedShapePermissions = "
},
{
"kind": "Content",
"text": "{\n [K in keyof typeof "
},
{
"kind": "Reference",
"text": "embedShapePermissionDefaults",
"canonicalReference": "@tldraw/tlschema!embedShapePermissionDefaults:var"
},
{
"kind": "Content",
"text": "]?: boolean;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLEmbedShape.ts",
"releaseTag": "Public",
"name": "TLEmbedShapePermissions",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLFrameShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLFrameShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'frame', "
},
{
"kind": "Reference",
"text": "TLFrameShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLFrameShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLFrameShape.ts",
"releaseTag": "Public",
"name": "TLFrameShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLGeoShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLGeoShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'geo', "
},
{
"kind": "Reference",
"text": "TLGeoShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLGeoShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLGeoShape.ts",
"releaseTag": "Public",
"name": "TLGeoShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLGroupShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLGroupShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'group', "
},
{
"kind": "Reference",
"text": "TLGroupShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLGroupShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLGroupShape.ts",
"releaseTag": "Public",
"name": "TLGroupShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLHandle:interface",
"docComment": "/**\n * A base interface for a shape's handles.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLHandle "
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLHandle.ts",
"releaseTag": "Public",
"name": "TLHandle",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#canBind:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "canBind?: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": true,
"releaseTag": "Public",
"name": "canBind",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#canSnap:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "canSnap?: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": true,
"releaseTag": "Public",
"name": "canSnap",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#id:member",
"docComment": "/**\n * A unique identifier for the handle.\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "id: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "id",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#index:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "index: "
},
{
"kind": "Reference",
"text": "IndexKey",
"canonicalReference": "@tldraw/utils!IndexKey:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "index",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#type:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "type: "
},
{
"kind": "Reference",
"text": "TLHandleType",
"canonicalReference": "@tldraw/tlschema!TLHandleType:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "type",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#x:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "x: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "x",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLHandle#y:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "y: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "y",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": []
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLHandleType:type",
"docComment": "/**\n * A type for the handle types used by tldraw's default shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLHandleType = "
},
{
"kind": "Reference",
"text": "SetValue",
"canonicalReference": "@tldraw/tlschema!~SetValue:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "TL_HANDLE_TYPES",
"canonicalReference": "@tldraw/tlschema!~TL_HANDLE_TYPES:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLHandle.ts",
"releaseTag": "Public",
"name": "TLHandleType",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLHighlightShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLHighlightShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'highlight', "
},
{
"kind": "Reference",
"text": "TLHighlightShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLHighlightShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLHighlightShape.ts",
"releaseTag": "Public",
"name": "TLHighlightShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLImageAsset:type",
"docComment": "/**\n * An asset for images such as PNGs and JPEGs, used by the TLImageShape.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLImageAsset = "
},
{
"kind": "Reference",
"text": "TLBaseAsset",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset:interface"
},
{
"kind": "Content",
"text": "<'image', {\n w: number;\n h: number;\n name: string;\n isAnimated: boolean;\n mimeType: null | string;\n src: null | string;\n}>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLImageAsset.ts",
"releaseTag": "Public",
"name": "TLImageAsset",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLImageShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLImageShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'image', "
},
{
"kind": "Reference",
"text": "TLImageShapeProps",
"canonicalReference": "@tldraw/tlschema!TLImageShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLImageShape.ts",
"releaseTag": "Public",
"name": "TLImageShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLImageShapeCrop:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLImageShapeCrop = "
},
{
"kind": "Reference",
"text": "T.TypeOf",
"canonicalReference": "@tldraw/validate!TypeOf:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "ImageShapeCrop",
"canonicalReference": "@tldraw/tlschema!~ImageShapeCrop:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLImageShape.ts",
"releaseTag": "Public",
"name": "TLImageShapeCrop",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLImageShapeProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLImageShapeProps = "
},
{
"kind": "Reference",
"text": "ShapePropsType",
"canonicalReference": "@tldraw/tlschema!~ShapePropsType:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "imageShapeProps",
"canonicalReference": "@tldraw/tlschema!imageShapeProps:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLImageShape.ts",
"releaseTag": "Public",
"name": "TLImageShapeProps",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!TLINSTANCE_ID:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "TLINSTANCE_ID: "
},
{
"kind": "Reference",
"text": "TLInstanceId",
"canonicalReference": "@tldraw/tlschema!TLInstanceId:type"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLInstance.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "TLINSTANCE_ID",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLInstance:interface",
"docComment": "/**\n * TLInstance\n *\n * State that is particular to a single browser tab\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLInstance extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'instance', "
},
{
"kind": "Reference",
"text": "TLInstanceId",
"canonicalReference": "@tldraw/tlschema!TLInstanceId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLInstance.ts",
"releaseTag": "Public",
"name": "TLInstance",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#brush:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "brush: "
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": " | null"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "brush",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#canMoveCamera:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "canMoveCamera: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "canMoveCamera",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#chatMessage:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "chatMessage: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "chatMessage",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#currentPageId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "currentPageId: "
},
{
"kind": "Reference",
"text": "TLPageId",
"canonicalReference": "@tldraw/tlschema!TLPageId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "currentPageId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#cursor:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "cursor: "
},
{
"kind": "Reference",
"text": "TLCursor",
"canonicalReference": "@tldraw/tlschema!TLCursor:interface"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "cursor",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#devicePixelRatio:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "devicePixelRatio: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "devicePixelRatio",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#duplicateProps:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "duplicateProps: "
},
{
"kind": "Content",
"text": "{\n shapeIds: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": "[];\n offset: {\n x: number;\n y: number;\n };\n } | null"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "duplicateProps",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#exportBackground:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "exportBackground: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "exportBackground",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#followingUserId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "followingUserId: "
},
{
"kind": "Content",
"text": "null | string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "followingUserId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#highlightedUserIds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "highlightedUserIds: "
},
{
"kind": "Content",
"text": "string[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "highlightedUserIds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
[improvement] account for coarse pointers / insets in edge scrolling (#2401) This PR: - shrinks the distance for edge scrolling and insets the distance for coarse pointers - adds edge inset tracking ## Scroll distances Rather than increasing the distance, we move the "zero" in from the edges, so that the middle of a honkin' fat finger would be at "zero" when the edge of the finger is touching the edge of the screen. This is a bit more reliable than looking at just the component size. ## Inset tracking We now track whether a shape's edges are identical to the edges of the document body. When an edge is inset, we extend the edge scrolling distance outside of the component, so that dragging PAST the edge of the component will scroll. When an edge is NOT inset, we bring that distance into the component's bounds, so that dragging NEAR TO the edge will begin to scroll. ![image](https://github.com/tldraw/tldraw/assets/23072548/bb216c98-3dd0-4e2e-a635-4c4f339d5117) ![image](https://github.com/tldraw/tldraw/assets/23072548/75e83c81-1ca9-40a9-8edc-72851d3b1411) ![image](https://github.com/tldraw/tldraw/assets/23072548/6cda7bda-2935-4ded-821c-e7bf78833a1c) ### Change Type - [x] `minor` — New feature ### Test Plan 1. Use edge scrolling on mobile 2. Use edge scrolling on desktop 3. Use edge scrolling in the "scrolling example" - [x] Unit Tests ### Release Notes - Add `instanceState.insets` to track which edges of the component are inset from the edges of the document body. - Improve behavior around edge scrolling
2024-01-10 14:29:32 +00:00
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#insets:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "insets: "
},
{
"kind": "Content",
"text": "boolean[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "insets",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isChangingStyle:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isChangingStyle: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isChangingStyle",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isChatting:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isChatting: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isChatting",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isCoarsePointer:member",
"docComment": "/**\n * This is whether the primary input mechanism includes a pointing device of limited accuracy, such as a finger on a touchscreen. See: https://developer.mozilla.org/en-US/docs/Web/CSS/\\@media/pointer\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "isCoarsePointer: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isCoarsePointer",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isDebugMode:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isDebugMode: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isDebugMode",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isFocused:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isFocused: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isFocused",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isFocusMode:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isFocusMode: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isFocusMode",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isGridMode:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isGridMode: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isGridMode",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isHoveringCanvas:member",
"docComment": "/**\n * Will be null if the pointer doesn't support hovering (e.g. touch), but true or false otherwise\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "isHoveringCanvas: "
},
{
"kind": "Content",
"text": "boolean | null"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isHoveringCanvas",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isPenMode:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isPenMode: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isPenMode",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isReadonly:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isReadonly: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isReadonly",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#isToolLocked:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "isToolLocked: "
},
{
"kind": "Content",
"text": "boolean"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "isToolLocked",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#opacityForNextShape:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "opacityForNextShape: "
},
{
"kind": "Reference",
"text": "TLOpacityType",
"canonicalReference": "@tldraw/tlschema!TLOpacityType:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "opacityForNextShape",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#openMenus:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "openMenus: "
},
{
"kind": "Content",
"text": "string[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "openMenus",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#screenBounds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "screenBounds: "
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "screenBounds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#scribbles:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "scribbles: "
},
{
"kind": "Reference",
"text": "TLScribble",
"canonicalReference": "@tldraw/tlschema!TLScribble:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "scribbles",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#stylesForNextShape:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "stylesForNextShape: "
},
{
"kind": "Reference",
"text": "Record",
"canonicalReference": "!Record:type"
},
{
"kind": "Content",
"text": "<string, unknown>"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "stylesForNextShape",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstance#zoomBrush:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "zoomBrush: "
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": " | null"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "zoomBrush",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 5
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLInstanceId:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLInstanceId = "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLInstance",
"canonicalReference": "@tldraw/tlschema!TLInstance:interface"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLInstance.ts",
"releaseTag": "Public",
"name": "TLInstanceId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState:interface",
"docComment": "/**\n * TLInstancePageState\n *\n * State that is unique to a particular page of the document in a particular browser tab\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLInstancePageState extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'instance_page_state', "
},
{
"kind": "Reference",
"text": "TLInstancePageStateId",
"canonicalReference": "@tldraw/tlschema!~TLInstancePageStateId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPageState.ts",
"releaseTag": "Public",
"name": "TLInstancePageState",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#croppingShapeId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "croppingShapeId: "
},
{
"kind": "Content",
"text": "null | "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "croppingShapeId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#editingShapeId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "editingShapeId: "
},
{
"kind": "Content",
"text": "null | "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "editingShapeId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#erasingShapeIds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "erasingShapeIds: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "erasingShapeIds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#focusedGroupId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "focusedGroupId: "
},
{
"kind": "Content",
"text": "null | "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "focusedGroupId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#hintingShapeIds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "hintingShapeIds: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "hintingShapeIds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#hoveredShapeId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "hoveredShapeId: "
},
{
"kind": "Content",
"text": "null | "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "hoveredShapeId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#pageId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "pageId: "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLPage",
"canonicalReference": "@tldraw/tlschema!TLPage:interface"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "pageId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState#selectedShapeIds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "selectedShapeIds: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "selectedShapeIds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 5
}
]
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence:interface",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLInstancePresence extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'instance_presence', "
},
{
"kind": "Reference",
"text": "TLInstancePresenceID",
"canonicalReference": "@tldraw/tlschema!~TLInstancePresenceID:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPresence.ts",
"releaseTag": "Public",
"name": "TLInstancePresence",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#brush:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "brush: "
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": " | null"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "brush",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#camera:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "camera: "
},
{
"kind": "Content",
"text": "{\n x: number;\n y: number;\n z: number;\n }"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "camera",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#chatMessage:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "chatMessage: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "chatMessage",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#color:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "color: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "color",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#currentPageId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "currentPageId: "
},
{
"kind": "Reference",
"text": "TLPageId",
"canonicalReference": "@tldraw/tlschema!TLPageId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "currentPageId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#cursor:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "cursor: "
},
{
"kind": "Content",
"text": "{\n x: number;\n y: number;\n type: "
},
{
"kind": "Reference",
"text": "TLCursor",
"canonicalReference": "@tldraw/tlschema!TLCursor:interface"
},
{
"kind": "Content",
"text": "['type'];\n rotation: number;\n }"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "cursor",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#followingUserId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "followingUserId: "
},
{
"kind": "Content",
"text": "null | string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "followingUserId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#lastActivityTimestamp:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "lastActivityTimestamp: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "lastActivityTimestamp",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#screenBounds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "screenBounds: "
},
{
"kind": "Reference",
"text": "BoxModel",
"canonicalReference": "@tldraw/tlschema!BoxModel:interface"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "screenBounds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#scribbles:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "scribbles: "
},
{
"kind": "Reference",
"text": "TLScribble",
"canonicalReference": "@tldraw/tlschema!TLScribble:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "scribbles",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#selectedShapeIds:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "selectedShapeIds: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": "[]"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "selectedShapeIds",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#userId:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "userId: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "userId",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence#userName:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "userName: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "userName",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 5
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLLanguage:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLLanguage = "
},
{
"kind": "Content",
"text": "(typeof "
},
{
"kind": "Reference",
"text": "LANGUAGES",
"canonicalReference": "@tldraw/tlschema!LANGUAGES:var"
},
{
"kind": "Content",
"text": ")[number]"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/translations/translations.ts",
"releaseTag": "Public",
"name": "TLLanguage",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLLineShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLLineShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'line', "
},
{
"kind": "Reference",
"text": "TLLineShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLLineShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLLineShape.ts",
"releaseTag": "Public",
"name": "TLLineShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLNoteShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLNoteShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'note', "
},
{
"kind": "Reference",
"text": "TLNoteShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLNoteShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLNoteShape.ts",
"releaseTag": "Public",
"name": "TLNoteShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLOpacityType:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLOpacityType = "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLOpacity.ts",
"releaseTag": "Public",
"name": "TLOpacityType",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!TLPage:interface",
"docComment": "/**\n * TLPage\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface TLPage extends "
},
{
"kind": "Reference",
"text": "BaseRecord",
"canonicalReference": "@tldraw/store!BaseRecord:interface"
},
{
"kind": "Content",
"text": "<'page', "
},
{
"kind": "Reference",
"text": "TLPageId",
"canonicalReference": "@tldraw/tlschema!TLPageId:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": " "
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPage.ts",
"releaseTag": "Public",
"name": "TLPage",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLPage#index:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "index: "
},
{
"kind": "Reference",
"text": "IndexKey",
"canonicalReference": "@tldraw/utils!IndexKey:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "index",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLPage#meta:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "meta: "
},
{
"kind": "Reference",
"text": "JsonObject",
"canonicalReference": "@tldraw/utils!JsonObject:type"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "meta",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!TLPage#name:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "name: "
},
{
"kind": "Content",
"text": "string"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "name",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": [
{
"startIndex": 1,
"endIndex": 5
}
]
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLPageId:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLPageId = "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLPage",
"canonicalReference": "@tldraw/tlschema!TLPage:interface"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPage.ts",
"releaseTag": "Public",
"name": "TLPageId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLParentId:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLParentId = "
},
{
"kind": "Reference",
"text": "TLPageId",
"canonicalReference": "@tldraw/tlschema!TLPageId:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLParentId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!TLPOINTER_ID:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "TLPOINTER_ID: "
},
{
"kind": "Reference",
"text": "TLPointerId",
"canonicalReference": "@tldraw/tlschema!~TLPointerId:type"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLPointer.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "TLPOINTER_ID",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLRecord:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLRecord = "
},
{
"kind": "Reference",
"text": "TLAsset",
"canonicalReference": "@tldraw/tlschema!TLAsset:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLCamera",
"canonicalReference": "@tldraw/tlschema!TLCamera:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLDocument",
"canonicalReference": "@tldraw/tlschema!TLDocument:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLInstance",
"canonicalReference": "@tldraw/tlschema!TLInstance:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLInstancePageState",
"canonicalReference": "@tldraw/tlschema!TLInstancePageState:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLInstancePresence",
"canonicalReference": "@tldraw/tlschema!TLInstancePresence:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLPage",
"canonicalReference": "@tldraw/tlschema!TLPage:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLPointer",
"canonicalReference": "@tldraw/tlschema!~TLPointer:interface"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLShape",
"canonicalReference": "@tldraw/tlschema!TLShape:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLRecord.ts",
"releaseTag": "Public",
"name": "TLRecord",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 18
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLSchema:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLSchema = "
},
{
"kind": "Reference",
"text": "StoreSchema",
"canonicalReference": "@tldraw/store!StoreSchema:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLRecord",
"canonicalReference": "@tldraw/tlschema!TLRecord:type"
},
{
"kind": "Content",
"text": ", "
},
{
"kind": "Reference",
"text": "TLStoreProps",
"canonicalReference": "@tldraw/tlschema!TLStoreProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/createTLSchema.ts",
"releaseTag": "Public",
"name": "TLSchema",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 7
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLScribble:type",
"docComment": "/**\n * A type for the scribble used by tldraw.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLScribble = "
},
{
"kind": "Content",
"text": "{\n id: string;\n points: "
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
"text": "[];\n size: number;\n color: "
},
{
"kind": "Reference",
"text": "TLCanvasUiColor",
"canonicalReference": "@tldraw/tlschema!TLCanvasUiColor:type"
},
{
"kind": "Content",
"text": ";\n opacity: number;\n state: "
},
{
"kind": "Reference",
"text": "SetValue",
"canonicalReference": "@tldraw/tlschema!~SetValue:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "TL_SCRIBBLE_STATES",
"canonicalReference": "@tldraw/tlschema!~TL_SCRIBBLE_STATES:var"
},
{
"kind": "Content",
"text": ">;\n delay: number;\n shrink: number;\n taper: boolean;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/misc/TLScribble.ts",
"releaseTag": "Public",
"name": "TLScribble",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 10
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLSerializedStore:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLSerializedStore = "
},
{
"kind": "Reference",
"text": "SerializedStore",
"canonicalReference": "@tldraw/store!SerializedStore:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLRecord",
"canonicalReference": "@tldraw/tlschema!TLRecord:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/TLStore.ts",
"releaseTag": "Public",
"name": "TLSerializedStore",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLShape:type",
"docComment": "/**\n * The set of all shapes that are available in the editor, including unknown shapes.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLShape = "
},
{
"kind": "Reference",
"text": "TLDefaultShape",
"canonicalReference": "@tldraw/tlschema!TLDefaultShape:type"
},
{
"kind": "Content",
"text": " | "
},
{
"kind": "Reference",
"text": "TLUnknownShape",
"canonicalReference": "@tldraw/tlschema!TLUnknownShape:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 4
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLShapeId = "
},
{
"kind": "Reference",
"text": "RecordId",
"canonicalReference": "@tldraw/store!RecordId:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLUnknownShape",
"canonicalReference": "@tldraw/tlschema!TLUnknownShape:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLShapeId",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLShapePartial:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLShapePartial<T extends "
},
{
"kind": "Reference",
"text": "TLShape",
"canonicalReference": "@tldraw/tlschema!TLShape:type"
},
{
"kind": "Content",
"text": " = "
},
{
"kind": "Reference",
"text": "TLShape",
"canonicalReference": "@tldraw/tlschema!TLShape:type"
},
{
"kind": "Content",
"text": "> = "
},
{
"kind": "Content",
"text": "T extends T ? {\n id: "
},
{
"kind": "Reference",
"text": "TLShapeId",
"canonicalReference": "@tldraw/tlschema!TLShapeId:type"
},
{
"kind": "Content",
"text": ";\n type: T['type'];\n props?: "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<T['props']>;\n meta?: "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<T['meta']>;\n} & "
},
{
"kind": "Reference",
"text": "Partial",
"canonicalReference": "!Partial:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "Omit",
"canonicalReference": "!Omit:type"
},
{
"kind": "Content",
"text": "<T, 'id' | 'meta' | 'props' | 'type'>> : never"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLShapePartial",
"typeParameters": [
{
"typeParameterName": "T",
"constraintTokenRange": {
"startIndex": 1,
"endIndex": 2
},
"defaultTypeTokenRange": {
"startIndex": 3,
"endIndex": 4
}
}
],
"typeTokenRange": {
"startIndex": 5,
"endIndex": 16
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLShapeProp:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLShapeProp = "
},
{
"kind": "Content",
"text": "keyof "
},
{
"kind": "Reference",
"text": "TLShapeProps",
"canonicalReference": "@tldraw/tlschema!TLShapeProps:type"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLShapeProp",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLShapeProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLShapeProps = "
},
{
"kind": "Reference",
"text": "Identity",
"canonicalReference": "@tldraw/tlschema!~Identity:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "UnionToIntersection",
"canonicalReference": "@tldraw/tlschema!~UnionToIntersection:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLDefaultShape",
"canonicalReference": "@tldraw/tlschema!TLDefaultShape:type"
},
{
"kind": "Content",
"text": "['props']>>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLShapeProps",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 7
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLStore:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLStore = "
},
{
"kind": "Reference",
"text": "Store",
"canonicalReference": "@tldraw/store!Store:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLRecord",
"canonicalReference": "@tldraw/tlschema!TLRecord:type"
},
{
"kind": "Content",
"text": ", "
},
{
"kind": "Reference",
"text": "TLStoreProps",
"canonicalReference": "@tldraw/tlschema!TLStoreProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/TLStore.ts",
"releaseTag": "Public",
"name": "TLStore",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 7
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLStoreProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLStoreProps = "
},
{
"kind": "Content",
"text": "{\n defaultName: string;\n}"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/TLStore.ts",
"releaseTag": "Public",
"name": "TLStoreProps",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLStoreSchema:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLStoreSchema = "
},
{
"kind": "Reference",
"text": "StoreSchema",
"canonicalReference": "@tldraw/store!StoreSchema:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLRecord",
"canonicalReference": "@tldraw/tlschema!TLRecord:type"
},
{
"kind": "Content",
"text": ", "
},
{
"kind": "Reference",
"text": "TLStoreProps",
"canonicalReference": "@tldraw/tlschema!TLStoreProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/TLStore.ts",
"releaseTag": "Public",
"name": "TLStoreSchema",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 7
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLStoreSnapshot:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLStoreSnapshot = "
},
{
"kind": "Reference",
"text": "StoreSnapshot",
"canonicalReference": "@tldraw/store!StoreSnapshot:type"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "TLRecord",
"canonicalReference": "@tldraw/tlschema!TLRecord:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/TLStore.ts",
"releaseTag": "Public",
"name": "TLStoreSnapshot",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLTextShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLTextShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'text', "
},
{
"kind": "Reference",
"text": "TLTextShapeProps",
"canonicalReference": "@tldraw/tlschema!TLTextShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLTextShape.ts",
"releaseTag": "Public",
"name": "TLTextShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLTextShapeProps:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLTextShapeProps = "
},
{
"kind": "Reference",
"text": "ShapePropsType",
"canonicalReference": "@tldraw/tlschema!~ShapePropsType:type"
},
{
"kind": "Content",
"text": "<typeof "
},
{
"kind": "Reference",
"text": "textShapeProps",
"canonicalReference": "@tldraw/tlschema!textShapeProps:var"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLTextShape.ts",
"releaseTag": "Public",
"name": "TLTextShapeProps",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLUnknownShape:type",
"docComment": "/**\n * A type for a shape that is available in the editor but whose type is unknown—either one of the editor's default shapes or else a custom shape.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLUnknownShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<string, object>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/records/TLShape.ts",
"releaseTag": "Public",
"name": "TLUnknownShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLVideoAsset:type",
"docComment": "/**\n * An asset used for videos, used by the TLVideoShape.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLVideoAsset = "
},
{
"kind": "Reference",
"text": "TLBaseAsset",
"canonicalReference": "@tldraw/tlschema!TLBaseAsset:interface"
},
{
"kind": "Content",
"text": "<'video', {\n w: number;\n h: number;\n name: string;\n isAnimated: boolean;\n mimeType: null | string;\n src: null | string;\n}>"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/assets/TLVideoAsset.ts",
"releaseTag": "Public",
"name": "TLVideoAsset",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 3
}
},
{
"kind": "TypeAlias",
"canonicalReference": "@tldraw/tlschema!TLVideoShape:type",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export type TLVideoShape = "
},
{
"kind": "Reference",
"text": "TLBaseShape",
"canonicalReference": "@tldraw/tlschema!TLBaseShape:interface"
},
{
"kind": "Content",
"text": "<'video', "
},
{
"kind": "Reference",
"text": "TLVideoShapeProps",
"canonicalReference": "@tldraw/tlschema!~TLVideoShapeProps:type"
},
{
"kind": "Content",
"text": ">"
},
{
"kind": "Content",
"text": ";"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLVideoShape.ts",
"releaseTag": "Public",
"name": "TLVideoShape",
"typeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Interface",
"canonicalReference": "@tldraw/tlschema!VecModel:interface",
"docComment": "/**\n * A serializable model for 2D vectors.\n *\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "export interface VecModel "
}
],
"fileUrlPath": "packages/tlschema/src/misc/geometry-types.ts",
"releaseTag": "Public",
"name": "VecModel",
"preserveMemberOrder": false,
"members": [
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!VecModel#x:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "x: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "x",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!VecModel#y:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "y: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": false,
"releaseTag": "Public",
"name": "y",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
},
{
"kind": "PropertySignature",
"canonicalReference": "@tldraw/tlschema!VecModel#z:member",
"docComment": "",
"excerptTokens": [
{
"kind": "Content",
"text": "z?: "
},
{
"kind": "Content",
"text": "number"
},
{
"kind": "Content",
"text": ";"
}
],
"isReadonly": false,
"isOptional": true,
"releaseTag": "Public",
"name": "z",
"propertyTypeTokenRange": {
"startIndex": 1,
"endIndex": 2
}
}
],
"extendsTokenRanges": []
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!vecModelValidator:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "vecModelValidator: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<"
},
{
"kind": "Reference",
"text": "VecModel",
"canonicalReference": "@tldraw/tlschema!VecModel:interface"
},
{
"kind": "Content",
"text": ">"
}
],
"fileUrlPath": "packages/tlschema/src/misc/geometry-types.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "vecModelValidator",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 5
}
},
{
"kind": "Variable",
"canonicalReference": "@tldraw/tlschema!videoShapeProps:var",
"docComment": "/**\n * @public\n */\n",
"excerptTokens": [
{
"kind": "Content",
"text": "videoShapeProps: "
},
{
"kind": "Content",
"text": "{\n w: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n h: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n time: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<number>;\n playing: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<boolean>;\n url: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<string>;\n assetId: "
},
{
"kind": "Reference",
"text": "T.Validator",
"canonicalReference": "@tldraw/validate!Validator:class"
},
{
"kind": "Content",
"text": "<import(\"..\")."
},
{
"kind": "Reference",
"text": "TLAssetId",
"canonicalReference": "@tldraw/tlschema!TLAssetId:type"
},
{
"kind": "Content",
"text": " | null>;\n}"
}
],
"fileUrlPath": "packages/tlschema/src/shapes/TLVideoShape.ts",
"isReadonly": true,
"releaseTag": "Public",
"name": "videoShapeProps",
"variableTypeTokenRange": {
"startIndex": 1,
"endIndex": 16
}
}
]
}
]
}