snabberb 1.3.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb82424f513fedb084f9889e64adc0b3484e3403522d5f0fb1ab3531c9fd627b
4
- data.tar.gz: '08a6595aa3bed2cde156991811e6a612296e11aaeae9a24a10dd9aca58c2f3f8'
3
+ metadata.gz: 1df088184f2da634a92a5bb64e9e0ca49f350e53e2e03af54517dcf0127b8938
4
+ data.tar.gz: e77b22595da1a2c7aa22f310572344fccf8015b669a88c616fc5c86d8ef4fe05
5
5
  SHA512:
6
- metadata.gz: 9f599f947849c63880508953ec5f096f6ccfc4936c08fe51d7c8a3fd087260b921cdba6d7b64b70e5a6e565c63d2cf02cd1962880c1b5ae4b96f4a793cddfe3d
7
- data.tar.gz: 06d6ff61cf0853e796f4c8d4896db4e4a74b7dd28a79a421fdc4df947d99e92f7eec63ca604c993ab445142bd9f095d782122730f11936387ee4314313fc4768
6
+ metadata.gz: 82348b9d8daf6ddc9104eeec5d0de52e62629d3b1a6ed5c816a9771151a5b38ff54a91ae13c9977621db5381e9808d24a64e49a98a246ed3cfe4fefaf563ad01
7
+ data.tar.gz: 882c697ab547a00305ffc802c29171742a2fe30c1292f7355f43668fef123ebb00069db6d2aef19cfd45c0b5f513e419adb8407d534f9dd9ffdce2c981a566c8
data/.gitignore CHANGED
@@ -10,6 +10,7 @@
10
10
  /examples/roda/build
11
11
  /node_modules/
12
12
  package-lock.json
13
+ package.json
13
14
 
14
15
  .DS_STORE
15
16
  *.swp
data/.rubocop.yml CHANGED
@@ -45,5 +45,5 @@ Style/TrailingCommaInHashLiteral:
45
45
 
46
46
  AllCops:
47
47
  NewCops: enable
48
- TargetRubyVersion: 2.4
48
+ TargetRubyVersion: 2.5
49
49
  SuggestExtensions: false
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/package/init'
3
- import { h } from './node_modules/snabbdom/build/package/h'
4
- import { toVNode } from './node_modules/snabbdom/build/package/tovnode'
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/package/modules/attributes'
7
- import { classModule } from './node_modules/snabbdom/build/package/modules/class'
8
- import { datasetModule } from './node_modules/snabbdom/build/package/modules/dataset'
9
- import { eventListenersModule } from './node_modules/snabbdom/build/package/modules/eventlisteners'
10
- import { propsModule } from './node_modules/snabbdom/build/package/modules/props'
11
- import { styleModule } from './node_modules/snabbdom/build/package/modules/style'
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
@@ -1,17 +1,17 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- snabberb (1.3.0)
5
- opal (~> 1.1)
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.1.1)
11
+ opal (1.2.0)
12
12
  ast (>= 2.3.0)
13
13
  parser (~> 3.0)
14
- parser (3.0.0.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)
@@ -2,10 +2,10 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- gem 'c_lexer'
6
5
  gem 'execjs'
7
6
  gem 'mini_racer'
8
7
  gem 'opal'
9
8
  gem 'opal-sprockets'
10
9
  gem 'roda'
11
10
  gem 'snabberb', path: '../..'
11
+ gem 'webrick'
@@ -1,49 +1,47 @@
1
1
  PATH
2
2
  remote: ../..
3
3
  specs:
4
- snabberb (1.0.0)
5
- opal (~> 1.0)
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.1)
11
- c_lexer (2.6.4.1.1)
12
- ast (~> 2.4.0)
13
- parser (= 2.6.4.1)
14
- concurrent-ruby (1.1.7)
15
- execjs (2.7.0)
16
- libv8 (8.4.255.0)
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 (~> 2.6)
22
- opal-sprockets (0.4.9.1.0.3.7)
23
- opal (~> 1.0.0)
24
- sprockets (~> 3.7)
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 (2.6.4.1)
27
- ast (~> 2.4.0)
23
+ parser (3.0.2.0)
24
+ ast (~> 2.4.1)
28
25
  rack (2.2.3)
