tldraw
Version:
A tiny little drawing editor.
8 lines (7 loc) • 5.83 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../../../src/lib/ui/components/PageMenu/PageItemSubmenu.tsx"],
"sourcesContent": ["import { PageRecordType, TLPageId, track, useEditor } from '@tldraw/editor'\nimport { useCallback } from 'react'\nimport { useUiEvents } from '../../context/events'\nimport { useTranslation } from '../../hooks/useTranslation/useTranslation'\nimport { TldrawUiButton } from '../primitives/Button/TldrawUiButton'\nimport { TldrawUiButtonIcon } from '../primitives/Button/TldrawUiButtonIcon'\nimport {\n\tTldrawUiDropdownMenuContent,\n\tTldrawUiDropdownMenuRoot,\n\tTldrawUiDropdownMenuTrigger,\n} from '../primitives/TldrawUiDropdownMenu'\nimport { TldrawUiMenuContextProvider } from '../primitives/menus/TldrawUiMenuContext'\nimport { TldrawUiMenuGroup } from '../primitives/menus/TldrawUiMenuGroup'\nimport { TldrawUiMenuItem } from '../primitives/menus/TldrawUiMenuItem'\nimport { onMovePage } from './edit-pages-shared'\n/** @public */\nexport interface PageItemSubmenuProps {\n\tindex: number\n\titem: { id: string; name: string }\n\tlistSize: number\n\tonRename?(): void\n}\n/** @public */\nexport const PageItemSubmenu = track(function PageItemSubmenu({\n\tindex,\n\tlistSize,\n\titem,\n\tonRename,\n}: PageItemSubmenuProps) {\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\tconst pages = editor.getPages()\n\tconst trackEvent = useUiEvents()\n\n\tconst onDuplicate = useCallback(() => {\n\t\teditor.markHistoryStoppingPoint('creating page')\n\t\tconst newId = PageRecordType.createId()\n\t\teditor.duplicatePage(item.id as TLPageId, newId)\n\t\ttrackEvent('duplicate-page', { source: 'page-menu' })\n\t}, [editor, item, trackEvent])\n\n\tconst onMoveUp = useCallback(() => {\n\t\tonMovePage(editor, item.id as TLPageId, index, index - 1, trackEvent)\n\t}, [editor, item, index, trackEvent])\n\n\tconst onMoveDown = useCallback(() => {\n\t\tonMovePage(editor, item.id as TLPageId, index, index + 1, trackEvent)\n\t}, [editor, item, index, trackEvent])\n\n\tconst onDelete = useCallback(() => {\n\t\teditor.markHistoryStoppingPoint('deleting page')\n\t\teditor.deletePage(item.id as TLPageId)\n\t\ttrackEvent('delete-page', { source: 'page-menu' })\n\t}, [editor, item, trackEvent])\n\n\treturn (\n\t\t<TldrawUiDropdownMenuRoot id={`page item submenu ${index}`}>\n\t\t\t<TldrawUiDropdownMenuTrigger>\n\t\t\t\t<TldrawUiButton type=\"icon\" title={msg('page-menu.submenu.title')}>\n\t\t\t\t\t<TldrawUiButtonIcon icon=\"dots-vertical\" small />\n\t\t\t\t</TldrawUiButton>\n\t\t\t</TldrawUiDropdownMenuTrigger>\n\t\t\t<TldrawUiDropdownMenuContent alignOffset={0} side=\"right\" sideOffset={-4}>\n\t\t\t\t<TldrawUiMenuContextProvider type=\"menu\" sourceId=\"page-menu\">\n\t\t\t\t\t<TldrawUiMenuGroup id=\"modify\">\n\t\t\t\t\t\t{onRename && (\n\t\t\t\t\t\t\t<TldrawUiMenuItem id=\"rename\" label=\"page-menu.submenu.rename\" onSelect={onRename} />\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<TldrawUiMenuItem\n\t\t\t\t\t\t\tid=\"duplicate\"\n\t\t\t\t\t\t\tlabel=\"page-menu.submenu.duplicate-page\"\n\t\t\t\t\t\t\tonSelect={onDuplicate}\n\t\t\t\t\t\t\tdisabled={pages.length >= editor.options.maxPages}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{index > 0 && (\n\t\t\t\t\t\t\t<TldrawUiMenuItem\n\t\t\t\t\t\t\t\tid=\"move-up\"\n\t\t\t\t\t\t\t\tonSelect={onMoveUp}\n\t\t\t\t\t\t\t\tlabel=\"page-menu.submenu.move-up\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{index < listSize - 1 && (\n\t\t\t\t\t\t\t<TldrawUiMenuItem\n\t\t\t\t\t\t\t\tid=\"move-down\"\n\t\t\t\t\t\t\t\tlabel=\"page-menu.submenu.move-down\"\n\t\t\t\t\t\t\t\tonSelect={onMoveDown}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</TldrawUiMenuGroup>\n\t\t\t\t\t{listSize > 1 && (\n\t\t\t\t\t\t<TldrawUiMenuGroup id=\"delete\">\n\t\t\t\t\t\t\t<TldrawUiMenuItem id=\"delete\" onSelect={onDelete} label=\"page-menu.submenu.delete\" />\n\t\t\t\t\t\t</TldrawUiMenuGroup>\n\t\t\t\t\t)}\n\t\t\t\t</TldrawUiMenuContextProvider>\n\t\t\t</TldrawUiDropdownMenuContent>\n\t\t</TldrawUiDropdownMenuRoot>\n\t)\n})\n"],
"mappings": "AA2DK,cAKA,YALA;AA3DL,SAAS,gBAA0B,OAAO,iBAAiB;AAC3D,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,mCAAmC;AAC5C,SAAS,yBAAyB;AAClC,SAAS,wBAAwB;AACjC,SAAS,kBAAkB;AASpB,MAAM,kBAAkB,MAAM,SAASA,iBAAgB;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAyB;AACxB,QAAM,SAAS,UAAU;AACzB,QAAM,MAAM,eAAe;AAC3B,QAAM,QAAQ,OAAO,SAAS;AAC9B,QAAM,aAAa,YAAY;AAE/B,QAAM,cAAc,YAAY,MAAM;AACrC,WAAO,yBAAyB,eAAe;AAC/C,UAAM,QAAQ,eAAe,SAAS;AACtC,WAAO,cAAc,KAAK,IAAgB,KAAK;AAC/C,eAAW,kBAAkB,EAAE,QAAQ,YAAY,CAAC;AAAA,EACrD,GAAG,CAAC,QAAQ,MAAM,UAAU,CAAC;AAE7B,QAAM,WAAW,YAAY,MAAM;AAClC,eAAW,QAAQ,KAAK,IAAgB,OAAO,QAAQ,GAAG,UAAU;AAAA,EACrE,GAAG,CAAC,QAAQ,MAAM,OAAO,UAAU,CAAC;AAEpC,QAAM,aAAa,YAAY,MAAM;AACpC,eAAW,QAAQ,KAAK,IAAgB,OAAO,QAAQ,GAAG,UAAU;AAAA,EACrE,GAAG,CAAC,QAAQ,MAAM,OAAO,UAAU,CAAC;AAEpC,QAAM,WAAW,YAAY,MAAM;AAClC,WAAO,yBAAyB,eAAe;AAC/C,WAAO,WAAW,KAAK,EAAc;AACrC,eAAW,eAAe,EAAE,QAAQ,YAAY,CAAC;AAAA,EAClD,GAAG,CAAC,QAAQ,MAAM,UAAU,CAAC;AAE7B,SACC,qBAAC,4BAAyB,IAAI,qBAAqB,KAAK,IACvD;AAAA,wBAAC,+BACA,8BAAC,kBAAe,MAAK,QAAO,OAAO,IAAI,yBAAyB,GAC/D,8BAAC,sBAAmB,MAAK,iBAAgB,OAAK,MAAC,GAChD,GACD;AAAA,IACA,oBAAC,+BAA4B,aAAa,GAAG,MAAK,SAAQ,YAAY,IACrE,+BAAC,+BAA4B,MAAK,QAAO,UAAS,aACjD;AAAA,2BAAC,qBAAkB,IAAG,UACpB;AAAA,oBACA,oBAAC,oBAAiB,IAAG,UAAS,OAAM,4BAA2B,UAAU,UAAU;AAAA,QAEpF;AAAA,UAAC;AAAA;AAAA,YACA,IAAG;AAAA,YACH,OAAM;AAAA,YACN,UAAU;AAAA,YACV,UAAU,MAAM,UAAU,OAAO,QAAQ;AAAA;AAAA,QAC1C;AAAA,QACC,QAAQ,KACR;AAAA,UAAC;AAAA;AAAA,YACA,IAAG;AAAA,YACH,UAAU;AAAA,YACV,OAAM;AAAA;AAAA,QACP;AAAA,QAEA,QAAQ,WAAW,KACnB;AAAA,UAAC;AAAA;AAAA,YACA,IAAG;AAAA,YACH,OAAM;AAAA,YACN,UAAU;AAAA;AAAA,QACX;AAAA,SAEF;AAAA,MACC,WAAW,KACX,oBAAC,qBAAkB,IAAG,UACrB,8BAAC,oBAAiB,IAAG,UAAS,UAAU,UAAU,OAAM,4BAA2B,GACpF;AAAA,OAEF,GACD;AAAA,KACD;AAEF,CAAC;",
"names": ["PageItemSubmenu"]
}