| 148302 | } |
| 148303 | }; |
| 148304 | function parseFacet(spec, scope, group) { |
| 148305 | const facet = spec.from.facet, name = facet.name, data = getDataRef(facet, scope); |
| 148306 | let op; |
| 148307 | if (!facet.name) (0, _vegaUtil.error)("Facet must have a name: " + (0, _vegaUtil.stringValue)(facet)); |
| 148308 | if (!facet.data) (0, _vegaUtil.error)("Facet must reference a data set: " + (0, _vegaUtil.stringValue)(facet)); |
| 148309 | if (facet.field) op = scope.add(PreFacet({ |
| 148310 | field: scope.fieldRef(facet.field), |
| 148311 | pulse: data |
| 148312 | })); |
| 148313 | else if (facet.groupby) op = scope.add(Facet({ |
| 148314 | key: scope.keyRef(facet.groupby), |
| 148315 | group: ref(scope.proxy(group.parent)), |
| 148316 | pulse: data |
| 148317 | })); |
| 148318 | else (0, _vegaUtil.error)("Facet must specify groupby or field: " + (0, _vegaUtil.stringValue)(facet)); |
| 148319 | // initialize facet subscope |
| 148320 | const subscope = scope.fork(), source = subscope.add(Collect()), values = subscope.add(Sieve({ |
| 148321 | pulse: ref(source) |
| 148322 | })); |
| 148323 | subscope.addData(name, new DataScope(subscope, source, source, values)); |
| 148324 | subscope.addSignal("parent", null); // parse faceted subflow |
| 148325 | op.params.subflow = { |
| 148326 | $subflow: subscope.parse(spec).toRuntime() |
| 148327 | }; |
| 148328 | } |
| 148329 | function parseSubflow(spec, scope, input) { |
| 148330 | const op = scope.add(PreFacet({ |
| 148331 | pulse: input.pulse |