clearwater 1.0.5 → 1.1.0

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: aa6b6353c4de1e8dd6272920e262c8714e3a8f7cc84f95f9e5d5e12c3670e36d
4
- data.tar.gz: 8c0397967ba1396c18f56b2f132a682cbb8008c32fa8b3e15f2d57a5f20a5308
3
+ metadata.gz: 3cf3110939fbdc974a1ebe0933f4cadc0eed1712621962a8ace71b35d65b820c
4
+ data.tar.gz: 4f81952255ed6d290a3a385da192f61babe6216638e46eb254544a16855e7119
5
5
  SHA512:
6
- metadata.gz: 85140a696caf213af8ab5dff7043ec1a7b450fba6ed1363327708944198a202c8a9f56903a0ddc8686b56df4eefb3d6b890eee299d46ed3400cebdc43b090742
7
- data.tar.gz: 3b89451c02a2a7bd25474a8d15e71d416649d3221583c1da313b33223e99be5916755258ca56e77c18ff090cfdd8428e89fdad3bb96d1c243a2ab4e9ecea87e2
6
+ metadata.gz: 4acadcb97d1e450b56ad3e33ec4dae0703a9b6719fe6be8ab539e13129c82d2b2af675145b0b0cd6336f1d81bffde1f225736c85c57f6e6b7840ae7bcff91460
7
+ data.tar.gz: 0fce921bf875ab817caacd6c1118d0b59c6352f2bd7dc3aecfb66ebe3b19ed8ce5fdbd9cde69ea4792e2d2f1ac1f3333f73a3d0a58eab73eb85a56cf9baccf92
@@ -1,3 +1,3 @@
1
1
  module Clearwater
2
- VERSION = "1.0.5"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require 'bowser/element'
2
2
  require 'clearwater/virtual_dom'
3
+ require 'clearwater/component'
3
4
 
4
5
  module Clearwater
5
6
  module BlackBoxNode
@@ -24,6 +25,8 @@ module Clearwater
24
25
  end
25
26
 
26
27
  class Renderable
28
+ attr_reader :delegate
29
+
27
30
  def initialize delegate
28
31
  @delegate = delegate
29
32
  if delegate.key
@@ -36,7 +39,9 @@ module Clearwater
36
39
  end
37
40
 
38
41
  def create_element
39
- wrap(VirtualDOM.create_element(@delegate.node))
42
+ sanitized = Clearwater::Component.sanitize_content(@delegate.node)
43
+ vnode = VirtualDOM.create_element(sanitized)
44
+ wrap(vnode)
40
45
  end
41
46
 
