@tldraw/editor 5.1.0 → 5.2.0-canary.4a316fdfb2bb
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/dist-cjs/index.d.ts +8 -10
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js +4 -1
- package/dist-cjs/lib/components/default-components/DefaultErrorFallback.js.map +3 -3
- package/dist-cjs/lib/components/default-components/DefaultLoadingScreen.js +2 -2
- package/dist-cjs/lib/components/default-components/DefaultLoadingScreen.js.map +2 -2
- package/dist-cjs/lib/components/default-components/DefaultShapeErrorFallback.js +1 -1
- package/dist-cjs/lib/components/default-components/DefaultShapeErrorFallback.js.map +3 -3
- package/dist-cjs/lib/components/default-components/DefaultSvgDefs.js +2 -2
- package/dist-cjs/lib/components/default-components/DefaultSvgDefs.js.map +2 -2
- package/dist-cjs/lib/editor/Editor.js +23 -2
- package/dist-cjs/lib/editor/Editor.js.map +2 -2
- package/dist-cjs/lib/editor/derivations/bindingsIndex.js +2 -2
- package/dist-cjs/lib/editor/derivations/bindingsIndex.js.map +2 -2
- package/dist-cjs/lib/editor/derivations/parentsToChildren.js +2 -2
- package/dist-cjs/lib/editor/derivations/parentsToChildren.js.map +2 -2
- package/dist-cjs/lib/editor/derivations/shapeIdsInCurrentPage.js +2 -2
- package/dist-cjs/lib/editor/derivations/shapeIdsInCurrentPage.js.map +2 -2
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js +8 -58
- package/dist-cjs/lib/editor/managers/ClickManager/ClickManager.js.map +2 -2
- package/dist-cjs/lib/editor/tools/StateNode.js.map +2 -2
- package/dist-cjs/lib/editor/types/event-types.js +0 -2
- package/dist-cjs/lib/editor/types/event-types.js.map +2 -2
- package/dist-cjs/lib/license/LicenseProvider.js +3 -1
- package/dist-cjs/lib/license/LicenseProvider.js.map +2 -2
- package/dist-cjs/lib/primitives/utils.js +2 -2
- package/dist-cjs/lib/primitives/utils.js.map +2 -2
- package/dist-cjs/lib/utils/dom.js +5 -3
- package/dist-cjs/lib/utils/dom.js.map +2 -2
- package/dist-cjs/version.js +3 -3
- package/dist-cjs/version.js.map +1 -1
- package/dist-esm/index.d.mts +8 -10
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs +4 -1
- package/dist-esm/lib/components/default-components/DefaultErrorFallback.mjs.map +3 -3
- package/dist-esm/lib/components/default-components/DefaultLoadingScreen.mjs +2 -2
- package/dist-esm/lib/components/default-components/DefaultLoadingScreen.mjs.map +2 -2
- package/dist-esm/lib/components/default-components/DefaultShapeErrorFallback.mjs +1 -1
- package/dist-esm/lib/components/default-components/DefaultShapeErrorFallback.mjs.map +3 -3
- package/dist-esm/lib/components/default-components/DefaultSvgDefs.mjs +2 -2
- package/dist-esm/lib/components/default-components/DefaultSvgDefs.mjs.map +2 -2
- package/dist-esm/lib/editor/Editor.mjs +23 -2
- package/dist-esm/lib/editor/Editor.mjs.map +2 -2
- package/dist-esm/lib/editor/derivations/bindingsIndex.mjs +2 -2
- package/dist-esm/lib/editor/derivations/bindingsIndex.mjs.map +2 -2
- package/dist-esm/lib/editor/derivations/parentsToChildren.mjs +2 -2
- package/dist-esm/lib/editor/derivations/parentsToChildren.mjs.map +2 -2
- package/dist-esm/lib/editor/derivations/shapeIdsInCurrentPage.mjs +2 -2
- package/dist-esm/lib/editor/derivations/shapeIdsInCurrentPage.mjs.map +2 -2
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs +8 -58
- package/dist-esm/lib/editor/managers/ClickManager/ClickManager.mjs.map +2 -2
- package/dist-esm/lib/editor/tools/StateNode.mjs.map +2 -2
- package/dist-esm/lib/editor/types/event-types.mjs +0 -2
- package/dist-esm/lib/editor/types/event-types.mjs.map +2 -2
- package/dist-esm/lib/license/LicenseProvider.mjs +3 -1
- package/dist-esm/lib/license/LicenseProvider.mjs.map +2 -2
- package/dist-esm/lib/primitives/utils.mjs +2 -2
- package/dist-esm/lib/primitives/utils.mjs.map +2 -2
- package/dist-esm/lib/utils/dom.mjs +5 -3
- package/dist-esm/lib/utils/dom.mjs.map +2 -2
- package/dist-esm/version.mjs +3 -3
- package/dist-esm/version.mjs.map +1 -1
- package/package.json +7 -7
- package/src/lib/components/default-components/DefaultErrorFallback.tsx +4 -1
- package/src/lib/components/default-components/DefaultLoadingScreen.tsx +1 -1
- package/src/lib/components/default-components/DefaultShapeErrorFallback.tsx +4 -3
- package/src/lib/components/default-components/DefaultSvgDefs.tsx +1 -1
- package/src/lib/editor/Editor.ts +39 -6
- package/src/lib/editor/derivations/bindingsIndex.ts +1 -1
- package/src/lib/editor/derivations/parentsToChildren.ts +1 -1
- package/src/lib/editor/derivations/shapeIdsInCurrentPage.ts +1 -1
- package/src/lib/editor/managers/ClickManager/ClickManager.test.ts +54 -74
- package/src/lib/editor/managers/ClickManager/ClickManager.ts +15 -65
- package/src/lib/editor/tools/StateNode.ts +0 -2
- package/src/lib/editor/types/event-types.ts +2 -6
- package/src/lib/license/LicenseProvider.tsx +3 -1
- package/src/lib/primitives/utils.ts +1 -1
- package/src/lib/utils/dom.ts +5 -3
- package/src/version.ts +3 -3
package/dist-cjs/index.d.ts
CHANGED
|
@@ -746,6 +746,7 @@ export declare class ClickManager {
|
|
|
746
746
|
private _clickTimeout?;
|
|
747
747
|
private _clickScreenPoint?;
|
|
748
748
|
private _previousScreenPoint?;
|
|
749
|
+
private _isPressingWhilePending;
|
|
749
750
|
_getClickTimeout(state: TLClickState, id?: string): void;
|
|
750
751
|
/* Excluded from this release type: _clickState */
|
|
751
752
|
/**
|
|
@@ -994,7 +995,7 @@ export declare const DefaultShapeWrapper: ForwardRefExoticComponent<TLShapeWrapp
|
|
|
994
995
|
export declare function DefaultSpinner(props: React.SVGProps<SVGSVGElement>): JSX.Element;
|
|
995
996
|
|
|
996
997
|
/** @public @react */
|
|
997
|
-
export declare
|
|
998
|
+
export declare function DefaultSvgDefs(): null;
|
|
998
999
|
|
|
999
1000
|
/** @public */
|
|
1000
1001
|
export declare const defaultTldrawOptions: {
|
|
@@ -4444,6 +4445,7 @@ export declare class Editor extends EventEmitter<TLEventMap> {
|
|
|
4444
4445
|
/* Excluded from this release type: _restoreToolId */
|
|
4445
4446
|
/* Excluded from this release type: _didPinch */
|
|
4446
4447
|
/* Excluded from this release type: _selectedShapeIdsAtPointerDown */
|
|
4448
|
+
/* Excluded from this release type: _didCaptureSelectionAtPointerDown */
|
|
4447
4449
|
/* Excluded from this release type: _longPressTimeout */
|
|
4448
4450
|
/* Excluded from this release type: capturedPointerId */
|
|
4449
4451
|
/* Excluded from this release type: performanceTracker */
|
|
@@ -5380,7 +5382,7 @@ export declare function intersectPolygonPolygon(polygonA: VecLike[], polygonB: V
|
|
|
5380
5382
|
* Check if a float is safe to use. ie: Not too big or small.
|
|
5381
5383
|
* @public
|
|
5382
5384
|
*/
|
|
5383
|
-
export declare
|
|
5385
|
+
export declare function isSafeFloat(n: number): boolean;
|
|
5384
5386
|
|
|
5385
5387
|
/**
|
|
5386
5388
|
* Reparents shapes that are no longer contained within their parent shapes.
|
|
@@ -7165,8 +7167,6 @@ export declare abstract class StateNode implements Partial<TLEventHandlers> {
|
|
|
7165
7167
|
onLongPress?(info: TLPointerEventInfo): void;
|
|
7166
7168
|
onPointerUp?(info: TLPointerEventInfo): void;
|
|
7167
7169
|
onDoubleClick?(info: TLClickEventInfo): void;
|
|
7168
|
-
onTripleClick?(info: TLClickEventInfo): void;
|
|
7169
|
-
onQuadrupleClick?(info: TLClickEventInfo): void;
|
|
7170
7170
|
onRightClick?(info: TLPointerEventInfo): void;
|
|
7171
7171
|
onMiddleClick?(info: TLPointerEventInfo): void;
|
|
7172
7172
|
onKeyDown?(info: TLKeyboardEventInfo): void;
|
|
@@ -7188,7 +7188,7 @@ export declare abstract class StateNode implements Partial<TLEventHandlers> {
|
|
|
7188
7188
|
*
|
|
7189
7189
|
* @public
|
|
7190
7190
|
*/
|
|
7191
|
-
export declare
|
|
7191
|
+
export declare function stopEventPropagation(e: any): any;
|
|
7192
7192
|
|
|
7193
7193
|
/* Excluded from this release type: StoreName */
|
|
7194
7194
|
|
|
@@ -7566,17 +7566,17 @@ export declare type TLClickEvent = (info: TLClickEventInfo) => void;
|
|
|
7566
7566
|
export declare type TLClickEventInfo = TLBaseEventInfo & {
|
|
7567
7567
|
button: number;
|
|
7568
7568
|
name: TLCLickEventName;
|
|
7569
|
-
phase: 'down' | 'settle' | 'up';
|
|
7569
|
+
phase: 'down' | 'settle-down' | 'settle-up' | 'up';
|
|
7570
7570
|
point: VecLike;
|
|
7571
7571
|
pointerId: number;
|
|
7572
7572
|
type: 'click';
|
|
7573
7573
|
} & TLPointerEventTarget;
|
|
7574
7574
|
|
|
7575
7575
|
/** @public */
|
|
7576
|
-
export declare type TLCLickEventName = 'double_click'
|
|
7576
|
+
export declare type TLCLickEventName = 'double_click';
|
|
7577
7577
|
|
|
7578
7578
|
/** @public */
|
|
7579
|
-
export declare type TLClickState = 'idle' | 'overflow' | 'pendingDouble' | 'pendingOverflow'
|
|
7579
|
+
export declare type TLClickState = 'idle' | 'overflow' | 'pendingDouble' | 'pendingOverflow';
|
|
7580
7580
|
|
|
7581
7581
|
/**
|
|
7582
7582
|
* Raw clipboard paste payload, before tldraw parses clipboard contents into {@link TLExternalContent}.
|
|
@@ -8356,8 +8356,6 @@ export declare interface TLEventHandlers {
|
|
|
8356
8356
|
onLongPress: TLPointerEvent;
|
|
8357
8357
|
onRightClick: TLPointerEvent;
|
|
8358
8358
|
onDoubleClick: TLClickEvent;
|
|
8359
|
-
onTripleClick: TLClickEvent;
|
|
8360
|
-
onQuadrupleClick: TLClickEvent;
|
|
8361
8359
|
onMiddleClick: TLPointerEvent;
|
|
8362
8360
|
onPointerUp: TLPointerEvent;
|
|
8363
8361
|
onKeyDown: TLKeyboardEvent;
|
package/dist-cjs/index.js
CHANGED
|
@@ -380,7 +380,7 @@ var import_uniq = require("./lib/utils/uniq");
|
|
|
380
380
|
var import_defaultThemes2 = require("./lib/editor/managers/ThemeManager/defaultThemes");
|
|
381
381
|
(0, import_utils.registerTldrawLibraryVersion)(
|
|
382
382
|
"@tldraw/editor",
|
|
383
|
-
"5.
|
|
383
|
+
"5.2.0-canary.4a316fdfb2bb",
|
|
384
384
|
"cjs"
|
|
385
385
|
);
|
|
386
386
|
//# sourceMappingURL=index.js.map
|
|
@@ -43,7 +43,10 @@ var import_dom = require("../../utils/dom");
|
|
|
43
43
|
var import_runtime = require("../../utils/runtime");
|
|
44
44
|
var import_ErrorBoundary = require("../ErrorBoundary");
|
|
45
45
|
const BASE_ERROR_URL = "https://github.com/tldraw/tldraw/issues/new";
|
|
46
|
-
const DefaultErrorFallback = ({
|
|
46
|
+
const DefaultErrorFallback = function DefaultErrorFallback2({
|
|
47
|
+
error,
|
|
48
|
+
editor
|
|
49
|
+
}) {
|
|
47
50
|
const containerRef = (0, import_react.useRef)(null);
|
|
48
51
|
const [shouldShowError, setShouldShowError] = (0, import_react.useState)(process.env.NODE_ENV === "development");
|
|
49
52
|
const [didCopy, setDidCopy] = (0, import_react.useState)(false);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/components/default-components/DefaultErrorFallback.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useValue } from '@tldraw/state-react'\nimport { noop } from '@tldraw/utils'\nimport classNames from 'classnames'\nimport { ComponentType, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { Editor } from '../../editor/Editor'\nimport { getOwnerDocument } from '../../exports/domUtils'\nimport { useEditorComponents } from '../../hooks/EditorComponentsContext'\nimport { EditorProvider } from '../../hooks/useEditor'\nimport { getGlobalWindow } from '../../utils/dom'\nimport { hardResetEditor, refreshPage } from '../../utils/runtime'\nimport { ErrorBoundary } from '../ErrorBoundary'\n\nconst BASE_ERROR_URL = 'https://github.com/tldraw/tldraw/issues/new'\n\n/** @public */\nexport type TLErrorFallbackComponent = ComponentType<{ error: unknown; editor?: Editor }>\n\n/** @public @react */\nexport const DefaultErrorFallback: TLErrorFallbackComponent = ({
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
6
|
-
"names": ["classNames"]
|
|
4
|
+
"sourcesContent": ["import { useValue } from '@tldraw/state-react'\nimport { noop } from '@tldraw/utils'\nimport classNames from 'classnames'\nimport { ComponentType, useEffect, useLayoutEffect, useRef, useState } from 'react'\nimport { Editor } from '../../editor/Editor'\nimport { getOwnerDocument } from '../../exports/domUtils'\nimport { useEditorComponents } from '../../hooks/EditorComponentsContext'\nimport { EditorProvider } from '../../hooks/useEditor'\nimport { getGlobalWindow } from '../../utils/dom'\nimport { hardResetEditor, refreshPage } from '../../utils/runtime'\nimport { ErrorBoundary } from '../ErrorBoundary'\n\nconst BASE_ERROR_URL = 'https://github.com/tldraw/tldraw/issues/new'\n\n/** @public */\nexport type TLErrorFallbackComponent = ComponentType<{ error: unknown; editor?: Editor }>\n\n/** @public @react */\nexport const DefaultErrorFallback: TLErrorFallbackComponent = function DefaultErrorFallback({\n\terror,\n\teditor,\n}) {\n\tconst containerRef = useRef<HTMLDivElement>(null)\n\tconst [shouldShowError, setShouldShowError] = useState(process.env.NODE_ENV === 'development')\n\tconst [didCopy, setDidCopy] = useState(false)\n\tconst [shouldShowResetConfirmation, setShouldShowResetConfirmation] = useState(false)\n\n\tlet Canvas: React.ComponentType | null = null\n\ttry {\n\t\t// eslint-disable-next-line react-hooks/rules-of-hooks\n\t\tconst components = useEditorComponents()\n\t\tCanvas = components.Canvas ?? null\n\t} catch {\n\t\t// allow this to fail silently\n\t}\n\n\tconst errorMessage = error instanceof Error ? error.message : String(error)\n\tconst errorStack = error instanceof Error ? error.stack : null\n\n\tconst isDarkModeFromApp = useValue(\n\t\t'isDarkMode',\n\t\t() => {\n\t\t\ttry {\n\t\t\t\tif (editor) {\n\t\t\t\t\treturn editor.user.getIsDarkMode()\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\t// we're in a funky error state so this might not work for spooky\n\t\t\t\t// reasons. if not, we'll have another attempt later:\n\t\t\t}\n\t\t\treturn null\n\t\t},\n\t\t[editor]\n\t)\n\tconst [isDarkMode, setIsDarkMode] = useState<null | boolean>(null)\n\tuseLayoutEffect(() => {\n\t\t// if we found a theme class from the app, we can just use that\n\t\tif (isDarkModeFromApp !== null) {\n\t\t\tsetIsDarkMode(isDarkModeFromApp)\n\t\t}\n\n\t\t// do any of our parents have a theme class? if yes then we can just\n\t\t// rely on that and don't need to set our own class\n\t\tlet parent = containerRef.current?.parentElement\n\t\tlet foundParentThemeClass = false\n\t\twhile (parent) {\n\t\t\tif (\n\t\t\t\tparent.classList.contains('tl-theme__dark') ||\n\t\t\t\tparent.classList.contains('tl-theme__light')\n\t\t\t) {\n\t\t\t\tfoundParentThemeClass = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tparent = parent.parentElement\n\t\t}\n\t\tif (foundParentThemeClass) {\n\t\t\tsetIsDarkMode(null)\n\t\t\treturn\n\t\t}\n\n\t\t// if we can't find a theme class from the app or from a parent, we have\n\t\t// to fall back on using a media query:\n\t\tif (typeof window !== 'undefined' && getGlobalWindow().matchMedia) {\n\t\t\tsetIsDarkMode(getGlobalWindow().matchMedia('(prefers-color-scheme: dark)').matches)\n\t\t}\n\t}, [isDarkModeFromApp])\n\n\tuseEffect(() => {\n\t\tif (didCopy) {\n\t\t\tconst timeout = editor?.timers.setTimeout(() => {\n\t\t\t\tsetDidCopy(false)\n\t\t\t}, 2000)\n\t\t\treturn () => clearTimeout(timeout)\n\t\t}\n\t}, [didCopy, editor])\n\n\tconst copyError = () => {\n\t\tconst doc = getOwnerDocument(containerRef.current)\n\t\tconst textarea = doc.createElement('textarea')\n\t\ttextarea.value = errorStack ?? errorMessage\n\t\tdoc.body.appendChild(textarea)\n\t\ttextarea.select()\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\tdoc.execCommand('copy')\n\t\ttextarea.remove()\n\t\tsetDidCopy(true)\n\t}\n\n\tconst refresh = () => {\n\t\trefreshPage()\n\t}\n\n\tconst resetLocalState = async () => {\n\t\thardResetEditor()\n\t}\n\n\tconst url = new URL(BASE_ERROR_URL)\n\turl.searchParams.set('title', errorMessage)\n\turl.searchParams.set('labels', `bug`)\n\turl.searchParams.set(\n\t\t'body',\n\t\t`Hey, I ran into an error while using tldraw:\n\n\\`\\`\\`js\n${errorStack ?? errorMessage}\n\\`\\`\\`\n\nMy browser: ${navigator.userAgent}`\n\t)\n\n\treturn (\n\t\t<div\n\t\t\tref={containerRef}\n\t\t\tclassName={classNames(\n\t\t\t\t'tl-container tl-error-boundary',\n\t\t\t\t// error-boundary is sometimes used outside of the theme\n\t\t\t\t// container, so we need to provide it with a theme for our\n\t\t\t\t// styles to work correctly\n\t\t\t\tisDarkMode === null ? '' : isDarkMode ? 'tl-theme__dark' : 'tl-theme__light'\n\t\t\t)}\n\t\t>\n\t\t\t<div className=\"tl-error-boundary__overlay\" />\n\t\t\t{editor && (\n\t\t\t\t// opportunistically attempt to render the canvas to reassure\n\t\t\t\t// the user that their document is still there. there's a good\n\t\t\t\t// chance this won't work (ie the error that we're currently\n\t\t\t\t// notifying the user about originates in the canvas) so it's\n\t\t\t\t// not a big deal if it doesn't work - in that case we just have\n\t\t\t\t// a plain grey background.\n\t\t\t\t<ErrorBoundary onError={noop} fallback={() => null}>\n\t\t\t\t\t<EditorProvider editor={editor}>\n\t\t\t\t\t\t<div className=\"tl-overlay tl-error-boundary__canvas\">{Canvas ? <Canvas /> : null}</div>\n\t\t\t\t\t</EditorProvider>\n\t\t\t\t</ErrorBoundary>\n\t\t\t)}\n\t\t\t<div\n\t\t\t\tclassName={classNames('tl-modal', 'tl-error-boundary__content', {\n\t\t\t\t\t'tl-error-boundary__content__expanded': shouldShowError && !shouldShowResetConfirmation,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t{shouldShowResetConfirmation ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<h2>Are you sure?</h2>\n\t\t\t\t\t\t<p>Resetting your data will delete your drawing and cannot be undone.</p>\n\t\t\t\t\t\t<div className=\"tl-error-boundary__content__actions\">\n\t\t\t\t\t\t\t<button className=\"tlui-button\" onClick={() => setShouldShowResetConfirmation(false)}>\n\t\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<button className=\"tlui-button tl-error-boundary__reset\" onClick={resetLocalState}>\n\t\t\t\t\t\t\t\tReset data\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<h2>Something went wrong</h2>\n\t\t\t\t\t\t<p>Please refresh your browser.</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\tIf the issue continues after refreshing, you may need to reset the tldraw data stored\n\t\t\t\t\t\t\ton your device.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t<strong>Note:</strong> Resetting will erase your current project and any unsaved work.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t{process.env.NODE_ENV !== 'production' && (\n\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\tIf you're developing with the SDK and need help, join us on{' '}\n\t\t\t\t\t\t\t\t<a href=\"https://discord.tldraw.com/?utm_source=sdk&utm_medium=organic&utm_campaign=error-screen\">\n\t\t\t\t\t\t\t\t\tDiscord\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t.\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{shouldShowError && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\tMessage:\n\t\t\t\t\t\t\t\t<h4>\n\t\t\t\t\t\t\t\t\t<code>{errorMessage}</code>\n\t\t\t\t\t\t\t\t</h4>\n\t\t\t\t\t\t\t\tStack trace:\n\t\t\t\t\t\t\t\t<div className=\"tl-error-boundary__content__error\">\n\t\t\t\t\t\t\t\t\t<pre>\n\t\t\t\t\t\t\t\t\t\t<code>{errorStack ?? errorMessage}</code>\n\t\t\t\t\t\t\t\t\t</pre>\n\t\t\t\t\t\t\t\t\t<button className=\"tlui-button\" onClick={copyError}>\n\t\t\t\t\t\t\t\t\t\t{didCopy ? 'Copied!' : 'Copy'}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<div className=\"tl-error-boundary__content__actions\">\n\t\t\t\t\t\t\t<button className=\"tlui-button\" onClick={() => setShouldShowError(!shouldShowError)}>\n\t\t\t\t\t\t\t\t{shouldShowError ? 'Hide details' : 'Show details'}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t<div className=\"tl-error-boundary__content__actions__group\">\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclassName=\"tlui-button tl-error-boundary__reset\"\n\t\t\t\t\t\t\t\t\tonClick={() => setShouldShowResetConfirmation(true)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\tReset data\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t<button className=\"tlui-button tl-error-boundary__refresh\" onClick={refresh}>\n\t\t\t\t\t\t\t\t\tRefresh Page\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DefaultErrorFallback", "classNames"]
|
|
7
7
|
}
|
|
@@ -23,8 +23,8 @@ __export(DefaultLoadingScreen_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(DefaultLoadingScreen_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
25
|
var import_EditorComponentsContext = require("../../hooks/EditorComponentsContext");
|
|
26
|
-
|
|
26
|
+
function DefaultLoadingScreen() {
|
|
27
27
|
const { Spinner } = (0, import_EditorComponentsContext.useEditorComponents)();
|
|
28
28
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "tl-loading", "aria-busy": "true", tabIndex: 0, children: Spinner ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, {}) : null });
|
|
29
|
-
}
|
|
29
|
+
}
|
|
30
30
|
//# sourceMappingURL=DefaultLoadingScreen.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/components/default-components/DefaultLoadingScreen.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useEditorComponents } from '../../hooks/EditorComponentsContext'\n\n/** @public @react */\nexport
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOc;AAPd,qCAAoC;AAG7B,
|
|
4
|
+
"sourcesContent": ["import { useEditorComponents } from '../../hooks/EditorComponentsContext'\n\n/** @public @react */\nexport function DefaultLoadingScreen() {\n\tconst { Spinner } = useEditorComponents()\n\treturn (\n\t\t<div className=\"tl-loading\" aria-busy=\"true\" tabIndex={0}>\n\t\t\t{Spinner ? <Spinner /> : null}\n\t\t</div>\n\t)\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAOc;AAPd,qCAAoC;AAG7B,SAAS,uBAAuB;AACtC,QAAM,EAAE,QAAQ,QAAI,oDAAoB;AACxC,SACC,4CAAC,SAAI,WAAU,cAAa,aAAU,QAAO,UAAU,GACrD,oBAAU,4CAAC,WAAQ,IAAK,MAC1B;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -22,7 +22,7 @@ __export(DefaultShapeErrorFallback_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(DefaultShapeErrorFallback_exports);
|
|
24
24
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
25
|
-
const DefaultShapeErrorFallback = ()
|
|
25
|
+
const DefaultShapeErrorFallback = function DefaultShapeErrorFallback2() {
|
|
26
26
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "tl-shape-error-boundary" });
|
|
27
27
|
};
|
|
28
28
|
//# sourceMappingURL=DefaultShapeErrorFallback.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/components/default-components/DefaultShapeErrorFallback.tsx"],
|
|
4
|
-
"sourcesContent": ["import { ComponentType } from 'react'\n\n/** @public */\nexport type TLShapeErrorFallbackComponent = ComponentType<{ error: any }>\n\n/** @internal */\nexport const DefaultShapeErrorFallback: TLShapeErrorFallbackComponent
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { ComponentType } from 'react'\n\n/** @public */\nexport type TLShapeErrorFallbackComponent = ComponentType<{ error: any }>\n\n/** @internal */\nexport const DefaultShapeErrorFallback: TLShapeErrorFallbackComponent =\n\tfunction DefaultShapeErrorFallback() {\n\t\treturn <div className=\"tl-shape-error-boundary\" />\n\t}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQS;AAFF,MAAM,4BACZ,SAASA,6BAA4B;AACpC,SAAO,4CAAC,SAAI,WAAU,2BAA0B;AACjD;",
|
|
6
|
+
"names": ["DefaultShapeErrorFallback"]
|
|
7
7
|
}
|
|
@@ -21,7 +21,7 @@ __export(DefaultSvgDefs_exports, {
|
|
|
21
21
|
DefaultSvgDefs: () => DefaultSvgDefs
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(DefaultSvgDefs_exports);
|
|
24
|
-
|
|
24
|
+
function DefaultSvgDefs() {
|
|
25
25
|
return null;
|
|
26
|
-
}
|
|
26
|
+
}
|
|
27
27
|
//# sourceMappingURL=DefaultSvgDefs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/components/default-components/DefaultSvgDefs.tsx"],
|
|
4
|
-
"sourcesContent": ["/** @public @react */\nexport
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,
|
|
4
|
+
"sourcesContent": ["/** @public @react */\nexport function DefaultSvgDefs() {\n\treturn null\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,SAAS,iBAAiB;AAChC,SAAO;AACR;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -7834,6 +7834,15 @@ class Editor extends import_eventemitter3.default {
|
|
|
7834
7834
|
_didPinch = false;
|
|
7835
7835
|
/** @internal */
|
|
7836
7836
|
_selectedShapeIdsAtPointerDown = [];
|
|
7837
|
+
/**
|
|
7838
|
+
* Whether `_selectedShapeIdsAtPointerDown` holds a pre-gesture selection
|
|
7839
|
+
* captured by a `pointer_down` (the touch path) that a following pinch
|
|
7840
|
+
* should restore. False when no pointer_down preceded the pinch (the
|
|
7841
|
+
* Safari trackpad path uses gesture events), in which case `pinch_start`
|
|
7842
|
+
* captures the live selection instead.
|
|
7843
|
+
* @internal
|
|
7844
|
+
*/
|
|
7845
|
+
_didCaptureSelectionAtPointerDown = false;
|
|
7837
7846
|
/** @internal */
|
|
7838
7847
|
_longPressTimeout = -1;
|
|
7839
7848
|
/** @internal */
|
|
@@ -7966,10 +7975,15 @@ class Editor extends import_eventemitter3.default {
|
|
|
7966
7975
|
case "pinch_start": {
|
|
7967
7976
|
if (inputs.getIsPinching()) return;
|
|
7968
7977
|
if (!inputs.getIsEditing()) {
|
|
7969
|
-
this.
|
|
7978
|
+
if (!this._didCaptureSelectionAtPointerDown) {
|
|
7979
|
+
this._selectedShapeIdsAtPointerDown = [...pageState.selectedShapeIds];
|
|
7980
|
+
}
|
|
7970
7981
|
this._didPinch = true;
|
|
7971
7982
|
inputs.setIsPinching(true);
|
|
7972
7983
|
this.interrupt();
|
|
7984
|
+
if (this._didCaptureSelectionAtPointerDown) {
|
|
7985
|
+
this.setSelectedShapes(this._selectedShapeIdsAtPointerDown);
|
|
7986
|
+
}
|
|
7973
7987
|
}
|
|
7974
7988
|
this.emit("event", info);
|
|
7975
7989
|
return;
|
|
@@ -8009,6 +8023,7 @@ class Editor extends import_eventemitter3.default {
|
|
|
8009
8023
|
const { _selectedShapeIdsAtPointerDown: shapesToReselect } = this;
|
|
8010
8024
|
this.setSelectedShapes(this._selectedShapeIdsAtPointerDown);
|
|
8011
8025
|
this._selectedShapeIdsAtPointerDown = [];
|
|
8026
|
+
this._didCaptureSelectionAtPointerDown = false;
|
|
8012
8027
|
if (this._didPinch) {
|
|
8013
8028
|
this._didPinch = false;
|
|
8014
8029
|
if (shapesToReselect.length > 0) {
|
|
@@ -8102,7 +8117,10 @@ class Editor extends import_eventemitter3.default {
|
|
|
8102
8117
|
});
|
|
8103
8118
|
}, this.options.longPressDurationMs);
|
|
8104
8119
|
}
|
|
8105
|
-
|
|
8120
|
+
if (!this._didCaptureSelectionAtPointerDown) {
|
|
8121
|
+
this._selectedShapeIdsAtPointerDown = this.getSelectedShapeIds();
|
|
8122
|
+
this._didCaptureSelectionAtPointerDown = true;
|
|
8123
|
+
}
|
|
8106
8124
|
if (info.button === import_constants.LEFT_MOUSE_BUTTON) this.capturedPointerId = info.pointerId;
|
|
8107
8125
|
inputs.buttons.add(info.button);
|
|
8108
8126
|
inputs.setIsPointing(true);
|
|
@@ -8175,6 +8193,7 @@ class Editor extends import_eventemitter3.default {
|
|
|
8175
8193
|
if (this.inputs.getIsRightPointing() && !this.inputs.getIsPanning()) {
|
|
8176
8194
|
this.inputs.setIsRightPointing(false);
|
|
8177
8195
|
this._selectedShapeIdsAtPointerDown = [];
|
|
8196
|
+
this._didCaptureSelectionAtPointerDown = false;
|
|
8178
8197
|
break;
|
|
8179
8198
|
}
|
|
8180
8199
|
this.inputs.setIsRightPointing(false);
|
|
@@ -8212,6 +8231,7 @@ class Editor extends import_eventemitter3.default {
|
|
|
8212
8231
|
this.slideCamera({ speed: slideSpeed, direction: slideDirection });
|
|
8213
8232
|
}
|
|
8214
8233
|
this._selectedShapeIdsAtPointerDown = [];
|
|
8234
|
+
this._didCaptureSelectionAtPointerDown = false;
|
|
8215
8235
|
return this;
|
|
8216
8236
|
}
|
|
8217
8237
|
}
|
|
@@ -8225,6 +8245,7 @@ class Editor extends import_eventemitter3.default {
|
|
|
8225
8245
|
}
|
|
8226
8246
|
}
|
|
8227
8247
|
this._selectedShapeIdsAtPointerDown = [];
|
|
8248
|
+
this._didCaptureSelectionAtPointerDown = false;
|
|
8228
8249
|
break;
|
|
8229
8250
|
}
|
|
8230
8251
|
}
|