@tldraw/editor 3.16.0-canary.efdec30fc411 → 3.16.0-canary.f20b7a478e22

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 (209) hide show
  1. package/dist-cjs/index.d.ts +113 -104
  2. package/dist-cjs/index.js +6 -6
  3. package/dist-cjs/index.js.map +2 -2
  4. package/dist-cjs/lib/TldrawEditor.js +7 -7
  5. package/dist-cjs/lib/TldrawEditor.js.map +2 -2
  6. package/dist-cjs/lib/components/Shape.js +7 -10
  7. package/dist-cjs/lib/components/Shape.js.map +2 -2
  8. package/dist-cjs/lib/components/default-components/DefaultCanvas.js +14 -23
  9. package/dist-cjs/lib/components/default-components/DefaultCanvas.js.map +2 -2
  10. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js +1 -1
  11. package/dist-cjs/lib/components/default-components/DefaultCollaboratorHint.js.map +1 -1
  12. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +1 -1
  13. package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +2 -2
  14. package/dist-cjs/lib/components/default-components/DefaultScribble.js +1 -1
  15. package/dist-cjs/lib/components/default-components/DefaultScribble.js.map +2 -2
  16. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js +9 -1
  17. package/dist-cjs/lib/components/default-components/DefaultShapeIndicator.js.map +2 -2
  18. package/dist-cjs/lib/config/TLUserPreferences.js +1 -1
  19. package/dist-cjs/lib/config/TLUserPreferences.js.map +2 -2
  20. package/dist-cjs/lib/editor/Editor.js +50 -114
  21. package/dist-cjs/lib/editor/Editor.js.map +2 -2
  22. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js +4 -0
  23. package/dist-cjs/lib/editor/derivations/notVisibleShapes.js.map +2 -2
  24. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js +4 -2
  25. package/dist-cjs/lib/editor/managers/FocusManager/FocusManager.js.map +2 -2
  26. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js +1 -1
  27. package/dist-cjs/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.js.map +2 -2
  28. package/dist-cjs/lib/editor/shapes/ShapeUtil.js +23 -0
  29. package/dist-cjs/lib/editor/shapes/ShapeUtil.js.map +2 -2
  30. package/dist-cjs/lib/editor/types/misc-types.js.map +1 -1
  31. package/dist-cjs/lib/exports/getSvgJsx.js +35 -16
  32. package/dist-cjs/lib/exports/getSvgJsx.js.map +2 -2
  33. package/dist-cjs/lib/hooks/useCanvasEvents.js +22 -17
  34. package/dist-cjs/lib/hooks/useCanvasEvents.js.map +2 -2
  35. package/dist-cjs/lib/hooks/useDocumentEvents.js +5 -5
  36. package/dist-cjs/lib/hooks/useDocumentEvents.js.map +2 -2
  37. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js +1 -2
  38. package/dist-cjs/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.js.map +2 -2
  39. package/dist-cjs/lib/hooks/useGestureEvents.js +1 -1
  40. package/dist-cjs/lib/hooks/useGestureEvents.js.map +2 -2
  41. package/dist-cjs/lib/hooks/useHandleEvents.js +3 -3
  42. package/dist-cjs/lib/hooks/useHandleEvents.js.map +2 -2
  43. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js +4 -1
  44. package/dist-cjs/lib/hooks/usePassThroughMouseOverEvents.js.map +2 -2
  45. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js +4 -1
  46. package/dist-cjs/lib/hooks/usePassThroughWheelEvents.js.map +2 -2
  47. package/dist-cjs/lib/hooks/useSelectionEvents.js +4 -4
  48. package/dist-cjs/lib/hooks/useSelectionEvents.js.map +2 -2
  49. package/dist-cjs/lib/license/LicenseManager.js +143 -53
  50. package/dist-cjs/lib/license/LicenseManager.js.map +2 -2
  51. package/dist-cjs/lib/license/LicenseProvider.js +39 -1
  52. package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
  53. package/dist-cjs/lib/license/Watermark.js +73 -11
  54. package/dist-cjs/lib/license/Watermark.js.map +3 -3
  55. package/dist-cjs/lib/license/useLicenseManagerState.js.map +2 -2
  56. package/dist-cjs/lib/options.js +6 -0
  57. package/dist-cjs/lib/options.js.map +2 -2
  58. package/dist-cjs/lib/primitives/Box.js +3 -0
  59. package/dist-cjs/lib/primitives/Box.js.map +2 -2
  60. package/dist-cjs/lib/primitives/Vec.js +0 -4
  61. package/dist-cjs/lib/primitives/Vec.js.map +2 -2
  62. package/dist-cjs/lib/primitives/geometry/Geometry2d.js +50 -20
  63. package/dist-cjs/lib/primitives/geometry/Geometry2d.js.map +2 -2
  64. package/dist-cjs/lib/primitives/geometry/Group2d.js +8 -1
  65. package/dist-cjs/lib/primitives/geometry/Group2d.js.map +2 -2
  66. package/dist-cjs/lib/utils/dom.js +12 -1
  67. package/dist-cjs/lib/utils/dom.js.map +2 -2
  68. package/dist-cjs/lib/utils/getPointerInfo.js +2 -2
  69. package/dist-cjs/lib/utils/getPointerInfo.js.map +2 -2
  70. package/dist-cjs/lib/utils/reparenting.js +2 -35
  71. package/dist-cjs/lib/utils/reparenting.js.map +3 -3
  72. package/dist-cjs/version.js +3 -3
  73. package/dist-cjs/version.js.map +1 -1
  74. package/dist-esm/index.d.mts +113 -104
  75. package/dist-esm/index.mjs +9 -7
  76. package/dist-esm/index.mjs.map +2 -2
  77. package/dist-esm/lib/TldrawEditor.mjs +8 -8
  78. package/dist-esm/lib/TldrawEditor.mjs.map +2 -2
  79. package/dist-esm/lib/components/Shape.mjs +7 -10
  80. package/dist-esm/lib/components/Shape.mjs.map +2 -2
  81. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs +15 -24
  82. package/dist-esm/lib/components/default-components/DefaultCanvas.mjs.map +2 -2
  83. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs +1 -1
  84. package/dist-esm/lib/components/default-components/DefaultCollaboratorHint.mjs.map +1 -1
  85. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +1 -1
  86. package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +2 -2
  87. package/dist-esm/lib/components/default-components/DefaultScribble.mjs +1 -1
  88. package/dist-esm/lib/components/default-components/DefaultScribble.mjs.map +2 -2
  89. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs +9 -1
  90. package/dist-esm/lib/components/default-components/DefaultShapeIndicator.mjs.map +2 -2
  91. package/dist-esm/lib/config/TLUserPreferences.mjs +1 -1
  92. package/dist-esm/lib/config/TLUserPreferences.mjs.map +2 -2
  93. package/dist-esm/lib/editor/Editor.mjs +50 -114
  94. package/dist-esm/lib/editor/Editor.mjs.map +2 -2
  95. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs +4 -0
  96. package/dist-esm/lib/editor/derivations/notVisibleShapes.mjs.map +2 -2
  97. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs +4 -2
  98. package/dist-esm/lib/editor/managers/FocusManager/FocusManager.mjs.map +2 -2
  99. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs +1 -1
  100. package/dist-esm/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.mjs.map +2 -2
  101. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs +23 -0
  102. package/dist-esm/lib/editor/shapes/ShapeUtil.mjs.map +2 -2
  103. package/dist-esm/lib/exports/getSvgJsx.mjs +36 -16
  104. package/dist-esm/lib/exports/getSvgJsx.mjs.map +2 -2
  105. package/dist-esm/lib/hooks/useCanvasEvents.mjs +24 -18
  106. package/dist-esm/lib/hooks/useCanvasEvents.mjs.map +2 -2
  107. package/dist-esm/lib/hooks/useDocumentEvents.mjs +11 -6
  108. package/dist-esm/lib/hooks/useDocumentEvents.mjs.map +2 -2
  109. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs +2 -3
  110. package/dist-esm/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.mjs.map +2 -2
  111. package/dist-esm/lib/hooks/useGestureEvents.mjs +2 -2
  112. package/dist-esm/lib/hooks/useGestureEvents.mjs.map +2 -2
  113. package/dist-esm/lib/hooks/useHandleEvents.mjs +9 -4
  114. package/dist-esm/lib/hooks/useHandleEvents.mjs.map +2 -2
  115. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs +4 -1
  116. package/dist-esm/lib/hooks/usePassThroughMouseOverEvents.mjs.map +2 -2
  117. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs +4 -1
  118. package/dist-esm/lib/hooks/usePassThroughWheelEvents.mjs.map +2 -2
  119. package/dist-esm/lib/hooks/useSelectionEvents.mjs +6 -5
  120. package/dist-esm/lib/hooks/useSelectionEvents.mjs.map +2 -2
  121. package/dist-esm/lib/license/LicenseManager.mjs +144 -54
  122. package/dist-esm/lib/license/LicenseManager.mjs.map +2 -2
  123. package/dist-esm/lib/license/LicenseProvider.mjs +39 -2
  124. package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
  125. package/dist-esm/lib/license/Watermark.mjs +74 -12
  126. package/dist-esm/lib/license/Watermark.mjs.map +3 -3
  127. package/dist-esm/lib/license/useLicenseManagerState.mjs.map +2 -2
  128. package/dist-esm/lib/options.mjs +6 -0
  129. package/dist-esm/lib/options.mjs.map +2 -2
  130. package/dist-esm/lib/primitives/Box.mjs +4 -1
  131. package/dist-esm/lib/primitives/Box.mjs.map +2 -2
  132. package/dist-esm/lib/primitives/Vec.mjs +0 -4
  133. package/dist-esm/lib/primitives/Vec.mjs.map +2 -2
  134. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs +53 -21
  135. package/dist-esm/lib/primitives/geometry/Geometry2d.mjs.map +2 -2
  136. package/dist-esm/lib/primitives/geometry/Group2d.mjs +8 -1
  137. package/dist-esm/lib/primitives/geometry/Group2d.mjs.map +2 -2
  138. package/dist-esm/lib/utils/dom.mjs +12 -1
  139. package/dist-esm/lib/utils/dom.mjs.map +2 -2
  140. package/dist-esm/lib/utils/getPointerInfo.mjs +2 -2
  141. package/dist-esm/lib/utils/getPointerInfo.mjs.map +2 -2
  142. package/dist-esm/lib/utils/reparenting.mjs +3 -40
  143. package/dist-esm/lib/utils/reparenting.mjs.map +2 -2
  144. package/dist-esm/version.mjs +3 -3
  145. package/dist-esm/version.mjs.map +1 -1
  146. package/editor.css +308 -292
  147. package/package.json +14 -37
  148. package/src/index.ts +4 -9
  149. package/src/lib/TldrawEditor.tsx +9 -16
  150. package/src/lib/components/Shape.tsx +6 -12
  151. package/src/lib/components/default-components/DefaultCanvas.tsx +12 -23
  152. package/src/lib/components/default-components/DefaultCollaboratorHint.tsx +1 -1
  153. package/src/lib/components/default-components/DefaultErrorFallback.tsx +1 -1
  154. package/src/lib/components/default-components/DefaultScribble.tsx +1 -1
  155. package/src/lib/components/default-components/DefaultShapeIndicator.tsx +5 -1
  156. package/src/lib/config/TLUserPreferences.ts +1 -1
  157. package/src/lib/editor/Editor.test.ts +102 -11
  158. package/src/lib/editor/Editor.ts +65 -151
  159. package/src/lib/editor/derivations/notVisibleShapes.ts +6 -0
  160. package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +15 -14
  161. package/src/lib/editor/managers/EdgeScrollManager/EdgeScrollManager.test.ts +16 -15
  162. package/src/lib/editor/managers/FocusManager/FocusManager.test.ts +49 -48
  163. package/src/lib/editor/managers/FocusManager/FocusManager.ts +6 -2
  164. package/src/lib/editor/managers/FontManager/FontManager.test.ts +24 -23
  165. package/src/lib/editor/managers/HistoryManager/HistoryManager.test.ts +7 -6
  166. package/src/lib/editor/managers/ScribbleManager/ScribbleManager.test.ts +12 -11
  167. package/src/lib/editor/managers/SnapManager/SnapManager.test.ts +57 -50
  168. package/src/lib/editor/managers/TextManager/TextManager.test.ts +51 -26
  169. package/src/lib/editor/managers/TickManager/TickManager.test.ts +14 -13
  170. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.test.ts +21 -26
  171. package/src/lib/editor/managers/UserPreferencesManager/UserPreferencesManager.ts +1 -1
  172. package/src/lib/editor/shapes/ShapeUtil.ts +46 -0
  173. package/src/lib/editor/types/misc-types.ts +0 -6
  174. package/src/lib/exports/getSvgJsx.test.ts +868 -0
  175. package/src/lib/exports/getSvgJsx.tsx +78 -21
  176. package/src/lib/hooks/useCanvasEvents.ts +23 -17
  177. package/src/lib/hooks/useDocumentEvents.ts +11 -6
  178. package/src/lib/hooks/useFixSafariDoubleTapZoomPencilEvents.ts +2 -2
  179. package/src/lib/hooks/useGestureEvents.ts +2 -2
  180. package/src/lib/hooks/useHandleEvents.ts +9 -4
  181. package/src/lib/hooks/usePassThroughMouseOverEvents.ts +4 -1
  182. package/src/lib/hooks/usePassThroughWheelEvents.ts +6 -1
  183. package/src/lib/hooks/useSelectionEvents.ts +6 -5
  184. package/src/lib/license/LicenseManager.test.ts +724 -383
  185. package/src/lib/license/LicenseManager.ts +204 -58
  186. package/src/lib/license/LicenseProvider.tsx +74 -2
  187. package/src/lib/license/Watermark.test.tsx +2 -1
  188. package/src/lib/license/Watermark.tsx +79 -12
  189. package/src/lib/license/useLicenseManagerState.ts +2 -2
  190. package/src/lib/options.ts +6 -0
  191. package/src/lib/primitives/Box.test.ts +126 -0
  192. package/src/lib/primitives/Box.ts +10 -1
  193. package/src/lib/primitives/Vec.ts +0 -5
  194. package/src/lib/primitives/geometry/Geometry2d.test.ts +420 -0
  195. package/src/lib/primitives/geometry/Geometry2d.ts +78 -21
  196. package/src/lib/primitives/geometry/Group2d.ts +10 -1
  197. package/src/lib/test/InFrontOfTheCanvas.test.tsx +187 -0
  198. package/src/lib/utils/dom.test.ts +94 -0
  199. package/src/lib/utils/dom.ts +38 -1
  200. package/src/lib/utils/getPointerInfo.ts +2 -1
  201. package/src/lib/utils/reparenting.ts +3 -69
  202. package/src/lib/utils/sync/LocalIndexedDb.test.ts +2 -1
  203. package/src/lib/utils/sync/TLLocalSyncClient.test.ts +15 -15
  204. package/src/version.ts +3 -3
  205. package/dist-cjs/lib/utils/nearestMultiple.js +0 -34
  206. package/dist-cjs/lib/utils/nearestMultiple.js.map +0 -7
  207. package/dist-esm/lib/utils/nearestMultiple.mjs +0 -14
  208. package/dist-esm/lib/utils/nearestMultiple.mjs.map +0 -7
  209. package/src/lib/utils/nearestMultiple.ts +0 -13
