Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

'use strict';

var DiscreteScale = require( './../lib' );

var scale = new DiscreteScale({
'name': 'xScale',
'type': 'point'
});

console.log( scale.toJSON() );
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

'use strict';

// MAIN //

/**
* Returns a new change event object.
*
* @private
* @param {string} property - property name
* @returns {Object} event object
*/
function event( property ) { // eslint-disable-line stdlib/no-redeclare
return {
'type': 'update',
'source': 'scale',
'property': property
};
}


// EXPORTS //

module.exports = event;
43 changes: 43 additions & 0 deletions lib/node_modules/@stdlib/plot/vega/scale/discrete/lib/defaults.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

'use strict';

// MAIN //

/**
* Returns defaults.
*
* @private
* @returns {Object} default options
*
* @example
* var o = defaults();
* // returns {...}
*/
function defaults() {
return {
// Scale type:
'type': 'ordinal'
};
}


// EXPORTS //

module.exports = defaults;
42 changes: 42 additions & 0 deletions lib/node_modules/@stdlib/plot/vega/scale/discrete/lib/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

'use strict';

/**
* Discrete scale constructor.
*
* @module @stdlib/plot/vega/scale/discrete
*
* @example
* var DiscreteScale = require( '@stdlib/plot/vega/scale/discrete' );
*
* var scale = new DiscreteScale({
* 'name': 'xScale'
* });
* // returns <DiscreteScale>
*/

// MODULES //

var main = require( './main.js' );


// EXPORTS //

module.exports = main;
206 changes: 206 additions & 0 deletions lib/node_modules/@stdlib/plot/vega/scale/discrete/lib/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/* eslint-disable no-restricted-syntax, no-invalid-this */

'use strict';

// MODULES //

var logger = require( 'debug' );
var isObject = require( '@stdlib/assert/is-object' );
var setReadWriteAccessor = require( '@stdlib/utils/define-read-write-accessor' );
var setNonEnumerableReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
var setNonEnumerableReadOnlyAccessor = require( '@stdlib/utils/define-nonenumerable-read-only-accessor' ); // eslint-disable-line id-length
var hasProp = require( '@stdlib/assert/has-property' );
var inherit = require( '@stdlib/utils/inherit' );
var objectKeys = require( '@stdlib/utils/keys' );
var transformErrorMessage = require( '@stdlib/plot/vega/base/transform-validation-message' );
var instance2json = require( '@stdlib/plot/vega/base/to-json' );
var Scale = require( '@stdlib/plot/vega/scale/base/ctor' );
var format = require( '@stdlib/string/format' );
var properties = require( './properties.json' );
var defaults = require( './defaults.js' );

// Note: keep the following in alphabetical order according to the `require` path...
var getProperties = require( './properties/get.js' );

var getType = require( './type/get.js' );
var setType = require( './type/set.js' );


// VARIABLES //

var debug = logger( 'vega:discrete-scale:main' );


// MAIN //

/**
* Discrete scale constructor.
*
* @constructor
* @param {Options} options - constructor options
* @param {string} options.name - scale name
* @param {(Collection|Object|Signal)} [options.domain] - domain of associated data values
* @param {number} [options.domainMax] - maximum value in the scale domain (overrides the `domain` option)
* @param {number} [options.domainMin] - minimum value in the scale domain (overrides the `domain` option)
* @param {number} [options.domainMid] - single mid-point value inserted into a two-element domain
* @param {Collection} [options.domainRaw] - array of raw domain values which overrides the `domain` property
* @param {(string|Object)} [options.interpolate] - scale range interpolation method
* @param {(Collection|Object|Signal|string)} [options.range] - scale range
* @param {boolean} [options.reverse=false] - boolean indicating whether to reverse the order of the scale range
* @param {boolean} [options.round=false] - boolean indicating whether to round numeric output values to integers
* @param {string} [options.type='ordinal'] - scale type
* @throws {TypeError} options argument must be an object
* @throws {Error} must provide valid options
* @returns {DiscreteScale} scale instance
*
* @example
* var scale = new DiscreteScale({
* 'name': 'xScale'
* });
* // returns <DiscreteScale>
*/
function DiscreteScale( options ) {
var opts;
var keys;
var v;
var k;
var i;
if ( !( this instanceof DiscreteScale ) ) {
return new DiscreteScale( options );
}
if ( !isObject( options ) ) {
throw new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );
}
// Check for required properties...
if ( !hasProp( options, 'name' ) ) {
throw new TypeError( 'invalid argument. Options argument must specify the scale name.' );
}
Scale.call( this, {
'name': options.name
});

// Resolve the default configuration:
opts = defaults();

// Set internal properties according to the default configuration...
keys = objectKeys( opts );
for ( i = 0; i < keys.length; i++ ) {
k = keys[ i ];
this[ '_'+k ] = opts[ k ];
}
// Validate provided options by attempting to assign option values to corresponding fields...
for ( i = 0; i < properties.length; i++ ) {
k = properties[ i ];
if ( !hasProp( options, k ) ) {
continue;
}
v = options[ k ];
try {
this[ k ] = v;
} catch ( err ) {
debug( 'Encountered an error. Error: %s', err.message );

// FIXME: retain thrown error type

Check warning on line 121 in lib/node_modules/@stdlib/plot/vega/scale/discrete/lib/main.js

View workflow job for this annotation

GitHub Actions / Lint Changed Files

Unexpected 'fixme' comment: 'FIXME: retain thrown error type'
throw new Error( transformErrorMessage( err.message ) );
}
}
return this;
}

/*
* Inherit from a parent prototype.
*/
inherit( DiscreteScale, Scale );

/**
* Constructor name.
*
* @private
* @name name
* @memberof DiscreteScale
* @readonly
* @type {string}
*/
setNonEnumerableReadOnly( DiscreteScale, 'name', 'DiscreteScale' );

/**
* Scale properties.
*
* @name properties
* @memberof DiscreteScale.prototype
* @type {Array<string>}
*
* @example
* var scale = new DiscreteScale({
* 'name': 'xScale'
* });
*
* var v = scale.properties;
* // returns [...]
*/
setNonEnumerableReadOnlyAccessor( DiscreteScale.prototype, 'properties', getProperties );

/**
* Scale type.
*
* @name type
* @memberof DiscreteScale.prototype
* @type {string}
* @default 'ordinal'
*
* @example
* var scale = new DiscreteScale({
* 'name': 'xScale'
* });
*
* var v = scale.type;
* // returns 'ordinal'
*/
setReadWriteAccessor( DiscreteScale.prototype, 'type', getType, setType );

/**
* Serializes an instance to a JSON object.
*
* ## Notes
*
* - This method is implicitly invoked by `JSON.stringify`.
*
* @name toJSON
* @memberof DiscreteScale.prototype
* @type {Function}
* @returns {Object} JSON object
*
* @example
* var scale = new DiscreteScale({
* 'name': 'xScale'
* });
*
* var v = scale.toJSON();
* // returns {...}
*/
setNonEnumerableReadOnly( DiscreteScale.prototype, 'toJSON', function toJSON() {
return instance2json( this, properties );
});


// EXPORTS //

module.exports = DiscreteScale;
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[
"domain",
"domainMax",
"domainMin",
"domainMid",
"domainRaw",
"interpolate",
"name",
"range",
"reverse",
"round",
"type"
]
Loading
Loading