您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

transform-single.ts 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import Command from './command'
  2. import history from '../history'
  3. import { Data, Corner, Edge } from 'types'
  4. import { getShapeUtils } from 'lib/shape-utils'
  5. import { current } from 'immer'
  6. import { TransformSingleSnapshot } from 'state/sessions/transform-single-session'
  7. import {
  8. getPage,
  9. getSelectedIds,
  10. setSelectedIds,
  11. updateParents,
  12. } from 'utils/utils'
  13. export default function transformSingleCommand(
  14. data: Data,
  15. before: TransformSingleSnapshot,
  16. after: TransformSingleSnapshot,
  17. isCreating: boolean
  18. ) {
  19. const shape = current(getPage(data, after.currentPageId).shapes[after.id])
  20. history.execute(
  21. data,
  22. new Command({
  23. name: 'transform_single_shape',
  24. category: 'canvas',
  25. manualSelection: true,
  26. do(data) {
  27. const { id } = after
  28. const { shapes } = getPage(data, after.currentPageId)
  29. setSelectedIds(data, [id])
  30. shapes[id] = shape
  31. updateParents(data, [id])
  32. },
  33. undo(data) {
  34. const { id, initialShape } = before
  35. const { shapes } = getPage(data, before.currentPageId)
  36. if (isCreating) {
  37. setSelectedIds(data, [])
  38. delete shapes[id]
  39. } else {
  40. const page = getPage(data)
  41. page.shapes[id] = initialShape
  42. updateParents(data, [id])
  43. setSelectedIds(data, [id])
  44. }
  45. },
  46. })
  47. )
  48. }