diff --git a/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/editor/on_change.js b/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/editor/on_change.js index 04361d4f9d18..ca70967c531a 100644 --- a/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/editor/on_change.js +++ b/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/editor/on_change.js @@ -22,6 +22,8 @@ // MODULES // +var parseJSON = require( '@stdlib/utils/parse-json' ); +var isJSON = require( '@stdlib/assert/is-json' ); var join = require( '@stdlib/array/base/join' ); var log = require( './../log.js' ); var config = require( './../config.js' ); @@ -67,6 +69,8 @@ function onChange( event ) { var prop; var path; var url; + var tmp; + var val; var obj; var ns; var i; @@ -100,13 +104,21 @@ function onChange( event ) { // Convert namespace entries to a path: path = join( ns, '/' ); + val = event.value; + if ( isJSON( val ) ) { + tmp = parseJSON( val ); + if ( !( tmp instanceof Error ) ) { + val = tmp; + } + } + log( 'Editor changed: %s/%s', path, prop ); this.emit( 'change', { 'type': 'change', 'source': 'editor', 'property': event.property, 'path': ns.concat( [ prop ] ), - 'value': event.value + 'value': val }); log( 'Attempting to update configuration...' ); diff --git a/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/schema/transforms/axis.js b/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/schema/transforms/axis.js index 2a3fe86c8706..77b394a2f98a 100644 --- a/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/schema/transforms/axis.js +++ b/lib/node_modules/@stdlib/plot/base/view/lib/browser/app/schema/transforms/axis.js @@ -29,6 +29,13 @@ var signalName = require( './../../utils/signal_name.js' ); // VARIABLES // var PROPS = [ + 'domain', + 'domainCap', + 'domainColor', + 'domainDash', + 'domainDashOffset', + 'domainOpacity', + 'domainWidth', 'title', 'titleColor', 'titleFont', @@ -69,9 +76,19 @@ function transform( schema, signals, defaults, prefix ) { 'name': name, 'value': ( isUndefined( v ) ) ? defaults[ k ].default : v }); - out[ k ] = { - 'signal': name - }; + + // FIXME: Vega does not currently support signal updates for structural properties like `domain`. As a workaround, we keep `domain` statically `true` and dynamically hide it by dropping `domainOpacity` to 0 when unchecked. + if ( k === 'domain' ) { + out[ k ] = true; + } else if ( k === 'domainOpacity' ) { + out[ k ] = { + 'signal': signalName( prefix+'domain' ) + ' ? ' + name + ' : 0' + }; + } else { + out[ k ] = { + 'signal': name + }; + } } } return out; diff --git a/lib/node_modules/@stdlib/plot/base/view/lib/browser/router.js b/lib/node_modules/@stdlib/plot/base/view/lib/browser/router.js index eb8c2a9f02bb..e944b6087f16 100644 --- a/lib/node_modules/@stdlib/plot/base/view/lib/browser/router.js +++ b/lib/node_modules/@stdlib/plot/base/view/lib/browser/router.js @@ -79,6 +79,7 @@ function parameterize( url ) { if ( re[ re.length-1 ] === '/' ) { re = re.substring( re.length-1 ) + '\\/'; } + re = '^' + re + '$'; return { 'regexp': new RegExp( re ), 'names': names