@tldraw/tldraw 4.3.0-next.f4772c19540d → 4.4.0-canary.15cff7ea86f8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,7 @@ This package is kept around for legacy purposes. It just tracks the normal `tldr
6
6
 
7
7
  This project is part of the tldraw SDK. It is provided under the [tldraw SDK license](https://github.com/tldraw/tldraw/blob/main/LICENSE.md).
8
8
 
9
- You can use the tldraw SDK in commercial or non-commercial projects so long as you preserve the "Made with tldraw" watermark on the canvas. To remove the watermark, you can purchase a [business license](https://tldraw.dev#pricing). Visit [tldraw.dev](https://tldraw.dev) to learn more.
9
+ You can use the tldraw SDK in commercial or non-commercial projects so long as you preserve the "Made with tldraw" watermark on the canvas. To remove the watermark, you can purchase a [business license](https://tldraw.dev/pricing). Visit [tldraw.dev](https://tldraw.dev) to learn more.
10
10
 
11
11
  ## Trademarks
12
12
 
package/dist-cjs/index.js CHANGED
@@ -19,7 +19,7 @@ var import_tldraw = require("tldraw");
19
19
  __reExport(index_exports, require("tldraw"), module.exports);
20
20
  (0, import_tldraw.registerTldrawLibraryVersion)(
21
21
  "@tldraw/tldraw",
22
- "4.3.0-next.f4772c19540d",
22
+ "4.4.0-canary.15cff7ea86f8",
23
23
  "cjs"
24
24
  );
25
25
  //# sourceMappingURL=index.js.map
@@ -2,7 +2,7 @@ import { registerTldrawLibraryVersion } from "tldraw";
2
2
  export * from "tldraw";
3
3
  registerTldrawLibraryVersion(
4
4
  "@tldraw/tldraw",
5
- "4.3.0-next.f4772c19540d",
5
+ "4.4.0-canary.15cff7ea86f8",
6
6
  "esm"
7
7
  );
8
8
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tldraw/tldraw",
3
3
  "description": "A tiny little drawing editor.",
4
- "version": "4.3.0-next.f4772c19540d",
4
+ "version": "4.4.0-canary.15cff7ea86f8",
5
5
  "author": {
6
6
  "name": "tldraw Inc.",
7
7
  "email": "hello@tldraw.com"
@@ -48,18 +48,19 @@
48
48
  "src"
49
49
  ],
50
50
  "dependencies": {
51
- "tldraw": "4.3.0-next.f4772c19540d"
51
+ "tldraw": "4.4.0-canary.15cff7ea86f8"
52
52
  },
53
53
  "peerDependencies": {
54
- "react": "^18.2.0 || ^19.0.0",
55
- "react-dom": "^18.2.0 || ^19.0.0"
54
+ "react": "^18.2.0 || ^19.2.1",
55
+ "react-dom": "^18.2.0 || ^19.2.1"
56
56
  },
57
57
  "devDependencies": {
58
- "@types/react": "^18.3.18",
58
+ "@types/react": "^19.2.7",
59
+ "@types/react-dom": "^19.2.3",
59
60
  "chokidar-cli": "^3.0.0",
60
61
  "lazyrepo": "0.0.0-alpha.27",
61
- "react": "^18.3.1",
62
- "react-dom": "^18.3.1"
62
+ "react": "^19.2.1",
63
+ "react-dom": "^19.2.1"
63
64
  },
64
65
  "module": "dist-esm/index.mjs",
65
66
  "source": "src/index.ts",
package/tldraw.css CHANGED
@@ -611,7 +611,6 @@ input,
611
611
  pointer-events: all;
612
612
  white-space: pre-wrap;
613
613
  overflow-wrap: break-word;
614
- text-shadow: var(--tl-text-outline);
615
614
  }
616
615
 
617
616
  .tl-text-wrapper[data-font='draw'] {
@@ -713,7 +712,7 @@ input,
713
712
  resize: none;
714
713
  border: none;
715
714
  user-select: none;
716
- contain: style paint;
715
+ contain: layout style paint;
717
716
  /* N.B. This property, while discouraged ("intended for Document Type Definition (DTD) designers") is necessary for ensuring correct mixed RTL/LTR behavior when exporting SVGs. */
718
717
  unicode-bidi: plaintext;
719
718
  -webkit-user-select: none;
@@ -774,7 +773,6 @@ input,
774
773
  justify-content: center;
775
774
  align-items: center;
776
775
  color: var(--tl-color-text);
777
- text-shadow: var(--tl-text-outline);
778
776
  line-height: inherit;
779
777
  position: absolute;
780
778
  inset: 0px;
@@ -974,6 +972,14 @@ input,
974
972
  display: block;
975
973
  }
976
974
 
975
+ .tl-text__outline {
976
+ text-shadow: var(--tl-text-outline);
977
+ }
978
+
979
+ .tl-text__no-outline {
980
+ text-shadow: none;
981
+ }
982
+
977
983
  /* --------------------- Loading -------------------- */
978
984
 
979
985
  .tl-loading {
@@ -1138,14 +1144,12 @@ input,
1138
1144
  fill: none;
1139
1145
  }
1140
1146
 
1141
- @media (pointer: coarse) {
1142
- .tl-handle__bg:active {
1143
- fill: var(--tl-color-selection-fill);
1144
- }
1147
+ .tl-container[data-coarse='true'] .tl-handle__bg:active {
1148
+ fill: var(--tl-color-selection-fill);
1149
+ }
1145
1150
 
1146
- .tl-handle__create {
1147
- opacity: 1;
1148
- }
1151
+ .tl-container[data-coarse='true'] .tl-handle__create {
1152
+ opacity: 1;
1149
1153
  }
1150
1154
 
1151
1155
  .tl-rotate-corner:not(:hover),
@@ -1221,7 +1225,6 @@ input,
1221
1225
  align-items: center;
1222
1226
  text-align: center;
1223
1227
  color: var(--tl-color-text);
1224
- text-shadow: var(--tl-text-outline);
1225
1228
  }
1226
1229
 
1227
1230
  .tl-shape[data-shape-type='arrow'] .tl-text-label__inner {
@@ -1450,7 +1453,6 @@ input,
1450
1453
  }
1451
1454
 
1452
1455
  .tl-note__container > .tl-text-label {
1453
- text-shadow: none;
1454
1456
  color: currentColor;
1455
1457
  }
1456
1458
 
@@ -1838,13 +1840,15 @@ it from receiving any pointer events or affecting the cursor. */
1838
1840
  z-index: 0;
1839
1841
  }
1840
1842
 
1841
- .tlui-button:disabled {
1843
+ .tlui-button:disabled,
1844
+ .tlui-button[data-disabled] {
1842
1845
  color: var(--tl-color-text-3);
1843
1846
  text-shadow: none;
1844
1847
  cursor: default;
1845
1848
  }
1846
1849
 
1847
- .tlui-button:disabled .tlui-kbd {
1850
+ .tlui-button:disabled .tlui-kbd,
1851
+ .tlui-button[data-disabled] .tlui-kbd {
1848
1852
  color: var(--tl-color-text-3);
1849
1853
  }
1850
1854
 
@@ -1893,7 +1897,7 @@ it from receiving any pointer events or affecting the cursor. */
1893
1897
  }
1894
1898
 
1895
1899
  .tlui-button[data-isactive='true']::after,
1896
- .tlui-button[data-isactive='true']:not(:disabled, :focus-visible):active:after {
1900
+ .tlui-button[data-isactive='true']:not(:disabled, [data-disabled], :focus-visible):active:after {
1897
1901
  background: var(--tl-color-hint);
1898
1902
  opacity: 1;
1899
1903
  }
@@ -1909,11 +1913,11 @@ it from receiving any pointer events or affecting the cursor. */
1909
1913
  opacity: 1;
1910
1914
  }
1911
1915
 
1912
- .tlui-button:not(:disabled):hover {
1916
+ .tlui-button:not(:disabled, [data-disabled]):hover {
1913
1917
  z-index: 1;
1914
1918
  }
1915
1919
 
1916
- .tlui-button:not(:disabled):hover::after {
1920
+ .tlui-button:not(:disabled, [data-disabled]):hover::after {
1917
1921
  opacity: 1;
1918
1922
  }
1919
1923
  }
@@ -1952,11 +1956,11 @@ it from receiving any pointer events or affecting the cursor. */
1952
1956
  }
1953
1957
 
1954
1958
  @media (hover: hover) {
1955
- .tlui-button__primary:not(:disabled, :focus-visible):hover {
1959
+ .tlui-button__primary:not(:disabled, [data-disabled], :focus-visible):hover {
1956
1960
  color: var(--tl-color-primary);
1957
1961
  }
1958
1962
 
1959
- .tlui-button__danger:not(:disabled, :focus-visible):hover {
1963
+ .tlui-button__danger:not(:disabled, [data-disabled], :focus-visible):hover {
1960
1964
  color: var(--tl-color-danger);
1961
1965
  text-shadow: none;
1962
1966
  }
@@ -2044,11 +2048,11 @@ it from receiving any pointer events or affecting the cursor. */
2044
2048
  color: var(--tl-color-selected-contrast);
2045
2049
  }
2046
2050
 
2047
- .tlui-button__tool[aria-pressed='true']:not(:disabled, :focus-visible):active {
2051
+ .tlui-button__tool[aria-pressed='true']:not(:disabled, [data-disabled], :focus-visible):active {
2048
2052
  color: var(--tl-color-selected-contrast);
2049
2053
  }
2050
2054
 
2051
- .tlui-button__tool[aria-pressed='true']:not(:disabled)::after {
2055
+ .tlui-button__tool[aria-pressed='true']:not(:disabled, [data-disabled])::after {
2052
2056
  background: var(--tl-color-selected);
2053
2057
  opacity: 1;
2054
2058
  }
@@ -2410,25 +2414,31 @@ it from receiving any pointer events or affecting the cursor. */
2410
2414
 
2411
2415
  /* Submenu triggers */
2412
2416
 
2413
- .tlui-menu__submenu__trigger[data-state='open']::after {
2414
- opacity: 1;
2415
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2417
+ .tlui-menu__submenu__trigger {
2418
+ --gradient-angle: 90deg;
2419
+ }
2420
+
2421
+ .tlui-menu__submenu__trigger[data-direction='left'] {
2422
+ --gradient-angle: 270deg;
2416
2423
  }
2417
2424
 
2418
- .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']::after {
2425
+ .tlui-menu__submenu__trigger[data-state='open']::after {
2419
2426
  opacity: 1;
2420
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2427
+ background: linear-gradient(
2428
+ var(--gradient-angle),
2429
+ rgba(144, 144, 144, 0) 0%,
2430
+ var(--tl-color-muted-2) 100%
2431
+ );
2421
2432
  }
2422
2433
 
2423
2434
  @media (hover: hover) {
2424
- .tlui-menu__submenu__trigger[data-state='open']:not(:hover)::after {
2435
+ .tlui-menu__submenu__trigger:is(:hover, [data-state='open'])::after {
2425
2436
  opacity: 1;
2426
- background: linear-gradient(90deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2427
- }
2428
-
2429
- .tlui-menu__submenu__trigger[data-direction='left'][data-state='open']:not(:hover)::after {
2430
- opacity: 1;
2431
- background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
2437
+ background: linear-gradient(
2438
+ var(--gradient-angle),
2439
+ rgba(144, 144, 144, 0) 0%,
2440
+ var(--tl-color-muted-2) 100%
2441
+ );
2432
2442
  }
2433
2443
  }
2434
2444
 
@@ -2707,10 +2717,8 @@ it from receiving any pointer events or affecting the cursor. */
2707
2717
  }
2708
2718
  }
2709
2719
 
2710
- @media (any-pointer: coarse) {
2711
- .tlui-page_menu__item__submenu > .tlui-button {
2712
- opacity: 1;
2713
- }
2720
+ .tl-container[data-coarse='true'] .tlui-page_menu__item__submenu > .tlui-button {
2721
+ opacity: 1;
2714
2722
  }
2715
2723
 
2716
2724
  .tlui-button__icon {
@@ -2749,16 +2757,15 @@ it from receiving any pointer events or affecting the cursor. */
2749
2757
 
2750
2758
  .tlui-offline-indicator {
2751
2759
  display: flex;
2752
- flex-direction: row;
2753
- gap: var(--tl-space-3);
2754
- color: var(--tl-color-text);
2755
- background-color: var(--tl-color-low);
2756
- border: 3px solid var(--tl-color-background);
2757
- padding: 0px var(--tl-space-5);
2758
- height: 42px;
2760
+ color: var(--tl-color-background);
2761
+ background-color: var(--tl-color-text);
2762
+ border: none;
2763
+ width: 32px;
2764
+ height: 32px;
2759
2765
  align-items: center;
2760
2766
  justify-content: center;
2761
2767
  border-radius: 99px;
2768
+ cursor: default;
2762
2769
  opacity: 0;
2763
2770
  animation: tl-fade-in;
2764
2771
  animation-duration: 0.12s;
@@ -3076,6 +3083,7 @@ tldraw? probably.
3076
3083
  position: relative;
3077
3084
  background: var(--tl-color-panel);
3078
3085
  box-shadow: var(--tl-shadow-2);
3086
+ contain: layout style paint;
3079
3087
  }
3080
3088
 
3081
3089
  .tlui-main-toolbar--horizontal .tlui-main-toolbar__mobile-style-panel {