index.ts 1.2 KB
Newer Older
fxy060608's avatar
fxy060608 已提交
1 2 3 4 5 6 7 8 9 10 11
import {
  ACTION_TYPE_CREATE,
  ACTION_TYPE_INSERT,
  ACTION_TYPE_PAGE_CREATE,
  ACTION_TYPE_PAGE_CREATED,
  ACTION_TYPE_REMOVE,
  ACTION_TYPE_REMOVE_ATTRIBUTE,
  ACTION_TYPE_SET_ATTRIBUTE,
  ACTION_TYPE_SET_TEXT,
  PageAction,
} from '../../../PageAction'
fxy060608's avatar
fxy060608 已提交
12
import { $, createElement, onPageCreate, onPageCreated } from './page'
fxy060608's avatar
fxy060608 已提交
13
import { flushPostActionJobs } from './scheduler'
fxy060608's avatar
fxy060608 已提交
14 15 16 17 18 19 20 21 22

export function onVdSync(actions: PageAction[]) {
  actions.forEach((action) => {
    switch (action[0]) {
      case ACTION_TYPE_PAGE_CREATE:
        return onPageCreate(action[1])
      case ACTION_TYPE_PAGE_CREATED:
        return onPageCreated()
      case ACTION_TYPE_CREATE:
fxy060608's avatar
fxy060608 已提交
23
        return createElement(action[1], action[2], action[3], action[4])
fxy060608's avatar
fxy060608 已提交
24
      case ACTION_TYPE_INSERT:
fxy060608's avatar
fxy060608 已提交
25
        return $(action[1]).insert(action[2], action[3])
fxy060608's avatar
fxy060608 已提交
26 27 28 29 30 31 32 33 34 35
      case ACTION_TYPE_REMOVE:
        return $(action[1]).remove()
      case ACTION_TYPE_SET_ATTRIBUTE:
        return $(action[1]).setAttr(action[2], action[3])
      case ACTION_TYPE_REMOVE_ATTRIBUTE:
        return $(action[1]).removeAttr(action[2])
      case ACTION_TYPE_SET_TEXT:
        return $(action[1]).setText(action[2])
    }
  })
fxy060608's avatar
fxy060608 已提交
36
  flushPostActionJobs()
fxy060608's avatar
fxy060608 已提交
37
}