mirror of
https://github.com/ankitects/anki.git
synced 2025-11-08 05:37:12 -05:00
* Update to latest Node LTS * Add sveltekit * Split tslib into separate @generated and @tslib components SvelteKit's path aliases don't support multiple locations, so our old approach of using @tslib to refer to both ts/lib and out/ts/lib will no longer work. Instead, all generated sources and their includes are placed in a separate out/ts/generated folder, and imported via @generated instead. This also allows us to generate .ts files, instead of needing to output separate .d.ts and .js files. * Switch package.json to module type * Avoid usage of baseUrl Incompatible with SvelteKit * Move sass into ts; use relative links SvelteKit's default sass support doesn't allow overriding loadPaths * jest->vitest, graphs example working with yarn dev * most pages working in dev mode * Some fixes after rebasing * Fix/silence some svelte-check errors * Get image-occlusion working with Fabric types * Post-rebase lock changes * Editor is now checked * SvelteKit build integrated into ninja * Use the new SvelteKit entrypoint for pages like congrats/deck options/etc * Run eslint once for ts/**; fix some tests * Fix a bunch of issues introduced when rebasing over latest main * Run eslint fix * Fix remaining eslint+pylint issues; tests now all pass * Fix some issues with a clean build * Latest bufbuild no longer requires @__PURE__ hack * Add a few missed dependencies * Add yarn.bat to fix Windows build * Fix pages failing to show when ANKI_API_PORT not defined * Fix svelte-check and vitest on Windows * Set node path in ./yarn * Move svelte-kit output to ts/.svelte-kit Sadly, I couldn't figure out a way to store it in out/ if out/ is a symlink, as it breaks module resolution when SvelteKit is run. * Allow HMR inside Anki * Skip SvelteKit build when HMR is defined * Fix some post-rebase issues I should have done a normal merge instead.
157 lines
4 KiB
TypeScript
157 lines
4 KiB
TypeScript
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
import * as tr from "@generated/ftl";
|
|
|
|
import {
|
|
mdiAlignHorizontalCenter,
|
|
mdiAlignHorizontalLeft,
|
|
mdiAlignHorizontalRight,
|
|
mdiAlignVerticalBottom,
|
|
mdiAlignVerticalCenter,
|
|
mdiAlignVerticalTop,
|
|
mdiCopy,
|
|
mdiDeleteOutline,
|
|
mdiGroup,
|
|
mdiSelectAll,
|
|
mdiUngroup,
|
|
mdiZoomIn,
|
|
mdiZoomOut,
|
|
mdiZoomReset,
|
|
} from "../icons";
|
|
import { deleteItem, duplicateItem, groupShapes, selectAllShapes, unGroupShapes } from "./lib";
|
|
import {
|
|
alignBottomKeyCombination,
|
|
alignHorizontalCenterKeyCombination,
|
|
alignLeftKeyCombination,
|
|
alignRightKeyCombination,
|
|
alignTopKeyCombination,
|
|
alignVerticalCenterKeyCombination,
|
|
deleteKeyCombination,
|
|
duplicateKeyCombination,
|
|
groupKeyCombination,
|
|
selectAllKeyCombination,
|
|
ungroupKeyCombination,
|
|
zoomInKeyCombination,
|
|
zoomOutKeyCombination,
|
|
zoomResetKeyCombination,
|
|
} from "./shortcuts";
|
|
import {
|
|
alignBottom,
|
|
alignHorizontalCenter,
|
|
alignLeft,
|
|
alignRight,
|
|
alignTop,
|
|
alignVerticalCenter,
|
|
} from "./tool-aligns";
|
|
import { zoomIn, zoomOut, zoomReset } from "./tool-zoom";
|
|
|
|
export const groupUngroupTools = [
|
|
{
|
|
name: "group",
|
|
icon: mdiGroup,
|
|
action: groupShapes,
|
|
tooltip: tr.editingImageOcclusionGroup,
|
|
shortcut: groupKeyCombination,
|
|
},
|
|
{
|
|
name: "ungroup",
|
|
icon: mdiUngroup,
|
|
action: unGroupShapes,
|
|
tooltip: tr.editingImageOcclusionUngroup,
|
|
shortcut: ungroupKeyCombination,
|
|
},
|
|
{
|
|
name: "select-all",
|
|
icon: mdiSelectAll,
|
|
action: selectAllShapes,
|
|
tooltip: tr.editingImageOcclusionSelectAll,
|
|
shortcut: selectAllKeyCombination,
|
|
},
|
|
];
|
|
|
|
export const deleteDuplicateTools = [
|
|
{
|
|
name: "delete",
|
|
icon: mdiDeleteOutline,
|
|
action: deleteItem,
|
|
tooltip: tr.editingImageOcclusionDelete,
|
|
shortcut: deleteKeyCombination,
|
|
},
|
|
{
|
|
name: "duplicate",
|
|
icon: mdiCopy,
|
|
action: duplicateItem,
|
|
tooltip: tr.editingImageOcclusionDuplicate,
|
|
shortcut: duplicateKeyCombination,
|
|
},
|
|
];
|
|
|
|
export const zoomTools = [
|
|
{
|
|
name: "zoomOut",
|
|
icon: mdiZoomOut,
|
|
action: zoomOut,
|
|
tooltip: tr.editingImageOcclusionZoomOut,
|
|
shortcut: zoomOutKeyCombination,
|
|
},
|
|
{
|
|
name: "zoomIn",
|
|
icon: mdiZoomIn,
|
|
action: zoomIn,
|
|
tooltip: tr.editingImageOcclusionZoomIn,
|
|
shortcut: zoomInKeyCombination,
|
|
},
|
|
{
|
|
name: "zoomReset",
|
|
icon: mdiZoomReset,
|
|
action: zoomReset,
|
|
tooltip: tr.editingImageOcclusionZoomReset,
|
|
shortcut: zoomResetKeyCombination,
|
|
},
|
|
];
|
|
|
|
export const alignTools = [
|
|
{
|
|
id: 1,
|
|
icon: mdiAlignHorizontalLeft,
|
|
action: alignLeft,
|
|
tooltip: tr.editingImageOcclusionAlignLeft,
|
|
shortcut: alignLeftKeyCombination,
|
|
},
|
|
{
|
|
id: 2,
|
|
icon: mdiAlignHorizontalCenter,
|
|
action: alignHorizontalCenter,
|
|
tooltip: tr.editingImageOcclusionAlignHCenter,
|
|
shortcut: alignHorizontalCenterKeyCombination,
|
|
},
|
|
{
|
|
id: 3,
|
|
icon: mdiAlignHorizontalRight,
|
|
action: alignRight,
|
|
tooltip: tr.editingImageOcclusionAlignRight,
|
|
shortcut: alignRightKeyCombination,
|
|
},
|
|
{
|
|
id: 4,
|
|
icon: mdiAlignVerticalTop,
|
|
action: alignTop,
|
|
tooltip: tr.editingImageOcclusionAlignTop,
|
|
shortcut: alignTopKeyCombination,
|
|
},
|
|
{
|
|
id: 5,
|
|
icon: mdiAlignVerticalCenter,
|
|
action: alignVerticalCenter,
|
|
tooltip: tr.editingImageOcclusionAlignVCenter,
|
|
shortcut: alignVerticalCenterKeyCombination,
|
|
},
|
|
{
|
|
id: 6,
|
|
icon: mdiAlignVerticalBottom,
|
|
action: alignBottom,
|
|
tooltip: tr.editingImageOcclusionAlignBottom,
|
|
shortcut: alignBottomKeyCombination,
|
|
},
|
|
];
|