snabberb 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/build.js +9 -9
- data/examples/rack/Gemfile.lock +2 -2
- data/examples/roda/Gemfile +1 -1
- data/examples/roda/Gemfile.lock +19 -21
- data/lib/snabberb/version.rb +1 -1
- data/opal/vendor/snabbdom.js +120 -118
- data/snabberb.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fac9682f069db40fa6111733624b4d188c8a655c3ff443602f4f225834bae4e1
|
4
|
+
data.tar.gz: ff200014a25e5a8e10f8368089157e60364b569d6c68e134a86898878d7760bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b5950417e303d98edf30ce07580d9cfb8b0ca1b44bba35c7cdf4c0b8faa973f07a900f75f4e2c3a975e19e36a652664cce151b7172379a99fd7b2b90bbbaa2e
|
7
|
+
data.tar.gz: 5e7ba5a3d961ff6c83723a37023d308a62b9b0ce97512602d321447c6bc68e7f1214a29da119625d281682bcd42b8be721936165b6fb29622feda3335e024a7e
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/build.js
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
// browserify build.js -p esmify -s snabbdom > opal/vendor/snabbdom.js
|
2
|
-
import { init } from './node_modules/snabbdom/build/
|
3
|
-
import { h } from './node_modules/snabbdom/build/
|
4
|
-
import { toVNode } from './node_modules/snabbdom/build/
|
2
|
+
import { init } from './node_modules/snabbdom/build/init'
|
3
|
+
import { h } from './node_modules/snabbdom/build/h'
|
4
|
+
import { toVNode } from './node_modules/snabbdom/build/tovnode'
|
5
5
|
|
6
|
-
import { attributesModule } from './node_modules/snabbdom/build/
|
7
|
-
import { classModule } from './node_modules/snabbdom/build/
|
8
|
-
import { datasetModule } from './node_modules/snabbdom/build/
|
9
|
-
import { eventListenersModule } from './node_modules/snabbdom/build/
|
10
|
-
import { propsModule } from './node_modules/snabbdom/build/
|
11
|
-
import { styleModule } from './node_modules/snabbdom/build/
|
6
|
+
import { attributesModule } from './node_modules/snabbdom/build/modules/attributes'
|
7
|
+
import { classModule } from './node_modules/snabbdom/build/modules/class'
|
8
|
+
import { datasetModule } from './node_modules/snabbdom/build/modules/dataset'
|
9
|
+
import { eventListenersModule } from './node_modules/snabbdom/build/modules/eventlisteners'
|
10
|
+
import { propsModule } from './node_modules/snabbdom/build/modules/props'
|
11
|
+
import { styleModule } from './node_modules/snabbdom/build/modules/style'
|
12
12
|
|
13
13
|
module.exports.init = init
|
14
14
|
module.exports.h = h
|
data/examples/rack/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
snabberb (1.3.
|
4
|
+
snabberb (1.3.1)
|
5
5
|
opal (~> 1.1)
|
6
6
|
|
7
7
|
GEM
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
opal (1.1.1)
|
12
12
|
ast (>= 2.3.0)
|
13
13
|
parser (~> 3.0)
|
14
|
-
parser (3.0.
|
14
|
+
parser (3.0.1.0)
|
15
15
|
ast (~> 2.4.1)
|
16
16
|
rack (2.2.3)
|
17
17
|
webrick (1.7.0)
|
data/examples/roda/Gemfile
CHANGED
data/examples/roda/Gemfile.lock
CHANGED
@@ -1,49 +1,47 @@
|
|
1
1
|
PATH
|
2
2
|
remote: ../..
|
3
3
|
specs:
|
4
|
-
snabberb (1.
|
5
|
-
opal (~> 1.
|
4
|
+
snabberb (1.3.1)
|
5
|
+
opal (~> 1.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
ast (2.4.
|
11
|
-
|
12
|
-
ast (~> 2.4.0)
|
13
|
-
parser (= 2.6.4.1)
|
14
|
-
concurrent-ruby (1.1.7)
|
10
|
+
ast (2.4.2)
|
11
|
+
concurrent-ruby (1.1.8)
|
15
12
|
execjs (2.7.0)
|
16
|
-
libv8 (
|
17
|
-
mini_racer (0.
|
18
|
-
libv8 (~>
|
19
|
-
opal (1.
|
13
|
+
libv8-node (15.14.0.0)
|
14
|
+
mini_racer (0.4.0)
|
15
|
+
libv8-node (~> 15.14.0.0)
|
16
|
+
opal (1.1.1)
|
20
17
|
ast (>= 2.3.0)
|
21
|
-
parser (~>
|
22
|
-
opal-sprockets (
|
23
|
-
opal (
|
24
|
-
sprockets (~>
|
18
|
+
parser (~> 3.0)
|
19
|
+
opal-sprockets (1.0.0)
|
20
|
+
opal (>= 1.0, < 1.2)
|
21
|
+
sprockets (~> 4.0)
|
25
22
|
tilt (>= 1.4)
|
26
|
-
parser (
|
27
|
-
ast (~> 2.4.
|
23
|
+
parser (3.0.1.0)
|
24
|
+
ast (~> 2.4.1)
|
28
25
|
rack (2.2.3)
|
29
|
-
roda (3.
|
26
|
+
roda (3.43.1)
|
30
27
|
rack
|
31
|
-
sprockets (
|
28
|
+
sprockets (4.0.2)
|
32
29
|
concurrent-ruby (~> 1.0)
|
33
30
|
rack (> 1, < 3)
|
34
31
|
tilt (2.0.10)
|
32
|
+
webrick (1.7.0)
|
35
33
|
|
36
34
|
PLATFORMS
|
37
35
|
ruby
|
38
36
|
|
39
37
|
DEPENDENCIES
|
40
|
-
c_lexer
|
41
38
|
execjs
|
42
39
|
mini_racer
|
43
40
|
opal
|
44
41
|
opal-sprockets
|
45
42
|
roda
|
46
43
|
snabberb!
|
44
|
+
webrick
|
47
45
|
|
48
46
|
BUNDLED WITH
|
49
|
-
2.
|
47
|
+
2.2.3
|
data/lib/snabberb/version.rb
CHANGED
data/opal/vendor/snabbdom.js
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.snabbdom = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
|
2
2
|
"use strict";
|
3
3
|
|
4
|
-
var _init = require("./node_modules/snabbdom/build/
|
4
|
+
var _init = require("./node_modules/snabbdom/build/init");
|
5
5
|
|
6
|
-
var _h = require("./node_modules/snabbdom/build/
|
6
|
+
var _h = require("./node_modules/snabbdom/build/h");
|
7
7
|
|
8
|
-
var _tovnode = require("./node_modules/snabbdom/build/
|
8
|
+
var _tovnode = require("./node_modules/snabbdom/build/tovnode");
|
9
9
|
|
10
|
-
var _attributes = require("./node_modules/snabbdom/build/
|
10
|
+
var _attributes = require("./node_modules/snabbdom/build/modules/attributes");
|
11
11
|
|
12
|
-
var _class = require("./node_modules/snabbdom/build/
|
12
|
+
var _class = require("./node_modules/snabbdom/build/modules/class");
|
13
13
|
|
14
|
-
var _dataset = require("./node_modules/snabbdom/build/
|
14
|
+
var _dataset = require("./node_modules/snabbdom/build/modules/dataset");
|
15
15
|
|
16
|
-
var _eventlisteners = require("./node_modules/snabbdom/build/
|
16
|
+
var _eventlisteners = require("./node_modules/snabbdom/build/modules/eventlisteners");
|
17
17
|
|
18
|
-
var _props = require("./node_modules/snabbdom/build/
|
18
|
+
var _props = require("./node_modules/snabbdom/build/modules/props");
|
19
19
|
|
20
|
-
var _style = require("./node_modules/snabbdom/build/
|
20
|
+
var _style = require("./node_modules/snabbdom/build/modules/style");
|
21
21
|
|
22
22
|
// browserify build.js -p esmify -s snabbdom > opal/vendor/snabbdom.js
|
23
23
|
module.exports.init = _init.init;
|
@@ -30,7 +30,7 @@ module.exports.eventListenersModule = _eventlisteners.eventListenersModule;
|
|
30
30
|
module.exports.propsModule = _props.propsModule;
|
31
31
|
module.exports.styleModule = _style.styleModule;
|
32
32
|
|
33
|
-
},{"./node_modules/snabbdom/build/
|
33
|
+
},{"./node_modules/snabbdom/build/h":2,"./node_modules/snabbdom/build/init":4,"./node_modules/snabbdom/build/modules/attributes":6,"./node_modules/snabbdom/build/modules/class":7,"./node_modules/snabbdom/build/modules/dataset":8,"./node_modules/snabbdom/build/modules/eventlisteners":9,"./node_modules/snabbdom/build/modules/props":10,"./node_modules/snabbdom/build/modules/style":11,"./node_modules/snabbdom/build/tovnode":12}],2:[function(require,module,exports){
|
34
34
|
"use strict";
|
35
35
|
|
36
36
|
Object.defineProperty(exports, "__esModule", {
|
@@ -38,18 +38,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
38
38
|
});
|
39
39
|
exports.h = h;
|
40
40
|
|
41
|
-
var _vnode = require("./vnode
|
41
|
+
var _vnode = require("./vnode");
|
42
42
|
|
43
|
-
var is = _interopRequireWildcard(require("./is
|
43
|
+
var is = _interopRequireWildcard(require("./is"));
|
44
44
|
|
45
45
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
46
46
|
|
47
47
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
48
48
|
|
49
49
|
function addNS(data, children, sel) {
|
50
|
-
data.ns =
|
50
|
+
data.ns = "http://www.w3.org/2000/svg";
|
51
51
|
|
52
|
-
if (sel !==
|
52
|
+
if (sel !== "foreignObject" && children !== undefined) {
|
53
53
|
for (let i = 0; i < children.length; ++i) {
|
54
54
|
const childData = children[i].data;
|
55
55
|
|
@@ -61,10 +61,10 @@ function addNS(data, children, sel) {
|
|
61
61
|
}
|
62
62
|
|
63
63
|
function h(sel, b, c) {
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
64
|
+
let data = {};
|
65
|
+
let children;
|
66
|
+
let text;
|
67
|
+
let i;
|
68
68
|
|
69
69
|
if (c !== undefined) {
|
70
70
|
if (b !== null) {
|
@@ -96,16 +96,14 @@ function h(sel, b, c) {
|
|
96
96
|
}
|
97
97
|
}
|
98
98
|
|
99
|
-
if (sel[0] ===
|
99
|
+
if (sel[0] === "s" && sel[1] === "v" && sel[2] === "g" && (sel.length === 3 || sel[3] === "." || sel[3] === "#")) {
|
100
100
|
addNS(data, children, sel);
|
101
101
|
}
|
102
102
|
|
103
103
|
return (0, _vnode.vnode)(sel, data, children, text, undefined);
|
104
104
|
}
|
105
105
|
|
106
|
-
|
107
|
-
|
108
|
-
},{"./is.js":5,"./vnode.js":13}],3:[function(require,module,exports){
|
106
|
+
},{"./is":5,"./vnode":13}],3:[function(require,module,exports){
|
109
107
|
"use strict";
|
110
108
|
|
111
109
|
Object.defineProperty(exports, "__esModule", {
|
@@ -113,12 +111,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
113
111
|
});
|
114
112
|
exports.htmlDomApi = void 0;
|
115
113
|
|
116
|
-
function createElement(tagName) {
|
117
|
-
return document.createElement(tagName);
|
114
|
+
function createElement(tagName, options) {
|
115
|
+
return document.createElement(tagName, options);
|
118
116
|
}
|
119
117
|
|
120
|
-
function createElementNS(namespaceURI, qualifiedName) {
|
121
|
-
return document.createElementNS(namespaceURI, qualifiedName);
|
118
|
+
function createElementNS(namespaceURI, qualifiedName, options) {
|
119
|
+
return document.createElementNS(namespaceURI, qualifiedName, options);
|
122
120
|
}
|
123
121
|
|
124
122
|
function createTextNode(text) {
|
@@ -200,11 +198,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
200
198
|
});
|
201
199
|
exports.init = init;
|
202
200
|
|
203
|
-
var _vnode = require("./vnode
|
201
|
+
var _vnode = require("./vnode");
|
204
202
|
|
205
|
-
var is = _interopRequireWildcard(require("./is
|
203
|
+
var is = _interopRequireWildcard(require("./is"));
|
206
204
|
|
207
|
-
var _htmldomapi = require("./htmldomapi
|
205
|
+
var _htmldomapi = require("./htmldomapi");
|
208
206
|
|
209
207
|
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
210
208
|
|
@@ -218,10 +216,15 @@ function isDef(s) {
|
|
218
216
|
return s !== undefined;
|
219
217
|
}
|
220
218
|
|
221
|
-
const emptyNode = (0, _vnode.vnode)(
|
219
|
+
const emptyNode = (0, _vnode.vnode)("", {}, [], undefined, undefined);
|
222
220
|
|
223
221
|
function sameVnode(vnode1, vnode2) {
|
224
|
-
|
222
|
+
var _a, _b;
|
223
|
+
|
224
|
+
const isSameKey = vnode1.key === vnode2.key;
|
225
|
+
const isSameIs = ((_a = vnode1.data) === null || _a === void 0 ? void 0 : _a.is) === ((_b = vnode2.data) === null || _b === void 0 ? void 0 : _b.is);
|
226
|
+
const isSameSel = vnode1.sel === vnode2.sel;
|
227
|
+
return isSameSel && isSameKey && isSameIs;
|
225
228
|
}
|
226
229
|
|
227
230
|
function isVnode(vnode) {
|
@@ -244,7 +247,7 @@ function createKeyToOldIdx(children, beginIdx, endIdx) {
|
|
244
247
|
return map;
|
245
248
|
}
|
246
249
|
|
247
|
-
const hooks = [
|
250
|
+
const hooks = ["create", "update", "remove", "destroy", "pre", "post"];
|
248
251
|
|
249
252
|
function init(modules, domApi) {
|
250
253
|
let i;
|
@@ -272,8 +275,8 @@ function init(modules, domApi) {
|
|
272
275
|
}
|
273
276
|
|
274
277
|
function emptyNodeAt(elm) {
|
275
|
-
const id = elm.id ?
|
276
|
-
const c = elm.className ?
|
278
|
+
const id = elm.id ? "#" + elm.id : "";
|
279
|
+
const c = elm.className ? "." + elm.className.split(" ").join(".") : "";
|
277
280
|
return (0, _vnode.vnode)(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);
|
278
281
|
}
|
279
282
|
|
@@ -304,22 +307,22 @@ function init(modules, domApi) {
|
|
304
307
|
const children = vnode.children;
|
305
308
|
const sel = vnode.sel;
|
306
309
|
|
307
|
-
if (sel ===
|
310
|
+
if (sel === "!") {
|
308
311
|
if (isUndef(vnode.text)) {
|
309
|
-
vnode.text =
|
312
|
+
vnode.text = "";
|
310
313
|
}
|
311
314
|
|
312
315
|
vnode.elm = api.createComment(vnode.text);
|
313
316
|
} else if (sel !== undefined) {
|
314
317
|
// Parse selector
|
315
|
-
const hashIdx = sel.indexOf(
|
316
|
-
const dotIdx = sel.indexOf(
|
318
|
+
const hashIdx = sel.indexOf("#");
|
319
|
+
const dotIdx = sel.indexOf(".", hashIdx);
|
317
320
|
const hash = hashIdx > 0 ? hashIdx : sel.length;
|
318
321
|
const dot = dotIdx > 0 ? dotIdx : sel.length;
|
319
322
|
const tag = hashIdx !== -1 || dotIdx !== -1 ? sel.slice(0, Math.min(hash, dot)) : sel;
|
320
|
-
const elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag) : api.createElement(tag);
|
321
|
-
if (hash < dot) elm.setAttribute(
|
322
|
-
if (dotIdx > 0) elm.setAttribute(
|
323
|
+
const elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag, data) : api.createElement(tag, data);
|
324
|
+
if (hash < dot) elm.setAttribute("id", sel.slice(hash + 1, dot));
|
325
|
+
if (dotIdx > 0) elm.setAttribute("class", sel.slice(dot + 1).replace(/\./g, " "));
|
323
326
|
|
324
327
|
for (i = 0; i < cbs.create.length; ++i) cbs.create[i](emptyNode, vnode);
|
325
328
|
|
@@ -375,7 +378,7 @@ function init(modules, domApi) {
|
|
375
378
|
for (let j = 0; j < vnode.children.length; ++j) {
|
376
379
|
const child = vnode.children[j];
|
377
380
|
|
378
|
-
if (child != null && typeof child !==
|
381
|
+
if (child != null && typeof child !== "string") {
|
379
382
|
invokeDestroyHook(child);
|
380
383
|
}
|
381
384
|
}
|
@@ -513,12 +516,12 @@ function init(modules, domApi) {
|
|
513
516
|
if (isDef(oldCh) && isDef(ch)) {
|
514
517
|
if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue);
|
515
518
|
} else if (isDef(ch)) {
|
516
|
-
if (isDef(oldVnode.text)) api.setTextContent(elm,
|
519
|
+
if (isDef(oldVnode.text)) api.setTextContent(elm, "");
|
517
520
|
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
|
518
521
|
} else if (isDef(oldCh)) {
|
519
522
|
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
|
520
523
|
} else if (isDef(oldVnode.text)) {
|
521
|
-
api.setTextContent(elm,
|
524
|
+
api.setTextContent(elm, "");
|
522
525
|
}
|
523
526
|
} else if (oldVnode.text !== vnode.text) {
|
524
527
|
if (isDef(oldCh)) {
|
@@ -564,7 +567,7 @@ function init(modules, domApi) {
|
|
564
567
|
};
|
565
568
|
}
|
566
569
|
|
567
|
-
},{"./htmldomapi
|
570
|
+
},{"./htmldomapi":3,"./is":5,"./vnode":13}],5:[function(require,module,exports){
|
568
571
|
"use strict";
|
569
572
|
|
570
573
|
Object.defineProperty(exports, "__esModule", {
|
@@ -576,7 +579,7 @@ const array = Array.isArray;
|
|
576
579
|
exports.array = array;
|
577
580
|
|
578
581
|
function primitive(s) {
|
579
|
-
return typeof s ===
|
582
|
+
return typeof s === "string" || typeof s === "number";
|
580
583
|
}
|
581
584
|
|
582
585
|
},{}],6:[function(require,module,exports){
|
@@ -586,16 +589,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
586
589
|
value: true
|
587
590
|
});
|
588
591
|
exports.attributesModule = void 0;
|
589
|
-
const xlinkNS =
|
590
|
-
const xmlNS =
|
592
|
+
const xlinkNS = "http://www.w3.org/1999/xlink";
|
593
|
+
const xmlNS = "http://www.w3.org/XML/1998/namespace";
|
591
594
|
const colonChar = 58;
|
592
595
|
const xChar = 120;
|
593
596
|
|
594
597
|
function updateAttrs(oldVnode, vnode) {
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
598
|
+
let key;
|
599
|
+
const elm = vnode.elm;
|
600
|
+
let oldAttrs = oldVnode.data.attrs;
|
601
|
+
let attrs = vnode.data.attrs;
|
599
602
|
if (!oldAttrs && !attrs) return;
|
600
603
|
if (oldAttrs === attrs) return;
|
601
604
|
oldAttrs = oldAttrs || {};
|
@@ -607,7 +610,7 @@ function updateAttrs(oldVnode, vnode) {
|
|
607
610
|
|
608
611
|
if (old !== cur) {
|
609
612
|
if (cur === true) {
|
610
|
-
elm.setAttribute(key,
|
613
|
+
elm.setAttribute(key, "");
|
611
614
|
} else if (cur === false) {
|
612
615
|
elm.removeAttribute(key);
|
613
616
|
} else {
|
@@ -651,11 +654,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
651
654
|
exports.classModule = void 0;
|
652
655
|
|
653
656
|
function updateClass(oldVnode, vnode) {
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
657
|
+
let cur;
|
658
|
+
let name;
|
659
|
+
const elm = vnode.elm;
|
660
|
+
let oldClass = oldVnode.data.class;
|
661
|
+
let klass = vnode.data.class;
|
659
662
|
if (!oldClass && !klass) return;
|
660
663
|
if (oldClass === klass) return;
|
661
664
|
oldClass = oldClass || {};
|
@@ -672,7 +675,7 @@ function updateClass(oldVnode, vnode) {
|
|
672
675
|
cur = klass[name];
|
673
676
|
|
674
677
|
if (cur !== oldClass[name]) {
|
675
|
-
elm.classList[cur ?
|
678
|
+
elm.classList[cur ? "add" : "remove"](name);
|
676
679
|
}
|
677
680
|
}
|
678
681
|
}
|
@@ -710,7 +713,7 @@ function updateDataset(oldVnode, vnode) {
|
|
710
713
|
delete d[key];
|
711
714
|
}
|
712
715
|
} else {
|
713
|
-
elm.removeAttribute(
|
716
|
+
elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase());
|
714
717
|
}
|
715
718
|
}
|
716
719
|
}
|
@@ -720,7 +723,7 @@ function updateDataset(oldVnode, vnode) {
|
|
720
723
|
if (d) {
|
721
724
|
d[key] = dataset[key];
|
722
725
|
} else {
|
723
|
-
elm.setAttribute(
|
726
|
+
elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]);
|
724
727
|
}
|
725
728
|
}
|
726
729
|
}
|
@@ -741,20 +744,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
741
744
|
exports.eventListenersModule = void 0;
|
742
745
|
|
743
746
|
function invokeHandler(handler, vnode, event) {
|
744
|
-
if (typeof handler ===
|
747
|
+
if (typeof handler === "function") {
|
745
748
|
// call function handler
|
746
749
|
handler.call(vnode, event, vnode);
|
747
|
-
} else if (typeof handler ===
|
750
|
+
} else if (typeof handler === "object") {
|
748
751
|
// call multiple handlers
|
749
|
-
for (
|
752
|
+
for (let i = 0; i < handler.length; i++) {
|
750
753
|
invokeHandler(handler[i], vnode, event);
|
751
754
|
}
|
752
755
|
}
|
753
756
|
}
|
754
757
|
|
755
758
|
function handleEvent(event, vnode) {
|
756
|
-
|
757
|
-
|
759
|
+
const name = event.type;
|
760
|
+
const on = vnode.data.on; // call event handler(s) if exists
|
758
761
|
|
759
762
|
if (on && on[name]) {
|
760
763
|
invokeHandler(on[name], vnode, event);
|
@@ -768,12 +771,12 @@ function createListener() {
|
|
768
771
|
}
|
769
772
|
|
770
773
|
function updateEventListeners(oldVnode, vnode) {
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
774
|
+
const oldOn = oldVnode.data.on;
|
775
|
+
const oldListener = oldVnode.listener;
|
776
|
+
const oldElm = oldVnode.elm;
|
777
|
+
const on = vnode && vnode.data.on;
|
778
|
+
const elm = vnode && vnode.elm;
|
779
|
+
let name; // optimization for reused immutable handlers
|
777
780
|
|
778
781
|
if (oldOn === on) {
|
779
782
|
return;
|
@@ -800,7 +803,7 @@ function updateEventListeners(oldVnode, vnode) {
|
|
800
803
|
|
801
804
|
if (on) {
|
802
805
|
// reuse existing listener or create new
|
803
|
-
|
806
|
+
const listener = vnode.listener = oldVnode.listener || createListener(); // update vnode for listener
|
804
807
|
|
805
808
|
listener.vnode = vnode; // if element changed or added we add all needed listeners unconditionally
|
806
809
|
|
@@ -836,12 +839,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
836
839
|
exports.propsModule = void 0;
|
837
840
|
|
838
841
|
function updateProps(oldVnode, vnode) {
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
842
|
+
let key;
|
843
|
+
let cur;
|
844
|
+
let old;
|
845
|
+
const elm = vnode.elm;
|
846
|
+
let oldProps = oldVnode.data.props;
|
847
|
+
let props = vnode.data.props;
|
845
848
|
if (!oldProps && !props) return;
|
846
849
|
if (oldProps === props) return;
|
847
850
|
oldProps = oldProps || {};
|
@@ -851,7 +854,7 @@ function updateProps(oldVnode, vnode) {
|
|
851
854
|
cur = props[key];
|
852
855
|
old = oldProps[key];
|
853
856
|
|
854
|
-
if (old !== cur && (key !==
|
857
|
+
if (old !== cur && (key !== "value" || elm[key] !== cur)) {
|
855
858
|
elm[key] = cur;
|
856
859
|
}
|
857
860
|
}
|
@@ -871,15 +874,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
871
874
|
});
|
872
875
|
exports.styleModule = void 0;
|
873
876
|
// Bindig `requestAnimationFrame` like this fixes a bug in IE/Edge. See #360 and #409.
|
874
|
-
|
877
|
+
const raf = typeof window !== "undefined" && window.requestAnimationFrame.bind(window) || setTimeout;
|
875
878
|
|
876
|
-
|
879
|
+
const nextFrame = function (fn) {
|
877
880
|
raf(function () {
|
878
881
|
raf(fn);
|
879
882
|
});
|
880
883
|
};
|
881
884
|
|
882
|
-
|
885
|
+
let reflowForced = false;
|
883
886
|
|
884
887
|
function setNextFrame(obj, prop, val) {
|
885
888
|
nextFrame(function () {
|
@@ -888,23 +891,23 @@ function setNextFrame(obj, prop, val) {
|
|
888
891
|
}
|
889
892
|
|
890
893
|
function updateStyle(oldVnode, vnode) {
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
894
|
+
let cur;
|
895
|
+
let name;
|
896
|
+
const elm = vnode.elm;
|
897
|
+
let oldStyle = oldVnode.data.style;
|
898
|
+
let style = vnode.data.style;
|
896
899
|
if (!oldStyle && !style) return;
|
897
900
|
if (oldStyle === style) return;
|
898
901
|
oldStyle = oldStyle || {};
|
899
902
|
style = style || {};
|
900
|
-
|
903
|
+
const oldHasDel = ("delayed" in oldStyle);
|
901
904
|
|
902
905
|
for (name in oldStyle) {
|
903
906
|
if (!style[name]) {
|
904
|
-
if (name[0] ===
|
907
|
+
if (name[0] === "-" && name[1] === "-") {
|
905
908
|
elm.style.removeProperty(name);
|
906
909
|
} else {
|
907
|
-
elm.style[name] =
|
910
|
+
elm.style[name] = "";
|
908
911
|
}
|
909
912
|
}
|
910
913
|
}
|
@@ -912,7 +915,7 @@ function updateStyle(oldVnode, vnode) {
|
|
912
915
|
for (name in style) {
|
913
916
|
cur = style[name];
|
914
917
|
|
915
|
-
if (name ===
|
918
|
+
if (name === "delayed" && style.delayed) {
|
916
919
|
for (const name2 in style.delayed) {
|
917
920
|
cur = style.delayed[name2];
|
918
921
|
|
@@ -920,8 +923,8 @@ function updateStyle(oldVnode, vnode) {
|
|
920
923
|
setNextFrame(elm.style, name2, cur);
|
921
924
|
}
|
922
925
|
}
|
923
|
-
} else if (name !==
|
924
|
-
if (name[0] ===
|
926
|
+
} else if (name !== "remove" && cur !== oldStyle[name]) {
|
927
|
+
if (name[0] === "-" && name[1] === "-") {
|
925
928
|
elm.style.setProperty(name, cur);
|
926
929
|
} else {
|
927
930
|
elm.style[name] = cur;
|
@@ -931,10 +934,10 @@ function updateStyle(oldVnode, vnode) {
|
|
931
934
|
}
|
932
935
|
|
933
936
|
function applyDestroyStyle(vnode) {
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
937
|
+
let style;
|
938
|
+
let name;
|
939
|
+
const elm = vnode.elm;
|
940
|
+
const s = vnode.data.style;
|
938
941
|
if (!s || !(style = s.destroy)) return;
|
939
942
|
|
940
943
|
for (name in style) {
|
@@ -943,7 +946,7 @@ function applyDestroyStyle(vnode) {
|
|
943
946
|
}
|
944
947
|
|
945
948
|
function applyRemoveStyle(vnode, rm) {
|
946
|
-
|
949
|
+
const s = vnode.data.style;
|
947
950
|
|
948
951
|
if (!s || !s.remove) {
|
949
952
|
rm();
|
@@ -956,27 +959,26 @@ function applyRemoveStyle(vnode, rm) {
|
|
956
959
|
reflowForced = true;
|
957
960
|
}
|
958
961
|
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
var applied = [];
|
962
|
+
let name;
|
963
|
+
const elm = vnode.elm;
|
964
|
+
let i = 0;
|
965
|
+
const style = s.remove;
|
966
|
+
let amount = 0;
|
967
|
+
const applied = [];
|
966
968
|
|
967
969
|
for (name in style) {
|
968
970
|
applied.push(name);
|
969
971
|
elm.style[name] = style[name];
|
970
972
|
}
|
971
973
|
|
972
|
-
compStyle = getComputedStyle(elm);
|
973
|
-
|
974
|
+
const compStyle = getComputedStyle(elm);
|
975
|
+
const props = compStyle["transition-property"].split(", ");
|
974
976
|
|
975
977
|
for (; i < props.length; ++i) {
|
976
978
|
if (applied.indexOf(props[i]) !== -1) amount++;
|
977
979
|
}
|
978
980
|
|
979
|
-
elm.addEventListener(
|
981
|
+
elm.addEventListener("transitionend", function (ev) {
|
980
982
|
if (ev.target === elm) --amount;
|
981
983
|
if (amount === 0) rm();
|
982
984
|
});
|
@@ -1003,18 +1005,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
1003
1005
|
});
|
1004
1006
|
exports.toVNode = toVNode;
|
1005
1007
|
|
1006
|
-
var _vnode = require("./vnode
|
1008
|
+
var _vnode = require("./vnode");
|
1007
1009
|
|
1008
|
-
var _htmldomapi = require("./htmldomapi
|
1010
|
+
var _htmldomapi = require("./htmldomapi");
|
1009
1011
|
|
1010
1012
|
function toVNode(node, domApi) {
|
1011
1013
|
const api = domApi !== undefined ? domApi : _htmldomapi.htmlDomApi;
|
1012
1014
|
let text;
|
1013
1015
|
|
1014
1016
|
if (api.isElement(node)) {
|
1015
|
-
const id = node.id ?
|
1016
|
-
const cn = node.getAttribute(
|
1017
|
-
const c = cn ?
|
1017
|
+
const id = node.id ? "#" + node.id : "";
|
1018
|
+
const cn = node.getAttribute("class");
|
1019
|
+
const c = cn ? "." + cn.split(" ").join(".") : "";
|
1018
1020
|
const sel = api.tagName(node).toLowerCase() + id + c;
|
1019
1021
|
const attrs = {};
|
1020
1022
|
const children = [];
|
@@ -1026,7 +1028,7 @@ function toVNode(node, domApi) {
|
|
1026
1028
|
for (i = 0, n = elmAttrs.length; i < n; i++) {
|
1027
1029
|
name = elmAttrs[i].nodeName;
|
1028
1030
|
|
1029
|
-
if (name !==
|
1031
|
+
if (name !== "id" && name !== "class") {
|
1030
1032
|
attrs[name] = elmAttrs[i].nodeValue;
|
1031
1033
|
}
|
1032
1034
|
}
|
@@ -1043,13 +1045,13 @@ function toVNode(node, domApi) {
|
|
1043
1045
|
return (0, _vnode.vnode)(undefined, undefined, undefined, text, node);
|
1044
1046
|
} else if (api.isComment(node)) {
|
1045
1047
|
text = api.getTextContent(node);
|
1046
|
-
return (0, _vnode.vnode)(
|
1048
|
+
return (0, _vnode.vnode)("!", {}, [], text, node);
|
1047
1049
|
} else {
|
1048
|
-
return (0, _vnode.vnode)(
|
1050
|
+
return (0, _vnode.vnode)("", {}, [], undefined, node);
|
1049
1051
|
}
|
1050
1052
|
}
|
1051
1053
|
|
1052
|
-
},{"./htmldomapi
|
1054
|
+
},{"./htmldomapi":3,"./vnode":13}],13:[function(require,module,exports){
|
1053
1055
|
"use strict";
|
1054
1056
|
|
1055
1057
|
Object.defineProperty(exports, "__esModule", {
|
data/snabberb.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.bindir = 'exe'
|
26
26
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
27
|
spec.require_paths = %w[lib opal]
|
28
|
-
spec.required_ruby_version = '>= 2.
|
28
|
+
spec.required_ruby_version = '>= 2.5'
|
29
29
|
|
30
30
|
spec.add_dependency 'opal', '~> 1.1'
|
31
31
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: snabberb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Mao
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|
@@ -147,7 +147,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
147
|
requirements:
|
148
148
|
- - ">="
|
149
149
|
- !ruby/object:Gem::Version
|
150
|
-
version: '2.
|
150
|
+
version: '2.5'
|
151
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
152
|
requirements:
|
153
153
|
- - ">="
|