Update Mithril

This commit is contained in:
Sajjad Hasehmian 2016-03-16 00:48:01 +03:30
parent 4037fb566c
commit cba1868d9f
2 changed files with 76 additions and 50 deletions

View File

@ -623,7 +623,7 @@ exports.System = System;
"use strict" "use strict"
m.version = function () { m.version = function () {
return "v0.2.2-rc.1" return "v0.2.3"
} }
var hasOwn = {}.hasOwnProperty var hasOwn = {}.hasOwnProperty
@ -647,9 +647,24 @@ exports.System = System;
function noop() {} function noop() {}
/* eslint-disable max-len */ var voidElements = {
var voidElements = /^(AREA|BASE|BR|COL|COMMAND|EMBED|HR|IMG|INPUT|KEYGEN|LINK|META|PARAM|SOURCE|TRACK|WBR)$/ AREA: 1,
/* eslint-enable max-len */ BASE: 1,
BR: 1,
COL: 1,
COMMAND: 1,
EMBED: 1,
HR: 1,
IMG: 1,
INPUT: 1,
KEYGEN: 1,
LINK: 1,
META: 1,
PARAM: 1,
SOURCE: 1,
TRACK: 1,
WBR: 1
}
// caching commonly used variables // caching commonly used variables
var $document, $location, $requestAnimationFrame, $cancelAnimationFrame var $document, $location, $requestAnimationFrame, $cancelAnimationFrame
@ -735,7 +750,9 @@ exports.System = System;
* or splat (optional) * or splat (optional)
*/ */
function m(tag, pairs) { function m(tag, pairs) {
for (var args = [], i = 1; i < arguments.length; i++) { var args = []
for (var i = 1, length = arguments.length; i < length; i++) {
args[i - 1] = arguments[i] args[i - 1] = arguments[i]
} }
@ -1065,7 +1082,7 @@ exports.System = System;
nodes = injectHTML(parentElement, index, data) nodes = injectHTML(parentElement, index, data)
} else { } else {
nodes = [$document.createTextNode(data)] nodes = [$document.createTextNode(data)]
if (!parentElement.nodeName.match(voidElements)) { if (!(parentElement.nodeName in voidElements)) {
insertNode(parentElement, nodes[0], index) insertNode(parentElement, nodes[0], index)
} }
} }
@ -1345,7 +1362,7 @@ exports.System = System;
var unloaders = [] var unloaders = []
function updateLists(views, controllers, view, controller) { function updateLists(views, controllers, view, controller) {
if (controller.onunload != null) { if (controller.onunload != null && unloaders.map(function(u) {return u.handler}).indexOf(controller.onunload) < 0) {
unloaders.push({ unloaders.push({
controller: controller, controller: controller,
handler: controller.onunload handler: controller.onunload
@ -1579,13 +1596,13 @@ exports.System = System;
} }
} }
function shouldUseSetAttribute(attrName) { var shouldUseSetAttribute = {
return attrName !== "list" && list: 1,
attrName !== "style" && style: 1,
attrName !== "form" && form: 1,
attrName !== "type" && type: 1,
attrName !== "width" && width: 1,
attrName !== "height" height: 1
} }
function setSingleAttr( function setSingleAttr(
@ -1616,7 +1633,7 @@ exports.System = System;
attrName === "className" ? "class" : attrName, attrName === "className" ? "class" : attrName,
dataAttr) dataAttr)
} }
} else if (attrName in node && shouldUseSetAttribute(attrName)) { } else if (attrName in node && !shouldUseSetAttribute[attrName]) {
// handle cases that are properties (but ignore cases where we // handle cases that are properties (but ignore cases where we
// should use setAttribute instead) // should use setAttribute instead)
// //
@ -1907,9 +1924,7 @@ exports.System = System;
} }
m.component = function (component) { m.component = function (component) {
for (var args = [], i = 1; i < arguments.length; i++) { var args = [].slice.call(arguments, 1)
args.push(arguments[i])
}
return parameterize(component, args) return parameterize(component, args)
} }
@ -2511,7 +2526,7 @@ exports.System = System;
m.deferred.onerror = function (e) { m.deferred.onerror = function (e) {
if (type.call(e) === "[object Error]" && if (type.call(e) === "[object Error]" &&
!e.constructor.toString().match(/ Error/)) { !/ Error/.test(e.constructor.toString())) {
pendingRequests = 0 pendingRequests = 0
throw e throw e
} }
@ -2657,16 +2672,14 @@ exports.System = System;
} }
function parameterizeUrl(url, data) { function parameterizeUrl(url, data) {
var tokens = url.match(/:[a-z]\w+/gi) if (data) {
url = url.replace(/:[a-z]\w+/gi, function(token){
if (tokens && data) {
forEach(tokens, function (token) {
var key = token.slice(1) var key = token.slice(1)
url = url.replace(token, data[key]) var value = data[key]
delete data[key] delete data[key]
return value
}) })
} }
return url return url
} }

