snabberb 1.3.1 → 1.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/build.js +9 -9
- data/examples/rack/Gemfile.lock +4 -4
- data/examples/roda/Gemfile +1 -1
- data/examples/roda/Gemfile.lock +20 -22
- data/lib/snabberb/version.rb +1 -1
- data/opal/snabberb/component.rb +1 -0
- data/opal/vendor/snabbdom.js +127 -122
- data/snabberb.gemspec +2 -2
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1df088184f2da634a92a5bb64e9e0ca49f350e53e2e03af54517dcf0127b8938
|
|
4
|
+
data.tar.gz: e77b22595da1a2c7aa22f310572344fccf8015b669a88c616fc5c86d8ef4fe05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 82348b9d8daf6ddc9104eeec5d0de52e62629d3b1a6ed5c816a9771151a5b38ff54a91ae13c9977621db5381e9808d24a64e49a98a246ed3cfe4fefaf563ad01
|
|
7
|
+
data.tar.gz: 882c697ab547a00305ffc802c29171742a2fe30c1292f7355f43668fef123ebb00069db6d2aef19cfd45c0b5f513e419adb8407d534f9dd9ffdce2c981a566c8
|
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,17 +1,17 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ../..
|
|
3
3
|
specs:
|
|
4
|
-
snabberb (1.
|
|
5
|
-
opal (
|
|
4
|
+
snabberb (1.5.1)
|
|
5
|
+
opal (>= 1.1)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
10
|
ast (2.4.2)
|
|
11
|
-
opal (1.
|
|
11
|
+
opal (1.2.0)
|
|
12
12
|
ast (>= 2.3.0)
|
|
13
13
|
parser (~> 3.0)
|
|
14
|
-
parser (3.0.
|
|
14
|
+
parser (3.0.2.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 (
|
|
4
|
+
snabberb (1.5.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
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
mini_racer (0.3.1)
|
|
18
|
-
libv8 (~> 8.4.255)
|
|
19
|
-
opal (1.0.3)
|
|
10
|
+
ast (2.4.2)
|
|
11
|
+
concurrent-ruby (1.1.9)
|
|
12
|
+
execjs (2.8.1)
|
|
13
|
+
libv8-node (15.14.0.1)
|
|
14
|
+
mini_racer (0.4.0)
|
|
15
|
+
libv8-node (~> 15.14.0.0)
|
|
16
|
+
opal (1.2.0)
|
|
20
17
|
ast (>= 2.3.0)
|
|
21
|
-
parser (~>
|
|
22
|
-
opal-sprockets (
|
|
23
|
-
opal (
|
|
24
|
-
sprockets (~>
|
|
18
|
+
parser (~> 3.0)
|
|
19
|
+
opal-sprockets (1.0.1)
|
|
20
|
+
opal (>= 1.0, < 2.0)
|
|
21
|
+
sprockets (~> 4.0)
|
|
25
22
|
tilt (>= 1.4)
|
|
26
|
-
parser (
|
|
27
|
-
ast (~> 2.4.
|
|
23
|
+
parser (3.0.2.0)
|
|
24
|
+
ast (~> 2.4.1)
|
|
28
25
|
rack (2.2.3)
|
|
29
|
-
roda (3.
|
|
26
|
+
roda (3.46.0)
|
|
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/snabberb/component.rb
CHANGED
|
@@ -173,6 +173,7 @@ module Snabberb
|
|
|
173
173
|
props_is_hash = props.is_a?(Hash)
|
|
174
174
|
children = props if !children && !props_is_hash
|
|
175
175
|
props = {} unless props_is_hash
|
|
176
|
+
children = children.to_n if children.is_a?(String)
|
|
176
177
|
`snabbdom.h(#{element}, #{Native.convert(props)}, #{children})`
|
|
177
178
|
end
|
|
178
179
|
end
|
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
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
45
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
46
46
|
|
|
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; }
|
|
47
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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,15 +198,15 @@ 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
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
207
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
210
208
|
|
|
211
|
-
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; }
|
|
209
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
212
210
|
|
|
213
211
|
function isUndef(s) {
|
|
214
212
|
return s === undefined;
|
|
@@ -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,11 @@ function init(modules, domApi) {
|
|
|
272
275
|
}
|
|
273
276
|
|
|
274
277
|
function emptyNodeAt(elm) {
|
|
275
|
-
const id = elm.id ?
|
|
276
|
-
|
|
278
|
+
const id = elm.id ? "#" + elm.id : ""; // elm.className doesn't return a string when elm is an SVG element inside a shadowRoot.
|
|
279
|
+
// https://stackoverflow.com/questions/29454340/detecting-classname-of-svganimatedstring
|
|
280
|
+
|
|
281
|
+
const classes = elm.getAttribute("class");
|
|
282
|
+
const c = classes ? "." + classes.split(" ").join(".") : "";
|
|
277
283
|
return (0, _vnode.vnode)(api.tagName(elm).toLowerCase() + id + c, {}, [], undefined, elm);
|
|
278
284
|
}
|
|
279
285
|
|
|
@@ -304,22 +310,22 @@ function init(modules, domApi) {
|
|
|
304
310
|
const children = vnode.children;
|
|
305
311
|
const sel = vnode.sel;
|
|
306
312
|
|
|
307
|
-
if (sel ===
|
|
313
|
+
if (sel === "!") {
|
|
308
314
|
if (isUndef(vnode.text)) {
|
|
309
|
-
vnode.text =
|
|
315
|
+
vnode.text = "";
|
|
310
316
|
}
|
|
311
317
|
|
|
312
318
|
vnode.elm = api.createComment(vnode.text);
|
|
313
319
|
} else if (sel !== undefined) {
|
|
314
320
|
// Parse selector
|
|
315
|
-
const hashIdx = sel.indexOf(
|
|
316
|
-
const dotIdx = sel.indexOf(
|
|
321
|
+
const hashIdx = sel.indexOf("#");
|
|
322
|
+
const dotIdx = sel.indexOf(".", hashIdx);
|
|
317
323
|
const hash = hashIdx > 0 ? hashIdx : sel.length;
|
|
318
324
|
const dot = dotIdx > 0 ? dotIdx : sel.length;
|
|
319
325
|
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(
|
|
326
|
+
const elm = vnode.elm = isDef(data) && isDef(i = data.ns) ? api.createElementNS(i, tag, data) : api.createElement(tag, data);
|
|
327
|
+
if (hash < dot) elm.setAttribute("id", sel.slice(hash + 1, dot));
|
|
328
|
+
if (dotIdx > 0) elm.setAttribute("class", sel.slice(dot + 1).replace(/\./g, " "));
|
|
323
329
|
|
|
324
330
|
for (i = 0; i < cbs.create.length; ++i) cbs.create[i](emptyNode, vnode);
|
|
325
331
|
|
|
@@ -375,7 +381,7 @@ function init(modules, domApi) {
|
|
|
375
381
|
for (let j = 0; j < vnode.children.length; ++j) {
|
|
376
382
|
const child = vnode.children[j];
|
|
377
383
|
|
|
378
|
-
if (child != null && typeof child !==
|
|
384
|
+
if (child != null && typeof child !== "string") {
|
|
379
385
|
invokeDestroyHook(child);
|
|
380
386
|
}
|
|
381
387
|
}
|
|
@@ -513,12 +519,12 @@ function init(modules, domApi) {
|
|
|
513
519
|
if (isDef(oldCh) && isDef(ch)) {
|
|
514
520
|
if (oldCh !== ch) updateChildren(elm, oldCh, ch, insertedVnodeQueue);
|
|
515
521
|
} else if (isDef(ch)) {
|
|
516
|
-
if (isDef(oldVnode.text)) api.setTextContent(elm,
|
|
522
|
+
if (isDef(oldVnode.text)) api.setTextContent(elm, "");
|
|
517
523
|
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
|
|
518
524
|
} else if (isDef(oldCh)) {
|
|
519
525
|
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
|
|
520
526
|
} else if (isDef(oldVnode.text)) {
|
|
521
|
-
api.setTextContent(elm,
|
|
527
|
+
api.setTextContent(elm, "");
|
|
522
528
|
}
|
|
523
529
|
} else if (oldVnode.text !== vnode.text) {
|
|
524
530
|
if (isDef(oldCh)) {
|
|
@@ -564,7 +570,7 @@ function init(modules, domApi) {
|
|
|
564
570
|
};
|
|
565
571
|
}
|
|
566
572
|
|
|
567
|
-
},{"./htmldomapi
|
|
573
|
+
},{"./htmldomapi":3,"./is":5,"./vnode":13}],5:[function(require,module,exports){
|
|
568
574
|
"use strict";
|
|
569
575
|
|
|
570
576
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -576,7 +582,7 @@ const array = Array.isArray;
|
|
|
576
582
|
exports.array = array;
|
|
577
583
|
|
|
578
584
|
function primitive(s) {
|
|
579
|
-
return typeof s ===
|
|
585
|
+
return typeof s === "string" || typeof s === "number";
|
|
580
586
|
}
|
|
581
587
|
|
|
582
588
|
},{}],6:[function(require,module,exports){
|
|
@@ -586,16 +592,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
586
592
|
value: true
|
|
587
593
|
});
|
|
588
594
|
exports.attributesModule = void 0;
|
|
589
|
-
const xlinkNS =
|
|
590
|
-
const xmlNS =
|
|
595
|
+
const xlinkNS = "http://www.w3.org/1999/xlink";
|
|
596
|
+
const xmlNS = "http://www.w3.org/XML/1998/namespace";
|
|
591
597
|
const colonChar = 58;
|
|
592
598
|
const xChar = 120;
|
|
593
599
|
|
|
594
600
|
function updateAttrs(oldVnode, vnode) {
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
601
|
+
let key;
|
|
602
|
+
const elm = vnode.elm;
|
|
603
|
+
let oldAttrs = oldVnode.data.attrs;
|
|
604
|
+
let attrs = vnode.data.attrs;
|
|
599
605
|
if (!oldAttrs && !attrs) return;
|
|
600
606
|
if (oldAttrs === attrs) return;
|
|
601
607
|
oldAttrs = oldAttrs || {};
|
|
@@ -607,7 +613,7 @@ function updateAttrs(oldVnode, vnode) {
|
|
|
607
613
|
|
|
608
614
|
if (old !== cur) {
|
|
609
615
|
if (cur === true) {
|
|
610
|
-
elm.setAttribute(key,
|
|
616
|
+
elm.setAttribute(key, "");
|
|
611
617
|
} else if (cur === false) {
|
|
612
618
|
elm.removeAttribute(key);
|
|
613
619
|
} else {
|
|
@@ -651,11 +657,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
651
657
|
exports.classModule = void 0;
|
|
652
658
|
|
|
653
659
|
function updateClass(oldVnode, vnode) {
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
660
|
+
let cur;
|
|
661
|
+
let name;
|
|
662
|
+
const elm = vnode.elm;
|
|
663
|
+
let oldClass = oldVnode.data.class;
|
|
664
|
+
let klass = vnode.data.class;
|
|
659
665
|
if (!oldClass && !klass) return;
|
|
660
666
|
if (oldClass === klass) return;
|
|
661
667
|
oldClass = oldClass || {};
|
|
@@ -672,7 +678,7 @@ function updateClass(oldVnode, vnode) {
|
|
|
672
678
|
cur = klass[name];
|
|
673
679
|
|
|
674
680
|
if (cur !== oldClass[name]) {
|
|
675
|
-
elm.classList[cur ?
|
|
681
|
+
elm.classList[cur ? "add" : "remove"](name);
|
|
676
682
|
}
|
|
677
683
|
}
|
|
678
684
|
}
|
|
@@ -710,7 +716,7 @@ function updateDataset(oldVnode, vnode) {
|
|
|
710
716
|
delete d[key];
|
|
711
717
|
}
|
|
712
718
|
} else {
|
|
713
|
-
elm.removeAttribute(
|
|
719
|
+
elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase());
|
|
714
720
|
}
|
|
715
721
|
}
|
|
716
722
|
}
|
|
@@ -720,7 +726,7 @@ function updateDataset(oldVnode, vnode) {
|
|
|
720
726
|
if (d) {
|
|
721
727
|
d[key] = dataset[key];
|
|
722
728
|
} else {
|
|
723
|
-
elm.setAttribute(
|
|
729
|
+
elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]);
|
|
724
730
|
}
|
|
725
731
|
}
|
|
726
732
|
}
|
|
@@ -741,20 +747,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
741
747
|
exports.eventListenersModule = void 0;
|
|
742
748
|
|
|
743
749
|
function invokeHandler(handler, vnode, event) {
|
|
744
|
-
if (typeof handler ===
|
|
750
|
+
if (typeof handler === "function") {
|
|
745
751
|
// call function handler
|
|
746
752
|
handler.call(vnode, event, vnode);
|
|
747
|
-
} else if (typeof handler ===
|
|
753
|
+
} else if (typeof handler === "object") {
|
|
748
754
|
// call multiple handlers
|
|
749
|
-
for (
|
|
755
|
+
for (let i = 0; i < handler.length; i++) {
|
|
750
756
|
invokeHandler(handler[i], vnode, event);
|
|
751
757
|
}
|
|
752
758
|
}
|
|
753
759
|
}
|
|
754
760
|
|
|
755
761
|
function handleEvent(event, vnode) {
|
|
756
|
-
|
|
757
|
-
|
|
762
|
+
const name = event.type;
|
|
763
|
+
const on = vnode.data.on; // call event handler(s) if exists
|
|
758
764
|
|
|
759
765
|
if (on && on[name]) {
|
|
760
766
|
invokeHandler(on[name], vnode, event);
|
|
@@ -768,12 +774,12 @@ function createListener() {
|
|
|
768
774
|
}
|
|
769
775
|
|
|
770
776
|
function updateEventListeners(oldVnode, vnode) {
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
+
const oldOn = oldVnode.data.on;
|
|
778
|
+
const oldListener = oldVnode.listener;
|
|
779
|
+
const oldElm = oldVnode.elm;
|
|
780
|
+
const on = vnode && vnode.data.on;
|
|
781
|
+
const elm = vnode && vnode.elm;
|
|
782
|
+
let name; // optimization for reused immutable handlers
|
|
777
783
|
|
|
778
784
|
if (oldOn === on) {
|
|
779
785
|
return;
|
|
@@ -800,7 +806,7 @@ function updateEventListeners(oldVnode, vnode) {
|
|
|
800
806
|
|
|
801
807
|
if (on) {
|
|
802
808
|
// reuse existing listener or create new
|
|
803
|
-
|
|
809
|
+
const listener = vnode.listener = oldVnode.listener || createListener(); // update vnode for listener
|
|
804
810
|
|
|
805
811
|
listener.vnode = vnode; // if element changed or added we add all needed listeners unconditionally
|
|
806
812
|
|
|
@@ -836,12 +842,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
836
842
|
exports.propsModule = void 0;
|
|
837
843
|
|
|
838
844
|
function updateProps(oldVnode, vnode) {
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
+
let key;
|
|
846
|
+
let cur;
|
|
847
|
+
let old;
|
|
848
|
+
const elm = vnode.elm;
|
|
849
|
+
let oldProps = oldVnode.data.props;
|
|
850
|
+
let props = vnode.data.props;
|
|
845
851
|
if (!oldProps && !props) return;
|
|
846
852
|
if (oldProps === props) return;
|
|
847
853
|
oldProps = oldProps || {};
|
|
@@ -851,7 +857,7 @@ function updateProps(oldVnode, vnode) {
|
|
|
851
857
|
cur = props[key];
|
|
852
858
|
old = oldProps[key];
|
|
853
859
|
|
|
854
|
-
if (old !== cur && (key !==
|
|
860
|
+
if (old !== cur && (key !== "value" || elm[key] !== cur)) {
|
|
855
861
|
elm[key] = cur;
|
|
856
862
|
}
|
|
857
863
|
}
|
|
@@ -871,15 +877,15 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
871
877
|
});
|
|
872
878
|
exports.styleModule = void 0;
|
|
873
879
|
// Bindig `requestAnimationFrame` like this fixes a bug in IE/Edge. See #360 and #409.
|
|
874
|
-
|
|
880
|
+
const raf = typeof window !== "undefined" && window.requestAnimationFrame.bind(window) || setTimeout;
|
|
875
881
|
|
|
876
|
-
|
|
882
|
+
const nextFrame = function (fn) {
|
|
877
883
|
raf(function () {
|
|
878
884
|
raf(fn);
|
|
879
885
|
});
|
|
880
886
|
};
|
|
881
887
|
|
|
882
|
-
|
|
888
|
+
let reflowForced = false;
|
|
883
889
|
|
|
884
890
|
function setNextFrame(obj, prop, val) {
|
|
885
891
|
nextFrame(function () {
|
|
@@ -888,23 +894,23 @@ function setNextFrame(obj, prop, val) {
|
|
|
888
894
|
}
|
|
889
895
|
|
|
890
896
|
function updateStyle(oldVnode, vnode) {
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
897
|
+
let cur;
|
|
898
|
+
let name;
|
|
899
|
+
const elm = vnode.elm;
|
|
900
|
+
let oldStyle = oldVnode.data.style;
|
|
901
|
+
let style = vnode.data.style;
|
|
896
902
|
if (!oldStyle && !style) return;
|
|
897
903
|
if (oldStyle === style) return;
|
|
898
904
|
oldStyle = oldStyle || {};
|
|
899
905
|
style = style || {};
|
|
900
|
-
|
|
906
|
+
const oldHasDel = ("delayed" in oldStyle);
|
|
901
907
|
|
|
902
908
|
for (name in oldStyle) {
|
|
903
909
|
if (!style[name]) {
|
|
904
|
-
if (name[0] ===
|
|
910
|
+
if (name[0] === "-" && name[1] === "-") {
|
|
905
911
|
elm.style.removeProperty(name);
|
|
906
912
|
} else {
|
|
907
|
-
elm.style[name] =
|
|
913
|
+
elm.style[name] = "";
|
|
908
914
|
}
|
|
909
915
|
}
|
|
910
916
|
}
|
|
@@ -912,7 +918,7 @@ function updateStyle(oldVnode, vnode) {
|
|
|
912
918
|
for (name in style) {
|
|
913
919
|
cur = style[name];
|
|
914
920
|
|
|
915
|
-
if (name ===
|
|
921
|
+
if (name === "delayed" && style.delayed) {
|
|
916
922
|
for (const name2 in style.delayed) {
|
|
917
923
|
cur = style.delayed[name2];
|
|
918
924
|
|
|
@@ -920,8 +926,8 @@ function updateStyle(oldVnode, vnode) {
|
|
|
920
926
|
setNextFrame(elm.style, name2, cur);
|
|
921
927
|
}
|
|
922
928
|
}
|
|
923
|
-
} else if (name !==
|
|
924
|
-
if (name[0] ===
|
|
929
|
+
} else if (name !== "remove" && cur !== oldStyle[name]) {
|
|
930
|
+
if (name[0] === "-" && name[1] === "-") {
|
|
925
931
|
elm.style.setProperty(name, cur);
|
|
926
932
|
} else {
|
|
927
933
|
elm.style[name] = cur;
|
|
@@ -931,10 +937,10 @@ function updateStyle(oldVnode, vnode) {
|
|
|
931
937
|
}
|
|
932
938
|
|
|
933
939
|
function applyDestroyStyle(vnode) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
940
|
+
let style;
|
|
941
|
+
let name;
|
|
942
|
+
const elm = vnode.elm;
|
|
943
|
+
const s = vnode.data.style;
|
|
938
944
|
if (!s || !(style = s.destroy)) return;
|
|
939
945
|
|
|
940
946
|
for (name in style) {
|
|
@@ -943,7 +949,7 @@ function applyDestroyStyle(vnode) {
|
|
|
943
949
|
}
|
|
944
950
|
|
|
945
951
|
function applyRemoveStyle(vnode, rm) {
|
|
946
|
-
|
|
952
|
+
const s = vnode.data.style;
|
|
947
953
|
|
|
948
954
|
if (!s || !s.remove) {
|
|
949
955
|
rm();
|
|
@@ -956,27 +962,26 @@ function applyRemoveStyle(vnode, rm) {
|
|
|
956
962
|
reflowForced = true;
|
|
957
963
|
}
|
|
958
964
|
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
var applied = [];
|
|
965
|
+
let name;
|
|
966
|
+
const elm = vnode.elm;
|
|
967
|
+
let i = 0;
|
|
968
|
+
const style = s.remove;
|
|
969
|
+
let amount = 0;
|
|
970
|
+
const applied = [];
|
|
966
971
|
|
|
967
972
|
for (name in style) {
|
|
968
973
|
applied.push(name);
|
|
969
974
|
elm.style[name] = style[name];
|
|
970
975
|
}
|
|
971
976
|
|
|
972
|
-
compStyle = getComputedStyle(elm);
|
|
973
|
-
|
|
977
|
+
const compStyle = getComputedStyle(elm);
|
|
978
|
+
const props = compStyle["transition-property"].split(", ");
|
|
974
979
|
|
|
975
980
|
for (; i < props.length; ++i) {
|
|
976
981
|
if (applied.indexOf(props[i]) !== -1) amount++;
|
|
977
982
|
}
|
|
978
983
|
|
|
979
|
-
elm.addEventListener(
|
|
984
|
+
elm.addEventListener("transitionend", function (ev) {
|
|
980
985
|
if (ev.target === elm) --amount;
|
|
981
986
|
if (amount === 0) rm();
|
|
982
987
|
});
|
|
@@ -1003,18 +1008,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
1003
1008
|
});
|
|
1004
1009
|
exports.toVNode = toVNode;
|
|
1005
1010
|
|
|
1006
|
-
var _vnode = require("./vnode
|
|
1011
|
+
var _vnode = require("./vnode");
|
|
1007
1012
|
|
|
1008
|
-
var _htmldomapi = require("./htmldomapi
|
|
1013
|
+
var _htmldomapi = require("./htmldomapi");
|
|
1009
1014
|
|
|
1010
1015
|
function toVNode(node, domApi) {
|
|
1011
1016
|
const api = domApi !== undefined ? domApi : _htmldomapi.htmlDomApi;
|
|
1012
1017
|
let text;
|
|
1013
1018
|
|
|
1014
1019
|
if (api.isElement(node)) {
|
|
1015
|
-
const id = node.id ?
|
|
1016
|
-
const cn = node.getAttribute(
|
|
1017
|
-
const c = cn ?
|
|
1020
|
+
const id = node.id ? "#" + node.id : "";
|
|
1021
|
+
const cn = node.getAttribute("class");
|
|
1022
|
+
const c = cn ? "." + cn.split(" ").join(".") : "";
|
|
1018
1023
|
const sel = api.tagName(node).toLowerCase() + id + c;
|
|
1019
1024
|
const attrs = {};
|
|
1020
1025
|
const children = [];
|
|
@@ -1026,7 +1031,7 @@ function toVNode(node, domApi) {
|
|
|
1026
1031
|
for (i = 0, n = elmAttrs.length; i < n; i++) {
|
|
1027
1032
|
name = elmAttrs[i].nodeName;
|
|
1028
1033
|
|
|
1029
|
-
if (name !==
|
|
1034
|
+
if (name !== "id" && name !== "class") {
|
|
1030
1035
|
attrs[name] = elmAttrs[i].nodeValue;
|
|
1031
1036
|
}
|
|
1032
1037
|
}
|
|
@@ -1043,13 +1048,13 @@ function toVNode(node, domApi) {
|
|
|
1043
1048
|
return (0, _vnode.vnode)(undefined, undefined, undefined, text, node);
|
|
1044
1049
|
} else if (api.isComment(node)) {
|
|
1045
1050
|
text = api.getTextContent(node);
|
|
1046
|
-
return (0, _vnode.vnode)(
|
|
1051
|
+
return (0, _vnode.vnode)("!", {}, [], text, node);
|
|
1047
1052
|
} else {
|
|
1048
|
-
return (0, _vnode.vnode)(
|
|
1053
|
+
return (0, _vnode.vnode)("", {}, [], undefined, node);
|
|
1049
1054
|
}
|
|
1050
1055
|
}
|
|
1051
1056
|
|
|
1052
|
-
},{"./htmldomapi
|
|
1057
|
+
},{"./htmldomapi":3,"./vnode":13}],13:[function(require,module,exports){
|
|
1053
1058
|
"use strict";
|
|
1054
1059
|
|
|
1055
1060
|
Object.defineProperty(exports, "__esModule", {
|
data/snabberb.gemspec
CHANGED
|
@@ -25,9 +25,9 @@ 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
|
-
spec.add_dependency 'opal', '
|
|
30
|
+
spec.add_dependency 'opal', '>= 1.1'
|
|
31
31
|
|
|
32
32
|
spec.add_development_dependency 'bundler'
|
|
33
33
|
spec.add_development_dependency 'execjs'
|
metadata
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: snabberb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.2
|
|
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-08-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: opal
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '1.1'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '1.1'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
@@ -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
|
- - ">="
|