@tldraw/editor 3.13.0-canary.e0dbcebeb554 → 3.13.0-canary.e6138942377f

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.
Files changed (48) hide show
  1. package/dist-cjs/index.d.ts +11 -1
  2. package/dist-cjs/index.js +1 -1
  3. package/dist-cjs/lib/components/Shape.js +12 -8
  4. package/dist-cjs/lib/components/Shape.js.map +2 -2
  5. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +21 -2
  6. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  7. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +17 -11
  8. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  9. package/dist-cjs/lib/editor/Editor.js +21 -8
  10. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  11. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  12. package/dist-cjs/lib/exports/getSvgJsx.js +12 -3
  13. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  14. package/dist-cjs/lib/utils/areShapesContentEqual.js +25 -0
  15. package/dist-cjs/lib/utils/areShapesContentEqual.js.map +7 -0
  16. package/dist-cjs/lib/utils/nearestMultiple.js +34 -0
  17. package/dist-cjs/lib/utils/nearestMultiple.js.map +7 -0
  18. package/dist-cjs/version.js +3 -3
  19. package/dist-cjs/version.js.map +1 -1
  20. package/dist-esm/index.d.mts +11 -1
  21. package/dist-esm/index.mjs +1 -1
  22. package/dist-esm/lib/components/Shape.mjs +12 -8
  23. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  24. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +21 -2
  25. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  26. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +17 -11
  27. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  28. package/dist-esm/lib/editor/Editor.mjs +21 -8
  29. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  30. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  31. package/dist-esm/lib/exports/getSvgJsx.mjs +12 -3
  32. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  33. package/dist-esm/lib/utils/areShapesContentEqual.mjs +5 -0
  34. package/dist-esm/lib/utils/areShapesContentEqual.mjs.map +7 -0
  35. package/dist-esm/lib/utils/nearestMultiple.mjs +14 -0
  36. package/dist-esm/lib/utils/nearestMultiple.mjs.map +7 -0
  37. package/dist-esm/version.mjs +3 -3
  38. package/dist-esm/version.mjs.map +1 -1
  39. package/package.json +7 -7
  40. package/src/lib/components/Shape.tsx +14 -10
  41. package/src/lib/components/default-components/DefaultCanvas.tsx +21 -2
  42. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +17 -8
  43. package/src/lib/editor/Editor.ts +21 -8
  44. package/src/lib/editor/shapes/ShapeUtil.ts +13 -1
  45. package/src/lib/exports/getSvgJsx.tsx +16 -7
  46. package/src/lib/utils/areShapesContentEqual.ts +4 -0
  47. package/src/lib/utils/nearestMultiple.ts +13 -0
  48. package/src/version.ts +3 -3
@@ -365,6 +365,21 @@ function SvgExport({
365
365
  onMount()
366
366
  }, [onMount, shapeElements])
367
367
 
368
+ let backgroundColor = background ? theme.background : 'transparent'
369
+
370
+ if (singleFrameShapeId && background) {
371
+ const frameShapeUtil = editor.getShapeUtil('frame') as any as
372
+ | undefined
373
+ | { options: { showColors: boolean } }
374
+ if (frameShapeUtil?.options.showColors) {
375
+ const shape = editor.getShape(singleFrameShapeId)! as TLFrameShape
376
+ const color = theme[shape.props.color]
377
+ backgroundColor = color.frame.fill
378
+ } else {
379
+ backgroundColor = theme.solid
380
+ }
381
+ }
382
+
368
383
  return (
369
384
  <SvgExportContextProvider editor={editor} context={exportContext}>
370
385
  <svg
@@ -375,13 +390,7 @@ function SvgExport({
375
390
  viewBox={`${bbox.minX} ${bbox.minY} ${bbox.width} ${bbox.height}`}
376
391
  strokeLinecap="round"
377
392
  strokeLinejoin="round"
378
- style={{
379
- backgroundColor: background
380
- ? singleFrameShapeId
381
- ? theme.solid
382
- : theme.background
383
- : 'transparent',
384
- }}
393
+ style={{ backgroundColor }}
385
394
  data-color-mode={isDarkMode ? 'dark' : 'light'}
386
395
  className={`tl-container tl-theme__force-sRGB ${isDarkMode ? 'tl-theme__dark' : 'tl-theme__light'}`}
387
396
  >
@@ -0,0 +1,4 @@
1
+ import { TLShape } from '@tldraw/tlschema'
2
+
3
+ export const areShapesContentEqual = (a: TLShape, b: TLShape) =>
4
+ a.props === b.props && a.meta === b.meta
@@ -0,0 +1,13 @@
1
+ // Euclidean algorithm to find the GCD
2
+ function gcd(a: number, b: number): number {
3
+ return b === 0 ? a : gcd(b, a % b)
4
+ }
5
+
6
+ // Returns the lowest value that the given number can be multiplied by to reach an integer
7
+ export function nearestMultiple(float: number) {
8
+ const decimal = float.toString().split('.')[1]
9
+ if (!decimal) return 1
10
+ const denominator = Math.pow(10, decimal.length)
11
+ const numerator = parseInt(decimal, 10)
12
+ return denominator / gcd(numerator, denominator)
13
+ }
package/src/version.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '3.13.0-canary.e0dbcebeb554'
4
+ export const version = '3.13.0-canary.e6138942377f'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-04-30T10:49:14.029Z',
8
- patch: '2025-04-30T10:49:14.029Z',
7
+ minor: '2025-05-06T09:18:49.800Z',
8
+ patch: '2025-05-06T09:18:49.800Z',
9
9
  }