@@ -1,6 +1,6 @@
1
1
  import { PageRecordType } from '@tldraw/tlschema'
2
2
  import { IndexKey, promiseWithResolve } from '@tldraw/utils'
3
- import { afterEach } from 'node:test'
3
+ import { Mock, vi } from 'vitest'
4
4
  import { createTLStore } from '../../config/createTLStore'
5
5
  import { TLLocalSyncClient } from './TLLocalSyncClient'
6
6
  import { hardReset } from './hardReset'
@@ -10,20 +10,20 @@ class BroadcastChannelMock {
10
10
  constructor(_name: string) {
11
11
  // noop
12
12
  }
13
- postMessage = jest.fn((_msg: any) => {
13
+ postMessage = vi.fn((_msg: any) => {
14
14
  // noop
15
15
  })
16
- close = jest.fn(() => {
16
+ close = vi.fn(() => {
17
17
  // noop
18
18
  })
19
19
  }
20
20
 
21
21
  function testClient(channel = new BroadcastChannelMock('test')) {
22
22
  const store = createTLStore({ shapeUtils: [], bindingUtils: [] })
23
- const onLoad = jest.fn(() => {
23
+ const onLoad = vi.fn(() => {
24
24
  return
25
25
  })
26
- const onLoadError = jest.fn(() => {
26
+ const onLoadError = vi.fn(() => {
27
27
  return
28
28
  })
29
29
  const client = new TLLocalSyncClient(
@@ -36,26 +36,26 @@ function testClient(channel = new BroadcastChannelMock('test')) {
36
36
  channel
37
37
  )
38
38
 
39
- client.db.storeSnapshot = jest.fn(() => Promise.resolve())
40
- client.db.storeChanges = jest.fn(() => Promise.resolve())
39
+ client.db.storeSnapshot = vi.fn(() => Promise.resolve())
40
+ client.db.storeChanges = vi.fn(() => Promise.resolve())
41
41
 
42
42
  return {
43
- client: client as { db: { storeSnapshot: jest.Mock; storeChanges: jest.Mock } } & typeof client,
43
+ client: client as { db: { storeSnapshot: Mock; storeChanges: Mock } } & typeof client,
44
44
  store,
45
45
  onLoad,
46
46
  onLoadError,
47
47
  channel,
48
48
  tick: async () => {
49
- jest.advanceTimersByTime(500)
49
+ vi.advanceTimersByTime(500)
50
50
  await Promise.resolve()
51
51
  await client.db.pending()
52
- jest.advanceTimersByTime(500)
52
+ vi.advanceTimersByTime(500)
53
53
  await Promise.resolve()
54
54
  },
55
55
  }
56
56
  }
57
57
 
58
- const reloadMock = jest.fn()
58
+ const reloadMock = vi.fn()
59
59
 
60
60
  beforeAll(() => {
61
61
  Object.defineProperty(window, 'location', {
@@ -65,14 +65,14 @@ beforeAll(() => {
65
65
  })
66
66
 
67
67
  beforeEach(() => {
68
- jest.clearAllMocks()
68
+ vi.clearAllMocks()
69
69
  })
70
70
 
71
71
  afterEach(async () => {
72
72
  await hardReset({ shouldReload: false })
73
73
  })
74
74
 
75
- jest.useFakeTimers()
75
+ vi.useFakeTimers()
76
76
 
77
77
  test('the client connects on instantiation, announcing its schema', async () => {
78
78
  const { channel, tick } = testClient()
@@ -86,7 +86,7 @@ test('the client connects on instantiation, announcing its schema', async () =>
86
86
  test('when a client receives an announce with a newer schema version it reloads itself', async () => {
87
87
  const { client, channel, onLoadError, tick } = testClient()
88
88
  await tick()
89
- jest.advanceTimersByTime(10000)
89
+ vi.advanceTimersByTime(10000)
90
90
  expect(reloadMock).not.toHaveBeenCalled()
91
91
  channel.onmessage?.({
92
92
  data: {
@@ -104,7 +104,7 @@ test('when a client receives an announce with a newer schema version it reloads
104
104
  test('when a client receives an announce with a newer schema version shortly after loading it does not reload but instead reports a loadError', async () => {
105
105
  const { client, channel, onLoadError, tick } = testClient()
106
106
  await tick()
107
- jest.advanceTimersByTime(1000)
107
+ vi.advanceTimersByTime(1000)
108
108
  expect(reloadMock).not.toHaveBeenCalled()
109
109
  channel.onmessage?.({
110
110
  data: {
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.16.0-canary.efdec30fc411'
4
+ export const version = '3.16.0-canary.f20b7a478e22'
5
5
  export const publishDates = {
6
6
  major: '2024-09-13T14:36:29.063Z',
7
- minor: '2025-08-08T14:53:46.305Z',
8
- patch: '2025-08-08T14:53:46.305Z',
7
+ minor: '2025-09-17T09:30:21.439Z',
8
+ patch: '2025-09-17T09:30:21.439Z',
9
9
  }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var nearestMultiple_exports = {};
20
- __export(nearestMultiple_exports, {
21
- nearestMultiple: () => nearestMultiple
22
- });
23
- module.exports = __toCommonJS(nearestMultiple_exports);
24
- function gcd(a, b) {
25
- return b === 0 ? a : gcd(b, a % b);
26
- }
27
- function nearestMultiple(float) {
28
- const decimal = float.toString().split(".")[1];
29
- if (!decimal) return 1;
30
- const denominator = Math.pow(10, decimal.length);
31
- const numerator = parseInt(decimal, 10);
32
- return denominator / gcd(numerator, denominator);
33
- }
34
- //# sourceMappingURL=nearestMultiple.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lib/utils/nearestMultiple.ts"],
4
- "sourcesContent": ["// Euclidean algorithm to find the GCD\nfunction gcd(a: number, b: number): number {\n\treturn b === 0 ? a : gcd(b, a % b)\n}\n\n// Returns the lowest value that the given number can be multiplied by to reach an integer\nexport function nearestMultiple(float: number) {\n\tconst decimal = float.toString().split('.')[1]\n\tif (!decimal) return 1\n\tconst denominator = Math.pow(10, decimal.length)\n\tconst numerator = parseInt(decimal, 10)\n\treturn denominator / gcd(numerator, denominator)\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS,IAAI,GAAW,GAAmB;AAC1C,SAAO,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AAClC;AAGO,SAAS,gBAAgB,OAAe;AAC9C,QAAM,UAAU,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;AAC7C,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,cAAc,KAAK,IAAI,IAAI,QAAQ,MAAM;AAC/C,QAAM,YAAY,SAAS,SAAS,EAAE;AACtC,SAAO,cAAc,IAAI,WAAW,WAAW;AAChD;",
6
- "names": []
7
- }
@@ -1,14 +0,0 @@
1
- function gcd(a, b) {
2
- return b === 0 ? a : gcd(b, a % b);
3
- }
4
- function nearestMultiple(float) {
5
- const decimal = float.toString().split(".")[1];
6
- if (!decimal) return 1;
7
- const denominator = Math.pow(10, decimal.length);
8
- const numerator = parseInt(decimal, 10);
9
- return denominator / gcd(numerator, denominator);
10
- }
11
- export {
12
- nearestMultiple
13
- };
14
- //# sourceMappingURL=nearestMultiple.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/lib/utils/nearestMultiple.ts"],
4
- "sourcesContent": ["// Euclidean algorithm to find the GCD\nfunction gcd(a: number, b: number): number {\n\treturn b === 0 ? a : gcd(b, a % b)\n}\n\n// Returns the lowest value that the given number can be multiplied by to reach an integer\nexport function nearestMultiple(float: number) {\n\tconst decimal = float.toString().split('.')[1]\n\tif (!decimal) return 1\n\tconst denominator = Math.pow(10, decimal.length)\n\tconst numerator = parseInt(decimal, 10)\n\treturn denominator / gcd(numerator, denominator)\n}\n"],
5
- "mappings": "AACA,SAAS,IAAI,GAAW,GAAmB;AAC1C,SAAO,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC;AAClC;AAGO,SAAS,gBAAgB,OAAe;AAC9C,QAAM,UAAU,MAAM,SAAS,EAAE,MAAM,GAAG,EAAE,CAAC;AAC7C,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,cAAc,KAAK,IAAI,IAAI,QAAQ,MAAM;AAC/C,QAAM,YAAY,SAAS,SAAS,EAAE;AACtC,SAAO,cAAc,IAAI,WAAW,WAAW;AAChD;",
6
- "names": []
7
- }
@@ -1,13 +0,0 @@
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
- }