b7d9c8684c
This PR moves code between our packages so that: - @tldraw/editor is a “core” library with the engine and canvas but no shapes, tools, or other things - @tldraw/tldraw contains everything particular to the experience we’ve built for tldraw At first look, this might seem like a step away from customization and configuration, however I believe it greatly increases the configuration potential of the @tldraw/editor while also providing a more accurate reflection of what configuration options actually exist for @tldraw/tldraw. ## Library changes @tldraw/editor re-exports its dependencies and @tldraw/tldraw re-exports @tldraw/editor. - users of @tldraw/editor WITHOUT @tldraw/tldraw should almost always only import things from @tldraw/editor. - users of @tldraw/tldraw should almost always only import things from @tldraw/tldraw. - @tldraw/polyfills is merged into @tldraw/editor - @tldraw/indices is merged into @tldraw/editor - @tldraw/primitives is merged mostly into @tldraw/editor, partially into @tldraw/tldraw - @tldraw/file-format is merged into @tldraw/tldraw - @tldraw/ui is merged into @tldraw/tldraw Many (many) utils and other code is moved from the editor to tldraw. For example, embeds now are entirely an feature of @tldraw/tldraw. The only big chunk of code left in core is related to arrow handling. ## API Changes The editor can now be used without tldraw's assets. We load them in @tldraw/tldraw instead, so feel free to use whatever fonts or images or whatever that you like with the editor. All tools and shapes (except for the `Group` shape) are moved to @tldraw/tldraw. This includes the `select` tool. You should use the editor with at least one tool, however, so you now also need to send in an `initialState` prop to the Editor / <TldrawEditor> component indicating which state the editor should begin in. The `components` prop now also accepts `SelectionForeground`. The complex selection component that we use for tldraw is moved to @tldraw/tldraw. The default component is quite basic but can easily be replaced via the `components` prop. We pass down our tldraw-flavored SelectionFg via `components`. Likewise with the `Scribble` component: the `DefaultScribble` no longer uses our freehand tech and is a simple path instead. We pass down the tldraw-flavored scribble via `components`. The `ExternalContentManager` (`Editor.externalContentManager`) is removed and replaced with a mapping of types to handlers. - Register new content handlers with `Editor.registerExternalContentHandler`. - Register new asset creation handlers (for files and URLs) with `Editor.registerExternalAssetHandler` ### Change Type - [x] `major` — Breaking change ### Test Plan - [x] Unit Tests - [x] End to end tests ### Release Notes - [@tldraw/editor] lots, wip - [@tldraw/ui] gone, merged to tldraw/tldraw - [@tldraw/polyfills] gone, merged to tldraw/editor - [@tldraw/primitives] gone, merged to tldraw/editor / tldraw/tldraw - [@tldraw/indices] gone, merged to tldraw/editor - [@tldraw/file-format] gone, merged to tldraw/tldraw --------- Co-authored-by: alex <alex@dytry.ch>
110 lines
2.9 KiB
JSON
110 lines
2.9 KiB
JSON
{
|
|
"name": "@tldraw/editor",
|
|
"description": "A tiny little drawing app (editor).",
|
|
"version": "2.0.0-alpha.14",
|
|
"packageManager": "yarn@3.5.0",
|
|
"author": {
|
|
"name": "tldraw GB Ltd.",
|
|
"email": "hello@tldraw.com"
|
|
},
|
|
"homepage": "https://tldraw.dev",
|
|
"license": "Apache-2.0",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/tldraw/tldraw"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/tldraw/tldraw/issues"
|
|
},
|
|
"keywords": [
|
|
"tldraw",
|
|
"drawing",
|
|
"app",
|
|
"development",
|
|
"whiteboard",
|
|
"canvas",
|
|
"infinite"
|
|
],
|
|
"/* NOTE */": "These `main` and `types` fields are rewritten by the build script. They are not the actual values we publish",
|
|
"main": "./src/index.ts",
|
|
"types": "./.tsbuild/index.d.ts",
|
|
"style": "./editor.css",
|
|
"/* GOTCHA */": "files will include ./dist and index.d.ts by default, add any others you want to include in here",
|
|
"files": [
|
|
"editor.css"
|
|
],
|
|
"scripts": {
|
|
"test": "lazy inherit",
|
|
"benchmark": "yarn run -T tsx ./scripts/benchmark.ts",
|
|
"test-coverage": "lazy inherit",
|
|
"build": "yarn run -T tsx ../../scripts/build-package.ts",
|
|
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
|
|
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
|
|
"postpack": "../../scripts/postpack.sh",
|
|
"pack-tarball": "yarn pack",
|
|
"lint": "yarn run -T tsx ../../scripts/lint.ts"
|
|
},
|
|
"dependencies": {
|
|
"@tldraw/state": "workspace:*",
|
|
"@tldraw/store": "workspace:*",
|
|
"@tldraw/tlschema": "workspace:*",
|
|
"@tldraw/utils": "workspace:*",
|
|
"@tldraw/validate": "workspace:*",
|
|
"@types/core-js": "^2.5.5",
|
|
"@use-gesture/react": "^10.2.27",
|
|
"classnames": "^2.3.2",
|
|
"core-js": "^3.31.1",
|
|
"eventemitter3": "^4.0.7",
|
|
"idb": "^7.1.1",
|
|
"is-plain-object": "^5.0.0",
|
|
"lodash.throttle": "^4.1.1",
|
|
"lodash.uniq": "^4.5.0",
|
|
"nanoid": "^3.3.6"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "^18",
|
|
"react-dom": "^18"
|
|
},
|
|
"devDependencies": {
|
|
"@peculiar/webcrypto": "^1.4.0",
|
|
"@testing-library/jest-dom": "^5.16.5",
|
|
"@testing-library/react": "^14.0.0",
|
|
"@types/benchmark": "^2.1.2",
|
|
"@types/lodash.throttle": "^4.1.7",
|
|
"@types/lodash.uniq": "^4.5.7",
|
|
"@types/react-test-renderer": "^18.0.0",
|
|
"@types/wicg-file-system-access": "^2020.9.5",
|
|
"benchmark": "^2.1.4",
|
|
"fake-indexeddb": "^4.0.0",
|
|
"jest-canvas-mock": "^2.5.1",
|
|
"jest-environment-jsdom": "^29.4.3",
|
|
"lazyrepo": "0.0.0-alpha.27",
|
|
"react-test-renderer": "^18.2.0",
|
|
"resize-observer-polyfill": "^1.5.1"
|
|
},
|
|
"jest": {
|
|
"preset": "config/jest/node",
|
|
"testEnvironment": "jsdom",
|
|
"fakeTimers": {
|
|
"enableGlobally": true
|
|
},
|
|
"testPathIgnorePatterns": [
|
|
"^.+\\.*.css$"
|
|
],
|
|
"transformIgnorePatterns": [
|
|
"node_modules/(?!(nanoid)/)"
|
|
],
|
|
"moduleNameMapper": {
|
|
"^~(.*)": "<rootDir>/src/$1",
|
|
"\\.(css|less|scss|sass)$": "identity-obj-proxy"
|
|
},
|
|
"setupFiles": [
|
|
"raf/polyfill",
|
|
"jest-canvas-mock",
|
|
"<rootDir>/setupTests.js"
|
|
],
|
|
"setupFilesAfterEnv": [
|
|
"../../config/setupJest.ts"
|
|
]
|
|
}
|
|
}
|