View File

@ -623,7 +623,7 @@ exports.System = System;
"use strict" "use strict"
m.version = function () { m.version = function () {
return "v0.2.2-rc.1" return "v0.2.3"
} }
var hasOwn = {}.hasOwnProperty var hasOwn = {}.hasOwnProperty
@ -647,9 +647,24 @@ exports.System = System;
function noop() {} function noop() {}
/* eslint-disable max-len */ var voidElements = {
var voidElements = /^(AREA|BASE|BR|COL|COMMAND|EMBED|HR|IMG|INPUT|KEYGEN|LINK|META|PARAM|SOURCE|TRACK|WBR)$/ AREA: 1,
/* eslint-enable max-len */ BASE: 1,
BR: 1,
COL: 1,
COMMAND: 1,
EMBED: 1,
HR: 1,
IMG: 1,
INPUT: 1,
KEYGEN: 1,
LINK: 1,
META: 1,
PARAM: 1,
SOURCE: 1,
TRACK: 1,
WBR: 1
}
// caching commonly used variables // caching commonly used variables
var $document, $location, $requestAnimationFrame, $cancelAnimationFrame var $document, $location, $requestAnimationFrame, $cancelAnimationFrame
@ -735,7 +750,9 @@ exports.System = System;
* or splat (optional) * or splat (optional)
*/ */
function m(tag, pairs) { function m(tag, pairs) {
for (var args = [], i = 1; i < arguments.length; i++) { var args = []
for (var i = 1, length = arguments.length; i < length; i++) {
args[i - 1] = arguments[i] args[i - 1] = arguments[i]
} }
@ -1065,7 +1082,7 @@ exports.System = System;
nodes = injectHTML(parentElement, index, data) nodes = injectHTML(parentElement, index, data)
} else { } else {
nodes = [$document.createTextNode(data)] nodes = [$document.createTextNode(data)]
if (!parentElement.nodeName.match(voidElements)) { if (!(parentElement.nodeName in voidElements)) {
insertNode(parentElement, nodes[0], index) insertNode(parentElement, nodes[0], index)
} }
} }
@ -1345,7 +1362,7 @@ exports.System = System;
var unloaders = [] var unloaders = []
function updateLists(views, controllers, view, controller) { function updateLists(views, controllers, view, controller) {
if (controller.onunload != null) { if (controller.onunload != null && unloaders.map(function(u) {return u.handler}).indexOf(controller.onunload) < 0) {
unloaders.push({ unloaders.push({
controller: controller, controller: controller,
handler: controller.onunload handler: controller.onunload
@ -1579,13 +1596,13 @@ exports.System = System;
} }
} }
function shouldUseSetAttribute(attrName) { var shouldUseSetAttribute = {
return attrName !== "list" && list: 1,
attrName !== "style" && style: 1,
attrName !== "form" && form: 1,
attrName !== "type" && type: 1,
attrName !== "width" && width: 1,
attrName !== "height" height: 1
} }
function setSingleAttr( function setSingleAttr(
@ -1616,7 +1633,7 @@ exports.System = System;
attrName === "className" ? "class" : attrName, attrName === "className" ? "class" : attrName,
dataAttr) dataAttr)
} }
} else if (attrName in node && shouldUseSetAttribute(attrName)) { } else if (attrName in node && !shouldUseSetAttribute[attrName]) {
// handle cases that are properties (but ignore cases where we // handle cases that are properties (but ignore cases where we
// should use setAttribute instead) // should use setAttribute instead)
// //
@ -1907,9 +1924,7 @@ exports.System = System;
} }
m.component = function (component) { m.component = function (component) {
for (var args = [], i = 1; i < arguments.length; i++) { var args = [].slice.call(arguments, 1)
args.push(arguments[i])
}
return parameterize(component, args) return parameterize(component, args)
} }
@ -2511,7 +2526,7 @@ exports.System = System;
m.deferred.onerror = function (e) { m.deferred.onerror = function (e) {
if (type.call(e) === "[object Error]" && if (type.call(e) === "[object Error]" &&
!e.constructor.toString().match(/ Error/)) { !/ Error/.test(e.constructor.toString())) {
pendingRequests = 0 pendingRequests = 0
throw e throw e
} }
@ -2657,16 +2672,14 @@ exports.System = System;
} }
function parameterizeUrl(url, data) { function parameterizeUrl(url, data) {
var tokens = url.match(/:[a-z]\w+/gi) if (data) {
url = url.replace(/:[a-z]\w+/gi, function(token){
if (tokens && data) {
forEach(tokens, function (token) {
var key = token.slice(1) var key = token.slice(1)
url = url.replace(token, data[key]) var value = data[key]
delete data[key] delete data[key]
return value
}) })
} }
return url return url
} }