vega-functions 6.0.0 → 6.1.1

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.
@@ -251,6 +251,16 @@ function equalObject(a, b) {
251
251
  function removePredicate(props) {
252
252
  return _ => equalObject(props, _);
253
253
  }
254
+
255
+ /**
256
+ * Modify data in a dataset.
257
+ * @param {string} name - Dataset name
258
+ * @param {Array|Object} insert - Data to insert
259
+ * @param {boolean|Array|Object} remove - true to remove all, array/tuple to remove, or object to match
260
+ * @param {Object} toggle - Data to toggle
261
+ * @param {Object|Array} modify - Tuple or array of tuples to modify
262
+ * @param {Object} values - Field values to update
263
+ */
254
264
  function modify (name, insert, remove, toggle, modify, values) {
255
265
  const df = this.context.dataflow,
256
266
  data = this.context.data[name],
@@ -287,6 +297,9 @@ function modify (name, insert, remove, toggle, modify, values) {
287
297
  }
288
298
  }
289
299
  if (modify) {
300
+ if (isFunction(modify)) {
301
+ throw Error('modify parameter must be a data tuple, not a function');
302
+ }
290
303
  for (key in values) {
291
304
  changes.modify(modify, key, values[key]);
292
305
  }
@@ -318,28 +331,16 @@ function array(seq) {
318
331
  function sequence(seq) {
319
332
  return array(seq) || (isString(seq) ? seq : null);
320
333
  }
321
- function join(seq) {
322
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
323
- args[_key - 1] = arguments[_key];
324
- }
334
+ function join(seq, ...args) {
325
335
  return array(seq).join(...args);
326
336
  }
327
- function indexof(seq) {
328
- for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
329
- args[_key2 - 1] = arguments[_key2];
330
- }
337
+ function indexof(seq, ...args) {
331
338
  return sequence(seq).indexOf(...args);
332
339
  }
333
- function lastindexof(seq) {
334
- for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
335
- args[_key3 - 1] = arguments[_key3];
336
- }
340
+ function lastindexof(seq, ...args) {
337
341
  return sequence(seq).lastIndexOf(...args);
338
342
  }
339
- function slice(seq) {
340
- for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
341
- args[_key4 - 1] = arguments[_key4];
342
- }
343
+ function slice(seq, ...args) {
343
344
  return sequence(seq).slice(...args);
344
345
  }
345
346
  function replace(str, pattern, repl) {
@@ -474,8 +475,7 @@ function filter(opt) {
474
475
  * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point
475
476
  * @returns a new array containing the lasso with the new point
476
477
  */
477
- function lassoAppend(lasso, x, y) {
478
- let minDist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 5;
478
+ function lassoAppend(lasso, x, y, minDist = 5) {
479
479
  lasso = array$1(lasso);
480
480
  const last = lasso[lasso.length - 1];
481
481
 
@@ -490,8 +490,7 @@ function lassoAppend(lasso, x, y) {
490
490
  * @returns the svg path command that draws the lasso
491
491
  */
492
492
  function lassoPath(lasso) {
493
- return array$1(lasso).reduce((svg, _ref, i) => {
494
- let [x, y] = _ref;
493
+ return array$1(lasso).reduce((svg, [x, y], i) => {
495
494
  return svg += i == 0 ? `M ${x},${y} ` : i === lasso.length - 1 ? ' Z' : `L ${x},${y} `;
496
495
  }, '');
497
496
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vega-functions.js","sources":["../src/functions/data.js","../src/functions/encode.js","../src/functions/format.js","../src/constants.js","../src/visitors.js","../src/scales.js","../src/functions/geo.js","../src/functions/inscope.js","../src/functions/log.js","../src/functions/luminance.js","../src/functions/merge.js","../src/functions/modify.js","../src/functions/pinch.js","../src/functions/pluck.js","../src/functions/sequence.js","../src/functions/scale.js","../src/functions/scale-gradient.js","../src/functions/shape.js","../src/functions/tree.js","../src/functions/window.js","../src/functions/intersect.js","../src/functions/lasso.js","../src/codegen.js","../src/parser.js"],"sourcesContent":["import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","const wrap = method => function(value, spec) {\n const locale = this.context.dataflow.locale();\n return value === null ? 'null' : locale[method](spec)(value);\n};\n\nexport const format = wrap('format');\nexport const timeFormat = wrap('timeFormat');\nexport const utcFormat = wrap('utcFormat');\nexport const timeParse = wrap('timeParse');\nexport const utcParse = wrap('utcParse');\n\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './constants.js';\nimport {Literal} from 'vega-expression';\nimport {error, hasOwnProperty} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {ScalePrefix} from './constants.js';\nimport {scaleVisitor} from './visitors.js';\nimport {Literal} from 'vega-expression';\nimport {isFunction, isString, stringValue} from 'vega-util';\nimport {isRegisteredScale} from 'vega-scale';\n\n/**\n * nameOrFunction must be a string or function that was registered.\n * Return undefined if scale is not recognized.\n */\nexport function getScale(nameOrFunction, ctx) {\n\n if (isString(nameOrFunction)) {\n const maybeScale = ctx.scales[nameOrFunction];\n return (maybeScale && isRegisteredScale(maybeScale.value)) ? maybeScale.value : undefined;\n } else if (isFunction(nameOrFunction)) {\n return isRegisteredScale(nameOrFunction) ? nameOrFunction : undefined;\n }\n\n return undefined;\n}\n\nexport function internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (\n arg.type === Literal\n ? stringValue(ScalePrefix + arg.value)\n : stringValue(ScalePrefix) + '+' + codegen(arg)\n ) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n _range: args => `${ref(args[0])}.range()`,\n _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n };\n}\n","import {getScale} from '../scales.js';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n\nexport function geoScale(projection, group) {\n const p = getScale(projection, (group || this).context);\n return p && p.scale();\n}\n","export default function(item) {\n const group = this.context.group;\n let value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","import {rgb} from 'd3-color';\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nexport function luminance(color) {\n const c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nexport function contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\n","import {extend} from 'vega-util';\n\nexport default function() {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend(...args);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, isObject, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) ? (\n isArray(b) && a.length === b.length ? equalArray(a, b) : false\n )\n : isObject(a) && isObject(b) ? equalObject(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\n\nexport default function(name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n\n let changes = data.changes,\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {field, isArray} from 'vega-util';\n\n// memoize accessor functions\nconst accessors = {};\n\nexport default function(data, name) {\n const accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\n","import { ascending, error, isArray, isFunction, isRegExp, isString } from 'vega-util';\n\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\n\nexport function join(seq, ...args) {\n return array(seq).join(...args);\n}\n\nexport function indexof(seq, ...args) {\n return sequence(seq).indexOf(...args);\n}\n\nexport function lastindexof(seq, ...args) {\n return sequence(seq).lastIndexOf(...args);\n}\n\nexport function slice(seq, ...args) {\n return sequence(seq).slice(...args);\n}\n\nexport function replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n if (!isString(pattern) && !isRegExp(pattern)) error('Please pass a string or RegExp argument to replace.');\n\n return String(str).replace(pattern, repl);\n}\nexport function reverse(seq) {\n return array(seq).slice().reverse();\n}\nexport function sort(seq) {\n return array(seq).slice().sort(ascending);\n}\n","import {getScale} from '../scales.js';\nimport {bandSpace} from 'vega-scale';\nimport {isArray} from 'vega-util';\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n","import {getScale} from '../scales.js';\nimport {scale as get, scaleFraction} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\n\nexport default function(scale, p0, p1, count, group) {\n\n scale = getScale(scale, (group || this).context);\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import {getScale} from '../scales.js';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","import {data} from './data.js';\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = () => (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n const w = _window();\n return w ? w.screen : {};\n}\n\nexport function windowSize() {\n const w = _window();\n return w\n ? [w.innerWidth, w.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","import intersect from './intersect.js';\nimport {Bounds} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nexport function lassoAppend(lasso, x, y, minDist = 5) {\n lasso = array(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return (last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist)\n ? [...lasso, [x, y]]\n : lasso;\n}\n\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nexport function lassoPath(lasso) {\n return array(lasso).reduce((svg, [x, y], i) => {\n return svg += i == 0\n ? `M ${x},${y} `\n : i === lasso.length - 1\n ? ' Z'\n : `L ${x},${y} `;\n }, '');\n}\n\n\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nexport function intersectLasso(markname, pixelLasso, unit) {\n const { x, y, mark } = unit;\n\n const bb = new Bounds().set(\n Number.MAX_SAFE_INTEGER,\n Number.MAX_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER\n );\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]],\n markname,\n mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (((y > testy) != (prevY > testy)) && (testx < (prevX - x) * (testy - y) / (prevY - y) + x)) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n","import {\n codegenExpression,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionIdTest,\n selectionResolve,\n selectionTest,\n selectionTuples,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n cumulativeLogNormal,\n cumulativeNormal,\n cumulativeUniform,\n densityLogNormal,\n densityNormal,\n densityUniform,\n quantileLogNormal,\n quantileNormal,\n quantileUniform,\n random,\n sampleLogNormal,\n sampleNormal,\n sampleUniform\n} from 'vega-statistics';\n\nimport {\n dayofyear,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n utcOffset,\n utcSequence,\n utcdayofyear,\n utcweek,\n week\n} from 'vega-time';\n\nimport {\n clampRange,\n extend,\n extent,\n flush,\n inrange,\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n lerp,\n pad,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n peek,\n quarter,\n span,\n stringValue,\n toBoolean,\n toDate,\n toNumber,\n toString,\n truncate,\n utcquarter,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n hcl,\n hsl,\n lab,\n rgb\n} from 'd3-color';\n\nimport {\n contrast,\n luminance\n} from './functions/luminance.js';\n\nimport {\n data,\n indata,\n setdata\n} from './functions/data.js';\n\nimport encode from './functions/encode.js';\n\nimport {\n dayAbbrevFormat,\n dayFormat,\n format,\n monthAbbrevFormat,\n monthFormat,\n timeFormat,\n timeParse,\n utcFormat,\n utcParse\n} from './functions/format.js';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid,\n geoScale\n} from './functions/geo.js';\n\nimport inScope from './functions/inscope.js';\n\nimport intersect from './functions/intersect.js';\n\nimport {\n debug,\n info,\n warn\n} from './functions/log.js';\n\nimport merge from './functions/merge.js';\n\nimport modify from './functions/modify.js';\n\nimport {\n pinchAngle,\n pinchDistance\n} from './functions/pinch.js';\n\nimport pluck from './functions/pluck.js';\n\nimport {\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice,\n sort\n} from './functions/sequence.js';\n\nimport {\n intersectLasso,\n lassoAppend,\n lassoPath\n} from './functions/lasso.js';\n\nimport {\n bandspace,\n bandwidth,\n copy,\n domain,\n invert,\n range,\n scale\n} from './functions/scale.js';\n\nimport scaleGradient from './functions/scale-gradient.js';\n\nimport {\n geoShape,\n pathShape\n} from './functions/shape.js';\n\nimport {\n treeAncestors,\n treePath\n} from './functions/tree.js';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './functions/window.js';\n\nimport {\n SignalPrefix\n} from './constants.js';\n\nimport {\n internalScaleFunctions\n} from './scales.js';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors.js';\n\n// Expression function context object\nexport const functionContext = {\n random() { return random(); }, // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean,\n isDate,\n isDefined(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) { return _ != null && _ === _; },\n toBoolean,\n toDate(_) { return toDate(_); }, // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n sort,\n slice,\n flush,\n lerp,\n merge,\n pad,\n peek,\n pluck,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n luminance,\n contrast,\n sequence,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn,\n info,\n debug,\n extent(_) { return extent(_); }, // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nexport const codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nexport const codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) { fn[name] = thisPrefix + name; }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n","import {codeGenerator, codegenParams} from './codegen.js';\nimport {SignalPrefix} from './constants.js';\nimport {CallExpression, parseExpression} from 'vega-expression';\nimport {error, extend, hasOwnProperty, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({code: gen.code}, scope.options.ast ? {ast} : null),\n $fields: gen.fields,\n $params: params\n };\n}\n"],"names":["data","name","context","values","value","indata","field","index","entry","get","undefined","count","setdata","tuples","df","dataflow","input","pulse","changeset","remove","truthy","insert","item","retval","target","mark","source","encode","wrap","method","spec","locale","format","timeFormat","utcFormat","timeParse","utcParse","dateObj","Date","time","month","day","specifier","Number","isInteger","setYear","setMonth","setDate","call","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","DataPrefix","IndexPrefix","ScalePrefix","SignalPrefix","dataVisitor","args","scope","params","type","Literal","error","dataName","hasOwnProperty","getData","tuplesRef","err","indataVisitor","indexName","indataRef","scaleVisitor","addScaleDependency","scales","scaleName","scaleRef","getScale","nameOrFunction","ctx","isString","maybeScale","isRegisteredScale","isFunction","internalScaleFunctions","codegen","fnctx","visitors","__bandwidth","s","bandwidth","_bandwidth","_range","_scale","ref","arg","stringValue","geoMethod","methodName","globalMethod","projection","geojson","group","p","path","geoArea","area","geoBounds","bounds","geoCentroid","centroid","geoScale","scale","log","apply","concat","slice","warn","length","arguments","info","debug","channel_luminance_value","channelValue","val","Math","pow","luminance","color","c","rgb","r","g","b","contrast","color1","color2","lum1","lum2","lumL","max","lumD","min","unshift","extend","equal","a","isArray","equalArray","isObject","equalObject","i","n","key","removePredicate","props","_","toggle","modify","stamp","changes","predicate","_trigger","runAfter","modified","run","isTuple","some","pinchDistance","event","t","touches","dx","clientX","dy","clientY","hypot","pinchAngle","atan2","accessors","accessor","map","array","seq","ArrayBuffer","isView","sequence","join","_len","Array","_key","indexof","_len2","_key2","indexOf","lastindexof","_len3","_key3","lastIndexOf","_len4","_key4","replace","str","pattern","repl","isRegExp","String","reverse","sort","ascending","bandspace","paddingInner","paddingOuter","bandSpace","copy","domain","invert","range","invertRange","invertExtent","p0","p1","gradient","Gradient","stops","peek","fraction","identity","interpolator","interpolate","scaleFraction","ticks","push","forEach","stop","geoShape","pathShape","pathRender","pathParse","datum","d","treeNodes","tree","root","lookup","treePath","nodes","treeAncestors","node","ancestors","_window","window","screen","w","windowSize","innerWidth","innerHeight","containerSize","view","el","container","clientWidth","clientHeight","opt","u","v","box","Bounds","set","scene","scenegraph","intersect","filter","types","marktype","names","markname","lassoAppend","lasso","x","y","minDist","last","lassoPath","reduce","svg","_ref","intersectLasso","pixelLasso","unit","bb","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","px","py","x1","x2","y1","y2","translate","intersection","tuple","pointInPolygon","testx","testy","polygon","intersections","j","prevX","prevY","functionContext","random","cumulativeNormal","cumulativeLogNormal","cumulativeUniform","densityNormal","densityLogNormal","densityUniform","quantileNormal","quantileLogNormal","quantileUniform","sampleNormal","sampleLogNormal","sampleUniform","isBoolean","isDate","isDefined","isNumber","isValid","toBoolean","toDate","toNumber","toString","flush","lerp","merge","pad","pluck","span","inrange","truncate","lab","hcl","hsl","utcOffset","utcSequence","timeOffset","timeSequence","timeUnitSpecifier","quarter","utcquarter","week","utcweek","dayofyear","utcdayofyear","extent","inScope","clampRange","panLinear","panLog","panPow","panSymlog","zoomLinear","zoomLog","zoomPow","zoomSymlog","eventFunctions","eventPrefix","thisPrefix","astVisitors","codegenParams","forbidden","allowed","fieldvar","globalvar","id","functions","buildFunctions","constants","codeGenerator","codegenExpression","fn","expressionFunction","visitor","scaleGradient","selectionTest","selectionVisitor","selectionIdTest","selectionResolve","selectionTuples","expr","ast","parseExpression","visit","CallExpression","callee","gen","globals","signalName","getSignal","signalRef","$expr","code","options","$fields","fields","$params"],"mappings":"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"}
1
+ {"version":3,"file":"vega-functions.js","sources":["../src/functions/data.js","../src/functions/encode.js","../src/functions/format.js","../src/constants.js","../src/visitors.js","../src/scales.js","../src/functions/geo.js","../src/functions/inscope.js","../src/functions/log.js","../src/functions/luminance.js","../src/functions/merge.js","../src/functions/modify.js","../src/functions/pinch.js","../src/functions/pluck.js","../src/functions/sequence.js","../src/functions/scale.js","../src/functions/scale-gradient.js","../src/functions/shape.js","../src/functions/tree.js","../src/functions/window.js","../src/functions/intersect.js","../src/functions/lasso.js","../src/codegen.js","../src/parser.js"],"sourcesContent":["import {truthy} from 'vega-util';\n\nexport function data(name) {\n const data = this.context.data[name];\n return data ? data.values.value : [];\n}\n\nexport function indata(name, field, value) {\n const index = this.context.data[name]['index:' + field],\n entry = index ? index.value.get(value) : undefined;\n return entry ? entry.count : entry;\n}\n\nexport function setdata(name, tuples) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input;\n\n df.pulse(input, df.changeset().remove(truthy).insert(tuples));\n return 1;\n}\n","export default function(item, name, retval) {\n if (item) {\n const df = this.context.dataflow,\n target = item.mark.source;\n df.pulse(target, df.changeset().encode(item, name));\n }\n return retval !== undefined ? retval : item;\n}\n","const wrap = method => function(value, spec) {\n const locale = this.context.dataflow.locale();\n return value === null ? 'null' : locale[method](spec)(value);\n};\n\nexport const format = wrap('format');\nexport const timeFormat = wrap('timeFormat');\nexport const utcFormat = wrap('utcFormat');\nexport const timeParse = wrap('timeParse');\nexport const utcParse = wrap('utcParse');\n\nconst dateObj = new Date(2000, 0, 1);\n\nfunction time(month, day, specifier) {\n if (!Number.isInteger(month) || !Number.isInteger(day)) return '';\n dateObj.setYear(2000);\n dateObj.setMonth(month);\n dateObj.setDate(day);\n return timeFormat.call(this, dateObj, specifier);\n}\n\nexport function monthFormat(month) {\n return time.call(this, month, 1, '%B');\n}\n\nexport function monthAbbrevFormat(month) {\n return time.call(this, month, 1, '%b');\n}\n\nexport function dayFormat(day) {\n return time.call(this, 0, 2 + day, '%A');\n}\n\nexport function dayAbbrevFormat(day) {\n return time.call(this, 0, 2 + day, '%a');\n}\n","export const DataPrefix = ':';\nexport const IndexPrefix = '@';\nexport const ScalePrefix = '%';\nexport const SignalPrefix = '$';\n","import {DataPrefix, IndexPrefix, ScalePrefix} from './constants.js';\nimport {Literal} from 'vega-expression';\nimport {error, hasOwnProperty} from 'vega-util';\n\nexport function dataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) {\n error('First argument to data functions must be a string literal.');\n }\n\n const data = args[0].value,\n dataName = DataPrefix + data;\n\n if (!hasOwnProperty(dataName, params)) {\n try {\n params[dataName] = scope.getData(data).tuplesRef();\n } catch (err) {\n // if data set does not exist, there's nothing to track\n }\n }\n}\n\nexport function indataVisitor(name, args, scope, params) {\n if (args[0].type !== Literal) error('First argument to indata must be a string literal.');\n if (args[1].type !== Literal) error('Second argument to indata must be a string literal.');\n\n const data = args[0].value,\n field = args[1].value,\n indexName = IndexPrefix + field;\n\n if (!hasOwnProperty(indexName, params)) {\n params[indexName] = scope.getData(data).indataRef(scope, field);\n }\n}\n\nexport function scaleVisitor(name, args, scope, params) {\n if (args[0].type === Literal) {\n // add scale dependency\n addScaleDependency(scope, params, args[0].value);\n } else {\n // indirect scale lookup; add all scales as parameters\n for (name in scope.scales) {\n addScaleDependency(scope, params, name);\n }\n }\n}\n\nfunction addScaleDependency(scope, params, name) {\n const scaleName = ScalePrefix + name;\n if (!hasOwnProperty(params, scaleName)) {\n try {\n params[scaleName] = scope.scaleRef(name);\n } catch (err) {\n // TODO: error handling? warning?\n }\n }\n}\n","import {ScalePrefix} from './constants.js';\nimport {scaleVisitor} from './visitors.js';\nimport {Literal} from 'vega-expression';\nimport {isFunction, isString, stringValue} from 'vega-util';\nimport {isRegisteredScale} from 'vega-scale';\n\n/**\n * nameOrFunction must be a string or function that was registered.\n * Return undefined if scale is not recognized.\n */\nexport function getScale(nameOrFunction, ctx) {\n\n if (isString(nameOrFunction)) {\n const maybeScale = ctx.scales[nameOrFunction];\n return (maybeScale && isRegisteredScale(maybeScale.value)) ? maybeScale.value : undefined;\n } else if (isFunction(nameOrFunction)) {\n return isRegisteredScale(nameOrFunction) ? nameOrFunction : undefined;\n }\n\n return undefined;\n}\n\nexport function internalScaleFunctions(codegen, fnctx, visitors) {\n // add helper method to the 'this' expression function context\n fnctx.__bandwidth = s => s && s.bandwidth ? s.bandwidth() : 0;\n\n // register AST visitors for internal scale functions\n visitors._bandwidth = scaleVisitor;\n visitors._range = scaleVisitor;\n visitors._scale = scaleVisitor;\n\n // resolve scale reference directly to the signal hash argument\n const ref = arg => '_[' + (\n arg.type === Literal\n ? stringValue(ScalePrefix + arg.value)\n : stringValue(ScalePrefix) + '+' + codegen(arg)\n ) + ']';\n\n // define and return internal scale function code generators\n // these internal functions are called by mark encoders\n return {\n _bandwidth: args => `this.__bandwidth(${ref(args[0])})`,\n _range: args => `${ref(args[0])}.range()`,\n _scale: args => `${ref(args[0])}(${codegen(args[1])})`\n };\n}\n","import {getScale} from '../scales.js';\nimport {\n geoArea as area,\n geoBounds as bounds,\n geoCentroid as centroid\n} from 'd3-geo';\n\nfunction geoMethod(methodName, globalMethod) {\n return function(projection, geojson, group) {\n if (projection) {\n // projection defined, use it\n const p = getScale(projection, (group || this).context);\n return p && p.path[methodName](geojson);\n } else {\n // projection undefined, use global method\n return globalMethod(geojson);\n }\n };\n}\n\nexport const geoArea = geoMethod('area', area);\nexport const geoBounds = geoMethod('bounds', bounds);\nexport const geoCentroid = geoMethod('centroid', centroid);\n\nexport function geoScale(projection, group) {\n const p = getScale(projection, (group || this).context);\n return p && p.scale();\n}\n","export default function(item) {\n const group = this.context.group;\n let value = false;\n\n if (group) while (item) {\n if (item === group) { value = true; break; }\n item = item.mark.group;\n }\n return value;\n}\n","function log(df, method, args) {\n try {\n df[method].apply(df, ['EXPRESSION'].concat([].slice.call(args)));\n } catch (err) {\n df.warn(err);\n }\n return args[args.length-1];\n}\n\nexport function warn() {\n return log(this.context.dataflow, 'warn', arguments);\n}\n\nexport function info() {\n return log(this.context.dataflow, 'info', arguments);\n}\n\nexport function debug() {\n return log(this.context.dataflow, 'debug', arguments);\n}\n","import {rgb} from 'd3-color';\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\nfunction channel_luminance_value(channelValue) {\n const val = channelValue / 255;\n if (val <= 0.03928) {\n return val / 12.92;\n }\n return Math.pow((val + 0.055) / 1.055, 2.4);\n}\n\nexport function luminance(color) {\n const c = rgb(color),\n r = channel_luminance_value(c.r),\n g = channel_luminance_value(c.g),\n b = channel_luminance_value(c.b);\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n// https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef\nexport function contrast(color1, color2) {\n const lum1 = luminance(color1),\n lum2 = luminance(color2),\n lumL = Math.max(lum1, lum2),\n lumD = Math.min(lum1, lum2);\n return (lumL + 0.05) / (lumD + 0.05);\n}\n","import {extend} from 'vega-util';\n\nexport default function() {\n const args = [].slice.call(arguments);\n args.unshift({});\n return extend(...args);\n}\n","import {isTuple} from 'vega-dataflow';\nimport {isArray, isFunction, isObject, truthy} from 'vega-util';\n\nfunction equal(a, b) {\n return a === b || a !== a && b !== b ? true\n : isArray(a) ? (\n isArray(b) && a.length === b.length ? equalArray(a, b) : false\n )\n : isObject(a) && isObject(b) ? equalObject(a, b)\n : false;\n}\n\nfunction equalArray(a, b) {\n for (let i=0, n=a.length; i<n; ++i) {\n if (!equal(a[i], b[i])) return false;\n }\n return true;\n}\n\nfunction equalObject(a, b) {\n for (const key in a) {\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n}\n\nfunction removePredicate(props) {\n return _ => equalObject(props, _);\n}\n\n/**\n * Modify data in a dataset.\n * @param {string} name - Dataset name\n * @param {Array|Object} insert - Data to insert\n * @param {boolean|Array|Object} remove - true to remove all, array/tuple to remove, or object to match\n * @param {Object} toggle - Data to toggle\n * @param {Object|Array} modify - Tuple or array of tuples to modify\n * @param {Object} values - Field values to update\n */\nexport default function(name, insert, remove, toggle, modify, values) {\n const df = this.context.dataflow,\n data = this.context.data[name],\n input = data.input,\n stamp = df.stamp();\n\n let changes = data.changes,\n predicate, key;\n\n if (df._trigger === false || !(input.value.length || insert || toggle)) {\n // nothing to do!\n return 0;\n }\n\n if (!changes || changes.stamp < stamp) {\n data.changes = (changes = df.changeset());\n changes.stamp = stamp;\n df.runAfter(() => {\n data.modified = true;\n df.pulse(input, changes).run();\n }, true, 1);\n }\n\n if (remove) {\n predicate = remove === true ? truthy\n : (isArray(remove) || isTuple(remove)) ? remove\n : removePredicate(remove);\n changes.remove(predicate);\n }\n\n if (insert) {\n changes.insert(insert);\n }\n\n if (toggle) {\n predicate = removePredicate(toggle);\n if (input.value.some(predicate)) {\n changes.remove(predicate);\n } else {\n changes.insert(toggle);\n }\n }\n\n if (modify) {\n if (isFunction(modify)) {\n throw Error('modify parameter must be a data tuple, not a function');\n }\n for (key in values) {\n changes.modify(modify, key, values[key]);\n }\n }\n\n return 1;\n}\n","export function pinchDistance(event) {\n const t = event.touches,\n dx = t[0].clientX - t[1].clientX,\n dy = t[0].clientY - t[1].clientY;\n return Math.hypot(dx, dy);\n}\n\nexport function pinchAngle(event) {\n const t = event.touches;\n return Math.atan2(\n t[0].clientY - t[1].clientY,\n t[0].clientX - t[1].clientX\n );\n}\n","import {field, isArray} from 'vega-util';\n\n// memoize accessor functions\nconst accessors = {};\n\nexport default function(data, name) {\n const accessor = accessors[name] || (accessors[name] = field(name));\n return isArray(data) ? data.map(accessor) : accessor(data);\n}\n","import { ascending, error, isArray, isFunction, isRegExp, isString } from 'vega-util';\n\nfunction array(seq) {\n return isArray(seq) || ArrayBuffer.isView(seq) ? seq : null;\n}\n\nfunction sequence(seq) {\n return array(seq) || (isString(seq) ? seq : null);\n}\n\nexport function join(seq, ...args) {\n return array(seq).join(...args);\n}\n\nexport function indexof(seq, ...args) {\n return sequence(seq).indexOf(...args);\n}\n\nexport function lastindexof(seq, ...args) {\n return sequence(seq).lastIndexOf(...args);\n}\n\nexport function slice(seq, ...args) {\n return sequence(seq).slice(...args);\n}\n\nexport function replace(str, pattern, repl) {\n if (isFunction(repl)) error('Function argument passed to replace.');\n if (!isString(pattern) && !isRegExp(pattern)) error('Please pass a string or RegExp argument to replace.');\n\n return String(str).replace(pattern, repl);\n}\nexport function reverse(seq) {\n return array(seq).slice().reverse();\n}\nexport function sort(seq) {\n return array(seq).slice().sort(ascending);\n}\n","import {getScale} from '../scales.js';\nimport {bandSpace} from 'vega-scale';\nimport {isArray} from 'vega-util';\n\nexport function bandspace(count, paddingInner, paddingOuter) {\n return bandSpace(count || 0, paddingInner || 0, paddingOuter || 0);\n}\n\nexport function bandwidth(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.bandwidth ? s.bandwidth() : 0;\n}\n\nexport function copy(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.copy() : undefined;\n}\n\nexport function domain(name, group) {\n const s = getScale(name, (group || this).context);\n return s ? s.domain() : [];\n}\n\nexport function invert(name, range, group) {\n const s = getScale(name, (group || this).context);\n return !s ? undefined\n : isArray(range) ? (s.invertRange || s.invert)(range)\n : (s.invert || s.invertExtent)(range);\n}\n\nexport function range(name, group) {\n const s = getScale(name, (group || this).context);\n return s && s.range ? s.range() : [];\n}\n\nexport function scale(name, value, group) {\n const s = getScale(name, (group || this).context);\n return s ? s(value) : undefined;\n}\n","import {getScale} from '../scales.js';\nimport {scale as get, scaleFraction} from 'vega-scale';\nimport {Gradient} from 'vega-scenegraph';\nimport {identity, peek} from 'vega-util';\n\n\nexport default function(scale, p0, p1, count, group) {\n\n scale = getScale(scale, (group || this).context);\n\n const gradient = Gradient(p0, p1);\n\n let stops = scale.domain(),\n min = stops[0],\n max = peek(stops),\n fraction = identity;\n\n if (!(max - min)) {\n // expand scale if domain has zero span, fix #1479\n scale = (scale.interpolator\n ? get('sequential')().interpolator(scale.interpolator())\n : get('linear')().interpolate(scale.interpolate()).range(scale.range())\n ).domain([min=0, max=1]);\n } else {\n fraction = scaleFraction(scale, min, max);\n }\n\n if (scale.ticks) {\n stops = scale.ticks(+count || 15);\n if (min !== stops[0]) stops.unshift(min);\n if (max !== peek(stops)) stops.push(max);\n }\n\n stops.forEach(_ => gradient.stop(fraction(_), scale(_)));\n\n return gradient;\n}\n","import {getScale} from '../scales.js';\nimport {pathParse, pathRender} from 'vega-scenegraph';\n\nexport function geoShape(projection, geojson, group) {\n const p = getScale(projection, (group || this).context);\n return function(context) {\n return p ? p.path.context(context)(geojson) : '';\n };\n}\n\nexport function pathShape(path) {\n let p = null;\n return function(context) {\n return context\n ? pathRender(context, (p = p || pathParse(path)))\n : path;\n };\n}\n","import {data} from './data.js';\n\nconst datum = d => d.data;\n\nfunction treeNodes(name, context) {\n const tree = data.call(context, name);\n return tree.root && tree.root.lookup || {};\n}\n\nexport function treePath(name, source, target) {\n const nodes = treeNodes(name, this),\n s = nodes[source],\n t = nodes[target];\n return s && t ? s.path(t).map(datum) : undefined;\n}\n\nexport function treeAncestors(name, node) {\n const n = treeNodes(name, this)[node];\n return n ? n.ancestors().map(datum) : undefined;\n}\n","const _window = () => (typeof window !== 'undefined' && window) || null;\n\nexport function screen() {\n const w = _window();\n return w ? w.screen : {};\n}\n\nexport function windowSize() {\n const w = _window();\n return w\n ? [w.innerWidth, w.innerHeight]\n : [undefined, undefined];\n}\n\nexport function containerSize() {\n const view = this.context.dataflow,\n el = view.container && view.container();\n return el\n ? [el.clientWidth, el.clientHeight]\n : [undefined, undefined];\n}\n","import {Bounds, intersect} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\nexport default function(b, opt, group) {\n if (!b) return [];\n\n const [u, v] = b,\n box = new Bounds().set(u[0], u[1], v[0], v[1]),\n scene = group || this.context.dataflow.scenegraph().root;\n\n return intersect(scene, box, filter(opt));\n}\n\nfunction filter(opt) {\n let p = null;\n\n if (opt) {\n const types = array(opt.marktype),\n names = array(opt.markname);\n p = _ => (!types.length || types.some(t => _.marktype === t))\n && (!names.length || names.some(s => _.name === s));\n }\n\n return p;\n}","import intersect from './intersect.js';\nimport {Bounds} from 'vega-scenegraph';\nimport {array} from 'vega-util';\n\n/**\n * Appends a new point to the lasso\n *\n * @param {*} lasso the lasso in pixel space\n * @param {*} x the x coordinate in pixel space\n * @param {*} y the y coordinate in pixel space\n * @param {*} minDist the minimum distance, in pixels, that thenew point needs to be apart from the last point\n * @returns a new array containing the lasso with the new point\n */\nexport function lassoAppend(lasso, x, y, minDist = 5) {\n lasso = array(lasso);\n const last = lasso[lasso.length - 1];\n\n // Add point to lasso if its the first point or distance to last point exceed minDist\n return (last === undefined || Math.hypot(last[0] - x, last[1] - y) > minDist)\n ? [...lasso, [x, y]]\n : lasso;\n}\n\n\n/**\n * Generates a svg path command which draws a lasso\n *\n * @param {*} lasso the lasso in pixel space in the form [[x,y], [x,y], ...]\n * @returns the svg path command that draws the lasso\n */\nexport function lassoPath(lasso) {\n return array(lasso).reduce((svg, [x, y], i) => {\n return svg += i == 0\n ? `M ${x},${y} `\n : i === lasso.length - 1\n ? ' Z'\n : `L ${x},${y} `;\n }, '');\n}\n\n\n\n/**\n * Inverts the lasso from pixel space to an array of vega scenegraph tuples\n *\n * @param {*} data the dataset\n * @param {*} pixelLasso the lasso in pixel space, [[x,y], [x,y], ...]\n * @param {*} unit the unit where the lasso is defined\n *\n * @returns an array of vega scenegraph tuples\n */\nexport function intersectLasso(markname, pixelLasso, unit) {\n const { x, y, mark } = unit;\n\n const bb = new Bounds().set(\n Number.MAX_SAFE_INTEGER,\n Number.MAX_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER,\n Number.MIN_SAFE_INTEGER\n );\n\n // Get bounding box around lasso\n for (const [px, py] of pixelLasso) {\n if (px < bb.x1) bb.x1 = px;\n if (px > bb.x2) bb.x2 = px;\n if (py < bb.y1) bb.y1 = py;\n if (py > bb.y2) bb.y2 = py;\n }\n\n // Translate bb against unit coordinates\n bb.translate(x, y);\n\n const intersection = intersect([[bb.x1, bb.y1], [bb.x2, bb.y2]],\n markname,\n mark);\n\n // Check every point against the lasso\n return intersection.filter(tuple => pointInPolygon(tuple.x, tuple.y, pixelLasso));\n}\n\n\n\n/**\n * Performs a test if a point is inside a polygon based on the idea from\n * https://wrf.ecse.rpi.edu/Research/Short_Notes/pnpoly.html\n *\n * This method will not need the same start/end point since it wraps around the edges of the array\n *\n * @param {*} test a point to test against\n * @param {*} polygon a polygon in the form [[x,y], [x,y], ...]\n * @returns true if the point lies inside the polygon, false otherwise\n */\nfunction pointInPolygon(testx, testy, polygon) {\n let intersections = 0;\n\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const [prevX, prevY] = polygon[j];\n const [x, y] = polygon[i];\n\n // count intersections\n if (((y > testy) != (prevY > testy)) && (testx < (prevX - x) * (testy - y) / (prevY - y) + x)) {\n intersections++;\n }\n }\n\n // point is in polygon if intersection count is odd\n return intersections & 1;\n}\n","import {\n codegenExpression,\n constants,\n functions\n} from 'vega-expression';\n\nimport {\n isTuple\n} from 'vega-dataflow';\n\nimport {\n selectionIdTest,\n selectionResolve,\n selectionTest,\n selectionTuples,\n selectionVisitor\n} from 'vega-selections';\n\nimport {\n cumulativeLogNormal,\n cumulativeNormal,\n cumulativeUniform,\n densityLogNormal,\n densityNormal,\n densityUniform,\n quantileLogNormal,\n quantileNormal,\n quantileUniform,\n random,\n sampleLogNormal,\n sampleNormal,\n sampleUniform\n} from 'vega-statistics';\n\nimport {\n dayofyear,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n utcOffset,\n utcSequence,\n utcdayofyear,\n utcweek,\n week\n} from 'vega-time';\n\nimport {\n clampRange,\n extend,\n extent,\n flush,\n inrange,\n isArray,\n isBoolean,\n isDate,\n isNumber,\n isObject,\n isRegExp,\n isString,\n lerp,\n pad,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n peek,\n quarter,\n span,\n stringValue,\n toBoolean,\n toDate,\n toNumber,\n toString,\n truncate,\n utcquarter,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog\n} from 'vega-util';\n\nimport {\n range as sequence\n} from 'd3-array';\n\nimport {\n hcl,\n hsl,\n lab,\n rgb\n} from 'd3-color';\n\nimport {\n contrast,\n luminance\n} from './functions/luminance.js';\n\nimport {\n data,\n indata,\n setdata\n} from './functions/data.js';\n\nimport encode from './functions/encode.js';\n\nimport {\n dayAbbrevFormat,\n dayFormat,\n format,\n monthAbbrevFormat,\n monthFormat,\n timeFormat,\n timeParse,\n utcFormat,\n utcParse\n} from './functions/format.js';\n\nimport {\n geoArea,\n geoBounds,\n geoCentroid,\n geoScale\n} from './functions/geo.js';\n\nimport inScope from './functions/inscope.js';\n\nimport intersect from './functions/intersect.js';\n\nimport {\n debug,\n info,\n warn\n} from './functions/log.js';\n\nimport merge from './functions/merge.js';\n\nimport modify from './functions/modify.js';\n\nimport {\n pinchAngle,\n pinchDistance\n} from './functions/pinch.js';\n\nimport pluck from './functions/pluck.js';\n\nimport {\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n slice,\n sort\n} from './functions/sequence.js';\n\nimport {\n intersectLasso,\n lassoAppend,\n lassoPath\n} from './functions/lasso.js';\n\nimport {\n bandspace,\n bandwidth,\n copy,\n domain,\n invert,\n range,\n scale\n} from './functions/scale.js';\n\nimport scaleGradient from './functions/scale-gradient.js';\n\nimport {\n geoShape,\n pathShape\n} from './functions/shape.js';\n\nimport {\n treeAncestors,\n treePath\n} from './functions/tree.js';\n\nimport {\n containerSize,\n screen,\n windowSize\n} from './functions/window.js';\n\nimport {\n SignalPrefix\n} from './constants.js';\n\nimport {\n internalScaleFunctions\n} from './scales.js';\n\nimport {\n dataVisitor,\n indataVisitor,\n scaleVisitor\n} from './visitors.js';\n\n// Expression function context object\nexport const functionContext = {\n random() { return random(); }, // override default\n cumulativeNormal,\n cumulativeLogNormal,\n cumulativeUniform,\n densityNormal,\n densityLogNormal,\n densityUniform,\n quantileNormal,\n quantileLogNormal,\n quantileUniform,\n sampleNormal,\n sampleLogNormal,\n sampleUniform,\n isArray,\n isBoolean,\n isDate,\n isDefined(_) { return _ !== undefined; },\n isNumber,\n isObject,\n isRegExp,\n isString,\n isTuple,\n isValid(_) { return _ != null && _ === _; },\n toBoolean,\n toDate(_) { return toDate(_); }, // suppress extra arguments\n toNumber,\n toString,\n indexof,\n join,\n lastindexof,\n replace,\n reverse,\n sort,\n slice,\n flush,\n lerp,\n merge,\n pad,\n peek,\n pluck,\n span,\n inrange,\n truncate,\n rgb,\n lab,\n hcl,\n hsl,\n luminance,\n contrast,\n sequence,\n format,\n utcFormat,\n utcParse,\n utcOffset,\n utcSequence,\n timeFormat,\n timeParse,\n timeOffset,\n timeSequence,\n timeUnitSpecifier,\n monthFormat,\n monthAbbrevFormat,\n dayFormat,\n dayAbbrevFormat,\n quarter,\n utcquarter,\n week,\n utcweek,\n dayofyear,\n utcdayofyear,\n warn,\n info,\n debug,\n extent(_) { return extent(_); }, // suppress extra arguments\n inScope,\n intersect,\n clampRange,\n pinchDistance,\n pinchAngle,\n screen,\n containerSize,\n windowSize,\n bandspace,\n setdata,\n pathShape,\n panLinear,\n panLog,\n panPow,\n panSymlog,\n zoomLinear,\n zoomLog,\n zoomPow,\n zoomSymlog,\n encode,\n modify,\n lassoAppend,\n lassoPath,\n intersectLasso\n};\n\nconst eventFunctions = ['view', 'item', 'group', 'xy', 'x', 'y'], // event functions\n eventPrefix = 'event.vega.', // event function prefix\n thisPrefix = 'this.', // function context prefix\n astVisitors = {}; // AST visitors for dependency analysis\n\n// export code generator parameters\nexport const codegenParams = {\n forbidden: ['_'],\n allowed: ['datum', 'event', 'item'],\n fieldvar: 'datum',\n globalvar: id => `_[${stringValue(SignalPrefix + id)}]`,\n functions: buildFunctions,\n constants: constants,\n visitors: astVisitors\n};\n\n// export code generator\nexport const codeGenerator = codegenExpression(codegenParams);\n\n// Build expression function registry\nfunction buildFunctions(codegen) {\n const fn = functions(codegen);\n eventFunctions.forEach(name => fn[name] = eventPrefix + name);\n for (const name in functionContext) { fn[name] = thisPrefix + name; }\n extend(fn, internalScaleFunctions(codegen, functionContext, astVisitors));\n return fn;\n}\n\n// Register an expression function\nexport function expressionFunction(name, fn, visitor) {\n if (arguments.length === 1) {\n return functionContext[name];\n }\n\n // register with the functionContext\n functionContext[name] = fn;\n\n // if there is an astVisitor register that, too\n if (visitor) astVisitors[name] = visitor;\n\n // if the code generator has already been initialized,\n // we need to also register the function with it\n if (codeGenerator) codeGenerator.functions[name] = thisPrefix + name;\n return this;\n}\n\n// register expression functions with ast visitors\nexpressionFunction('bandwidth', bandwidth, scaleVisitor);\nexpressionFunction('copy', copy, scaleVisitor);\nexpressionFunction('domain', domain, scaleVisitor);\nexpressionFunction('range', range, scaleVisitor);\nexpressionFunction('invert', invert, scaleVisitor);\nexpressionFunction('scale', scale, scaleVisitor);\nexpressionFunction('gradient', scaleGradient, scaleVisitor);\nexpressionFunction('geoArea', geoArea, scaleVisitor);\nexpressionFunction('geoBounds', geoBounds, scaleVisitor);\nexpressionFunction('geoCentroid', geoCentroid, scaleVisitor);\nexpressionFunction('geoShape', geoShape, scaleVisitor);\nexpressionFunction('geoScale', geoScale, scaleVisitor);\nexpressionFunction('indata', indata, indataVisitor);\nexpressionFunction('data', data, dataVisitor);\nexpressionFunction('treePath', treePath, dataVisitor);\nexpressionFunction('treeAncestors', treeAncestors, dataVisitor);\n\n// register Vega-Lite selection functions\nexpressionFunction('vlSelectionTest', selectionTest, selectionVisitor);\nexpressionFunction('vlSelectionIdTest', selectionIdTest, selectionVisitor);\nexpressionFunction('vlSelectionResolve', selectionResolve, selectionVisitor);\nexpressionFunction('vlSelectionTuples', selectionTuples);\n","import {codeGenerator, codegenParams} from './codegen.js';\nimport {SignalPrefix} from './constants.js';\nimport {CallExpression, parseExpression} from 'vega-expression';\nimport {error, extend, hasOwnProperty, isString, stringValue} from 'vega-util';\n\nexport default function(expr, scope) {\n const params = {};\n\n // parse the expression to an abstract syntax tree (ast)\n let ast;\n try {\n expr = isString(expr) ? expr : (stringValue(expr) + '');\n ast = parseExpression(expr);\n } catch (err) {\n error('Expression parse error: ' + expr);\n }\n\n // analyze ast function calls for dependencies\n ast.visit(node => {\n if (node.type !== CallExpression) return;\n const name = node.callee.name,\n visit = codegenParams.visitors[name];\n if (visit) visit(name, node.arguments, scope, params);\n });\n\n // perform code generation\n const gen = codeGenerator(ast);\n\n // collect signal dependencies\n gen.globals.forEach(name => {\n const signalName = SignalPrefix + name;\n if (!hasOwnProperty(params, signalName) && scope.getSignal(name)) {\n params[signalName] = scope.signalRef(name);\n }\n });\n\n // return generated expression code and dependencies\n return {\n $expr: extend({code: gen.code}, scope.options.ast ? {ast} : null),\n $fields: gen.fields,\n $params: params\n };\n}\n"],"names":["data","name","context","values","value","indata","field","index","entry","get","undefined","count","setdata","tuples","df","dataflow","input","pulse","changeset","remove","truthy","insert","item","retval","target","mark","source","encode","wrap","method","spec","locale","format","timeFormat","utcFormat","timeParse","utcParse","dateObj","Date","time","month","day","specifier","Number","isInteger","setYear","setMonth","setDate","call","monthFormat","monthAbbrevFormat","dayFormat","dayAbbrevFormat","DataPrefix","IndexPrefix","ScalePrefix","SignalPrefix","dataVisitor","args","scope","params","type","Literal","error","dataName","hasOwnProperty","getData","tuplesRef","err","indataVisitor","indexName","indataRef","scaleVisitor","addScaleDependency","scales","scaleName","scaleRef","getScale","nameOrFunction","ctx","isString","maybeScale","isRegisteredScale","isFunction","internalScaleFunctions","codegen","fnctx","visitors","__bandwidth","s","bandwidth","_bandwidth","_range","_scale","ref","arg","stringValue","geoMethod","methodName","globalMethod","projection","geojson","group","p","path","geoArea","area","geoBounds","bounds","geoCentroid","centroid","geoScale","scale","log","apply","concat","slice","warn","length","arguments","info","debug","channel_luminance_value","channelValue","val","Math","pow","luminance","color","c","rgb","r","g","b","contrast","color1","color2","lum1","lum2","lumL","max","lumD","min","unshift","extend","equal","a","isArray","equalArray","isObject","equalObject","i","n","key","removePredicate","props","_","toggle","modify","stamp","changes","predicate","_trigger","runAfter","modified","run","isTuple","some","Error","pinchDistance","event","t","touches","dx","clientX","dy","clientY","hypot","pinchAngle","atan2","accessors","accessor","map","array","seq","ArrayBuffer","isView","sequence","join","indexof","indexOf","lastindexof","lastIndexOf","replace","str","pattern","repl","isRegExp","String","reverse","sort","ascending","bandspace","paddingInner","paddingOuter","bandSpace","copy","domain","invert","range","invertRange","invertExtent","p0","p1","gradient","Gradient","stops","peek","fraction","identity","interpolator","interpolate","scaleFraction","ticks","push","forEach","stop","geoShape","pathShape","pathRender","pathParse","datum","d","treeNodes","tree","root","lookup","treePath","nodes","treeAncestors","node","ancestors","_window","window","screen","w","windowSize","innerWidth","innerHeight","containerSize","view","el","container","clientWidth","clientHeight","opt","u","v","box","Bounds","set","scene","scenegraph","intersect","filter","types","marktype","names","markname","lassoAppend","lasso","x","y","minDist","last","lassoPath","reduce","svg","intersectLasso","pixelLasso","unit","bb","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","px","py","x1","x2","y1","y2","translate","intersection","tuple","pointInPolygon","testx","testy","polygon","intersections","j","prevX","prevY","functionContext","random","cumulativeNormal","cumulativeLogNormal","cumulativeUniform","densityNormal","densityLogNormal","densityUniform","quantileNormal","quantileLogNormal","quantileUniform","sampleNormal","sampleLogNormal","sampleUniform","isBoolean","isDate","isDefined","isNumber","isValid","toBoolean","toDate","toNumber","toString","flush","lerp","merge","pad","pluck","span","inrange","truncate","lab","hcl","hsl","utcOffset","utcSequence","timeOffset","timeSequence","timeUnitSpecifier","quarter","utcquarter","week","utcweek","dayofyear","utcdayofyear","extent","inScope","clampRange","panLinear","panLog","panPow","panSymlog","zoomLinear","zoomLog","zoomPow","zoomSymlog","eventFunctions","eventPrefix","thisPrefix","astVisitors","codegenParams","forbidden","allowed","fieldvar","globalvar","id","functions","buildFunctions","constants","codeGenerator","codegenExpression","fn","expressionFunction","visitor","scaleGradient","selectionTest","selectionVisitor","selectionIdTest","selectionResolve","selectionTuples","expr","ast","parseExpression","visit","CallExpression","callee","gen","globals","signalName","getSignal","signalRef","$expr","code","options","$fields","fields","$params"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vega-functions",
3
- "version": "6.0.0",
3
+ "version": "6.1.1",
4
4
  "description": "Custom functions for the Vega expression language.",
5
5
  "keywords": [
6
6
  "vega",
@@ -16,29 +16,31 @@
16
16
  "exports": {
17
17
  "default": "./build/vega-functions.js"
18
18
  },
19
- "repository": "vega/vega",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/vega/vega.git"
22
+ },
20
23
  "scripts": {
21
24
  "prebuild": "del-cli build",
22
25
  "build": "rollup -c rollup.config.js",
23
- "pretest": "yarn build --config-test",
26
+ "pretest": "npm run build -- --config-test",
24
27
  "test": "tape 'test/**/*-test.js'",
25
- "prepublishOnly": "yarn test && yarn build"
28
+ "prepublishOnly": "npm test && npm run build"
26
29
  },
27
30
  "dependencies": {
28
31
  "d3-array": "^3.2.4",
29
32
  "d3-color": "^3.1.0",
30
33
  "d3-geo": "^3.1.1",
31
- "vega-dataflow": "^6.0.0",
32
- "vega-expression": "^6.0.0",
33
- "vega-scale": "^8.0.0",
34
- "vega-scenegraph": "^5.0.0",
35
- "vega-selections": "^6.0.0",
34
+ "vega-dataflow": "^6.1.0",
35
+ "vega-expression": "^6.1.0",
36
+ "vega-scale": "^8.1.0",
37
+ "vega-scenegraph": "^5.1.0",
38
+ "vega-selections": "^6.1.0",
36
39
  "vega-statistics": "^2.0.0",
37
- "vega-time": "^3.0.0",
38
- "vega-util": "^2.0.0"
40
+ "vega-time": "^3.1.0",
41
+ "vega-util": "^2.1.0"
39
42
  },
40
43
  "devDependencies": {
41
- "vega-format": "^2.0.0"
42
- },
43
- "gitHead": "45ce7657f6212c448be409887018b693a8103fd4"
44
+ "vega-format": "^2.1.0"
45
+ }
44
46
  }
@@ -1,5 +1,5 @@
1
1
  import {isTuple} from 'vega-dataflow';
2
- import {isArray, isObject, truthy} from 'vega-util';
2
+ import {isArray, isFunction, isObject, truthy} from 'vega-util';
3
3
 
4
4
  function equal(a, b) {
5
5
  return a === b || a !== a && b !== b ? true
@@ -28,6 +28,15 @@ function removePredicate(props) {
28
28
  return _ => equalObject(props, _);
29
29
  }
30
30
 
31
+ /**
32
+ * Modify data in a dataset.
33
+ * @param {string} name - Dataset name
34
+ * @param {Array|Object} insert - Data to insert
35
+ * @param {boolean|Array|Object} remove - true to remove all, array/tuple to remove, or object to match
36
+ * @param {Object} toggle - Data to toggle
37
+ * @param {Object|Array} modify - Tuple or array of tuples to modify
38
+ * @param {Object} values - Field values to update
39
+ */
31
40
  export default function(name, insert, remove, toggle, modify, values) {
32
41
  const df = this.context.dataflow,
33
42
  data = this.context.data[name],
@@ -72,6 +81,9 @@ export default function(name, insert, remove, toggle, modify, values) {
72
81
  }
73
82
 
74
83
  if (modify) {
84
+ if (isFunction(modify)) {
85
+ throw Error('modify parameter must be a data tuple, not a function');
86
+ }
75
87
  for (key in values) {
76
88
  changes.modify(modify, key, values[key]);
77
89
  }
package/LICENSE DELETED
@@ -1,27 +0,0 @@
1
- Copyright (c) 2015-2023, University of Washington Interactive Data Lab
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
-
7
- 1. Redistributions of source code must retain the above copyright notice, this
8
- list of conditions and the following disclaimer.
9
-
10
- 2. Redistributions in binary form must reproduce the above copyright notice,
11
- this list of conditions and the following disclaimer in the documentation
12
- and/or other materials provided with the distribution.
13
-
14
- 3. Neither the name of the copyright holder nor the names of its contributors
15
- may be used to endorse or promote products derived from this software
16
- without specific prior written permission.
17
-
18
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
22
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.