@bigbluebutton/tldraw 2.0.0-alpha.19 → 2.0.0-alpha.21
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 +55 -50
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +2 -2
- package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +3 -0
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +3 -0
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +2 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +7 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useActions.js +13 -0
- package/dist-cjs/lib/ui/hooks/useActions.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useEventsProvider.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useMenuSchema.js +5 -0
- package/dist-cjs/lib/ui/hooks/useMenuSchema.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/usePreloadAssets.js +1 -0
- package/dist-cjs/lib/ui/hooks/usePreloadAssets.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +2 -0
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +1 -1
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-cjs/lib/utils/assets/assets.js +5 -1
- package/dist-cjs/lib/utils/assets/assets.js.map +2 -2
- package/dist-esm/index.d.mts +55 -50
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs +2 -2
- package/dist-esm/lib/shapes/bookmark/BookmarkShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +4 -0
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +2 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +9 -7
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useActions.mjs +13 -0
- package/dist-esm/lib/ui/hooks/useActions.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useEventsProvider.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useMenuSchema.mjs +5 -0
- package/dist-esm/lib/ui/hooks/useMenuSchema.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs +1 -0
- package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +2 -0
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +1 -1
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/dist-esm/lib/utils/assets/assets.mjs +5 -1
- package/dist-esm/lib/utils/assets/assets.mjs.map +2 -2
- package/package.json +3 -3
- package/src/lib/shapes/bookmark/BookmarkShapeUtil.tsx +2 -2
- package/src/lib/shapes/line/LineShapeUtil.test.ts +1 -1
- package/src/lib/tools/SelectTool/childStates/Brushing.ts +6 -0
- package/src/lib/tools/SelectTool/childStates/Idle.ts +6 -2
- package/src/lib/tools/SelectTool/childStates/Resizing.ts +6 -0
- package/src/lib/tools/SelectTool/childStates/Translating.ts +10 -7
- package/src/lib/ui/hooks/useActions.tsx +13 -0
- package/src/lib/ui/hooks/useEventsProvider.tsx +1 -0
- package/src/lib/ui/hooks/useMenuSchema.tsx +5 -0
- package/src/lib/ui/hooks/usePreloadAssets.ts +1 -0
- package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
- package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +2 -0
- package/src/lib/ui/version.ts +1 -1
- package/src/lib/utils/assets/assets.ts +5 -1
- package/src/test/TLUserPreferences.test.ts +4 -1
- package/src/test/TestEditor.ts +3 -0
- package/src/test/resizing.test.ts +22 -0
- package/src/test/selection-omnibus.test.ts +93 -0
- package/src/test/translating.test.ts +35 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/lib/ui/hooks/useTranslation/defaultTranslation.ts"],
|
|
4
|
-
"sourcesContent": ["// This file is automatically generated by scripts/refresh-assets.ts.\n// Do not edit manually.\n\n/** @internal */\nexport const DEFAULT_TRANSLATION = {\n\t'action.convert-to-bookmark': 'Convert to Bookmark',\n\t'action.convert-to-embed': 'Convert to Embed',\n\t'action.open-embed-link': 'Open link',\n\t'action.align-bottom': 'Align bottom',\n\t'action.align-center-horizontal': 'Align horizontally',\n\t'action.align-center-vertical': 'Align vertically',\n\t'action.align-center-horizontal.short': 'Align H',\n\t'action.align-center-vertical.short': 'Align V',\n\t'action.align-left': 'Align left',\n\t'action.align-right': 'Align right',\n\t'action.align-top': 'Align top',\n\t'action.back-to-content': 'Back to content',\n\t'action.bring-forward': 'Bring forward',\n\t'action.bring-to-front': 'Bring to front',\n\t'action.copy-as-json.short': 'JSON',\n\t'action.copy-as-json': 'Copy as JSON',\n\t'action.copy-as-png.short': 'PNG',\n\t'action.copy-as-png': 'Copy as PNG',\n\t'action.copy-as-svg.short': 'SVG',\n\t'action.copy-as-svg': 'Copy as SVG',\n\t'action.copy': 'Copy',\n\t'action.cut': 'Cut',\n\t'action.delete': 'Delete',\n\t'action.unlock-all': 'Unlock all',\n\t'action.distribute-horizontal': 'Distribute horizontally',\n\t'action.distribute-vertical': 'Distribute vertically',\n\t'action.distribute-horizontal.short': 'Distribute H',\n\t'action.distribute-vertical.short': 'Distribute V',\n\t'action.duplicate': 'Duplicate',\n\t'action.edit-link': 'Edit link',\n\t'action.exit-pen-mode': 'Exit pen mode',\n\t'action.export-as-json.short': 'JSON',\n\t'action.export-as-json': 'Export as JSON',\n\t'action.export-as-png.short': 'PNG',\n\t'action.export-as-png': 'Export as PNG',\n\t'action.export-as-svg.short': 'SVG',\n\t'action.export-as-svg': 'Export as SVG',\n\t'action.fit-frame-to-content': 'Fit to content',\n\t'action.flip-horizontal': 'Flip horizontally',\n\t'action.flip-vertical': 'Flip vertically',\n\t'action.flip-horizontal.short': 'Flip H',\n\t'action.flip-vertical.short': 'Flip V',\n\t'action.fork-project': 'Fork this project',\n\t'action.group': 'Group',\n\t'action.insert-embed': 'Insert embed',\n\t'action.insert-media': 'Upload media',\n\t'action.leave-shared-project': 'Leave shared project',\n\t'action.new-project': 'New project',\n\t'action.new-shared-project': 'New shared project',\n\t'action.open-cursor-chat': 'Cursor chat',\n\t'action.open-file': 'Open file',\n\t'action.pack': 'Pack',\n\t'action.paste': 'Paste',\n\t'action.print': 'Print',\n\t'action.redo': 'Redo',\n\t'action.remove-frame': 'Remove frame',\n\t'action.rotate-ccw': 'Rotate counterclockwise',\n\t'action.rotate-cw': 'Rotate clockwise',\n\t'action.save-copy': 'Save a copy',\n\t'action.select-all': 'Select all',\n\t'action.select-none': 'Select none',\n\t'action.send-backward': 'Send backward',\n\t'action.send-to-back': 'Send to back',\n\t'action.share-project': 'Share this project',\n\t'action.stack-horizontal': 'Stack horizontally',\n\t'action.stack-vertical': 'Stack vertically',\n\t'action.stack-horizontal.short': 'Stack H',\n\t'action.stack-vertical.short': 'Stack V',\n\t'action.stop-following': 'Stop following',\n\t'action.stretch-horizontal': 'Stretch horizontally',\n\t'action.stretch-vertical': 'Stretch vertically',\n\t'action.stretch-horizontal.short': 'Stretch H',\n\t'action.stretch-vertical.short': 'Stretch V',\n\t'action.toggle-auto-size': 'Toggle auto size',\n\t'action.toggle-dark-mode.menu': 'Dark mode',\n\t'action.toggle-dark-mode': 'Toggle dark mode',\n\t'action.toggle-reduce-motion.menu': 'Reduce motion',\n\t'action.toggle-reduce-motion': 'Toggle reduce motion',\n\t'action.toggle-debug-mode.menu': 'Debug mode',\n\t'action.toggle-debug-mode': 'Toggle debug mode',\n\t'action.toggle-focus-mode.menu': 'Focus mode',\n\t'action.toggle-focus-mode': 'Toggle focus mode',\n\t'action.toggle-grid.menu': 'Show grid',\n\t'action.toggle-grid': 'Toggle grid',\n\t'action.toggle-lock': 'Toggle locked',\n\t'action.toggle-snap-mode.menu': 'Always snap',\n\t'action.toggle-snap-mode': 'Toggle always snap',\n\t'action.toggle-tool-lock.menu': 'Tool lock',\n\t'action.toggle-tool-lock': 'Toggle tool lock',\n\t'action.toggle-transparent.context-menu': 'Transparent',\n\t'action.toggle-transparent.menu': 'Transparent',\n\t'action.toggle-transparent': 'Toggle transparent background',\n\t'action.undo': 'Undo',\n\t'action.ungroup': 'Ungroup',\n\t'action.zoom-in': 'Zoom in',\n\t'action.zoom-out': 'Zoom out',\n\t'action.zoom-to-100': 'Zoom to 100%',\n\t'action.zoom-to-fit': 'Zoom to fit',\n\t'action.zoom-to-selection': 'Zoom to selection',\n\t'color-style.black': 'Black',\n\t'color-style.blue': 'Blue',\n\t'color-style.green': 'Green',\n\t'color-style.grey': 'Grey',\n\t'color-style.light-blue': 'Light blue',\n\t'color-style.light-green': 'Light green',\n\t'color-style.light-red': 'Light red',\n\t'color-style.light-violet': 'Light violet',\n\t'color-style.orange': 'Orange',\n\t'color-style.red': 'Red',\n\t'color-style.violet': 'Violet',\n\t'color-style.yellow': 'Yellow',\n\t'fill-style.none': 'None',\n\t'fill-style.semi': 'Semi',\n\t'fill-style.solid': 'Solid',\n\t'fill-style.pattern': 'Pattern',\n\t'dash-style.dashed': 'Dashed',\n\t'dash-style.dotted': 'Dotted',\n\t'dash-style.draw': 'Draw',\n\t'dash-style.solid': 'Solid',\n\t'size-style.s': 'Small',\n\t'size-style.m': 'Medium',\n\t'size-style.l': 'Large',\n\t'size-style.xl': 'Extra large',\n\t'opacity-style.0.1': '10%',\n\t'opacity-style.0.25': '25%',\n\t'opacity-style.0.5': '50%',\n\t'opacity-style.0.75': '75%',\n\t'opacity-style.1': '100%',\n\t'font-style.draw': 'Draw',\n\t'font-style.sans': 'Sans',\n\t'font-style.serif': 'Serif',\n\t'font-style.mono': 'Mono',\n\t'align-style.start': 'Start',\n\t'align-style.middle': 'Middle',\n\t'align-style.end': 'End',\n\t'align-style.justify': 'Justify',\n\t'geo-style.arrow-down': 'Arrow down',\n\t'geo-style.arrow-left': 'Arrow left',\n\t'geo-style.arrow-right': 'Arrow right',\n\t'geo-style.arrow-up': 'Arrow up',\n\t'geo-style.diamond': 'Diamond',\n\t'geo-style.ellipse': 'Ellipse',\n\t'geo-style.hexagon': 'Hexagon',\n\t'geo-style.octagon': 'Octagon',\n\t'geo-style.oval': 'Oval',\n\t'geo-style.cloud': 'Cloud',\n\t'geo-style.pentagon': 'Pentagon',\n\t'geo-style.rectangle': 'Rectangle',\n\t'geo-style.rhombus-2': 'Rhombus 2',\n\t'geo-style.rhombus': 'Rhombus',\n\t'geo-style.star': 'Star',\n\t'geo-style.trapezoid': 'Trapezoid',\n\t'geo-style.triangle': 'Triangle',\n\t'geo-style.x-box': 'X box',\n\t'geo-style.check-box': 'Check box',\n\t'arrowheadStart-style.none': 'None',\n\t'arrowheadStart-style.arrow': 'Arrow',\n\t'arrowheadStart-style.bar': 'Bar',\n\t'arrowheadStart-style.diamond': 'Diamond',\n\t'arrowheadStart-style.dot': 'Dot',\n\t'arrowheadStart-style.inverted': 'Inverted',\n\t'arrowheadStart-style.pipe': 'Pipe',\n\t'arrowheadStart-style.square': 'Square',\n\t'arrowheadStart-style.triangle': 'Triangle',\n\t'arrowheadEnd-style.none': 'None',\n\t'arrowheadEnd-style.arrow': 'Arrow',\n\t'arrowheadEnd-style.bar': 'Bar',\n\t'arrowheadEnd-style.diamond': 'Diamond',\n\t'arrowheadEnd-style.dot': 'Dot',\n\t'arrowheadEnd-style.inverted': 'Inverted',\n\t'arrowheadEnd-style.pipe': 'Pipe',\n\t'arrowheadEnd-style.square': 'Square',\n\t'arrowheadEnd-style.triangle': 'Triangle',\n\t'spline-style.line': 'Line',\n\t'spline-style.cubic': 'Cubic',\n\t'tool.select': 'Select',\n\t'tool.hand': 'Hand',\n\t'tool.draw': 'Draw',\n\t'tool.eraser': 'Eraser',\n\t'tool.arrow-down': 'Arrow down',\n\t'tool.arrow-left': 'Arrow left',\n\t'tool.arrow-right': 'Arrow right',\n\t'tool.arrow-up': 'Arrow up',\n\t'tool.arrow': 'Arrow',\n\t'tool.cloud': 'Cloud',\n\t'tool.diamond': 'Diamond',\n\t'tool.ellipse': 'Ellipse',\n\t'tool.hexagon': 'Hexagon',\n\t'tool.highlight': 'Highlight',\n\t'tool.line': 'Line',\n\t'tool.octagon': 'Octagon',\n\t'tool.oval': 'Oval',\n\t'tool.pentagon': 'Pentagon',\n\t'tool.rectangle': 'Rectangle',\n\t'tool.rhombus': 'Rhombus',\n\t'tool.star': 'Star',\n\t'tool.trapezoid': 'Trapezoid',\n\t'tool.triangle': 'Triangle',\n\t'tool.x-box': 'X box',\n\t'tool.check-box': 'Check box',\n\t'tool.asset': 'Asset',\n\t'tool.frame': 'Frame',\n\t'tool.note': 'Note',\n\t'tool.laser': 'Laser',\n\t'tool.embed': 'Embed',\n\t'tool.text': 'Text',\n\t'menu.title': 'Menu',\n\t'menu.copy-as': 'Copy as',\n\t'menu.edit': 'Edit',\n\t'menu.export-as': 'Export as',\n\t'menu.file': 'File',\n\t'menu.language': 'Language',\n\t'menu.preferences': 'Preferences',\n\t'menu.view': 'View',\n\t'context-menu.arrange': 'Arrange',\n\t'context-menu.copy-as': 'Copy as',\n\t'context-menu.export-as': 'Export as',\n\t'context-menu.move-to-page': 'Move to page',\n\t'context-menu.reorder': 'Reorder',\n\t'page-menu.title': 'Pages',\n\t'page-menu.create-new-page': 'Create new page',\n\t'page-menu.max-page-count-reached': 'Max pages reached',\n\t'page-menu.new-page-initial-name': 'Page 1',\n\t'page-menu.edit-start': 'Edit',\n\t'page-menu.edit-done': 'Done',\n\t'page-menu.go-to-page': 'Go to page',\n\t'page-menu.submenu.rename': 'Rename',\n\t'page-menu.submenu.duplicate-page': 'Duplicate',\n\t'page-menu.submenu.title': 'Menu',\n\t'page-menu.submenu.move-down': 'Move down',\n\t'page-menu.submenu.move-up': 'Move up',\n\t'page-menu.submenu.delete': 'Delete',\n\t'share-menu.title': 'Share',\n\t'share-menu.save-note': 'Download this project to your computer as a .tldr file.',\n\t'share-menu.fork-note': 'Create a new shared project based on this snapshot.',\n\t'share-menu.share-project': 'Share this project',\n\t'share-menu.default-project-name': 'Shared Project',\n\t'share-menu.copy-link': 'Copy share link',\n\t'share-menu.readonly-link': 'Read-only',\n\t'share-menu.create-snapshot-link': 'Copy snapshot link',\n\t'share-menu.snapshot-link-note': 'Capture and share this project as a read-only snapshot link.',\n\t'share-menu.copy-readonly-link': 'Copy read-only link',\n\t'share-menu.offline-note': 'Create a new shared project based on your current project.',\n\t'share-menu.copy-link-note': 'Anyone with the link will be able to view and edit this project.',\n\t'share-menu.copy-readonly-link-note':\n\t\t'Anyone with the link will be able to view (but not edit) this project.',\n\t'share-menu.project-too-large':\n\t\t\"Sorry, this project can't be shared because it's too large. We're working on it!\",\n\t'share-menu.upload-failed':\n\t\t\"Sorry, we couldn't upload your project at the moment. Please try again or let us know if the problem persists.\",\n\t'status.offline': 'Offline',\n\t'status.online': 'Online',\n\t'people-menu.title': 'People',\n\t'people-menu.change-name': 'Change name',\n\t'people-menu.change-color': 'Change color',\n\t'people-menu.follow': 'Following',\n\t'people-menu.following': 'Following',\n\t'people-menu.leading': 'Following You',\n\t'people-menu.user': '(You)',\n\t'people-menu.invite': 'Invite others',\n\t'help-menu.title': 'Help and resources',\n\t'help-menu.about': 'About',\n\t'help-menu.discord': 'Discord',\n\t'help-menu.github': 'GitHub',\n\t'help-menu.keyboard-shortcuts': 'Keyboard shortcuts',\n\t'help-menu.twitter': 'Twitter',\n\t'actions-menu.title': 'Actions',\n\t'edit-link-dialog.title': 'Edit link',\n\t'edit-link-dialog.invalid-url': 'A link must be a valid URL.',\n\t'edit-link-dialog.detail': 'Links will open in a new tab.',\n\t'edit-link-dialog.url': 'URL',\n\t'edit-link-dialog.clear': 'Clear',\n\t'edit-link-dialog.save': 'Continue',\n\t'edit-link-dialog.cancel': 'Cancel',\n\t'embed-dialog.title': 'Insert embed',\n\t'embed-dialog.back': 'Back',\n\t'embed-dialog.create': 'Create',\n\t'embed-dialog.cancel': 'Cancel',\n\t'embed-dialog.url': 'URL',\n\t'embed-dialog.instruction': \"Paste in the site's URL to create the embed.\",\n\t'embed-dialog.invalid-url': 'We could not create an embed from that URL.',\n\t'edit-pages-dialog.move-down': 'Move down',\n\t'edit-pages-dialog.move-up': 'Move up',\n\t'shortcuts-dialog.title': 'Keyboard shortcuts',\n\t'shortcuts-dialog.edit': 'Edit',\n\t'shortcuts-dialog.file': 'File',\n\t'shortcuts-dialog.preferences': 'Preferences',\n\t'shortcuts-dialog.tools': 'Tools',\n\t'shortcuts-dialog.transform': 'Transform',\n\t'shortcuts-dialog.view': 'View',\n\t'shortcuts-dialog.collaboration': 'Collaboration',\n\t'home-project-dialog.title': 'Home project',\n\t'home-project-dialog.description': \"This is your local home project. It's just for you!\",\n\t'rename-project-dialog.title': 'Rename project',\n\t'rename-project-dialog.cancel': 'Cancel',\n\t'rename-project-dialog.rename': 'Rename',\n\t'home-project-dialog.ok': 'Ok',\n\t'style-panel.title': 'Styles',\n\t'style-panel.align': 'Align',\n\t'style-panel.vertical-align': 'Vertical align',\n\t'style-panel.position': 'Position',\n\t'style-panel.arrowheads': 'Arrows',\n\t'style-panel.arrowhead-start': 'Start',\n\t'style-panel.arrowhead-end': 'End',\n\t'style-panel.color': 'Color',\n\t'style-panel.dash': 'Dash',\n\t'style-panel.fill': 'Fill',\n\t'style-panel.font': 'Font',\n\t'style-panel.geo': 'Shape',\n\t'style-panel.mixed': 'Mixed',\n\t'style-panel.opacity': 'Opacity',\n\t'style-panel.size': 'Size',\n\t'style-panel.spline': 'Spline',\n\t'tool-panel.drawing': 'Drawing',\n\t'tool-panel.shapes': 'Shapes',\n\t'tool-panel.more': 'More',\n\t'debug-panel.more': 'More',\n\t'navigation-zone.toggle-minimap': 'Toggle minimap',\n\t'navigation-zone.zoom': 'Zoom',\n\t'focus-mode.toggle-focus-mode': 'Toggle focus mode',\n\t'toast.close': 'Close',\n\t'file-system.file-open-error.title': 'Could not open file',\n\t'file-system.file-open-error.not-a-tldraw-file':\n\t\t\"The file you tried to open doesn't look like a tldraw file.\",\n\t'file-system.file-open-error.file-format-version-too-new':\n\t\t'The file you tried to open is from a newer version of tldraw. Please reload the page and try again.',\n\t'file-system.file-open-error.generic-corrupted-file': 'The file you tried to open is corrupted.',\n\t'file-system.confirm-open.title': 'Overwrite current project?',\n\t'file-system.confirm-open.description':\n\t\t'Opening a file will replace your current project and any unsaved changes will be lost. Are you sure you want to continue?',\n\t'file-system.confirm-open.cancel': 'Cancel',\n\t'file-system.confirm-open.open': 'Open file',\n\t'file-system.confirm-open.dont-show-again': \"Don't ask again\",\n\t'file-system.confirm-clear.title': 'Clear current project?',\n\t'file-system.confirm-clear.description':\n\t\t'Creating a new project will clear your current project and any unsaved changes will be lost. Are you sure you want to continue?',\n\t'file-system.confirm-clear.cancel': 'Cancel',\n\t'file-system.confirm-clear.continue': 'Continue',\n\t'file-system.confirm-clear.dont-show-again': \"Don't ask again\",\n\t'file-system.shared-document-file-open-error.title': 'Could not open file',\n\t'file-system.shared-document-file-open-error.description':\n\t\t'Opening files from shared projects is not supported.',\n\t'sharing.confirm-leave.title': 'Leave current project?',\n\t'sharing.confirm-leave.description':\n\t\t'Are you sure you want to leave this shared project? You can return to it by navigating to its URL.',\n\t'sharing.confirm-leave.cancel': 'Cancel',\n\t'sharing.confirm-leave.leave': 'Leave',\n\t'sharing.confirm-leave.dont-show-again': \"Don't ask again\",\n\t'toast.error.export-fail.title': 'Failed export',\n\t'toast.error.export-fail.desc': 'Failed to export image',\n\t'toast.error.copy-fail.title': 'Failed copy',\n\t'toast.error.copy-fail.desc': 'Failed to copy image',\n\t'context.pages.new-page': 'New page',\n\t'vscode.file-open.desc':\n\t\t\"We've updated this document to work with the current version of tldraw. If you'd like to keep the original version (which will work on old.tldraw.com), click below to create a backup.\",\n\t'vscode.file-open.open': 'Continue',\n\t'vscode.file-open.backup': 'Backup',\n\t'vscode.file-open.backup-saved': 'Backup saved',\n\t'vscode.file-open.backup-failed': 'Backup failed: this is not a .tldr file.',\n\t'vscode.file-open.dont-show-again': \"Don't ask again\",\n\t'cursor-chat.type-to-chat': 'Type to chat...',\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["// This file is automatically generated by scripts/refresh-assets.ts.\n// Do not edit manually.\n\n/** @internal */\nexport const DEFAULT_TRANSLATION = {\n\t'action.convert-to-bookmark': 'Convert to Bookmark',\n\t'action.convert-to-embed': 'Convert to Embed',\n\t'action.open-embed-link': 'Open link',\n\t'action.align-bottom': 'Align bottom',\n\t'action.align-center-horizontal': 'Align horizontally',\n\t'action.align-center-vertical': 'Align vertically',\n\t'action.align-center-horizontal.short': 'Align H',\n\t'action.align-center-vertical.short': 'Align V',\n\t'action.align-left': 'Align left',\n\t'action.align-right': 'Align right',\n\t'action.align-top': 'Align top',\n\t'action.back-to-content': 'Back to content',\n\t'action.bring-forward': 'Bring forward',\n\t'action.bring-to-front': 'Bring to front',\n\t'action.copy-as-json.short': 'JSON',\n\t'action.copy-as-json': 'Copy as JSON',\n\t'action.copy-as-png.short': 'PNG',\n\t'action.copy-as-png': 'Copy as PNG',\n\t'action.copy-as-svg.short': 'SVG',\n\t'action.copy-as-svg': 'Copy as SVG',\n\t'action.copy': 'Copy',\n\t'action.cut': 'Cut',\n\t'action.delete': 'Delete',\n\t'action.unlock-all': 'Unlock all',\n\t'action.distribute-horizontal': 'Distribute horizontally',\n\t'action.distribute-vertical': 'Distribute vertically',\n\t'action.distribute-horizontal.short': 'Distribute H',\n\t'action.distribute-vertical.short': 'Distribute V',\n\t'action.duplicate': 'Duplicate',\n\t'action.edit-link': 'Edit link',\n\t'action.exit-pen-mode': 'Exit pen mode',\n\t'action.export-as-json.short': 'JSON',\n\t'action.export-as-json': 'Export as JSON',\n\t'action.export-as-png.short': 'PNG',\n\t'action.export-as-png': 'Export as PNG',\n\t'action.export-as-svg.short': 'SVG',\n\t'action.export-as-svg': 'Export as SVG',\n\t'action.fit-frame-to-content': 'Fit to content',\n\t'action.flip-horizontal': 'Flip horizontally',\n\t'action.flip-vertical': 'Flip vertically',\n\t'action.flip-horizontal.short': 'Flip H',\n\t'action.flip-vertical.short': 'Flip V',\n\t'action.fork-project': 'Fork this project',\n\t'action.group': 'Group',\n\t'action.insert-embed': 'Insert embed',\n\t'action.insert-media': 'Upload media',\n\t'action.leave-shared-project': 'Leave shared project',\n\t'action.new-project': 'New project',\n\t'action.new-shared-project': 'New shared project',\n\t'action.open-cursor-chat': 'Cursor chat',\n\t'action.open-file': 'Open file',\n\t'action.pack': 'Pack',\n\t'action.paste': 'Paste',\n\t'action.print': 'Print',\n\t'action.redo': 'Redo',\n\t'action.remove-frame': 'Remove frame',\n\t'action.rotate-ccw': 'Rotate counterclockwise',\n\t'action.rotate-cw': 'Rotate clockwise',\n\t'action.save-copy': 'Save a copy',\n\t'action.select-all': 'Select all',\n\t'action.select-none': 'Select none',\n\t'action.send-backward': 'Send backward',\n\t'action.send-to-back': 'Send to back',\n\t'action.share-project': 'Share this project',\n\t'action.stack-horizontal': 'Stack horizontally',\n\t'action.stack-vertical': 'Stack vertically',\n\t'action.stack-horizontal.short': 'Stack H',\n\t'action.stack-vertical.short': 'Stack V',\n\t'action.stop-following': 'Stop following',\n\t'action.stretch-horizontal': 'Stretch horizontally',\n\t'action.stretch-vertical': 'Stretch vertically',\n\t'action.stretch-horizontal.short': 'Stretch H',\n\t'action.stretch-vertical.short': 'Stretch V',\n\t'action.toggle-auto-size': 'Toggle auto size',\n\t'action.toggle-dark-mode.menu': 'Dark mode',\n\t'action.toggle-dark-mode': 'Toggle dark mode',\n\t'action.toggle-reduce-motion.menu': 'Reduce motion',\n\t'action.toggle-reduce-motion': 'Toggle reduce motion',\n\t'action.toggle-edge-scrolling.menu': 'Edge scrolling',\n\t'action.toggle-edge-scrolling': 'Toggle edge scrolling',\n\t'action.toggle-debug-mode.menu': 'Debug mode',\n\t'action.toggle-debug-mode': 'Toggle debug mode',\n\t'action.toggle-focus-mode.menu': 'Focus mode',\n\t'action.toggle-focus-mode': 'Toggle focus mode',\n\t'action.toggle-grid.menu': 'Show grid',\n\t'action.toggle-grid': 'Toggle grid',\n\t'action.toggle-lock': 'Toggle locked',\n\t'action.toggle-snap-mode.menu': 'Always snap',\n\t'action.toggle-snap-mode': 'Toggle always snap',\n\t'action.toggle-tool-lock.menu': 'Tool lock',\n\t'action.toggle-tool-lock': 'Toggle tool lock',\n\t'action.toggle-transparent.context-menu': 'Transparent',\n\t'action.toggle-transparent.menu': 'Transparent',\n\t'action.toggle-transparent': 'Toggle transparent background',\n\t'action.undo': 'Undo',\n\t'action.ungroup': 'Ungroup',\n\t'action.zoom-in': 'Zoom in',\n\t'action.zoom-out': 'Zoom out',\n\t'action.zoom-to-100': 'Zoom to 100%',\n\t'action.zoom-to-fit': 'Zoom to fit',\n\t'action.zoom-to-selection': 'Zoom to selection',\n\t'color-style.black': 'Black',\n\t'color-style.blue': 'Blue',\n\t'color-style.green': 'Green',\n\t'color-style.grey': 'Grey',\n\t'color-style.light-blue': 'Light blue',\n\t'color-style.light-green': 'Light green',\n\t'color-style.light-red': 'Light red',\n\t'color-style.light-violet': 'Light violet',\n\t'color-style.orange': 'Orange',\n\t'color-style.red': 'Red',\n\t'color-style.violet': 'Violet',\n\t'color-style.yellow': 'Yellow',\n\t'fill-style.none': 'None',\n\t'fill-style.semi': 'Semi',\n\t'fill-style.solid': 'Solid',\n\t'fill-style.pattern': 'Pattern',\n\t'dash-style.dashed': 'Dashed',\n\t'dash-style.dotted': 'Dotted',\n\t'dash-style.draw': 'Draw',\n\t'dash-style.solid': 'Solid',\n\t'size-style.s': 'Small',\n\t'size-style.m': 'Medium',\n\t'size-style.l': 'Large',\n\t'size-style.xl': 'Extra large',\n\t'opacity-style.0.1': '10%',\n\t'opacity-style.0.25': '25%',\n\t'opacity-style.0.5': '50%',\n\t'opacity-style.0.75': '75%',\n\t'opacity-style.1': '100%',\n\t'font-style.draw': 'Draw',\n\t'font-style.sans': 'Sans',\n\t'font-style.serif': 'Serif',\n\t'font-style.mono': 'Mono',\n\t'align-style.start': 'Start',\n\t'align-style.middle': 'Middle',\n\t'align-style.end': 'End',\n\t'align-style.justify': 'Justify',\n\t'geo-style.arrow-down': 'Arrow down',\n\t'geo-style.arrow-left': 'Arrow left',\n\t'geo-style.arrow-right': 'Arrow right',\n\t'geo-style.arrow-up': 'Arrow up',\n\t'geo-style.diamond': 'Diamond',\n\t'geo-style.ellipse': 'Ellipse',\n\t'geo-style.hexagon': 'Hexagon',\n\t'geo-style.octagon': 'Octagon',\n\t'geo-style.oval': 'Oval',\n\t'geo-style.cloud': 'Cloud',\n\t'geo-style.pentagon': 'Pentagon',\n\t'geo-style.rectangle': 'Rectangle',\n\t'geo-style.rhombus-2': 'Rhombus 2',\n\t'geo-style.rhombus': 'Rhombus',\n\t'geo-style.star': 'Star',\n\t'geo-style.trapezoid': 'Trapezoid',\n\t'geo-style.triangle': 'Triangle',\n\t'geo-style.x-box': 'X box',\n\t'geo-style.check-box': 'Check box',\n\t'arrowheadStart-style.none': 'None',\n\t'arrowheadStart-style.arrow': 'Arrow',\n\t'arrowheadStart-style.bar': 'Bar',\n\t'arrowheadStart-style.diamond': 'Diamond',\n\t'arrowheadStart-style.dot': 'Dot',\n\t'arrowheadStart-style.inverted': 'Inverted',\n\t'arrowheadStart-style.pipe': 'Pipe',\n\t'arrowheadStart-style.square': 'Square',\n\t'arrowheadStart-style.triangle': 'Triangle',\n\t'arrowheadEnd-style.none': 'None',\n\t'arrowheadEnd-style.arrow': 'Arrow',\n\t'arrowheadEnd-style.bar': 'Bar',\n\t'arrowheadEnd-style.diamond': 'Diamond',\n\t'arrowheadEnd-style.dot': 'Dot',\n\t'arrowheadEnd-style.inverted': 'Inverted',\n\t'arrowheadEnd-style.pipe': 'Pipe',\n\t'arrowheadEnd-style.square': 'Square',\n\t'arrowheadEnd-style.triangle': 'Triangle',\n\t'spline-style.line': 'Line',\n\t'spline-style.cubic': 'Cubic',\n\t'tool.select': 'Select',\n\t'tool.hand': 'Hand',\n\t'tool.draw': 'Draw',\n\t'tool.eraser': 'Eraser',\n\t'tool.arrow-down': 'Arrow down',\n\t'tool.arrow-left': 'Arrow left',\n\t'tool.arrow-right': 'Arrow right',\n\t'tool.arrow-up': 'Arrow up',\n\t'tool.arrow': 'Arrow',\n\t'tool.cloud': 'Cloud',\n\t'tool.diamond': 'Diamond',\n\t'tool.ellipse': 'Ellipse',\n\t'tool.hexagon': 'Hexagon',\n\t'tool.highlight': 'Highlight',\n\t'tool.line': 'Line',\n\t'tool.octagon': 'Octagon',\n\t'tool.oval': 'Oval',\n\t'tool.pentagon': 'Pentagon',\n\t'tool.rectangle': 'Rectangle',\n\t'tool.rhombus': 'Rhombus',\n\t'tool.star': 'Star',\n\t'tool.trapezoid': 'Trapezoid',\n\t'tool.triangle': 'Triangle',\n\t'tool.x-box': 'X box',\n\t'tool.check-box': 'Check box',\n\t'tool.asset': 'Asset',\n\t'tool.frame': 'Frame',\n\t'tool.note': 'Note',\n\t'tool.laser': 'Laser',\n\t'tool.embed': 'Embed',\n\t'tool.text': 'Text',\n\t'menu.title': 'Menu',\n\t'menu.copy-as': 'Copy as',\n\t'menu.edit': 'Edit',\n\t'menu.export-as': 'Export as',\n\t'menu.file': 'File',\n\t'menu.language': 'Language',\n\t'menu.preferences': 'Preferences',\n\t'menu.view': 'View',\n\t'context-menu.arrange': 'Arrange',\n\t'context-menu.copy-as': 'Copy as',\n\t'context-menu.export-as': 'Export as',\n\t'context-menu.move-to-page': 'Move to page',\n\t'context-menu.reorder': 'Reorder',\n\t'page-menu.title': 'Pages',\n\t'page-menu.create-new-page': 'Create new page',\n\t'page-menu.max-page-count-reached': 'Max pages reached',\n\t'page-menu.new-page-initial-name': 'Page 1',\n\t'page-menu.edit-start': 'Edit',\n\t'page-menu.edit-done': 'Done',\n\t'page-menu.go-to-page': 'Go to page',\n\t'page-menu.submenu.rename': 'Rename',\n\t'page-menu.submenu.duplicate-page': 'Duplicate',\n\t'page-menu.submenu.title': 'Menu',\n\t'page-menu.submenu.move-down': 'Move down',\n\t'page-menu.submenu.move-up': 'Move up',\n\t'page-menu.submenu.delete': 'Delete',\n\t'share-menu.title': 'Share',\n\t'share-menu.save-note': 'Download this project to your computer as a .tldr file.',\n\t'share-menu.fork-note': 'Create a new shared project based on this snapshot.',\n\t'share-menu.share-project': 'Share this project',\n\t'share-menu.default-project-name': 'Shared Project',\n\t'share-menu.copy-link': 'Copy share link',\n\t'share-menu.readonly-link': 'Read-only',\n\t'share-menu.create-snapshot-link': 'Copy snapshot link',\n\t'share-menu.snapshot-link-note': 'Capture and share this project as a read-only snapshot link.',\n\t'share-menu.copy-readonly-link': 'Copy read-only link',\n\t'share-menu.offline-note': 'Create a new shared project based on your current project.',\n\t'share-menu.copy-link-note': 'Anyone with the link will be able to view and edit this project.',\n\t'share-menu.copy-readonly-link-note':\n\t\t'Anyone with the link will be able to view (but not edit) this project.',\n\t'share-menu.project-too-large':\n\t\t\"Sorry, this project can't be shared because it's too large. We're working on it!\",\n\t'share-menu.upload-failed':\n\t\t\"Sorry, we couldn't upload your project at the moment. Please try again or let us know if the problem persists.\",\n\t'status.offline': 'Offline',\n\t'status.online': 'Online',\n\t'people-menu.title': 'People',\n\t'people-menu.change-name': 'Change name',\n\t'people-menu.change-color': 'Change color',\n\t'people-menu.follow': 'Following',\n\t'people-menu.following': 'Following',\n\t'people-menu.leading': 'Following You',\n\t'people-menu.user': '(You)',\n\t'people-menu.invite': 'Invite others',\n\t'help-menu.title': 'Help and resources',\n\t'help-menu.about': 'About',\n\t'help-menu.discord': 'Discord',\n\t'help-menu.github': 'GitHub',\n\t'help-menu.keyboard-shortcuts': 'Keyboard shortcuts',\n\t'help-menu.twitter': 'Twitter',\n\t'actions-menu.title': 'Actions',\n\t'edit-link-dialog.title': 'Edit link',\n\t'edit-link-dialog.invalid-url': 'A link must be a valid URL.',\n\t'edit-link-dialog.detail': 'Links will open in a new tab.',\n\t'edit-link-dialog.url': 'URL',\n\t'edit-link-dialog.clear': 'Clear',\n\t'edit-link-dialog.save': 'Continue',\n\t'edit-link-dialog.cancel': 'Cancel',\n\t'embed-dialog.title': 'Insert embed',\n\t'embed-dialog.back': 'Back',\n\t'embed-dialog.create': 'Create',\n\t'embed-dialog.cancel': 'Cancel',\n\t'embed-dialog.url': 'URL',\n\t'embed-dialog.instruction': \"Paste in the site's URL to create the embed.\",\n\t'embed-dialog.invalid-url': 'We could not create an embed from that URL.',\n\t'edit-pages-dialog.move-down': 'Move down',\n\t'edit-pages-dialog.move-up': 'Move up',\n\t'shortcuts-dialog.title': 'Keyboard shortcuts',\n\t'shortcuts-dialog.edit': 'Edit',\n\t'shortcuts-dialog.file': 'File',\n\t'shortcuts-dialog.preferences': 'Preferences',\n\t'shortcuts-dialog.tools': 'Tools',\n\t'shortcuts-dialog.transform': 'Transform',\n\t'shortcuts-dialog.view': 'View',\n\t'shortcuts-dialog.collaboration': 'Collaboration',\n\t'home-project-dialog.title': 'Home project',\n\t'home-project-dialog.description': \"This is your local home project. It's just for you!\",\n\t'rename-project-dialog.title': 'Rename project',\n\t'rename-project-dialog.cancel': 'Cancel',\n\t'rename-project-dialog.rename': 'Rename',\n\t'home-project-dialog.ok': 'Ok',\n\t'style-panel.title': 'Styles',\n\t'style-panel.align': 'Align',\n\t'style-panel.vertical-align': 'Vertical align',\n\t'style-panel.position': 'Position',\n\t'style-panel.arrowheads': 'Arrows',\n\t'style-panel.arrowhead-start': 'Start',\n\t'style-panel.arrowhead-end': 'End',\n\t'style-panel.color': 'Color',\n\t'style-panel.dash': 'Dash',\n\t'style-panel.fill': 'Fill',\n\t'style-panel.font': 'Font',\n\t'style-panel.geo': 'Shape',\n\t'style-panel.mixed': 'Mixed',\n\t'style-panel.opacity': 'Opacity',\n\t'style-panel.size': 'Size',\n\t'style-panel.spline': 'Spline',\n\t'tool-panel.drawing': 'Drawing',\n\t'tool-panel.shapes': 'Shapes',\n\t'tool-panel.more': 'More',\n\t'debug-panel.more': 'More',\n\t'navigation-zone.toggle-minimap': 'Toggle minimap',\n\t'navigation-zone.zoom': 'Zoom',\n\t'focus-mode.toggle-focus-mode': 'Toggle focus mode',\n\t'toast.close': 'Close',\n\t'file-system.file-open-error.title': 'Could not open file',\n\t'file-system.file-open-error.not-a-tldraw-file':\n\t\t\"The file you tried to open doesn't look like a tldraw file.\",\n\t'file-system.file-open-error.file-format-version-too-new':\n\t\t'The file you tried to open is from a newer version of tldraw. Please reload the page and try again.',\n\t'file-system.file-open-error.generic-corrupted-file': 'The file you tried to open is corrupted.',\n\t'file-system.confirm-open.title': 'Overwrite current project?',\n\t'file-system.confirm-open.description':\n\t\t'Opening a file will replace your current project and any unsaved changes will be lost. Are you sure you want to continue?',\n\t'file-system.confirm-open.cancel': 'Cancel',\n\t'file-system.confirm-open.open': 'Open file',\n\t'file-system.confirm-open.dont-show-again': \"Don't ask again\",\n\t'file-system.confirm-clear.title': 'Clear current project?',\n\t'file-system.confirm-clear.description':\n\t\t'Creating a new project will clear your current project and any unsaved changes will be lost. Are you sure you want to continue?',\n\t'file-system.confirm-clear.cancel': 'Cancel',\n\t'file-system.confirm-clear.continue': 'Continue',\n\t'file-system.confirm-clear.dont-show-again': \"Don't ask again\",\n\t'file-system.shared-document-file-open-error.title': 'Could not open file',\n\t'file-system.shared-document-file-open-error.description':\n\t\t'Opening files from shared projects is not supported.',\n\t'sharing.confirm-leave.title': 'Leave current project?',\n\t'sharing.confirm-leave.description':\n\t\t'Are you sure you want to leave this shared project? You can return to it by navigating to its URL.',\n\t'sharing.confirm-leave.cancel': 'Cancel',\n\t'sharing.confirm-leave.leave': 'Leave',\n\t'sharing.confirm-leave.dont-show-again': \"Don't ask again\",\n\t'toast.error.export-fail.title': 'Failed export',\n\t'toast.error.export-fail.desc': 'Failed to export image',\n\t'toast.error.copy-fail.title': 'Failed copy',\n\t'toast.error.copy-fail.desc': 'Failed to copy image',\n\t'context.pages.new-page': 'New page',\n\t'vscode.file-open.desc':\n\t\t\"We've updated this document to work with the current version of tldraw. If you'd like to keep the original version (which will work on old.tldraw.com), click below to create a backup.\",\n\t'vscode.file-open.open': 'Continue',\n\t'vscode.file-open.backup': 'Backup',\n\t'vscode.file-open.backup-saved': 'Backup saved',\n\t'vscode.file-open.backup-failed': 'Backup failed: this is not a .tldr file.',\n\t'vscode.file-open.dont-show-again': \"Don't ask again\",\n\t'cursor-chat.type-to-chat': 'Type to chat...',\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -37,7 +37,11 @@ async function getResizedImageDataUrl(dataURLForImage, width, height, opts = {})
|
|
|
37
37
|
desiredWidth *= ratio;
|
|
38
38
|
desiredHeight *= ratio;
|
|
39
39
|
}
|
|
40
|
-
return await downscale(dataURLForImage, desiredWidth, desiredHeight, {
|
|
40
|
+
return await downscale(dataURLForImage, desiredWidth, desiredHeight, {
|
|
41
|
+
// downscale expects the type without the `image/` prefix
|
|
42
|
+
imageType: type.replace("image/", ""),
|
|
43
|
+
quality
|
|
44
|
+
});
|
|
41
45
|
}
|
|
42
46
|
const DEFAULT_ACCEPTED_IMG_TYPE = ["image/jpeg", "image/png", "image/gif", "image/svg+xml"];
|
|
43
47
|
const DEFAULT_ACCEPTED_VID_TYPE = ["video/mp4", "video/quicktime"];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/utils/assets/assets.ts"],
|
|
4
|
-
"sourcesContent": ["import downscale from 'downscale'\nimport { getBrowserCanvasMaxSize } from '../../shapes/shared/getBrowserCanvasMaxSize'\nimport { isAnimated } from './is-gif-animated'\n\ntype BoxWidthHeight = {\n\tw: number\n\th: number\n}\n\n/**\n * Contains the size within the given box size\n *\n * @param originalSize - The size of the asset\n * @param containBoxSize - The container size\n * @returns Adjusted size\n * @public\n */\nexport function containBoxSize(\n\toriginalSize: BoxWidthHeight,\n\tcontainBoxSize: BoxWidthHeight\n): BoxWidthHeight {\n\tconst overByXScale = originalSize.w / containBoxSize.w\n\tconst overByYScale = originalSize.h / containBoxSize.h\n\n\tif (overByXScale <= 1 && overByYScale <= 1) {\n\t\treturn originalSize\n\t} else if (overByXScale > overByYScale) {\n\t\treturn {\n\t\t\tw: originalSize.w / overByXScale,\n\t\t\th: originalSize.h / overByXScale,\n\t\t}\n\t} else {\n\t\treturn {\n\t\t\tw: originalSize.w / overByYScale,\n\t\t\th: originalSize.h / overByYScale,\n\t\t}\n\t}\n}\n\n/**\n * Get the size of an image from its source.\n *\n * @example\n * ```ts\n * const size = await getImageSize('https://example.com/image.jpg')\n * const dataUrl = await getResizedImageDataUrl('https://example.com/image.jpg', size.w, size.h, { type: \"image/jpeg\", quality: 0.92 })\n * ```\n *\n * @param dataURLForImage - The image file as a string.\n * @param width - The desired width.\n * @param height - The desired height.\n * @param opts - Options for the image.\n * @public\n */\nexport async function getResizedImageDataUrl(\n\tdataURLForImage: string,\n\twidth: number,\n\theight: number,\n\topts = {} as { type?: string; quality?: number }\n): Promise<string> {\n\tlet desiredWidth = width * 2\n\tlet desiredHeight = height * 2\n\tconst { type = 'image/jpeg', quality = 0.92 } = opts\n\n\tconst canvasSizes = await getBrowserCanvasMaxSize()\n\n\tconst aspectRatio = width / height\n\n\tif (desiredWidth > canvasSizes.maxWidth) {\n\t\tdesiredWidth = canvasSizes.maxWidth\n\t\tdesiredHeight = desiredWidth / aspectRatio\n\t}\n\n\tif (desiredHeight > canvasSizes.maxHeight) {\n\t\tdesiredHeight = canvasSizes.maxHeight\n\t\tdesiredWidth = desiredHeight * aspectRatio\n\t}\n\n\tif (desiredWidth * desiredHeight > canvasSizes.maxArea) {\n\t\tconst ratio = Math.sqrt(canvasSizes.maxArea / (desiredWidth * desiredHeight))\n\t\tdesiredWidth *= ratio\n\t\tdesiredHeight *= ratio\n\t}\n\n\treturn await downscale(dataURLForImage, desiredWidth, desiredHeight, {
|
|
5
|
-
"mappings": "AAAA,OAAO,eAAe;AACtB,SAAS,+BAA+B;AACxC,SAAS,kBAAkB;AAepB,SAAS,eACf,cACAA,iBACiB;AACjB,QAAM,eAAe,aAAa,IAAIA,gBAAe;AACrD,QAAM,eAAe,aAAa,IAAIA,gBAAe;AAErD,MAAI,gBAAgB,KAAK,gBAAgB,GAAG;AAC3C,WAAO;AAAA,EACR,WAAW,eAAe,cAAc;AACvC,WAAO;AAAA,MACN,GAAG,aAAa,IAAI;AAAA,MACpB,GAAG,aAAa,IAAI;AAAA,IACrB;AAAA,EACD,OAAO;AACN,WAAO;AAAA,MACN,GAAG,aAAa,IAAI;AAAA,MACpB,GAAG,aAAa,IAAI;AAAA,IACrB;AAAA,EACD;AACD;AAiBA,eAAsB,uBACrB,iBACA,OACA,QACA,OAAO,CAAC,GACU;AAClB,MAAI,eAAe,QAAQ;AAC3B,MAAI,gBAAgB,SAAS;AAC7B,QAAM,EAAE,OAAO,cAAc,UAAU,KAAK,IAAI;AAEhD,QAAM,cAAc,MAAM,wBAAwB;AAElD,QAAM,cAAc,QAAQ;AAE5B,MAAI,eAAe,YAAY,UAAU;AACxC,mBAAe,YAAY;AAC3B,oBAAgB,eAAe;AAAA,EAChC;AAEA,MAAI,gBAAgB,YAAY,WAAW;AAC1C,oBAAgB,YAAY;AAC5B,mBAAe,gBAAgB;AAAA,EAChC;AAEA,MAAI,eAAe,gBAAgB,YAAY,SAAS;AACvD,UAAM,QAAQ,KAAK,KAAK,YAAY,WAAW,eAAe,cAAc;AAC5E,oBAAgB;AAChB,qBAAiB;AAAA,EAClB;AAEA,SAAO,MAAM,UAAU,iBAAiB,cAAc,eAAe,
|
|
4
|
+
"sourcesContent": ["import downscale from 'downscale'\nimport { getBrowserCanvasMaxSize } from '../../shapes/shared/getBrowserCanvasMaxSize'\nimport { isAnimated } from './is-gif-animated'\n\ntype BoxWidthHeight = {\n\tw: number\n\th: number\n}\n\n/**\n * Contains the size within the given box size\n *\n * @param originalSize - The size of the asset\n * @param containBoxSize - The container size\n * @returns Adjusted size\n * @public\n */\nexport function containBoxSize(\n\toriginalSize: BoxWidthHeight,\n\tcontainBoxSize: BoxWidthHeight\n): BoxWidthHeight {\n\tconst overByXScale = originalSize.w / containBoxSize.w\n\tconst overByYScale = originalSize.h / containBoxSize.h\n\n\tif (overByXScale <= 1 && overByYScale <= 1) {\n\t\treturn originalSize\n\t} else if (overByXScale > overByYScale) {\n\t\treturn {\n\t\t\tw: originalSize.w / overByXScale,\n\t\t\th: originalSize.h / overByXScale,\n\t\t}\n\t} else {\n\t\treturn {\n\t\t\tw: originalSize.w / overByYScale,\n\t\t\th: originalSize.h / overByYScale,\n\t\t}\n\t}\n}\n\n/**\n * Get the size of an image from its source.\n *\n * @example\n * ```ts\n * const size = await getImageSize('https://example.com/image.jpg')\n * const dataUrl = await getResizedImageDataUrl('https://example.com/image.jpg', size.w, size.h, { type: \"image/jpeg\", quality: 0.92 })\n * ```\n *\n * @param dataURLForImage - The image file as a string.\n * @param width - The desired width.\n * @param height - The desired height.\n * @param opts - Options for the image.\n * @public\n */\nexport async function getResizedImageDataUrl(\n\tdataURLForImage: string,\n\twidth: number,\n\theight: number,\n\topts = {} as { type?: string; quality?: number }\n): Promise<string> {\n\tlet desiredWidth = width * 2\n\tlet desiredHeight = height * 2\n\tconst { type = 'image/jpeg', quality = 0.92 } = opts\n\n\tconst canvasSizes = await getBrowserCanvasMaxSize()\n\n\tconst aspectRatio = width / height\n\n\tif (desiredWidth > canvasSizes.maxWidth) {\n\t\tdesiredWidth = canvasSizes.maxWidth\n\t\tdesiredHeight = desiredWidth / aspectRatio\n\t}\n\n\tif (desiredHeight > canvasSizes.maxHeight) {\n\t\tdesiredHeight = canvasSizes.maxHeight\n\t\tdesiredWidth = desiredHeight * aspectRatio\n\t}\n\n\tif (desiredWidth * desiredHeight > canvasSizes.maxArea) {\n\t\tconst ratio = Math.sqrt(canvasSizes.maxArea / (desiredWidth * desiredHeight))\n\t\tdesiredWidth *= ratio\n\t\tdesiredHeight *= ratio\n\t}\n\n\treturn await downscale(dataURLForImage, desiredWidth, desiredHeight, {\n\t\t// downscale expects the type without the `image/` prefix\n\t\timageType: type.replace('image/', ''),\n\t\tquality,\n\t})\n}\n\n/** @public */\nexport const DEFAULT_ACCEPTED_IMG_TYPE = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml']\n/** @public */\nexport const DEFAULT_ACCEPTED_VID_TYPE = ['video/mp4', 'video/quicktime']\n\n/** @public */\nexport async function isGifAnimated(file: File): Promise<boolean> {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst reader = new FileReader()\n\t\treader.onerror = () => reject(reader.error)\n\t\treader.onload = () => {\n\t\t\tresolve(reader.result ? isAnimated(reader.result as ArrayBuffer) : false)\n\t\t}\n\t\treader.readAsArrayBuffer(file)\n\t})\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAAO,eAAe;AACtB,SAAS,+BAA+B;AACxC,SAAS,kBAAkB;AAepB,SAAS,eACf,cACAA,iBACiB;AACjB,QAAM,eAAe,aAAa,IAAIA,gBAAe;AACrD,QAAM,eAAe,aAAa,IAAIA,gBAAe;AAErD,MAAI,gBAAgB,KAAK,gBAAgB,GAAG;AAC3C,WAAO;AAAA,EACR,WAAW,eAAe,cAAc;AACvC,WAAO;AAAA,MACN,GAAG,aAAa,IAAI;AAAA,MACpB,GAAG,aAAa,IAAI;AAAA,IACrB;AAAA,EACD,OAAO;AACN,WAAO;AAAA,MACN,GAAG,aAAa,IAAI;AAAA,MACpB,GAAG,aAAa,IAAI;AAAA,IACrB;AAAA,EACD;AACD;AAiBA,eAAsB,uBACrB,iBACA,OACA,QACA,OAAO,CAAC,GACU;AAClB,MAAI,eAAe,QAAQ;AAC3B,MAAI,gBAAgB,SAAS;AAC7B,QAAM,EAAE,OAAO,cAAc,UAAU,KAAK,IAAI;AAEhD,QAAM,cAAc,MAAM,wBAAwB;AAElD,QAAM,cAAc,QAAQ;AAE5B,MAAI,eAAe,YAAY,UAAU;AACxC,mBAAe,YAAY;AAC3B,oBAAgB,eAAe;AAAA,EAChC;AAEA,MAAI,gBAAgB,YAAY,WAAW;AAC1C,oBAAgB,YAAY;AAC5B,mBAAe,gBAAgB;AAAA,EAChC;AAEA,MAAI,eAAe,gBAAgB,YAAY,SAAS;AACvD,UAAM,QAAQ,KAAK,KAAK,YAAY,WAAW,eAAe,cAAc;AAC5E,oBAAgB;AAChB,qBAAiB;AAAA,EAClB;AAEA,SAAO,MAAM,UAAU,iBAAiB,cAAc,eAAe;AAAA;AAAA,IAEpE,WAAW,KAAK,QAAQ,UAAU,EAAE;AAAA,IACpC;AAAA,EACD,CAAC;AACF;AAGO,MAAM,4BAA4B,CAAC,cAAc,aAAa,aAAa,eAAe;AAE1F,MAAM,4BAA4B,CAAC,aAAa,iBAAiB;AAGxE,eAAsB,cAAc,MAA8B;AACjE,SAAO,MAAM,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC7C,UAAM,SAAS,IAAI,WAAW;AAC9B,WAAO,UAAU,MAAM,OAAO,OAAO,KAAK;AAC1C,WAAO,SAAS,MAAM;AACrB,cAAQ,OAAO,SAAS,WAAW,OAAO,MAAqB,IAAI,KAAK;AAAA,IACzE;AACA,WAAO,kBAAkB,IAAI;AAAA,EAC9B,CAAC;AACF;",
|
|
6
6
|
"names": ["containBoxSize"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbluebutton/tldraw",
|
|
3
|
-
"description": "BigBlueButton's fork of tldraw 2.0-alpha.19",
|
|
4
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"description": "BigBlueButton's fork of tldraw 2.0-alpha.19 - A tiny little drawing editor.",
|
|
4
|
+
"version": "2.0.0-alpha.21",
|
|
5
5
|
"packageManager": "yarn@3.5.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "tldraw GB Ltd.",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"src"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@bigbluebutton/editor": "2.0.0-alpha.
|
|
38
|
+
"@bigbluebutton/editor": "2.0.0-alpha.20",
|
|
39
39
|
"@radix-ui/react-alert-dialog": "^1.0.0",
|
|
40
40
|
"@radix-ui/react-context-menu": "^2.1.5",
|
|
41
41
|
"@radix-ui/react-dialog": "^1.0.5",
|
|
@@ -62,7 +62,7 @@ describe('Translating', () => {
|
|
|
62
62
|
editor.select(id)
|
|
63
63
|
|
|
64
64
|
const shape = editor.getShape<TLLineShape>(id)!
|
|
65
|
-
shape
|
|
65
|
+
editor.updateShape({ ...shape, rotation: Math.PI / 2 })
|
|
66
66
|
|
|
67
67
|
editor.pointerDown(250, 250, { target: 'shape', shape: shape })
|
|
68
68
|
editor.pointerMove(300, 400) // Move shape by 50, 150
|
|
@@ -13,7 +13,9 @@ import {
|
|
|
13
13
|
TLPointerEventInfo,
|
|
14
14
|
TLShape,
|
|
15
15
|
TLShapeId,
|
|
16
|
+
TLTickEventHandler,
|
|
16
17
|
Vec2d,
|
|
18
|
+
moveCameraWhenCloseToEdge,
|
|
17
19
|
pointInPolygon,
|
|
18
20
|
polygonsIntersect,
|
|
19
21
|
} from '@bigbluebutton/editor'
|
|
@@ -60,6 +62,10 @@ export class Brushing extends StateNode {
|
|
|
60
62
|
this.editor.updateInstanceState({ brush: null })
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
override onTick: TLTickEventHandler = () => {
|
|
66
|
+
moveCameraWhenCloseToEdge(this.editor)
|
|
67
|
+
}
|
|
68
|
+
|
|
63
69
|
override onPointerMove = () => {
|
|
64
70
|
this.hitTestShapes()
|
|
65
71
|
}
|
|
@@ -57,7 +57,7 @@ export class Idle extends StateNode {
|
|
|
57
57
|
// Check to see if we hit any shape under the pointer; if so,
|
|
58
58
|
// handle this as a pointer down on the shape instead of the canvas
|
|
59
59
|
const hitShape = getHitShapeOnCanvasPointerDown(this.editor)
|
|
60
|
-
if (hitShape) {
|
|
60
|
+
if (hitShape && !hitShape.isLocked) {
|
|
61
61
|
this.onPointerDown({
|
|
62
62
|
...info,
|
|
63
63
|
shape: hitShape,
|
|
@@ -140,7 +140,11 @@ export class Idle extends StateNode {
|
|
|
140
140
|
}
|
|
141
141
|
default: {
|
|
142
142
|
const hoveredShape = this.editor.getHoveredShape()
|
|
143
|
-
if (
|
|
143
|
+
if (
|
|
144
|
+
hoveredShape &&
|
|
145
|
+
!this.editor.getSelectedShapeIds().includes(hoveredShape.id) &&
|
|
146
|
+
!hoveredShape.isLocked
|
|
147
|
+
) {
|
|
144
148
|
this.onPointerDown({
|
|
145
149
|
...info,
|
|
146
150
|
shape: hoveredShape,
|
|
@@ -13,10 +13,12 @@ import {
|
|
|
13
13
|
TLShape,
|
|
14
14
|
TLShapeId,
|
|
15
15
|
TLShapePartial,
|
|
16
|
+
TLTickEventHandler,
|
|
16
17
|
Vec2d,
|
|
17
18
|
VecLike,
|
|
18
19
|
areAnglesCompatible,
|
|
19
20
|
compact,
|
|
21
|
+
moveCameraWhenCloseToEdge,
|
|
20
22
|
} from '@bigbluebutton/editor'
|
|
21
23
|
|
|
22
24
|
type ResizingInfo = TLPointerEventInfo & {
|
|
@@ -72,6 +74,10 @@ export class Resizing extends StateNode {
|
|
|
72
74
|
this.updateShapes()
|
|
73
75
|
}
|
|
74
76
|
|
|
77
|
+
override onTick: TLTickEventHandler = () => {
|
|
78
|
+
moveCameraWhenCloseToEdge(this.editor)
|
|
79
|
+
}
|
|
80
|
+
|
|
75
81
|
override onPointerMove: TLEventHandlers['onPointerMove'] = () => {
|
|
76
82
|
this.updateShapes()
|
|
77
83
|
}
|
|
@@ -10,9 +10,11 @@ import {
|
|
|
10
10
|
TLPointerEventInfo,
|
|
11
11
|
TLShape,
|
|
12
12
|
TLShapePartial,
|
|
13
|
+
TLTickEventHandler,
|
|
13
14
|
Vec2d,
|
|
14
15
|
compact,
|
|
15
16
|
isPageId,
|
|
17
|
+
moveCameraWhenCloseToEdge,
|
|
16
18
|
} from '@bigbluebutton/editor'
|
|
17
19
|
import { DragAndDropManager } from '../DragAndDropManager'
|
|
18
20
|
|
|
@@ -77,12 +79,10 @@ export class Translating extends StateNode {
|
|
|
77
79
|
this.snapshot = this.selectionSnapshot
|
|
78
80
|
this.handleStart()
|
|
79
81
|
this.updateShapes()
|
|
80
|
-
this.editor.on('tick', this.updateParent)
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
override onExit = () => {
|
|
84
85
|
this.parent.setCurrentToolIdMask(undefined)
|
|
85
|
-
this.editor.off('tick', this.updateParent)
|
|
86
86
|
this.selectionSnapshot = {} as any
|
|
87
87
|
this.snapshot = {} as any
|
|
88
88
|
this.editor.snaps.clear()
|
|
@@ -93,6 +93,14 @@ export class Translating extends StateNode {
|
|
|
93
93
|
this.dragAndDropManager.clear()
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
override onTick: TLTickEventHandler = () => {
|
|
97
|
+
this.dragAndDropManager.updateDroppingNode(
|
|
98
|
+
this.snapshot.movingShapes,
|
|
99
|
+
this.updateParentTransforms
|
|
100
|
+
)
|
|
101
|
+
moveCameraWhenCloseToEdge(this.editor)
|
|
102
|
+
}
|
|
103
|
+
|
|
96
104
|
override onPointerMove = () => {
|
|
97
105
|
this.updateShapes()
|
|
98
106
|
}
|
|
@@ -153,11 +161,6 @@ export class Translating extends StateNode {
|
|
|
153
161
|
this.updateShapes()
|
|
154
162
|
}
|
|
155
163
|
|
|
156
|
-
updateParent = () => {
|
|
157
|
-
const { snapshot } = this
|
|
158
|
-
this.dragAndDropManager.updateDroppingNode(snapshot.movingShapes, this.updateParentTransforms)
|
|
159
|
-
}
|
|
160
|
-
|
|
161
164
|
reset() {
|
|
162
165
|
this.editor.bailToMark(this.markId)
|
|
163
166
|
}
|
|
@@ -994,6 +994,19 @@ export function ActionsProvider({ overrides, children }: ActionsProviderProps) {
|
|
|
994
994
|
},
|
|
995
995
|
checkbox: true,
|
|
996
996
|
},
|
|
997
|
+
{
|
|
998
|
+
id: 'toggle-edge-scrolling',
|
|
999
|
+
label: 'action.toggle-edge-scrolling',
|
|
1000
|
+
menuLabel: 'action.toggle-edge-scrolling.menu',
|
|
1001
|
+
readonlyOk: true,
|
|
1002
|
+
onSelect(source) {
|
|
1003
|
+
trackEvent('toggle-edge-scrolling', { source })
|
|
1004
|
+
editor.user.updateUserPreferences({
|
|
1005
|
+
edgeScrollSpeed: editor.user.getEdgeScrollSpeed() === 0 ? 1 : 0,
|
|
1006
|
+
})
|
|
1007
|
+
},
|
|
1008
|
+
checkbox: true,
|
|
1009
|
+
},
|
|
997
1010
|
{
|
|
998
1011
|
id: 'toggle-transparent',
|
|
999
1012
|
label: 'action.toggle-transparent',
|
|
@@ -51,6 +51,9 @@ export function TLUiMenuSchemaProvider({ overrides, children }: TLUiMenuSchemaPr
|
|
|
51
51
|
|
|
52
52
|
const isDarkMode = useValue('isDarkMode', () => editor.user.getIsDarkMode(), [editor])
|
|
53
53
|
const animationSpeed = useValue('animationSpeed', () => editor.user.getAnimationSpeed(), [editor])
|
|
54
|
+
const edgeScrollSpeed = useValue('edgeScrollSpeed', () => editor.user.getEdgeScrollSpeed(), [
|
|
55
|
+
editor,
|
|
56
|
+
])
|
|
54
57
|
const isGridMode = useValue('isGridMode', () => editor.getInstanceState().isGridMode, [editor])
|
|
55
58
|
const isSnapMode = useValue('isSnapMode', () => editor.user.getIsSnapMode(), [editor])
|
|
56
59
|
const isToolLock = useValue('isToolLock', () => editor.getInstanceState().isToolLocked, [editor])
|
|
@@ -214,6 +217,7 @@ export function TLUiMenuSchemaProvider({ overrides, children }: TLUiMenuSchemaPr
|
|
|
214
217
|
menuItem(actions['toggle-grid'], { checked: isGridMode }),
|
|
215
218
|
menuItem(actions['toggle-dark-mode'], { checked: isDarkMode }),
|
|
216
219
|
menuItem(actions['toggle-focus-mode'], { checked: isFocusMode }),
|
|
220
|
+
menuItem(actions['toggle-edge-scrolling'], { checked: edgeScrollSpeed === 1 }),
|
|
217
221
|
menuItem(actions['toggle-reduce-motion'], { checked: animationSpeed === 0 }),
|
|
218
222
|
menuItem(actions['toggle-debug-mode'], { checked: isDebugMode })
|
|
219
223
|
)
|
|
@@ -258,6 +262,7 @@ export function TLUiMenuSchemaProvider({ overrides, children }: TLUiMenuSchemaPr
|
|
|
258
262
|
isFocusMode,
|
|
259
263
|
exportBackground,
|
|
260
264
|
isDebugMode,
|
|
265
|
+
edgeScrollSpeed,
|
|
261
266
|
isZoomedTo100,
|
|
262
267
|
oneEmbeddableBookmarkSelected,
|
|
263
268
|
oneEmbedSelected,
|
|
@@ -81,6 +81,8 @@ export type TLUiTranslationKey =
|
|
|
81
81
|
| 'action.toggle-dark-mode'
|
|
82
82
|
| 'action.toggle-reduce-motion.menu'
|
|
83
83
|
| 'action.toggle-reduce-motion'
|
|
84
|
+
| 'action.toggle-edge-scrolling.menu'
|
|
85
|
+
| 'action.toggle-edge-scrolling'
|
|
84
86
|
| 'action.toggle-debug-mode.menu'
|
|
85
87
|
| 'action.toggle-debug-mode'
|
|
86
88
|
| 'action.toggle-focus-mode.menu'
|
|
@@ -81,6 +81,8 @@ export const DEFAULT_TRANSLATION = {
|
|
|
81
81
|
'action.toggle-dark-mode': 'Toggle dark mode',
|
|
82
82
|
'action.toggle-reduce-motion.menu': 'Reduce motion',
|
|
83
83
|
'action.toggle-reduce-motion': 'Toggle reduce motion',
|
|
84
|
+
'action.toggle-edge-scrolling.menu': 'Edge scrolling',
|
|
85
|
+
'action.toggle-edge-scrolling': 'Toggle edge scrolling',
|
|
84
86
|
'action.toggle-debug-mode.menu': 'Debug mode',
|
|
85
87
|
'action.toggle-debug-mode': 'Toggle debug mode',
|
|
86
88
|
'action.toggle-focus-mode.menu': 'Focus mode',
|
package/src/lib/ui/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.0.0-alpha.
|
|
1
|
+
export const version = '2.0.0-alpha.20'
|
|
@@ -82,7 +82,11 @@ export async function getResizedImageDataUrl(
|
|
|
82
82
|
desiredHeight *= ratio
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
return await downscale(dataURLForImage, desiredWidth, desiredHeight, {
|
|
85
|
+
return await downscale(dataURLForImage, desiredWidth, desiredHeight, {
|
|
86
|
+
// downscale expects the type without the `image/` prefix
|
|
87
|
+
imageType: type.replace('image/', ''),
|
|
88
|
+
quality,
|
|
89
|
+
})
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
/** @public */
|
|
@@ -109,15 +109,18 @@ describe('TLUserPreferences', () => {
|
|
|
109
109
|
userPreferences,
|
|
110
110
|
}),
|
|
111
111
|
})
|
|
112
|
+
// called once in the constructor of testeditor to set edge scroll speed to 0
|
|
113
|
+
expect(setUserPreferences).toHaveBeenCalledTimes(1)
|
|
112
114
|
|
|
113
115
|
expect(editor.user.getName()).toBe('blah')
|
|
114
116
|
editor.user.updateUserPreferences({ name: null })
|
|
115
117
|
|
|
116
118
|
expect(editor.user.getName()).toBe('New User')
|
|
117
|
-
expect(setUserPreferences).toHaveBeenCalledTimes(
|
|
119
|
+
expect(setUserPreferences).toHaveBeenCalledTimes(2)
|
|
118
120
|
expect(setUserPreferences).toHaveBeenLastCalledWith({
|
|
119
121
|
id: '123',
|
|
120
122
|
name: null,
|
|
123
|
+
edgeScrollSpeed: 0,
|
|
121
124
|
})
|
|
122
125
|
})
|
|
123
126
|
})
|
package/src/test/TestEditor.ts
CHANGED
|
@@ -109,6 +109,9 @@ export class TestEditor extends Editor {
|
|
|
109
109
|
})
|
|
110
110
|
return [{ box, text: textToMeasure }]
|
|
111
111
|
}
|
|
112
|
+
|
|
113
|
+
// Turn off edge scrolling for tests. Tests that require this can turn it back on.
|
|
114
|
+
this.user.updateUserPreferences({ edgeScrollSpeed: 0 })
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
elm: HTMLDivElement
|
|
@@ -3899,3 +3899,25 @@ describe('Resizing text from the right edge', () => {
|
|
|
3899
3899
|
})
|
|
3900
3900
|
})
|
|
3901
3901
|
})
|
|
3902
|
+
|
|
3903
|
+
describe('When resizing near the edges of the screen', () => {
|
|
3904
|
+
it('resizes past the edge of the screen', () => {
|
|
3905
|
+
editor.user.updateUserPreferences({ edgeScrollSpeed: 1 })
|
|
3906
|
+
editor
|
|
3907
|
+
.select(ids.boxA)
|
|
3908
|
+
.pointerDown(10, 10, {
|
|
3909
|
+
type: 'pointer',
|
|
3910
|
+
target: 'selection',
|
|
3911
|
+
handle: 'top_left',
|
|
3912
|
+
})
|
|
3913
|
+
.expectShapeToMatch({ id: ids.boxA, x: 10, y: 10, props: { w: 100, h: 100 } })
|
|
3914
|
+
.pointerMove(10, 25)
|
|
3915
|
+
jest.advanceTimersByTime(1000)
|
|
3916
|
+
editor.expectShapeToMatch({
|
|
3917
|
+
id: ids.boxA,
|
|
3918
|
+
x: -842.5,
|
|
3919
|
+
y: -259.58,
|
|
3920
|
+
props: { w: 952.5, h: 369.58 },
|
|
3921
|
+
})
|
|
3922
|
+
})
|
|
3923
|
+
})
|
|
@@ -1708,3 +1708,96 @@ describe('right clicking', () => {
|
|
|
1708
1708
|
expect(editor.getSelectedShapeIds()).toEqual([])
|
|
1709
1709
|
})
|
|
1710
1710
|
})
|
|
1711
|
+
|
|
1712
|
+
describe('When brushing close to the edges of the screen', () => {
|
|
1713
|
+
it('selects shapes that are outside of the viewport', () => {
|
|
1714
|
+
editor.user.updateUserPreferences({ edgeScrollSpeed: 1 })
|
|
1715
|
+
editor.createShapes([{ id: ids.box1, type: 'geo', x: 100, y: 100, props: { w: 100, h: 100 } }])
|
|
1716
|
+
editor.createShapes([
|
|
1717
|
+
{ id: ids.box2, type: 'geo', x: -150, y: -150, props: { w: 100, h: 100 } },
|
|
1718
|
+
])
|
|
1719
|
+
|
|
1720
|
+
editor.pointerMove(300, 300)
|
|
1721
|
+
editor.pointerDown()
|
|
1722
|
+
editor.pointerMove(50, 50)
|
|
1723
|
+
editor.expectToBeIn('select.brushing')
|
|
1724
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
|
|
1725
|
+
editor.pointerMove(0, 0)
|
|
1726
|
+
// still only box 1...
|
|
1727
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
|
|
1728
|
+
jest.advanceTimersByTime(100)
|
|
1729
|
+
// ...but now viewport will have moved to select box2 as well
|
|
1730
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1, ids.box2])
|
|
1731
|
+
editor.pointerUp()
|
|
1732
|
+
})
|
|
1733
|
+
|
|
1734
|
+
it('doesnt edge scroll to the other shape', () => {
|
|
1735
|
+
editor.user.updateUserPreferences({ edgeScrollSpeed: 0 }) // <-- no edge scrolling
|
|
1736
|
+
editor.createShapes([{ id: ids.box1, type: 'geo', x: 100, y: 100, props: { w: 100, h: 100 } }])
|
|
1737
|
+
editor.createShapes([
|
|
1738
|
+
{ id: ids.box2, type: 'geo', x: -150, y: -150, props: { w: 100, h: 100 } },
|
|
1739
|
+
])
|
|
1740
|
+
|
|
1741
|
+
editor.pointerMove(300, 300)
|
|
1742
|
+
editor.pointerDown()
|
|
1743
|
+
editor.pointerMove(50, 50)
|
|
1744
|
+
editor.expectToBeIn('select.brushing')
|
|
1745
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
|
|
1746
|
+
editor.pointerMove(0, 0)
|
|
1747
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
|
|
1748
|
+
jest.advanceTimersByTime(100)
|
|
1749
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box1])
|
|
1750
|
+
editor.pointerUp()
|
|
1751
|
+
})
|
|
1752
|
+
})
|
|
1753
|
+
|
|
1754
|
+
describe('When a shape is locked', () => {
|
|
1755
|
+
beforeEach(() => {
|
|
1756
|
+
editor.createShape({
|
|
1757
|
+
id: ids.box1,
|
|
1758
|
+
type: 'geo',
|
|
1759
|
+
x: 0,
|
|
1760
|
+
y: 0,
|
|
1761
|
+
isLocked: true,
|
|
1762
|
+
props: { w: 300, h: 300 },
|
|
1763
|
+
})
|
|
1764
|
+
})
|
|
1765
|
+
|
|
1766
|
+
it('does not select the shape', () => {
|
|
1767
|
+
editor.pointerDown(50, 50)
|
|
1768
|
+
editor.expectToBeIn('select.pointing_canvas')
|
|
1769
|
+
editor.pointerUp()
|
|
1770
|
+
editor.expectToBeIn('select.idle')
|
|
1771
|
+
expect(editor.getSelectedShapeIds()).toEqual([])
|
|
1772
|
+
})
|
|
1773
|
+
|
|
1774
|
+
it('allows translating shapes on top of the locked shape', () => {
|
|
1775
|
+
editor.createShape({ id: ids.box2, x: 50, y: 50, type: 'geo', props: { w: 50, h: 50 } })
|
|
1776
|
+
editor.createShape({ id: ids.box3, x: 200, y: 200, type: 'geo', props: { w: 50, h: 50 } })
|
|
1777
|
+
|
|
1778
|
+
// Select the first shape
|
|
1779
|
+
editor.pointerMove(60, 60)
|
|
1780
|
+
editor.pointerDown()
|
|
1781
|
+
editor.pointerUp()
|
|
1782
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box2])
|
|
1783
|
+
|
|
1784
|
+
// Shift select the second shape
|
|
1785
|
+
editor.pointerMove(210, 210)
|
|
1786
|
+
editor.keyDown('Shift')
|
|
1787
|
+
editor.pointerDown()
|
|
1788
|
+
editor.pointerUp()
|
|
1789
|
+
editor.keyUp('Shift')
|
|
1790
|
+
editor.expectToBeIn('select.idle')
|
|
1791
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box2, ids.box3])
|
|
1792
|
+
|
|
1793
|
+
// Click between them and start dragging
|
|
1794
|
+
editor.pointerMove(150, 150)
|
|
1795
|
+
editor.pointerDown()
|
|
1796
|
+
editor.expectToBeIn('select.pointing_selection')
|
|
1797
|
+
editor.pointerMove(100, 150)
|
|
1798
|
+
editor.expectToBeIn('select.translating')
|
|
1799
|
+
editor.pointerUp()
|
|
1800
|
+
editor.expectToBeIn('select.idle')
|
|
1801
|
+
expect(editor.getSelectedShapeIds()).toEqual([ids.box2, ids.box3])
|
|
1802
|
+
})
|
|
1803
|
+
})
|