selections.ts 905 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { Pen } from '@meta2d/core';
  2. import { reactive } from 'vue';
  3. export enum SelectionMode {
  4. File,
  5. Pen,
  6. Pens,
  7. }
  8. const selections = reactive<{
  9. mode: SelectionMode;
  10. pen?: Pen;
  11. pens?: Pen[];
  12. }>({
  13. // 选中对象类型:0 - 画布;1 - 单个图元;2 - 多选
  14. mode: SelectionMode.File,
  15. pen: undefined,
  16. pens: undefined,
  17. });
  18. export const useSelection = () => {
  19. const select = (pens?: Pen[]) => {
  20. if (!pens || !pens.length) {
  21. selections.mode = SelectionMode.File;
  22. selections.pen = undefined;
  23. selections.pens = undefined;
  24. return;
  25. }
  26. if (pens.length > 1) {
  27. selections.mode = SelectionMode.Pens;
  28. selections.pen = undefined;
  29. selections.pens = pens;
  30. } else {
  31. selections.mode = SelectionMode.Pen;
  32. selections.pen = pens[0];
  33. selections.pens = undefined;
  34. }
  35. };
  36. return {
  37. selections,
  38. select,
  39. };
  40. };