|
|
@@ -1,45 +1,5 @@
|
|
|
import { isArray } from '../shared/util'
|
|
|
|
|
|
-export function getBindingAttr (el, name, getStatic) {
|
|
|
- const staticValue = getStatic !== false && getAndRemoveAttr(el, name)
|
|
|
- return staticValue
|
|
|
- ? JSON.stringify(staticValue)
|
|
|
- : (getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name))
|
|
|
-}
|
|
|
-
|
|
|
-export function getAndRemoveAttr (el, name) {
|
|
|
- let val
|
|
|
- if ((val = el.attrsMap[name]) != null) {
|
|
|
- el.attrsMap[name] = null
|
|
|
- const list = el.attrsList
|
|
|
- for (let i = 0, l = list.length; i < l; i++) {
|
|
|
- if (list[i].name === name) {
|
|
|
- list.splice(i, 1)
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return val
|
|
|
-}
|
|
|
-
|
|
|
-export function addHandler (el, name, value, modifiers) {
|
|
|
- const events = el.events || (el.events = {})
|
|
|
- // check capture modifier
|
|
|
- if (modifiers && modifiers.capture) {
|
|
|
- delete modifiers.capture
|
|
|
- name = '!' + name // mark the event as captured
|
|
|
- }
|
|
|
- const newHandler = { value, modifiers }
|
|
|
- const handlers = events[name]
|
|
|
- if (isArray(handlers)) {
|
|
|
- handlers.push(newHandler)
|
|
|
- } else if (handlers) {
|
|
|
- events[name] = [handlers, newHandler]
|
|
|
- } else {
|
|
|
- events[name] = newHandler
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
export function addProp (el, name, value) {
|
|
|
(el.props || (el.props = [])).push({ name, value })
|
|
|
}
|
|
|
@@ -68,3 +28,43 @@ export function addHook (el, name, code) {
|
|
|
hooks[name] = [code]
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+export function addHandler (el, name, value, modifiers) {
|
|
|
+ const events = el.events || (el.events = {})
|
|
|
+ // check capture modifier
|
|
|
+ if (modifiers && modifiers.capture) {
|
|
|
+ delete modifiers.capture
|
|
|
+ name = '!' + name // mark the event as captured
|
|
|
+ }
|
|
|
+ const newHandler = { value, modifiers }
|
|
|
+ const handlers = events[name]
|
|
|
+ if (isArray(handlers)) {
|
|
|
+ handlers.push(newHandler)
|
|
|
+ } else if (handlers) {
|
|
|
+ events[name] = [handlers, newHandler]
|
|
|
+ } else {
|
|
|
+ events[name] = newHandler
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export function getBindingAttr (el, name, getStatic) {
|
|
|
+ const staticValue = getStatic !== false && getAndRemoveAttr(el, name)
|
|
|
+ return staticValue
|
|
|
+ ? JSON.stringify(staticValue)
|
|
|
+ : (getAndRemoveAttr(el, ':' + name) || getAndRemoveAttr(el, 'v-bind:' + name))
|
|
|
+}
|
|
|
+
|
|
|
+export function getAndRemoveAttr (el, name) {
|
|
|
+ let val
|
|
|
+ if ((val = el.attrsMap[name]) != null) {
|
|
|
+ el.attrsMap[name] = null
|
|
|
+ const list = el.attrsList
|
|
|
+ for (let i = 0, l = list.length; i < l; i++) {
|
|
|
+ if (list[i].name === name) {
|
|
|
+ list.splice(i, 1)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return val
|
|
|
+}
|