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 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
  - - ">="