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