29
- roda (3.36.0)
26
+ roda (3.46.0)
30
27
  rack
31
- sprockets (3.7.2)
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.1.4
47
+ 2.2.3
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Snabberb
4
- VERSION = '1.3.1'
4
+ VERSION = '1.5.2'
5
5
  end
@@ -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
@@ -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/package/init");
4
+ var _init = require("./node_modules/snabbdom/build/init");
5
5
 
6
- var _h = require("./node_modules/snabbdom/build/package/h");
6
+ var _h = require("./node_modules/snabbdom/build/h");
7
7
 
8
- var _tovnode = require("./node_modules/snabbdom/build/package/tovnode");
8
+ var _tovnode = require("./node_modules/snabbdom/build/tovnode");
9
9
 
10
- var _attributes = require("./node_modules/snabbdom/build/package/modules/attributes");
10
+ var _attributes = require("./node_modules/snabbdom/build/modules/attributes");
11
11
 
12
- var _class = require("./node_modules/snabbdom/build/package/modules/class");
12
+ var _class = require("./node_modules/snabbdom/build/modules/class");
13
13
 
14
- var _dataset = require("./node_modules/snabbdom/build/package/modules/dataset");
14
+ var _dataset = require("./node_modules/snabbdom/build/modules/dataset");
15
15
 
16
- var _eventlisteners = require("./node_modules/snabbdom/build/package/modules/eventlisteners");
16
+ var _eventlisteners = require("./node_modules/snabbdom/build/modules/eventlisteners");
17
17
 
18
- var _props = require("./node_modules/snabbdom/build/package/modules/props");
18
+ var _props = require("./node_modules/snabbdom/build/modules/props");
19
19
 
20
- var _style = require("./node_modules/snabbdom/build/package/modules/style");
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/package/h":2,"./node_modules/snabbdom/build/package/init":4,"./node_modules/snabbdom/build/package/modules/attributes":6,"./node_modules/snabbdom/build/package/modules/class":7,"./node_modules/snabbdom/build/package/modules/dataset":8,"./node_modules/snabbdom/build/package/modules/eventlisteners":9,"./node_modules/snabbdom/build/package/modules/props":10,"./node_modules/snabbdom/build/package/modules/style":11,"./node_modules/snabbdom/build/package/tovnode":12}],2:[function(require,module,exports){
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.js");
41
+ var _vnode = require("./vnode");
42
42
 
43
- var is = _interopRequireWildcard(require("./is.js"));
43
+ var is = _interopRequireWildcard(require("./is"));
44
44
 
45
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
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 = 'http://www.w3.org/2000/svg';
50
+ data.ns = "http://www.w3.org/2000/svg";
51
51
 
52
- if (sel !== 'foreignObject' && children !== undefined) {
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
- var data = {};
65
- var children;
66
- var text;
67
- var i;
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] === 's' && sel[1] === 'v' && sel[2] === 'g' && (sel.length === 3 || sel[3] === '.' || sel[3] === '#')) {
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.js");
201
+ var _vnode = require("./vnode");
204
202
 
205
- var is = _interopRequireWildcard(require("./is.js"));
203
+ var is = _interopRequireWildcard(require("./is"));
206
204
 
207
- var _htmldomapi = require("./htmldomapi.js");
205
+ var _htmldomapi = require("./htmldomapi");
208
206
 
209
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
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)('', {}, [], undefined, undefined);
219
+ const emptyNode = (0, _vnode.vnode)("", {}, [], undefined, undefined);
222
220
 
223
221
  function sameVnode(vnode1, vnode2) {
224
- return vnode1.key === vnode2.key && vnode1.sel === vnode2.sel;
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 = ['create', 'update', 'remove', 'destroy', 'pre', 'post'];
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 ? '#' + elm.id : '';
276
- const c = elm.className ? '.' + elm.className.split(' ').join('.') : '';
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('.', hashIdx);
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('id', sel.slice(hash + 1, dot));
322
- if (dotIdx > 0) elm.setAttribute('class', sel.slice(dot + 1).replace(/\./g, ' '));
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 !== 'string') {
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.js":3,"./is.js":5,"./vnode.js":13}],5:[function(require,module,exports){
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 === 'string' || typeof s === 'number';
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 = 'http://www.w3.org/1999/xlink';
590
- const xmlNS = 'http://www.w3.org/XML/1998/namespace';
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
- var key;
596
- var elm = vnode.elm;
597
- var oldAttrs = oldVnode.data.attrs;
598
- var attrs = vnode.data.attrs;
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
- var cur;
655
- var name;
656
- var elm = vnode.elm;
657
- var oldClass = oldVnode.data.class;
658
- var klass = vnode.data.class;
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 ? 'add' : 'remove'](name);
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('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase());
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('data-' + key.replace(CAPS_REGEX, '-$&').toLowerCase(), dataset[key]);
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 === 'function') {
750
+ if (typeof handler === "function") {
745
751
  // call function handler
746
752
  handler.call(vnode, event, vnode);
747
- } else if (typeof handler === 'object') {
753
+ } else if (typeof handler === "object") {
748
754
  // call multiple handlers
749
- for (var i = 0; i < handler.length; i++) {
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
- var name = event.type;
757
- var on = vnode.data.on; // call event handler(s) if exists
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
- var oldOn = oldVnode.data.on;
772
- var oldListener = oldVnode.listener;
773
- var oldElm = oldVnode.elm;
774
- var on = vnode && vnode.data.on;
775
- var elm = vnode && vnode.elm;
776
- var name; // optimization for reused immutable handlers
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
- var listener = vnode.listener = oldVnode.listener || createListener(); // update vnode for listener
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
- var key;
840
- var cur;
841
- var old;
842
- var elm = vnode.elm;
843
- var oldProps = oldVnode.data.props;
844
- var props = vnode.data.props;
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 !== 'value' || elm[key] !== cur)) {
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
- var raf = typeof window !== 'undefined' && window.requestAnimationFrame.bind(window) || setTimeout;
880
+ const raf = typeof window !== "undefined" && window.requestAnimationFrame.bind(window) || setTimeout;
875
881
 
876
- var nextFrame = function (fn) {
882
+ const nextFrame = function (fn) {
877
883
  raf(function () {
878
884
  raf(fn);
879
885
  });
880
886
  };
881
887
 
882
- var reflowForced = false;
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
- var cur;
892
- var name;
893
- var elm = vnode.elm;
894
- var oldStyle = oldVnode.data.style;
895
- var style = vnode.data.style;
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
- var oldHasDel = ('delayed' in oldStyle);
906
+ const oldHasDel = ("delayed" in oldStyle);
901
907
 
902
908
  for (name in oldStyle) {
903
909
  if (!style[name]) {
904
- if (name[0] === '-' && name[1] === '-') {
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 === 'delayed' && style.delayed) {
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 !== 'remove' && cur !== oldStyle[name]) {
924
- if (name[0] === '-' && name[1] === '-') {
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
- var style;
935
- var name;
936
- var elm = vnode.elm;
937
- var s = vnode.data.style;
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
- var s = vnode.data.style;
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
- var name;
960
- var elm = vnode.elm;
961
- var i = 0;
962
- var compStyle;
963
- var style = s.remove;
964
- var amount = 0;
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
- var props = compStyle['transition-property'].split(', ');
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('transitionend', function (ev) {
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.js");
1011
+ var _vnode = require("./vnode");
1007
1012
 
1008
- var _htmldomapi = require("./htmldomapi.js");
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 ? '#' + node.id : '';
1016
- const cn = node.getAttribute('class');
1017
- const c = cn ? '.' + cn.split(' ').join('.') : '';
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 !== 'id' && name !== 'class') {
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)('!', {}, [], text, node);
1051
+ return (0, _vnode.vnode)("!", {}, [], text, node);
1047
1052
  } else {
1048
- return (0, _vnode.vnode)('', {}, [], undefined, node);
1053
+ return (0, _vnode.vnode)("", {}, [], undefined, node);
1049
1054
  }
1050
1055
  }
1051
1056
 
1052
- },{"./htmldomapi.js":3,"./vnode.js":13}],13:[function(require,module,exports){
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.4'
28
+ spec.required_ruby_version = '>= 2.5'
29
29
 
30
- spec.add_dependency 'opal', '~> 1.1'
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.3.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-03-24 00:00:00.000000000 Z
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.4'
150
+ version: '2.5'
151
151
  required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  requirements:
153
153
  - - ">="