42
47
  %x{
@@ -48,11 +48,16 @@ module Clearwater
48
48
  if(!content.$$is_array) {
49
49
  var render = content.$render;
50
50
 
51
- if(content.$$cached_render) {
51
+ if(content.$$is_string || content.$$is_number || content == nil) {
52
+ return content;
53
+ } else if(content.$$cached_render) {
52
54
  return #{`wrapper`.new(content)};
53
55
  } else if(render && !render.$$stub) {
54
56
  return #{sanitize_content(content.render)};
57
+ } else if(content.$$is_boolean) {
58
+ return nil;
55
59
  } else {
60
+ // #{warn "Unhandled content: #{content.inspect}"};
56
61
  return content;
57
62
  }
58
63
  } else {
@@ -1,4 +1,5 @@
1
1
  require 'clearwater/virtual_dom/js/virtual_dom.js'
2
+ require 'native'
2
3
 
3
4
  module Clearwater
4
5
  module VirtualDOM
@@ -1,146 +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.virtualDom = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
- var createElement = require("./vdom/create-element.js")
3
-
4
- module.exports = createElement
5
-
6
- },{"./vdom/create-element.js":14}],2:[function(require,module,exports){
7
- var diff = require("./vtree/diff.js")
8
-
9
- module.exports = diff
10
-
11
- },{"./vtree/diff.js":37}],3:[function(require,module,exports){
12
- var h = require("./virtual-hyperscript/index.js")
13
-
14
- module.exports = h
15
-
16
- },{"./virtual-hyperscript/index.js":22}],4:[function(require,module,exports){
17
- var diff = require("./diff.js")
18
- var patch = require("./patch.js")
19
- var h = require("./h.js")
20
- var create = require("./create-element.js")
21
- var VNode = require('./vnode/vnode.js')
22
- var VText = require('./vnode/vtext.js')
23
- var svg = require("./virtual-hyperscript/svg.js")
24
-
25
- module.exports = {
26
- diff: diff,
27
- patch: patch,
28
- h: h,
29
- create: create,
30
- VNode: VNode,
31
- VText: VText,
32
- svg: svg,
33
- }
34
-
35
- },{"./create-element.js":1,"./diff.js":2,"./h.js":3,"./patch.js":12,"./virtual-hyperscript/svg.js":25,"./vnode/vnode.js":33,"./vnode/vtext.js":35}],5:[function(require,module,exports){
36
- /*!
37
- * Cross-Browser Split 1.1.1
38
- * Copyright 2007-2012 Steven Levithan <stevenlevithan.com>
39
- * Available under the MIT License
40
- * ECMAScript compliant, uniform cross-browser split method
41
- */
42
-
43
- /**
44
- * Splits a string into an array of strings using a regex or string separator. Matches of the
45
- * separator are not included in the result array. However, if `separator` is a regex that contains
46
- * capturing groups, backreferences are spliced into the result each time `separator` is matched.
47
- * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably
48
- * cross-browser.
49
- * @param {String} str String to split.
50
- * @param {RegExp|String} separator Regex or string to use for separating the string.
51
- * @param {Number} [limit] Maximum number of items to include in the result array.
52
- * @returns {Array} Array of substrings.
53
- * @example
54
- *
55
- * // Basic use
56
- * split('a b c d', ' ');
57
- * // -> ['a', 'b', 'c', 'd']
58
- *
59
- * // With limit
60
- * split('a b c d', ' ', 2);
61
- * // -> ['a', 'b']
62
- *
63
- * // Backreferences in result array
64
- * split('..word1 word2..', /([a-z]+)(\d+)/i);
65
- * // -> ['..', 'word', '1', ' ', 'word', '2', '..']
66
- */
67
- module.exports = (function split(undef) {
68
-
69
- var nativeSplit = String.prototype.split,
70
- compliantExecNpcg = /()??/.exec("")[1] === undef,
71
- // NPCG: nonparticipating capturing group
72
- self;
73
-
74
- self = function(str, separator, limit) {
75
- // If `separator` is not a regex, use `nativeSplit`
76
- if (Object.prototype.toString.call(separator) !== "[object RegExp]") {
77
- return nativeSplit.call(str, separator, limit);
78
- }
79
- var output = [],
80
- flags = (separator.ignoreCase ? "i" : "") + (separator.multiline ? "m" : "") + (separator.extended ? "x" : "") + // Proposed for ES6
81
- (separator.sticky ? "y" : ""),
82
- // Firefox 3+
83
- lastLastIndex = 0,
84
- // Make `global` and avoid `lastIndex` issues by working with a copy
85
- separator = new RegExp(separator.source, flags + "g"),
86
- separator2, match, lastIndex, lastLength;
87
- str += ""; // Type-convert
88
- if (!compliantExecNpcg) {
89
- // Doesn't need flags gy, but they don't hurt
90
- separator2 = new RegExp("^" + separator.source + "$(?!\\s)", flags);
91
- }
92
- /* Values for `limit`, per the spec:
93
- * If undefined: 4294967295 // Math.pow(2, 32) - 1
94
- * If 0, Infinity, or NaN: 0
95
- * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;
96
- * If negative number: 4294967296 - Math.floor(Math.abs(limit))
97
- * If other: Type-convert, then use the above rules
98
- */
99
- limit = limit === undef ? -1 >>> 0 : // Math.pow(2, 32) - 1
100
- limit >>> 0; // ToUint32(limit)
101
- while (match = separator.exec(str)) {
102
- // `separator.lastIndex` is not reliable cross-browser
103
- lastIndex = match.index + match[0].length;
104
- if (lastIndex > lastLastIndex) {
105
- output.push(str.slice(lastLastIndex, match.index));
106
- // Fix browsers whose `exec` methods don't consistently return `undefined` for
107
- // nonparticipating capturing groups
108
- if (!compliantExecNpcg && match.length > 1) {
109
- match[0].replace(separator2, function() {
110
- for (var i = 1; i < arguments.length - 2; i++) {
111
- if (arguments[i] === undef) {
112
- match[i] = undef;
113
- }
114
- }
115
- });
116
- }
117
- if (match.length > 1 && match.index < str.length) {
118
- Array.prototype.push.apply(output, match.slice(1));
119
- }
120
- lastLength = match[0].length;
121
- lastLastIndex = lastIndex;
122
- if (output.length >= limit) {
123
- break;
124
- }
125
- }
126
- if (separator.lastIndex === match.index) {
127
- separator.lastIndex++; // Avoid an infinite loop
128
- }
129
- }
130
- if (lastLastIndex === str.length) {
131
- if (lastLength || !separator.test("")) {
132
- output.push("");
133
- }
134
- } else {
135
- output.push(str.slice(lastLastIndex));
136
- }
137
- return output.length > limit ? output.slice(0, limit) : output;
138
- };
139
-
140
- return self;
141
- })();
142
-
143
- },{}],6:[function(require,module,exports){
2
+ var diff = require('virtual-dom/diff')
3
+ var patch = require('virtual-dom/patch')
4
+ var h = require('virtual-dom/h')
5
+ var create = require('virtual-dom/create-element')
6
+ var VNode = require('virtual-dom/vnode/vnode')
7
+ var VText = require('virtual-dom/vnode/vtext')
8
+ var svg = require('virtual-dom/virtual-hyperscript/svg')
9
+
10
+ module.exports = {
11
+ diff: diff,
12
+ patch: patch,
13
+ h: h,
14
+ create: create,
15
+ VNode: VNode,
16
+ VText: VText,
17
+ svg: svg,
18
+ }
19
+
20
+ },{"virtual-dom/create-element":7,"virtual-dom/diff":8,"virtual-dom/h":9,"virtual-dom/patch":10,"virtual-dom/virtual-hyperscript/svg":23,"virtual-dom/vnode/vnode":31,"virtual-dom/vnode/vtext":33}],2:[function(require,module,exports){
144
21
  'use strict';
145
22
 
146
23
  var OneVersionConstraint = require('individual/one-version');
@@ -162,7 +39,28 @@ function EvStore(elem) {
162
39
  return hash;
163
40
  }
164
41
 
165
- },{"individual/one-version":8}],7:[function(require,module,exports){
42
+ },{"individual/one-version":5}],3:[function(require,module,exports){
43
+ (function (global){
44
+ var topLevel = typeof global !== 'undefined' ? global :
45
+ typeof window !== 'undefined' ? window : {}
46
+ var minDoc = require('min-document');
47
+
48
+ var doccy;
49
+
50
+ if (typeof document !== 'undefined') {
51
+ doccy = document;
52
+ } else {
53
+ doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
54
+
55
+ if (!doccy) {
56
+ doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
57
+ }
58
+ }
59
+
60
+ module.exports = doccy;
61
+
62
+ }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
63
+ },{"min-document":37}],4:[function(require,module,exports){
166
64
  (function (global){
167
65
  'use strict';
168
66
 
@@ -185,7 +83,7 @@ function Individual(key, value) {
185
83
  }
186
84
 
187
85
  }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
188
- },{}],8:[function(require,module,exports){
86
+ },{}],5:[function(require,module,exports){
189
87
  'use strict';
190
88
 
191
89
  var Individual = require('./index.js');
@@ -209,48 +107,34 @@ function OneVersion(moduleName, version, defaultValue) {
209
107
  return Individual(key, defaultValue);
210
108
  }
211
109
 
212
- },{"./index.js":7}],9:[function(require,module,exports){
213
- (function (global){
214
- var topLevel = typeof global !== 'undefined' ? global :
215
- typeof window !== 'undefined' ? window : {}
216
- var minDoc = require('min-document');
217
-
218
- if (typeof document !== 'undefined') {
219
- module.exports = document;
220
- } else {
221
- var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
222
-
223
- if (!doccy) {
224
- doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
225
- }
226
-
227
- module.exports = doccy;
228
- }
229
-
230
- }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
231
- },{"min-document":38}],10:[function(require,module,exports){
110
+ },{"./index.js":4}],6:[function(require,module,exports){
232
111
  "use strict";
233
112
 
234
113
  module.exports = function isObject(x) {
235
114
  return typeof x === "object" && x !== null;
236
115
  };
237
116
 
238
- },{}],11:[function(require,module,exports){
239
- var nativeIsArray = Array.isArray
240
- var toString = Object.prototype.toString
117
+ },{}],7:[function(require,module,exports){
118
+ var createElement = require("./vdom/create-element.js")
241
119
 
242
- module.exports = nativeIsArray || isArray
120
+ module.exports = createElement
243
121
 
244
- function isArray(obj) {
245
- return toString.call(obj) === "[object Array]"
246
- }
122
+ },{"./vdom/create-element.js":12}],8:[function(require,module,exports){
123
+ var diff = require("./vtree/diff.js")
124
+
125
+ module.exports = diff
126
+
127
+ },{"./vtree/diff.js":35}],9:[function(require,module,exports){
128
+ var h = require("./virtual-hyperscript/index.js")
129
+
130
+ module.exports = h
247
131
 
248
- },{}],12:[function(require,module,exports){
132
+ },{"./virtual-hyperscript/index.js":20}],10:[function(require,module,exports){
249
133
  var patch = require("./vdom/patch.js")
250
134
 
251
135
  module.exports = patch
252
136
 
253
- },{"./vdom/patch.js":17}],13:[function(require,module,exports){
137
+ },{"./vdom/patch.js":15}],11:[function(require,module,exports){
254
138
  var isObject = require("is-object")
255
139
  var isHook = require("../vnode/is-vhook.js")
256
140
 
@@ -349,7 +233,7 @@ function getPrototype(value) {
349
233
  }
350
234
  }
351
235
 
352
- },{"../vnode/is-vhook.js":28,"is-object":10}],14:[function(require,module,exports){
236
+ },{"../vnode/is-vhook.js":26,"is-object":6}],12:[function(require,module,exports){
353
237
  var document = require("global/document")
354
238
 
355
239
  var applyProperties = require("./apply-properties")
@@ -383,7 +267,6 @@ function createElement(vnode, opts) {
383
267
  doc.createElementNS(vnode.namespace, vnode.tagName)
384
268
 
385
269
  var props = vnode.properties
386
- applyProperties(node, props)
387
270
 
388
271
  var children = vnode.children
389
272
 
@@ -394,10 +277,12 @@ function createElement(vnode, opts) {
394
277
  }
395
278
  }
396
279
 
280
+ applyProperties(node, props)
281
+
397
282
  return node
398
283
  }
399
284
 
400
- },{"../vnode/handle-thunk.js":26,"../vnode/is-vnode.js":29,"../vnode/is-vtext.js":30,"../vnode/is-widget.js":31,"./apply-properties":13,"global/document":9}],15:[function(require,module,exports){
285
+ },{"../vnode/handle-thunk.js":24,"../vnode/is-vnode.js":27,"../vnode/is-vtext.js":28,"../vnode/is-widget.js":29,"./apply-properties":11,"global/document":3}],13:[function(require,module,exports){
401
286
  // Maps a virtual DOM tree onto a real DOM tree in an efficient manner.
402
287
  // We don't want to read all of the DOM nodes in the tree so we use
403
288
  // the in-order tree indexing to eliminate recursion down certain branches.
@@ -484,7 +369,7 @@ function ascending(a, b) {
484
369
  return a > b ? 1 : -1
485
370
  }
486
371
 
487
- },{}],16:[function(require,module,exports){
372
+ },{}],14:[function(require,module,exports){
488
373
  var applyProperties = require("./apply-properties")
489
374
 
490
375
  var isWidget = require("../vnode/is-widget.js")
@@ -539,7 +424,7 @@ function removeNode(domNode, vNode) {
539
424
  function insertNode(parentNode, vNode, renderOptions) {
540
425
  var newNode = renderOptions.render(vNode, renderOptions)
541
426
 
542
- if (parentNode) {
427
+ if (parentNode && newNode) {
543
428
  parentNode.appendChild(newNode)
544
429
  }
545
430
 
@@ -637,13 +522,14 @@ function replaceRoot(oldRoot, newRoot) {
637
522
  return newRoot;
638
523
  }
639
524
 
640
- },{"../vnode/is-widget.js":31,"../vnode/vpatch.js":34,"./apply-properties":13,"./update-widget":18}],17:[function(require,module,exports){
525
+ },{"../vnode/is-widget.js":29,"../vnode/vpatch.js":32,"./apply-properties":11,"./update-widget":16}],15:[function(require,module,exports){
641
526
  var document = require("global/document")
642
527
  var isArray = require("x-is-array")
643
528
 
644
529
  var render = require("./create-element")
645
530
  var domIndex = require("./dom-index")
646
531
  var patchOp = require("./patch-op")
532
+ var VPatch = require("../vnode/vpatch.js")
647
533
  module.exports = patch
648
534
 
649
535
  function patch(rootNode, patches, renderOptions) {
@@ -689,8 +575,25 @@ function applyPatch(rootNode, domNode, patchList, renderOptions) {
689
575
  var newNode
690
576
 
691
577
  if (isArray(patchList)) {
578
+ var propsPatchList = [];
579
+
692
580
  for (var i = 0; i < patchList.length; i++) {
693
- newNode = patchOp(patchList[i], domNode, renderOptions)
581
+ if (patchList[i].type != VPatch.PROPS) {
582
+ newNode = patchOp(patchList[i], domNode, renderOptions)
583
+
584
+ if (domNode === rootNode) {
585
+ rootNode = newNode
586
+ }
587
+ }
588
+ else {
589
+ propsPatchList.push(patchList[i]);
590
+ }
591
+ }
592
+
593
+ // Properties like scrollTop should be set after all children have been
594
+ // patched, otherwise they wouldn't take effect.
595
+ for (var i = 0; i < propsPatchList.length; i++) {
596
+ newNode = patchOp(propsPatchList[i], domNode, renderOptions)
694
597
 
695
598
  if (domNode === rootNode) {
696
599
  rootNode = newNode
@@ -719,7 +622,7 @@ function patchIndices(patches) {
719
622
  return indices
720
623
  }
721
624
 
722
- },{"./create-element":14,"./dom-index":15,"./patch-op":16,"global/document":9,"x-is-array":11}],18:[function(require,module,exports){
625
+ },{"../vnode/vpatch.js":32,"./create-element":12,"./dom-index":13,"./patch-op":14,"global/document":3,"x-is-array":36}],16:[function(require,module,exports){
723
626
  var isWidget = require("../vnode/is-widget.js")
724
627
 
725
628
  module.exports = updateWidget
@@ -736,7 +639,7 @@ function updateWidget(a, b) {
736
639
  return false
737
640
  }
738
641
 
739
- },{"../vnode/is-widget.js":31}],19:[function(require,module,exports){
642
+ },{"../vnode/is-widget.js":29}],17:[function(require,module,exports){
740
643
  'use strict';
741
644
 
742
645
  module.exports = AttributeHook;
@@ -773,7 +676,7 @@ AttributeHook.prototype.unhook = function (node, prop, next) {
773
676
 
774
677
  AttributeHook.prototype.type = 'AttributeHook';
775
678
 
776
- },{}],20:[function(require,module,exports){
679
+ },{}],18:[function(require,module,exports){
777
680
  'use strict';
778
681
 
779
682
  var EvStore = require('ev-store');
@@ -802,7 +705,7 @@ EvHook.prototype.unhook = function(node, propertyName) {
802
705
  es[propName] = undefined;
803
706
  };
804
707
 
805
- },{"ev-store":6}],21:[function(require,module,exports){
708
+ },{"ev-store":2}],19:[function(require,module,exports){
806
709
  'use strict';
807
710
 
808
711
  module.exports = SoftSetHook;
@@ -821,7 +724,7 @@ SoftSetHook.prototype.hook = function (node, propertyName) {
821
724
  }
822
725
  };
823
726
 
824
- },{}],22:[function(require,module,exports){
727
+ },{}],20:[function(require,module,exports){
825
728
  'use strict';
826
729
 
827
730
  var isArray = require('x-is-array');
@@ -871,6 +774,20 @@ function h(tagName, properties, children) {
871
774
  props.value !== undefined &&
872
775
  !isHook(props.value)
873
776
  ) {
777
+ if(typeof props.value === 'number') {
778
+ props.value = String(props.value);
779
+ }
780
+
781
+ if (props.value !== null && typeof props.value !== 'string') {
782
+ throw UnsupportedValueType({
783
+ expected: 'String',
784
+ received: typeof props.value,
785
+ Vnode: {
786
+ tagName: tag,
787
+ properties: props
788
+ }
789
+ });
790
+ }
874
791
  props.value = softSetHook(props.value);
875
792
  }
876
793
 
@@ -937,13 +854,13 @@ function UnexpectedVirtualElement(data) {
937
854
  var err = new Error();
938
855
 
939
856
  err.type = 'virtual-hyperscript.unexpected.virtual-element';
940
- err.message = 'Unexpected virtual child passed to h().\n' +
941
- 'Expected a VNode / Vthunk / VWidget / string but:\n' +
857
+ err.message = 'Unexpected virtual DOM node passed in.\n' +
858
+ 'Expected a VNode, VText, String, Number, Clearwater::Component (or other renderable), or nil but:\n' +
942
859
  'got:\n' +
943
860
  errorString(data.foreignObject) +
944
861
  '.\n' +
945
862
  'The parent vnode is:\n' +
946
- errorString(data.parentVnode)
863
+ errorString(data.parentVnode) +
947
864
  '\n' +
948
865
  'Suggested fix: change your `h(..., [ ... ])` callsite.';
949
866
  err.foreignObject = data.foreignObject;
@@ -952,22 +869,38 @@ function UnexpectedVirtualElement(data) {
952
869
  return err;
953
870
  }
954
871
 
872
+ function UnsupportedValueType(data) {
873
+ var err = new Error();
874
+
875
+ err.type = 'virtual-hyperscript.unsupported.value-type';
876
+ err.message = 'Unexpected value type for input passed to h().\n' +
877
+ 'Expected a ' +
878
+ errorString(data.expected) +
879
+ ' but got:\n' +
880
+ errorString(data.received) +
881
+ '.\n' +
882
+ 'The vnode is:\n' +
883
+ errorString(data.Vnode);
884
+ err.Vnode = data.Vnode;
885
+
886
+ return err;
887
+ }
888
+
955
889
  function errorString(obj) {
956
890
  try {
957
- return JSON.stringify(obj, null, ' ');
891
+ if(obj.$$class) {
892
+ return obj.$inspect();
893
+ } else {
894
+ return JSON.stringify(obj, null, ' ');
895
+ }
958
896
  } catch (e) {
959
897
  return String(obj);
960
898
  }
961
899
  }
962
900
 
963
- },{"../vnode/is-thunk":27,"../vnode/is-vhook":28,"../vnode/is-vnode":29,"../vnode/is-vtext":30,"../vnode/is-widget":31,"../vnode/vnode.js":33,"../vnode/vtext.js":35,"./hooks/ev-hook.js":20,"./hooks/soft-set-hook.js":21,"./parse-tag.js":23,"x-is-array":11}],23:[function(require,module,exports){
901
+ },{"../vnode/is-thunk":25,"../vnode/is-vhook":26,"../vnode/is-vnode":27,"../vnode/is-vtext":28,"../vnode/is-widget":29,"../vnode/vnode.js":31,"../vnode/vtext.js":33,"./hooks/ev-hook.js":18,"./hooks/soft-set-hook.js":19,"./parse-tag.js":21,"x-is-array":36}],21:[function(require,module,exports){
964
902
  'use strict';
965
903
 
966
- var split = require('browser-split');
967
-
968
- var classIdSplit = /([\.#]?[a-zA-Z0-9\u007F-\uFFFF_:-]+)/;
969
- var notClassId = /^\.|#/;
970
-
971
904
  module.exports = parseTag;
972
905
 
973
906
  function parseTag(tag, props) {
@@ -1039,7 +972,7 @@ function splitTag(tag) {
1039
972
  return parts;
1040
973
  }
1041
974
 
1042
- },{"browser-split":5}],24:[function(require,module,exports){
975
+ },{}],22:[function(require,module,exports){
1043
976
  'use strict';
1044
977
 
1045
978
  var DEFAULT_NAMESPACE = null;
@@ -1354,7 +1287,7 @@ function SVGAttributeNamespace(value) {
1354
1287
  }
1355
1288
  }
1356
1289
 
1357
- },{}],25:[function(require,module,exports){
1290
+ },{}],23:[function(require,module,exports){
1358
1291
  'use strict';
1359
1292
 
1360
1293
  var isArray = require('x-is-array');
@@ -1418,7 +1351,7 @@ function isChildren(x) {
1418
1351
  return typeof x === 'string' || isArray(x);
1419
1352
  }
1420
1353
 
1421
- },{"./hooks/attribute-hook":19,"./index.js":22,"./svg-attribute-namespace":24,"x-is-array":11}],26:[function(require,module,exports){
1354
+ },{"./hooks/attribute-hook":17,"./index.js":20,"./svg-attribute-namespace":22,"x-is-array":36}],24:[function(require,module,exports){
1422
1355
  var isVNode = require("./is-vnode")
1423
1356
  var isVText = require("./is-vtext")
1424
1357
  var isWidget = require("./is-widget")
@@ -1460,14 +1393,14 @@ function renderThunk(thunk, previous) {
1460
1393
  return renderedThunk
1461
1394
  }
1462
1395
 
1463
- },{"./is-thunk":27,"./is-vnode":29,"./is-vtext":30,"./is-widget":31}],27:[function(require,module,exports){
1396
+ },{"./is-thunk":25,"./is-vnode":27,"./is-vtext":28,"./is-widget":29}],25:[function(require,module,exports){
1464
1397
  module.exports = isThunk
1465
1398
 
1466
1399
  function isThunk(t) {
1467
1400
  return t && t.type === "Thunk"
1468
1401
  }
1469
1402
 
1470
- },{}],28:[function(require,module,exports){
1403
+ },{}],26:[function(require,module,exports){
1471
1404
  module.exports = isHook
1472
1405
 
1473
1406
  function isHook(hook) {
@@ -1476,7 +1409,7 @@ function isHook(hook) {
1476
1409
  typeof hook.unhook === "function" && !hook.hasOwnProperty("unhook"))
1477
1410
  }
1478
1411
 
1479
- },{}],29:[function(require,module,exports){
1412
+ },{}],27:[function(require,module,exports){
1480
1413
  var version = require("./version")
1481
1414
 
1482
1415
  module.exports = isVirtualNode
@@ -1485,7 +1418,7 @@ function isVirtualNode(x) {
1485
1418
  return x && x.type === "VirtualNode" && x.version === version
1486
1419
  }
1487
1420
 
1488
- },{"./version":32}],30:[function(require,module,exports){
1421
+ },{"./version":30}],28:[function(require,module,exports){
1489
1422
  var version = require("./version")
1490
1423
 
1491
1424
  module.exports = isVirtualText
@@ -1494,17 +1427,17 @@ function isVirtualText(x) {
1494
1427
  return x && x.type === "VirtualText" && x.version === version
1495
1428
  }
1496
1429
 
1497
- },{"./version":32}],31:[function(require,module,exports){
1430
+ },{"./version":30}],29:[function(require,module,exports){
1498
1431
  module.exports = isWidget
1499
1432
 
1500
1433
  function isWidget(w) {
1501
1434
  return w && w.type === "Widget"
1502
1435
  }
1503
1436
 
1504
- },{}],32:[function(require,module,exports){
1437
+ },{}],30:[function(require,module,exports){
1505
1438
  module.exports = "2"
1506
1439
 
1507
- },{}],33:[function(require,module,exports){
1440
+ },{}],31:[function(require,module,exports){
1508
1441
  var version = require("./version")
1509
1442
  var isVNode = require("./is-vnode")
1510
1443
  var isWidget = require("./is-widget")
@@ -1578,7 +1511,7 @@ function VirtualNode(tagName, properties, children, key, namespace) {
1578
1511
  VirtualNode.prototype.version = version
1579
1512
  VirtualNode.prototype.type = "VirtualNode"
1580
1513
 
1581
- },{"./is-thunk":27,"./is-vhook":28,"./is-vnode":29,"./is-widget":31,"./version":32}],34:[function(require,module,exports){
1514
+ },{"./is-thunk":25,"./is-vhook":26,"./is-vnode":27,"./is-widget":29,"./version":30}],32:[function(require,module,exports){
1582
1515
  var version = require("./version")
1583
1516
 
1584
1517
  VirtualPatch.NONE = 0
@@ -1602,7 +1535,7 @@ function VirtualPatch(type, vNode, patch) {
1602
1535
  VirtualPatch.prototype.version = version
1603
1536
  VirtualPatch.prototype.type = "VirtualPatch"
1604
1537
 
1605
- },{"./version":32}],35:[function(require,module,exports){
1538
+ },{"./version":30}],33:[function(require,module,exports){
1606
1539
  var version = require("./version")
1607
1540
 
1608
1541
  module.exports = VirtualText
@@ -1614,7 +1547,7 @@ function VirtualText(text) {
1614
1547
  VirtualText.prototype.version = version
1615
1548
  VirtualText.prototype.type = "VirtualText"
1616
1549
 
1617
- },{"./version":32}],36:[function(require,module,exports){
1550
+ },{"./version":30}],34:[function(require,module,exports){
1618
1551
  var isObject = require("is-object")
1619
1552
  var isHook = require("../vnode/is-vhook")
1620
1553
 
@@ -1674,7 +1607,7 @@ function getPrototype(value) {
1674
1607
  }
1675
1608
  }
1676
1609
 
1677
- },{"../vnode/is-vhook":28,"is-object":10}],37:[function(require,module,exports){
1610
+ },{"../vnode/is-vhook":26,"is-object":6}],35:[function(require,module,exports){
1678
1611
  var isArray = require("x-is-array")
1679
1612
 
1680
1613
  var VPatch = require("../vnode/vpatch")
@@ -2103,7 +2036,17 @@ function appendPatch(apply, patch) {
2103
2036
  }
2104
2037
  }
2105
2038
 
2106
- },{"../vnode/handle-thunk":26,"../vnode/is-thunk":27,"../vnode/is-vnode":29,"../vnode/is-vtext":30,"../vnode/is-widget":31,"../vnode/vpatch":34,"./diff-props":36,"x-is-array":11}],38:[function(require,module,exports){
2039
+ },{"../vnode/handle-thunk":24,"../vnode/is-thunk":25,"../vnode/is-vnode":27,"../vnode/is-vtext":28,"../vnode/is-widget":29,"../vnode/vpatch":32,"./diff-props":34,"x-is-array":36}],36:[function(require,module,exports){
2040
+ var nativeIsArray = Array.isArray
2041
+ var toString = Object.prototype.toString
2042
+
2043
+ module.exports = nativeIsArray || isArray
2044
+
2045
+ function isArray(obj) {
2046
+ return toString.call(obj) === "[object Array]"
2047
+ }
2048
+
2049
+ },{}],37:[function(require,module,exports){
2107
2050
 
2108
- },{}]},{},[4])(4)
2051
+ },{}]},{},[1])(1)
2109
2052
  });
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearwater
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-05 00:00:00.000000000 Z
11
+ date: 2018-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal