@marimo-team/frontend 0.21.1-dev12 → 0.21.1-dev14

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.
Files changed (95) hide show
  1. package/dist/assets/{CellStatus-CFRv4Tvd.js → CellStatus-CoejXnCc.js} +1 -1
  2. package/dist/assets/ConnectedDataExplorerComponent-DsPvYWwS.js +1 -0
  3. package/dist/assets/{JsonOutput-DJukuY6Z.js → JsonOutput-CBK4dhVh.js} +10 -10
  4. package/dist/assets/{MarimoErrorOutput-zVM0B_Vj.js → MarimoErrorOutput-B0nc63rx.js} +1 -1
  5. package/dist/assets/{RenderHTML-BuMvdWQd.js → RenderHTML-Bp9XY06U.js} +1 -1
  6. package/dist/assets/{add-cell-with-ai-BtzUxApq.js → add-cell-with-ai-CrnYAxuA.js} +1 -1
  7. package/dist/assets/{add-connection-dialog-BSsacvzU.js → add-connection-dialog-I31C6j-5.js} +1 -1
  8. package/dist/assets/{agent-panel-a_m3dm9Y.js → agent-panel-ufAvSbof.js} +1 -1
  9. package/dist/assets/{ai-model-dropdown-CcIreMqb.js → ai-model-dropdown-BYDC_z7s.js} +1 -1
  10. package/dist/assets/{app-config-button-D-mROEVq.js → app-config-button-CRfW3S6Z.js} +1 -1
  11. package/dist/assets/{azure-FFoHMnHA.js → azure-q5TZ9bt0.js} +1 -1
  12. package/dist/assets/{cell-editor-D_RsnX0J.js → cell-editor-eZKo6fP_.js} +1 -1
  13. package/dist/assets/{cell-link-BjgRgErj.js → cell-link-DWQZUFhO.js} +1 -1
  14. package/dist/assets/{cells-CAHXVi26.js → cells-Dqou-uie.js} +32 -32
  15. package/dist/assets/{chat-display-rX-JkJEO.js → chat-display-Vedn01P6.js} +1 -1
  16. package/dist/assets/{chat-panel-BudFFybg.js → chat-panel-udyCNql9.js} +1 -1
  17. package/dist/assets/{column-preview-Dk_9z2Mw.js → column-preview-DPhs4evg.js} +1 -1
  18. package/dist/assets/{command-_14PjWun.js → command-Ckfx4w5C.js} +1 -1
  19. package/dist/assets/command-palette-D51FjW1l.js +1 -0
  20. package/dist/assets/{common-D2sp4A8j.js → common-DMx0N5jj.js} +1 -1
  21. package/dist/assets/{components-BP1LfBLA.js → components-Bgj5U8rZ.js} +1 -1
  22. package/dist/assets/{components-Wzn4JDkV.js → components-CHO2M34L.js} +1 -1
  23. package/dist/assets/context-aware-panel-TU7i7Ais.js +3 -0
  24. package/dist/assets/{datasource-BNXHfowL.js → datasource-Cn-Wy4lo.js} +1 -1
  25. package/dist/assets/{dependency-graph-panel-B5Eq3e0f.js → dependency-graph-panel-Dd_ypMAw.js} +1 -1
  26. package/dist/assets/{documentation-panel-DLE-AkPt.js → documentation-panel-C1QC0dL_.js} +1 -1
  27. package/dist/assets/{download-SQhwj_Eq.js → download-D6Fv1GMQ.js} +1 -1
  28. package/dist/assets/{edit-page-qWzJGYd0.js → edit-page-DGpjBH-k.js} +7 -7
  29. package/dist/assets/{error-panel-DmmjuXRp.js → error-panel-BfF_Pl3q.js} +1 -1
  30. package/dist/assets/{file-explorer-panel-DW3BdMFp.js → file-explorer-panel-C6RCpRgm.js} +1 -1
  31. package/dist/assets/{file-icons-xucuZauP.js → file-icons-0zZkfGbI.js} +1 -1
  32. package/dist/assets/{floating-outline-2X-MQKSU.js → floating-outline-CNejeNGC.js} +1 -1
  33. package/dist/assets/{focus-DaKeoSx6.js → focus-CQRBseis.js} +1 -1
  34. package/dist/assets/{form-C5vg9S9o.js → form-B9Fj5Rl-.js} +1 -1
  35. package/dist/assets/formats-DzzQnJYt.js +1 -0
  36. package/dist/assets/{globals-DCdvUAk2.js → globals-DE7Q2ffe.js} +1 -1
  37. package/dist/assets/{home-page-4oOWwdL4.js → home-page-C8mwmLAs.js} +1 -1
  38. package/dist/assets/{hooks-CZT_TWa2.js → hooks-C8aiyK69.js} +1 -1
  39. package/dist/assets/{html-to-image-BgHw831z.js → html-to-image-BFwmkFZ4.js} +1 -1
  40. package/dist/assets/{index-CVpJvEAO.css → index-Bgbe24O9.css} +1 -1
  41. package/dist/assets/{index-CPEieVCj.js → index-bt3OH-Pk.js} +17 -17
  42. package/dist/assets/{kiosk-mode-BNqp-cFU.js → kiosk-mode-BO-KqM9l.js} +1 -1
  43. package/dist/assets/{layout-52MeytEk.js → layout-BEA77UDX.js} +1 -1
  44. package/dist/assets/{logs-panel-dWMS7IIv.js → logs-panel-BebwAaGv.js} +1 -1
  45. package/dist/assets/{markdown-renderer-MyhTrUey.js → markdown-renderer-CdEqa6lQ.js} +1 -1
  46. package/dist/assets/{mode-D_HXqDHH.js → mode-DSINUCzY.js} +1 -1
  47. package/dist/assets/{name-cell-input-CAAR5C2m.js → name-cell-input-DaDgZhjE.js} +1 -1
  48. package/dist/assets/{outline-panel-Bmfna9YR.js → outline-panel-DCpOiLnR.js} +1 -1
  49. package/dist/assets/{packages-panel-DKH34NxN.js → packages-panel-kOdMspq6.js} +1 -1
  50. package/dist/assets/{panels-jo8u0sPM.js → panels-BSQT0nmq.js} +1 -1
  51. package/dist/assets/{process-output-B2kGZ_VU.js → process-output-4ypD4fg7.js} +1 -1
  52. package/dist/assets/{readonly-python-code-Dz4GjF9D.js → readonly-python-code-CysvH2Zj.js} +1 -1
  53. package/dist/assets/run-page-BRdwXGaf.js +1 -0
  54. package/dist/assets/scratchpad-panel-DQQ_wRz5.js +1 -0
  55. package/dist/assets/session-panel-BACIy3wf.js +1 -0
  56. package/dist/assets/{snippets-panel-C0yfvEEg.js → snippets-panel-BjUFMiXc.js} +1 -1
  57. package/dist/assets/{state-CGu0LFDk.js → state-BqEQgvo3.js} +1 -1
  58. package/dist/assets/{switch-krcK9lRK.js → switch-JycgoJcn.js} +1 -1
  59. package/dist/assets/{tracing-3veLCmCp.js → tracing-1AoHNFA-.js} +1 -1
  60. package/dist/assets/{tracing-panel-KUJifV3W.js → tracing-panel-CrlCrmHo.js} +2 -2
  61. package/dist/assets/{useAddCell-_oR2xY1x.js → useAddCell-BSbQWv3q.js} +1 -1
  62. package/dist/assets/{useBoolean-D8-4no-l.js → useBoolean-Cm61eWz0.js} +1 -1
  63. package/dist/assets/{useCellActionButton-DNIW0rqj.js → useCellActionButton-DpdThmJR.js} +1 -1
  64. package/dist/assets/{useDeleteCell-BAuuakkK.js → useDeleteCell-DSpj4wDu.js} +1 -1
  65. package/dist/assets/{useDependencyPanelTab-ClmZIdnO.js → useDependencyPanelTab-1iAP2AMB.js} +1 -1
  66. package/dist/assets/{useNotebookActions-DhmD75et.js → useNotebookActions-CU14FoaT.js} +1 -1
  67. package/dist/assets/{useRunCells-BOsp_Hau.js → useRunCells-BSsgvk4y.js} +1 -1
  68. package/dist/assets/{useSplitCell-DfYEUeyE.js → useSplitCell-Ct7RykE3.js} +1 -1
  69. package/dist/assets/{tooltip-DLsts-7g.js → utils-BuPoTKhl.js} +3 -3
  70. package/dist/assets/vega-component-S1h0g70Q.js +1 -0
  71. package/dist/index.html +35 -35
  72. package/package.json +1 -1
  73. package/src/components/data-table/charts/lazy-chart.tsx +2 -0
  74. package/src/components/data-table/column-summary/column-summary.tsx +1 -0
  75. package/src/components/datasources/column-preview.tsx +1 -0
  76. package/src/components/editor/Output.tsx +2 -0
  77. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +6 -0
  78. package/src/components/editor/chrome/wrapper/__tests__/utils.test.ts +35 -0
  79. package/src/components/editor/chrome/wrapper/app-chrome.tsx +12 -14
  80. package/src/components/editor/chrome/wrapper/utils.ts +5 -1
  81. package/src/core/codemirror/reactive-references/__tests__/analyzer.test.ts +54 -0
  82. package/src/core/codemirror/reactive-references/analyzer.ts +14 -0
  83. package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +6 -3
  84. package/src/plugins/impl/vega/__tests__/utils.test.ts +36 -0
  85. package/src/plugins/impl/vega/utils.ts +14 -0
  86. package/src/plugins/impl/vega/vega-component.tsx +6 -7
  87. package/src/plugins/impl/vega/vega.css +1 -1
  88. package/dist/assets/ConnectedDataExplorerComponent-BrZvYzEX.js +0 -1
  89. package/dist/assets/command-palette-NBOgLsWz.js +0 -1
  90. package/dist/assets/context-aware-panel--8JnQtYo.js +0 -3
  91. package/dist/assets/formats-CmvHepzl.js +0 -1
  92. package/dist/assets/run-page-DQIGlYAL.js +0 -1
  93. package/dist/assets/scratchpad-panel-ClYOgTQp.js +0 -1
  94. package/dist/assets/session-panel-BYjloSxn.js +0 -1
  95. package/dist/assets/vega-component-D3vsTtly.js +0 -1
@@ -462,6 +462,7 @@ export function findReactiveVariables(options: {
462
462
  ): boolean {
463
463
  return (
464
464
  allVariableNames.has(varName) &&
465
+ !isPropertyAccess(cursor) &&
465
466
  !isKeywordArgumentName(cursor) &&
466
467
  !isAssignmentTarget(cursor)
467
468
  );
@@ -529,6 +530,19 @@ function isAssignmentTarget(cursor: TreeCursor): boolean {
529
530
  return false;
530
531
  }
531
532
 
533
+ /** Checks whether a `VariableName` is a property access (e.g. `tool` in `mcp.tool`). */
534
+ function isPropertyAccess(cursor: TreeCursor): boolean {
535
+ // Check if the previous sibling is a "." node, which means this
536
+ // VariableName is a property access rather than a standalone variable.
537
+ // This handles both MemberExpression (e.g. `obj.attr`) and Decorator
538
+ // (e.g. `@mcp.tool`) where the parser emits flat sibling nodes.
539
+ const temp = cursor.node.cursor();
540
+ if (temp.prevSibling() && temp.name === ".") {
541
+ return true;
542
+ }
543
+ return false;
544
+ }
545
+
532
546
  /**
533
547
  * Checks if the syntax tree contains any syntax errors.
534
548
  * If there are errors, we shouldn't show reactive variable highlighting.
@@ -17,6 +17,7 @@ import { cn } from "@/utils/cn";
17
17
  import { Objects } from "@/utils/objects";
18
18
  import { ErrorBanner } from "../common/error-banner";
19
19
  import { vegaLoadData } from "../vega/loader";
20
+ import { getContainerWidth } from "../vega/utils";
20
21
  import { ColumnSummary } from "./components/column-summary";
21
22
  import { QueryForm } from "./components/query-form";
22
23
  import type { SpecificEncoding } from "./encoding";
@@ -140,16 +141,18 @@ export const DataExplorerComponent = ({
140
141
  const responsiveSpec = makeResponsive(spec);
141
142
  // TODO: We can optimize by updating the data dynamically. https://github.com/vega/react-vega?tab=readme-ov-file#recipes
142
143
  const augmentedSpec = augmentSpecWithData(responsiveSpec, chartData);
143
- const isContainerWidth = responsiveSpec.width === "container";
144
144
 
145
145
  return (
146
146
  <div
147
147
  className={cn(
148
148
  "flex overflow-y-auto justify-center items-center flex-1 w-[90%]",
149
- isContainerWidth && "vega-container-width",
150
149
  )}
151
150
  >
152
- <VegaEmbed spec={augmentedSpec} options={chartOptions(theme)} />
151
+ <VegaEmbed
152
+ data-container-width={getContainerWidth(augmentedSpec)}
153
+ spec={augmentedSpec}
154
+ options={chartOptions(theme)}
155
+ />
153
156
  </div>
154
157
  );
155
158
  };
@@ -0,0 +1,36 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { describe, expect, it } from "vitest";
4
+ import { getContainerWidth } from "../utils";
5
+
6
+ describe("getContainerWidth", () => {
7
+ it('should return "container" when spec width is "container"', () => {
8
+ expect(getContainerWidth({ width: "container" })).toBe("container");
9
+ });
10
+
11
+ it("should return a numeric width", () => {
12
+ expect(getContainerWidth({ width: 500 })).toBe(500);
13
+ });
14
+
15
+ it("should return undefined when spec has no width", () => {
16
+ expect(getContainerWidth({ height: 300 })).toBeUndefined();
17
+ });
18
+
19
+ it("should return undefined for null", () => {
20
+ expect(getContainerWidth(null)).toBeUndefined();
21
+ });
22
+
23
+ it("should return undefined for undefined", () => {
24
+ expect(getContainerWidth(undefined)).toBeUndefined();
25
+ });
26
+
27
+ it("should return undefined for non-object values", () => {
28
+ expect(getContainerWidth("string")).toBeUndefined();
29
+ expect(getContainerWidth(42)).toBeUndefined();
30
+ expect(getContainerWidth(true)).toBeUndefined();
31
+ });
32
+
33
+ it("should return undefined when width is explicitly undefined", () => {
34
+ expect(getContainerWidth({ width: undefined })).toBeUndefined();
35
+ });
36
+ });
@@ -3,6 +3,20 @@
3
3
  import { Objects } from "@/utils/objects";
4
4
  import type { DataType, FieldTypes, VegaDataType } from "./vega-loader";
5
5
 
6
+ export type ContainerWidth = number | "container";
7
+
8
+ /**
9
+ * Get the container width from a VegaLite spec.
10
+ * @param spec - The VegaLite spec.
11
+ * @returns The container width.
12
+ */
13
+ export function getContainerWidth(spec: unknown): ContainerWidth | undefined {
14
+ if (typeof spec === "object" && spec !== null && "width" in spec) {
15
+ return spec.width as ContainerWidth | undefined;
16
+ }
17
+ return undefined;
18
+ }
19
+
6
20
  export function mergeAsArrays<T>(
7
21
  left: T | T[] | undefined,
8
22
  right: T | T[] | undefined,
@@ -27,6 +27,7 @@ import { makeSelectable } from "./make-selectable";
27
27
  import { getSelectionParamNames, ParamNames } from "./params";
28
28
  import { resolveVegaSpecData } from "./resolve-data";
29
29
  import type { VegaLiteSpec } from "./types";
30
+ import { getContainerWidth } from "./utils";
30
31
 
31
32
  // register arrow reader under type 'arrow'
32
33
  formats("arrow", arrow);
@@ -305,16 +306,14 @@ const LoadedVegaComponent = ({
305
306
  </Alert>
306
307
  )}
307
308
  <div
308
- className={cn(
309
- "relative",
310
- "width" in selectableSpec &&
311
- selectableSpec.width === "container" &&
312
- "vega-container-width",
313
- )}
309
+ className={cn("relative")}
314
310
  // Capture the pointer down event to prevent the parent from handling it
315
311
  onPointerDown={Events.stopPropagation()}
316
312
  >
317
- <div ref={vegaRef} />
313
+ <div
314
+ ref={vegaRef}
315
+ data-container-width={getContainerWidth(selectableSpec)}
316
+ />
318
317
  {renderHelpContent()}
319
318
  </div>
320
319
  </>
@@ -4,7 +4,7 @@
4
4
  max-width: 100%;
5
5
  }
6
6
 
7
- .vega-container-width .vega-embed {
7
+ .vega-embed[data-container-width="container"] {
8
8
  width: 100%;
9
9
  }
10
10
 
@@ -1 +0,0 @@
1
- import{a as Aa,n as q,r as sr,s as Xe,t as le}from"./chunk-LvLJmgfZ.js";import{c as Oa,m as ka,p as Ma,u as Lt}from"./useEvent-O0nX5vok.js";import{t as Ia}from"./react-Bj1aDYRI.js";import"./react-dom-CSu739Rf.js";import{t as Wt}from"./compiler-runtime-B3qBwwSJ.js";import{a as Ua,i as Fa,o as Da,r as _a,s as ja,t as Pa}from"./useLifecycle-CWjBWFMI.js";import{t as Ra}from"./isString-C4t9bzpo.js";import{r as $a,t as Ba}from"./tooltip-DLsts-7g.js";import{c as La,m as Wa}from"./useEventListener-BGihH8bs.js";import{t as qa}from"./invariant-CQUIhlu2.js";import{t as Ha}from"./jsx-runtime-icT_Ltz2.js";import{t as lr}from"./button-BZAv3veu.js";import{t as cr}from"./cn-BoaCR37F.js";import{t as Ga}from"./createReducer-DgaMD0B6.js";import{t as ur}from"./createLucideIcon-Cm-Z7dYr.js";import{t as dr}from"./spec-CYMZZDXr.js";import{n as za}from"./table-BCnp9gKC.js";import{t as Ya}from"./square-function-B006EYFX.js";import{t as Qa}from"./badge-hTpPIsMT.js";import{r as Va}from"./useTheme-CM9j8dgy.js";import"./Combination-CBJmtdux.js";import{a as fr,c as pr,i as Te,n as Ze,o as hr,r as We,s as et,t as tt}from"./select-Ch6m1k2G.js";import{t as Ka}from"./tooltip-CNmaER6z.js";import{t as Ja}from"./useDateFormatter-CpE7XQLs.js";import{t as Xa}from"./useNumberFormatter-DbDKSvEd.js";import"./vega-loader.browser-CZV6_g2i.js";import{i as Za,n as mr}from"./react-vega-BZav_-2n.js";import"./defaultLocale-OkOxlkkM.js";import"./defaultLocale-DK1MWd7f.js";import{n as eo}from"./error-banner-DQBz1e-2.js";import{n as to}from"./useAsyncData-D-4ifFXh.js";import{t as no}from"./label-SLjr8zzy.js";var ro=ur("chart-column-big",[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["rect",{x:"15",y:"5",width:"4",height:"12",rx:"1",key:"q8uenq"}],["rect",{x:"7",y:"8",width:"4",height:"9",rx:"1",key:"sr5ea"}]]),io=ur("list-ordered",[["path",{d:"M11 5h10",key:"1cz7ny"}],["path",{d:"M11 12h10",key:"1438ji"}],["path",{d:"M11 19h10",key:"11t30w"}],["path",{d:"M4 4h1v5",key:"10yrso"}],["path",{d:"M4 9h2",key:"r1h2o0"}],["path",{d:"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02",key:"xtkcd5"}]]),gr=Wt();function Ue(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]]);return n}var ao=le(((e,t)=>{var n=(function(){function r(p,f){return f!=null&&p instanceof f}var a;try{a=Map}catch{a=function(){}}var i;try{i=Set}catch{i=function(){}}var s;try{s=Promise}catch{s=function(){}}function c(p,f,g,y,v){typeof f=="object"&&(g=f.depth,y=f.prototype,v=f.includeNonEnumerable,f=f.circular);var b=[],x=[],S=typeof Buffer<"u";f===void 0&&(f=!0),g===void 0&&(g=1/0);function C(T,w){if(T===null)return null;if(w===0)return T;var N,D;if(typeof T!="object")return T;if(r(T,a))N=new a;else if(r(T,i))N=new i;else if(r(T,s))N=new s(function(pe,M){T.then(function(Y){pe(C(Y,w-1))},function(Y){M(C(Y,w-1))})});else if(c.__isArray(T))N=[];else if(c.__isRegExp(T))N=new RegExp(T.source,d(T)),T.lastIndex&&(N.lastIndex=T.lastIndex);else if(c.__isDate(T))N=new Date(T.getTime());else{if(S&&Buffer.isBuffer(T))return N=Buffer.allocUnsafe?Buffer.allocUnsafe(T.length):new Buffer(T.length),T.copy(N),N;r(T,Error)?N=Object.create(T):y===void 0?(D=Object.getPrototypeOf(T),N=Object.create(D)):(N=Object.create(y),D=y)}if(f){var k=b.indexOf(T);if(k!=-1)return x[k];b.push(T),x.push(N)}for(var I in r(T,a)&&T.forEach(function(pe,M){var Y=C(M,w-1),Ie=C(pe,w-1);N.set(Y,Ie)}),r(T,i)&&T.forEach(function(pe){var M=C(pe,w-1);N.add(M)}),T){var _;D&&(_=Object.getOwnPropertyDescriptor(D,I)),!(_&&_.set==null)&&(N[I]=C(T[I],w-1))}if(Object.getOwnPropertySymbols)for(var xe=Object.getOwnPropertySymbols(T),I=0;I<xe.length;I++){var X=xe[I],W=Object.getOwnPropertyDescriptor(T,X);W&&!W.enumerable&&!v||(N[X]=C(T[X],w-1),W.enumerable||Object.defineProperty(N,X,{enumerable:!1}))}if(v)for(var fe=Object.getOwnPropertyNames(T),I=0;I<fe.length;I++){var Ee=fe[I],W=Object.getOwnPropertyDescriptor(T,Ee);W&&W.enumerable||(N[Ee]=C(T[Ee],w-1),Object.defineProperty(N,Ee,{enumerable:!1}))}return N}return C(p,g)}c.clonePrototype=function(p){if(p===null)return null;var f=function(){};return f.prototype=p,new f};function h(p){return Object.prototype.toString.call(p)}c.__objToStr=h;function o(p){return typeof p=="object"&&h(p)==="[object Date]"}c.__isDate=o;function l(p){return typeof p=="object"&&h(p)==="[object Array]"}c.__isArray=l;function u(p){return typeof p=="object"&&h(p)==="[object RegExp]"}c.__isRegExp=u;function d(p){var f="";return p.global&&(f+="g"),p.ignoreCase&&(f+="i"),p.multiline&&(f+="m"),f}return c.__getRegExpFlags=d,c})();typeof t=="object"&&t.exports&&(t.exports=n)})),oo=le(((e,t)=>{var n=Array.isArray,r=Object.keys,a=Object.prototype.hasOwnProperty;t.exports=function i(s,c){if(s===c)return!0;if(s&&c&&typeof s=="object"&&typeof c=="object"){var h=n(s),o=n(c),l,u,d;if(h&&o){if(u=s.length,u!=c.length)return!1;for(l=u;l--!==0;)if(!i(s[l],c[l]))return!1;return!0}if(h!=o)return!1;var p=s instanceof Date,f=c instanceof Date;if(p!=f)return!1;if(p&&f)return s.getTime()==c.getTime();var g=s instanceof RegExp,y=c instanceof RegExp;if(g!=y)return!1;if(g&&y)return s.toString()==c.toString();var v=r(s);if(u=v.length,u!==r(c).length)return!1;for(l=u;l--!==0;)if(!a.call(c,v[l]))return!1;for(l=u;l--!==0;)if(d=v[l],!i(s[d],c[d]))return!1;return!0}return s!==s&&c!==c}})),yr=Xe(le(((e,t)=>{t.exports=function(n,r){r||(r={}),typeof r=="function"&&(r={cmp:r});var a=typeof r.cycles=="boolean"?r.cycles:!1,i=r.cmp&&(function(c){return function(h){return function(o,l){return c({key:o,value:h[o]},{key:l,value:h[l]})}}})(r.cmp),s=[];return(function c(h){if(h&&h.toJSON&&typeof h.toJSON=="function"&&(h=h.toJSON()),h!==void 0){if(typeof h=="number")return isFinite(h)?""+h:"null";if(typeof h!="object")return JSON.stringify(h);var o,l;if(Array.isArray(h)){for(l="[",o=0;o<h.length;o++)o&&(l+=","),l+=c(h[o])||"null";return l+"]"}if(h===null)return"null";if(s.indexOf(h)!==-1){if(a)return JSON.stringify("__cycle__");throw TypeError("Converting circular structure to JSON")}var u=s.push(h)-1,d=Object.keys(h).sort(i&&i(h));for(l="",o=0;o<d.length;o++){var p=d[o],f=c(h[p]);f&&(l&&(l+=","),l+=JSON.stringify(p)+":"+f)}return s.splice(u,1),"{"+l+"}"}})(n)}}))());oo(),ao();function Fe(e,t,n){return e.fields=t||[],e.fname=n,e}function qt(e){throw Error(e)}function Ht(e){var t=[],n=null,r=0,a=e.length,i="",s,c,h;e+="";function o(){t.push(i+e.substring(s,c)),i="",s=c+1}for(s=c=0;c<a;++c)if(h=e[c],h==="\\")i+=e.substring(s,c),s=++c;else if(h===n)o(),n=null,r=-1;else{if(n)continue;s===r&&h==='"'||s===r&&h==="'"?(s=c+1,n=h):h==="."&&!r?c>s?o():s=c+1:h==="["?(c>s&&o(),r=s=c+1):h==="]"&&(r||qt("Access path missing open bracket: "+e),r>0&&o(),r=0,s=c+1)}return r&&qt("Access path missing closing bracket: "+e),n&&qt("Access path missing closing quote: "+e),c>s&&(c++,o()),t}var nt=Array.isArray;function vr(e){return e===Object(e)}function Gt(e){return typeof e=="string"}function zt(e){return nt(e)?"["+e.map(zt)+"]":vr(e)||Gt(e)?JSON.stringify(e).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):e}function so(e,t){var n=Ht(e),r="return _["+n.map(zt).join("][")+"];";return Fe(Function("_",r),[e=n.length===1?n[0]:e],t||e)}var qe=[];so("id"),Fe(function(e){return e},qe,"identity"),Fe(function(){return 0},qe,"zero"),Fe(function(){return 1},qe,"one"),Fe(function(){return!0},qe,"true"),Fe(function(){return!1},qe,"false");function rt(e,t,n){var r=[t].concat([].slice.call(n));console[e](...r)}function lo(e,t){var n=e||0;return{level:function(r){return arguments.length?(n=+r,this):n},error:function(){return n>=1&&rt(t||"error","ERROR",arguments),this},warn:function(){return n>=2&&rt(t||"warn","WARN",arguments),this},info:function(){return n>=3&&rt(t||"log","INFO",arguments),this},debug:function(){return n>=4&&rt(t||"log","DEBUG",arguments),this}}}function Yt(e){return typeof e=="boolean"}function De(e){for(var t={},n=0,r=e.length;n<r;++n)t[e[n]]=!0;return t}Set.prototype.toJSON=function(){return`Set(${[...this].map(e=>(0,yr.default)(e)).join(",")})`};const Q=yr.default;function H(e,t){return e.indexOf(t)>-1}function co(e,t){let n=0;for(let[r,a]of e.entries())if(t(a,r,n++))return!0;return!1}const j=Object.keys;function uo(e){let t=e.replace(/\W/g,"_");return(e.match(/^\d+/)?"_":"")+t}function fo(e,t="datum"){return`${t}[${zt(Ht(e).join("."))}]`}function po(e){return`${Ht(e).map(t=>t.replace(".","\\.")).join("\\.")}`}function ho(...e){for(let t of e)if(t!==void 0)return t}function mo(e){return go(e)?e:`__${e}`}function go(e){return e.indexOf("__")===0}const Se="column",br="facet",xr="latitude",Er="longitude",Tr="latitude2",Sr="longitude2",ce="color",it="fill",at="stroke",ot="shape",He="size",st="opacity",lt="fillOpacity",ct="strokeOpacity",ut="strokeWidth",Qt="text",Nr="order",Cr="detail",wr="tooltip",Ar="href";var yo={x:1,y:1,x2:1,y2:1},Or={longitude:1,longitude2:1,latitude:1,latitude2:1};j(Or);var dt=Object.assign({},yo,Or,{color:1,fill:1,stroke:1,opacity:1,fillOpacity:1,strokeOpacity:1,strokeWidth:1,size:1,shape:1,order:1,text:1,detail:1,key:1,tooltip:1,href:1});function ft(e){return e==="color"||e==="fill"||e==="stroke"}var kr={row:1,column:1,facet:1};j(kr);var Ge=Object.assign({},dt,kr);const vo=j(Ge);var{order:jd,detail:Pd}=Ge,bo=Ue(Ge,["order","detail"]),{order:Rd,detail:$d,row:Bd,column:Ld,facet:Wd}=Ge,xo=Ue(Ge,["order","detail","row","column","facet"]);j(bo),j(xo),j(dt);var{x:qd,y:Hd,x2:Gd,y2:zd,latitude:Yd,longitude:Qd,latitude2:Vd,longitude2:Kd}=dt,Vt=Ue(dt,["x","y","x2","y2","latitude","longitude","latitude2","longitude2"]);const Mr=j(Vt);var Ir={x:1,y:1};j(Ir);var{text:Jd,tooltip:Xd,href:Zd,detail:ef,key:tf,order:nf}=Vt,Ur=Ue(Vt,["text","tooltip","href","detail","key","order"]);j(Ur);var Fr=Object.assign({},Ir,Ur);j(Fr);function Eo(e){return!!Fr[e]}function To(e,t){return No(e)[t]}var Kt={area:"always",bar:"always",circle:"always",geoshape:"always",line:"always",rule:"always",point:"always",rect:"always",square:"always",trail:"always",text:"always",tick:"always"},{geoshape:rf}=Kt,So=Ue(Kt,["geoshape"]);function No(e){switch(e){case ce:case it:case at:case Cr:case"key":case wr:case Ar:case Nr:case st:case lt:case ct:case ut:case br:case"row":case Se:return Kt;case"x":case"y":case xr:case Er:return So;case"x2":case"y2":case Tr:case Sr:return{rule:"always",bar:"always",rect:"always",area:"always",circle:"binned",point:"binned",square:"binned",tick:"binned",line:"binned",trail:"binned"};case He:return{point:"always",tick:"always",rule:"always",circle:"always",square:"always",bar:"always",text:"always",line:"always",trail:"always"};case ot:return{point:"always",geoshape:"always"};case Qt:return{text:"always"}}}function Jt(e){switch(e){case"x":case"y":case He:case ut:case st:case lt:case ct:case"x2":case"y2":return;case br:case"row":case Se:case ot:case Qt:case wr:case Ar:return"discrete";case ce:case it:case at:return"flexible";case xr:case Er:case Tr:case Sr:case Cr:case"key":case Nr:return}throw Error("rangeType not implemented for "+e)}var Dr={orient:1,bandPosition:1,domain:1,domainColor:1,domainDash:1,domainDashOffset:1,domainOpacity:1,domainWidth:1,format:1,formatType:1,grid:1,gridColor:1,gridDash:1,gridDashOffset:1,gridOpacity:1,gridWidth:1,labelAlign:1,labelAngle:1,labelBaseline:1,labelBound:1,labelColor:1,labelFlush:1,labelFlushOffset:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labels:1,labelSeparation:1,maxExtent:1,minExtent:1,offset:1,position:1,tickColor:1,tickCount:1,tickDash:1,tickDashOffset:1,tickExtra:1,tickMinStep:1,tickOffset:1,tickOpacity:1,tickRound:1,ticks:1,tickSize:1,tickWidth:1,title:1,titleAlign:1,titleAnchor:1,titleAngle:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titlePadding:1,titleX:1,titleY:1,values:1,zindex:1},Co=Object.assign({},Dr,{encoding:1});j(Object.assign({gridScale:1,scale:1},Dr,{encode:1}));const _r=j(Co);var jr={clipHeight:1,columnPadding:1,columns:1,cornerRadius:1,direction:1,fillColor:1,format:1,formatType:1,gradientLength:1,gradientOpacity:1,gradientStrokeColor:1,gradientStrokeWidth:1,gradientThickness:1,gridAlign:1,labelAlign:1,labelBaseline:1,labelColor:1,labelFont:1,labelFontSize:1,labelFontStyle:1,labelFontWeight:1,labelLimit:1,labelOffset:1,labelOpacity:1,labelOverlap:1,labelPadding:1,labelSeparation:1,legendX:1,legendY:1,offset:1,orient:1,padding:1,rowPadding:1,strokeColor:1,symbolDash:1,symbolDashOffset:1,symbolFillColor:1,symbolOffset:1,symbolOpacity:1,symbolSize:1,symbolStrokeColor:1,symbolStrokeWidth:1,symbolType:1,tickCount:1,tickMinStep:1,title:1,titleAlign:1,titleAnchor:1,titleBaseline:1,titleColor:1,titleFont:1,titleFontSize:1,titleFontStyle:1,titleFontWeight:1,titleLimit:1,titleOpacity:1,titleOrient:1,titlePadding:1,type:1,values:1,zindex:1},wo=Object.assign({},jr,{opacity:1,shape:1,stroke:1,fill:1,size:1,strokeWidth:1,encode:1});const Pr=j(jr);j(wo);var Ao=sr({BAR_WITH_POINT_SCALE_AND_RANGESTEP_NULL:()=>ls,CANNOT_FIX_RANGE_STEP_WITH_FIT:()=>Mo,CANNOT_UNION_CUSTOM_DOMAIN_WITH_FIELD_DOMAIN:()=>ds,CONCAT_CANNOT_SHARE_AXIS:()=>$o,FIT_NON_SINGLE:()=>ko,INVALID_CHANNEL_FOR_AXIS:()=>Os,INVALID_SPEC:()=>Oo,LINE_WITH_VARYING_SIZE:()=>ns,MORE_THAN_ONE_SORT:()=>As,NO_FIELDS_NEEDS_AS:()=>Ho,NO_INIT_SCALE_BINDINGS:()=>jo,REPEAT_CANNOT_SHARE_AXIS:()=>Bo,SCALE_BINDINGS_CONTINUOUS:()=>_o,UNABLE_TO_MERGE_DOMAINS:()=>ws,cannotApplySizeToNonOrientedMark:()=>gs,cannotProjectOnChannelWithoutField:()=>Io,cannotStackNonLinearScale:()=>Ms,cannotStackRangedMark:()=>ks,cannotUseScalePropertyWithNonColor:()=>fs,channelRequiredForBinned:()=>Bs,columnsNotSupportByRowCol:()=>Ro,dayReplacedWithDate:()=>Fs,differentParse:()=>Wo,discreteChannelCannotEncode:()=>ss,domainRequiredForThresholdScale:()=>Ls,domainSortDropped:()=>Cs,droppedDay:()=>Ds,droppingColor:()=>Zo,emptyFieldDef:()=>es,encodingOverridden:()=>Go,errorBand1DNotSupport:()=>$s,errorBarCenterAndExtentAreNotNeeded:()=>_s,errorBarCenterIsNotNeeded:()=>Rs,errorBarCenterIsUsedWithWrongExtent:()=>js,errorBarContinuousAxisHasCustomizedAggregate:()=>Ps,facetChannelDropped:()=>os,facetChannelShouldBeDiscrete:()=>as,incompatibleChannel:()=>rs,independentScaleMeansIndependentGuide:()=>Ns,invalidAggregate:()=>Jo,invalidEncodingChannel:()=>is,invalidFieldType:()=>Qo,invalidFieldTypeForCountAggregate:()=>Ko,invalidTimeUnit:()=>Us,invalidTransformIgnored:()=>qo,latLongDeprecated:()=>ts,lineWithRange:()=>cs,mergeConflictingDomainProperty:()=>Ss,mergeConflictingProperty:()=>Ts,missingFieldType:()=>Xo,nearestNotSupportForContinuous:()=>Uo,noSuchRepeatedValue:()=>Po,nonZeroScaleUsedWithLengthMark:()=>Vo,orientOverridden:()=>us,primitiveChannelDef:()=>Yo,projectionOverridden:()=>zo,rangeStepDropped:()=>ys,scalePropertyNotWorkWithScaleType:()=>xs,scaleTypeNotWorkWithChannel:()=>vs,scaleTypeNotWorkWithFieldDef:()=>bs,scaleTypeNotWorkWithMark:()=>Es,selectionNotFound:()=>Do,selectionNotSupported:()=>Fo,stackNonSummativeAggregate:()=>Is,unaggregateDomainHasNoEffectForRawField:()=>ps,unaggregateDomainWithNonSharedDomainOp:()=>hs,unaggregatedDomainWithLogScale:()=>ms,unrecognizedParse:()=>Lo},1);const Oo="Invalid spec",ko='Autosize "fit" only works for single views and layered views.',Mo='Cannot use a fixed value of "rangeStep" when "autosize" is "fit".';function Io(e){return`Cannot project a selection on encoding channel "${e}", which has no field.`}function Uo(e){return`The "nearest" transform is not supported for ${e} marks.`}function Fo(e){return`Selection not supported for ${e} yet`}function Do(e){return`Cannot find a selection named "${e}"`}const _o="Scale bindings are currently only supported for scales with unbinned, continuous domains.",jo="Selections bound to scales cannot be separately initialized.";function Po(e){return`Unknown repeated value "${e}".`}function Ro(e){return`The "columns" property cannot be used when "${e}" has nested row/column.`}const $o="Axes cannot be shared in concatenated views yet (https://github.com/vega/vega-lite/issues/2415).",Bo="Axes cannot be shared in repeated views yet (https://github.com/vega/vega-lite/issues/2415).";function Lo(e){return`Unrecognized parse "${e}".`}function Wo(e,t,n){return`An ancestor parsed field "${e}" as ${n} but a child wants to parse the field as ${t}.`}function qo(e){return`Ignoring an invalid transform: ${Q(e)}.`}const Ho='If "from.fields" is not specified, "as" has to be a string that specifies the key to be used for the data from the secondary source.';function Go(e){return`Layer's shared ${e.join(",")} channel ${e.length===1?"is":"are"} overriden`}function zo(e){let{parentProjection:t,projection:n}=e;return`Layer's shared projection ${Q(t)} is overridden by a child projection ${Q(n)}.`}function Yo(e,t,n){return`Channel ${e} is a ${t}. Converted to {value: ${Q(n)}}.`}function Qo(e){return`Invalid field type "${e}"`}function Vo(e,t,n){return`A ${n.scaleType?`${n.scaleType} scale`:n.zeroFalse?"scale with zero=false":"scale with custom domain that excludes zero"} is used to encode ${e}'s ${t}. This can be misleading as the ${t==="x"?"width":"height"} of the ${e} can be arbitrary based on the scale domain. You may want to use point mark instead.`}function Ko(e,t){return`Invalid field type "${e}" for aggregate: "${t}", using "quantitative" instead.`}function Jo(e){return`Invalid aggregation operator "${e}"`}function Xo(e,t){return`Missing type for channel "${e}", using "${t}" instead.`}function Zo(e,t){let{fill:n,stroke:r}=t;return`Dropping color ${e} as the plot also has `+(n&&r?"fill and stroke":n?"fill":"stroke")}function es(e,t){return`Dropping ${Q(e)} from channel "${t}" since it does not contain data field or value.`}function ts(e,t,n){return`${e}-encoding with type ${t} is deprecated. Replacing with ${n}-encoding.`}const ns="Line marks cannot encode size with a non-groupby field. You may want to use trail marks instead.";function rs(e,t,n){return`${e} dropped as it is incompatible with "${t}"${n?` when ${n}`:""}.`}function is(e){return`${e}-encoding is dropped as ${e} is not a valid encoding channel.`}function as(e){return`${e} encoding should be discrete (ordinal / nominal / binned).`}function os(e){return`Facet encoding dropped as ${e.join(" and ")} ${e.length>1?"are":"is"} also specified.`}function ss(e,t){return`Using discrete channel "${e}" to encode "${t}" field can be misleading as it does not encode ${t==="ordinal"?"order":"magnitude"}.`}const ls="Bar mark should not be used with point scale when rangeStep is null. Please use band scale instead.";function cs(e,t){return`Line mark is for continuous lines and thus cannot be used with ${e&&t?"x2 and y2":e?"x2":"y2"}. We will use the rule mark (line segments) instead.`}function us(e,t){return`Specified orient "${e}" overridden with "${t}"`}const ds="custom domain scale cannot be unioned with default field-based domain";function fs(e){return`Cannot use the scale property "${e}" with non-color channel.`}function ps(e){return`Using unaggregated domain with raw field has no effect (${Q(e)}).`}function hs(e){return`Unaggregated domain not applicable for "${e}" since it produces values outside the origin domain of the source data.`}function ms(e){return`Unaggregated domain is currently unsupported for log scale (${Q(e)}).`}function gs(e){return`Cannot apply size to non-oriented mark "${e}".`}function ys(e){return`rangeStep for "${e}" is dropped as top-level ${e==="x"?"width":"height"} is provided.`}function vs(e,t,n){return`Channel "${e}" does not work with "${t}" scale. We are using "${n}" scale instead.`}function bs(e,t){return`FieldDef does not work with "${e}" scale. We are using "${t}" scale instead.`}function xs(e,t,n){return`${n}-scale's "${t}" is dropped as it does not work with ${e} scale.`}function Es(e,t){return`Scale type "${t}" does not work with mark "${e}".`}function Ts(e,t,n,r){return`Conflicting ${t.toString()} property "${e.toString()}" (${Q(n)} and ${Q(r)}). Using ${Q(n)}.`}function Ss(e,t,n,r){return`Conflicting ${t.toString()} property "${e.toString()}" (${Q(n)} and ${Q(r)}). Using the union of the two domains.`}function Ns(e){return`Setting the scale to be independent for "${e}" means we also have to set the guide (axis or legend) to be independent.`}function Cs(e){return`Dropping sort property ${Q(e)} as unioned domains only support boolean or op 'count'.`}const ws="Unable to merge domains",As="Domains that should be unioned has conflicting sort properties. Sort will be set to true.",Os="Invalid channel for axis.";function ks(e){return`Cannot stack "${e}" if there is already "${e}2"`}function Ms(e){return`Cannot stack non-linear scale (${e})`}function Is(e){return`Stacking is applied even though the aggregate function is non-summative ("${e}")`}function Us(e,t){return`Invalid ${e}: ${Q(t)}`}function Fs(e){return`Time unit "${e}" is not supported. We are replacing it with ${e.replace("day","date")}.`}function Ds(e){return`Dropping day from datetime ${Q(e)} as day cannot be combined with other units.`}function _s(e,t){return`${t?"extent ":""}${t&&e?"and ":""}${e?"center ":""}${t&&e?"are ":"is "}not needed when data are aggregated.`}function js(e,t,n){return`${e} is not usually used with ${t} for ${n}.`}function Ps(e,t){return`Continuous axis should not have customized aggregation function ${e}; ${t} already agregates the axis.`}function Rs(e,t){return`Center is not needed to be specified in ${t} when extent is ${e}.`}function $s(e){return`1D error band does not support ${e}`}function Bs(e){return`Channel ${e} is required for "binned" bin`}function Ls(e){return`Domain for ${e} is required for threshold scale`}const Z=Ao;var Rr=lo(2);function me(...e){Rr.warn.apply(Rr,arguments)}const Ws={quantitative:1,ordinal:1,temporal:1,nominal:1,geojson:1},ee="quantitative",Ne="ordinal",ge="temporal",Ce="nominal";function qs(e){if(e)switch(e=e.toLowerCase(),e){case"q":case ee:return"quantitative";case"t":case ge:return"temporal";case"o":case Ne:return"ordinal";case"n":case Ce:return"nominal";case"geojson":return"geojson"}}var F;(function(e){e.LINEAR="linear",e.LOG="log",e.POW="pow",e.SQRT="sqrt",e.SYMLOG="symlog",e.TIME="time",e.UTC="utc",e.QUANTILE="quantile",e.QUANTIZE="quantize",e.THRESHOLD="threshold",e.BIN_ORDINAL="bin-ordinal",e.ORDINAL="ordinal",e.POINT="point",e.BAND="band"})(F||(F={}));const Hs=j({linear:"numeric",log:"numeric",pow:"numeric",sqrt:"numeric",symlog:"numeric",time:"time",utc:"time",ordinal:"ordinal","bin-ordinal":"bin-ordinal",point:"ordinal-position",band:"ordinal-position",quantile:"discretizing",quantize:"discretizing",threshold:"discretizing"}),$r=["linear","log","pow","sqrt","symlog","time","utc"];var Gs=De($r),zs=De(["quantile","quantize","threshold"]),Ys=De($r.concat(["quantile","quantize","threshold"])),Qs=De(["ordinal","bin-ordinal","point","band"]);function we(e){return e in Qs}function Vs(e){return e in Ys}function _e(e){return e in Gs}function Ks(e){return e in zs}var Xt={type:1,domain:1,align:1,range:1,rangeStep:1,scheme:1,bins:1,reverse:1,round:1,clamp:1,nice:1,base:1,exponent:1,constant:1,interpolate:1,zero:1,padding:1,paddingInner:1,paddingOuter:1};const Br=j(Xt);var{type:af,domain:of,range:sf,rangeStep:lf,scheme:cf}=Xt;j(Ue(Xt,["type","domain","range","rangeStep","scheme"])),Xs();function Zt(e,t){switch(t){case"type":case"domain":case"reverse":case"range":return!0;case"scheme":case"interpolate":return!H(["point","band","identity"],e);case"bins":return!H(["point","band","identity","ordinal"],e);case"round":return _e(e)||e==="band"||e==="point";case"padding":return _e(e)||H(["point","band"],e);case"paddingOuter":case"rangeStep":case"align":return H(["point","band"],e);case"paddingInner":return e==="band";case"clamp":return _e(e);case"nice":return _e(e)||e==="quantize"||e==="threshold";case"exponent":return e==="pow";case"base":return e==="log";case"constant":return e==="symlog";case"zero":return Vs(e)&&!H(["log","time","utc","threshold","quantile"],e)}}function Js(e,t){switch(t){case"interpolate":case"scheme":return ft(e)?void 0:Z.cannotUseScalePropertyWithNonColor(e);case"align":case"type":case"bins":case"domain":case"range":case"base":case"exponent":case"constant":case"nice":case"padding":case"paddingInner":case"paddingOuter":case"rangeStep":case"reverse":case"round":case"clamp":case"zero":return}}function Lr(e,t){return H(["ordinal","nominal"],t)?e===void 0||we(e):t==="temporal"?H([F.TIME,F.UTC,void 0],e):t==="quantitative"?H([F.LOG,F.POW,F.SQRT,F.SYMLOG,F.QUANTILE,F.QUANTIZE,F.THRESHOLD,F.LINEAR,void 0],e):!0}function Wr(e,t){switch(e){case"x":case"y":return _e(t)||H(["band","point"],t);case He:case ut:case st:case lt:case ct:return _e(t)||Ks(t)||H(["band","point"],t);case ce:case it:case at:return t!=="band";case ot:return t==="ordinal"}return!1}function Xs(){let e={};for(let t of vo)for(let n of j(Ws))for(let r of Hs){let a=Zs(t,n);Wr(t,r)&&Lr(r,n)&&(e[a]=e[a]||[],e[a].push(r))}return e}function Zs(e,t){return e+"_"+t}var te=le(((e,t)=>{var n=t.exports,r="__name__";n.namedfunc=function(o,l){return l[r]=o,l},n.name=function(o){return o==null?null:o[r]},n.identity=function(o){return o},n.true=n.namedfunc("true",function(){return!0}),n.false=n.namedfunc("false",function(){return!1}),n.duplicate=function(o){return JSON.parse(JSON.stringify(o))},n.equal=function(o,l){return JSON.stringify(o)===JSON.stringify(l)},n.extend=function(o){for(var l,u,d=1,p=arguments.length;d<p;++d)for(u in l=arguments[d],l)o[u]=l[u];return o},n.length=function(o){return o!=null&&o.length!=null?o.length:null},n.keys=function(o){var l=[],u;for(u in o)l.push(u);return l},n.vals=function(o){var l=[],u;for(u in o)l.push(o[u]);return l},n.toMap=function(o,l){return(l=n.$(l))?o.reduce(function(u,d){return u[l(d)]=1,u},{}):o.reduce(function(u,d){return u[d]=1,u},{})},n.keystr=function(o){var l=o.length;if(!l)return"";for(var u=String(o[0]),d=1;d<l;++d)u+="|"+String(o[d]);return u};var a=Object.prototype.toString;n.isObject=function(o){return o===Object(o)},n.isFunction=function(o){return a.call(o)==="[object Function]"},n.isString=function(o){return typeof value=="string"||a.call(o)==="[object String]"},n.isArray=Array.isArray||function(o){return a.call(o)==="[object Array]"},n.isNumber=function(o){return typeof o=="number"||a.call(o)==="[object Number]"},n.isBoolean=function(o){return o===!0||o===!1||a.call(o)=="[object Boolean]"},n.isDate=function(o){return a.call(o)==="[object Date]"},n.isValid=function(o){return o!=null&&o===o},n.isBuffer=typeof Buffer=="function"&&Buffer.isBuffer||n.false,n.number=function(o){return o==null||o===""?null:+o},n.boolean=function(o){return o==null||o===""?null:o==="false"?!1:!!o},n.date=function(o,l){var u=l||Date;return o==null||o===""?null:u.parse(o)},n.array=function(o){return o==null?[]:n.isArray(o)?o:[o]},n.str=function(o){return n.isArray(o)?"["+o.map(n.str)+"]":n.isObject(o)||n.isString(o)?JSON.stringify(o).replace("\u2028","\\u2028").replace("\u2029","\\u2029"):o};var i=/\[(.*?)\]|[^.\[]+/g;n.field=function(o){return String(o).match(i).map(function(l){return l[0]==="["?l[1]!=="'"&&l[1]!=='"'?l.slice(1,-1):l.slice(2,-2).replace(/\\(["'])/g,"$1"):l})},n.accessor=function(o){return o==null||n.isFunction(o)?o:n.namedfunc(o,Function("x","return x["+n.field(o).map(n.str).join("][")+"];"))},n.$=n.accessor,n.mutator=function(o){var l;return n.isString(o)&&(l=n.field(o)).length>1?function(u,d){for(var p=0;p<l.length-1;++p)u=u[l[p]];u[l[p]]=d}:function(u,d){u[o]=d}},n.$func=function(o,l){return function(u){u=n.$(u)||n.identity;var d=o+(n.name(u)?"_"+n.name(u):"");return n.namedfunc(d,function(p){return l(u(p))})}},n.$valid=n.$func("valid",n.isValid),n.$length=n.$func("length",n.length),n.$in=function(o,l){o=n.$(o);var u=n.isArray(l)?n.toMap(l):l;return function(d){return!!u[o(d)]}},n.comparator=function(o){var l=[];return o===void 0&&(o=[]),o=n.array(o).map(function(u){var d=1;return u[0]==="-"?(d=-1,u=u.slice(1)):u[0]==="+"&&(d=1,u=u.slice(1)),l.push(d),n.accessor(u)}),function(u,d){var p,f,g,y;for(p=0,f=o.length;p<f;++p)if(g=o[p],y=n.cmp(g(u),g(d)),y)return y*l[p];return 0}},n.cmp=function(o,l){return(o<l||o==null)&&l!=null?-1:(o>l||l==null)&&o!=null?1:(l=l instanceof Date?+l:l,(o=o instanceof Date?+o:o)!==o&&l===l?-1:l!==l&&o===o?1:0)},n.numcmp=function(o,l){return o-l},n.stablesort=function(o,l,u){var d=o.reduce(function(p,f,g){return p[u(f)]=g,p},{});return o.sort(function(p,f){var g=l(p),y=l(f);return g<y?-1:g>y?1:d[u(p)]-d[u(f)]}),o},n.permute=function(o){for(var l=o.length,u,d;l;)d=Math.floor(Math.random()*l--),u=o[l],o[l]=o[d],o[d]=u},n.pad=function(o,l,u,d){d||(d=" ");var p=l-o.length;if(p<=0)return o;switch(u){case"left":return s(p,d)+o;case"middle":case"center":return s(Math.floor(p/2),d)+o+s(Math.ceil(p/2),d);default:return o+s(p,d)}};function s(o,l){var u="",d;for(d=0;d<o;++d)u+=l;return u}n.truncate=function(o,l,u,d,p){var f=o.length;if(f<=l)return o;p=p===void 0?"\u2026":String(p);var g=Math.max(0,l-p.length);switch(u){case"left":return p+(d?c(o,g,1):o.slice(f-g));case"middle":case"center":var y=Math.ceil(g/2),v=Math.floor(g/2);return(d?c(o,y):o.slice(0,y))+p+(d?c(o,v,1):o.slice(f-v));default:return(d?c(o,g):o.slice(0,g))+p}};function c(o,l,u){var d=0,p=o.split(h);return o=u?(p=p.reverse()).filter(function(f){return d+=f.length,d<=l}).reverse():p.filter(function(f){return d+=f.length,d<=l}),o.length?o.join("").trim():p[0].slice(0,l)}var h=/([\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u2028\u2029\u3000\uFEFF])/})),qr=te(),U=te();function K(e,t){return e.indexOf(t)!==-1}function ae(e,t){for(let n=0;n<e.length;n++)if(!t(e[n],n))return!1;return!0}function G(e,t,n){if(e.forEach)e.forEach.call(n,t);else for(let r in e)t.call(n,e[r],r,e)}function ue(e,t){let n=0,r;for(r in e)if(t(e[r],r,n++))return!0;return!1}function el(e,t){return e.filter(function(n){return!K(t,n)})}function tl(e){return Object.keys(e)}function oe(e){return!!e.parent}var Hr={channel:1,aggregate:1,autoCount:1,bin:1,timeUnit:1,hasFn:1,sort:1,stack:1,field:1,type:1,format:1,scale:1,axis:1,legend:1,value:1};const en=tl(Hr);function nl(e){return e in Hr}var rl={bin:1,scale:1,sort:1,axis:1,legend:1};function tn(e){return rl[e]}const il=["maxbins","divide","extent","base","step","steps","minstep"],al=["field","op","order"];var Gr=il.map(e=>({parent:"bin",child:e}));const nn=al.map(e=>({parent:"sort",child:e})),pt=Br.map(e=>({parent:"scale",child:e}));var zr=_r.map(e=>({parent:"axis",child:e})),Yr=Pr.map(e=>({parent:"legend",child:e}));const ht=[].concat(Gr,nn,pt,zr,Yr),Qr=["width","height","background","padding","title"];var Vr=".";function mt(e){return oe(e)?e.parent+Vr+e.child:e}function ol(e){let t=e.split(Vr);if(t.length===1)return e;if(t.length===2)return{parent:t[0],child:t[1]};throw"Invalid property key with "+t.length+" dots: "+e}var sl=ht.reduce((e,t)=>(e[t.parent]=e[t.parent]||[],e[t.parent][t.child]=t,e),{});function de(e,t){return(sl[e]||{})[t]}function Kr(e){return nl(e)||oe(e)}const ll=[].concat(en,ht),Jr=["type","field","bin","timeUnit","aggregate","autoCount","channel","mark","stack","scale","sort","axis","legend"].concat(Gr,pt,zr,Yr,nn);var m;(function(e){e.MARK="mark",e.TRANSFORM="transform",e.STACK="stack",e.FORMAT="format",e.CHANNEL="channel",e.AGGREGATE="aggregate",e.AUTOCOUNT="autoCount",e.BIN="bin",e.HAS_FN="hasFn",e.TIMEUNIT="timeUnit",e.FIELD="field",e.TYPE="type",e.SORT="sort",e.SCALE="scale",e.AXIS="axis",e.LEGEND="legend",e.WIDTH="width",e.HEIGHT="height",e.BACKGROUND="background",e.PADDING="padding",e.TITLE="title"})(m||(m={}));const ze="area",gt="line",Ye="point",rn="rect",an="rule",yt="text",vt="tick",on="circle",sn="square";var cl={area:1,bar:1,line:1,point:1,text:1,tick:1,trail:1,rect:1,geoshape:1,rule:1,circle:1,square:1};function ul(e){return H(["line","area","trail"],e)}const dl=j(cl);function fl(e){return e.type}De(dl),["january","february","march","april","may","june","july","august","september","october","november","december"].map(e=>e.substr(0,3)),["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].map(e=>e.substr(0,3));var B;(function(e){e.YEAR="year",e.MONTH="month",e.DAY="day",e.DATE="date",e.HOURS="hours",e.MINUTES="minutes",e.SECONDS="seconds",e.MILLISECONDS="milliseconds",e.YEARMONTH="yearmonth",e.YEARMONTHDATE="yearmonthdate",e.YEARMONTHDATEHOURS="yearmonthdatehours",e.YEARMONTHDATEHOURSMINUTES="yearmonthdatehoursminutes",e.YEARMONTHDATEHOURSMINUTESSECONDS="yearmonthdatehoursminutesseconds",e.MONTHDATE="monthdate",e.MONTHDATEHOURS="monthdatehours",e.HOURSMINUTES="hoursminutes",e.HOURSMINUTESSECONDS="hoursminutesseconds",e.MINUTESSECONDS="minutesseconds",e.SECONDSMILLISECONDS="secondsmilliseconds",e.QUARTER="quarter",e.YEARQUARTER="yearquarter",e.QUARTERMONTH="quartermonth",e.YEARQUARTERMONTH="yearquartermonth",e.UTCYEAR="utcyear",e.UTCMONTH="utcmonth",e.UTCDAY="utcday",e.UTCDATE="utcdate",e.UTCHOURS="utchours",e.UTCMINUTES="utcminutes",e.UTCSECONDS="utcseconds",e.UTCMILLISECONDS="utcmilliseconds",e.UTCYEARMONTH="utcyearmonth",e.UTCYEARMONTHDATE="utcyearmonthdate",e.UTCYEARMONTHDATEHOURS="utcyearmonthdatehours",e.UTCYEARMONTHDATEHOURSMINUTES="utcyearmonthdatehoursminutes",e.UTCYEARMONTHDATEHOURSMINUTESSECONDS="utcyearmonthdatehoursminutesseconds",e.UTCMONTHDATE="utcmonthdate",e.UTCMONTHDATEHOURS="utcmonthdatehours",e.UTCHOURSMINUTES="utchoursminutes",e.UTCHOURSMINUTESSECONDS="utchoursminutesseconds",e.UTCMINUTESSECONDS="utcminutesseconds",e.UTCSECONDSMILLISECONDS="utcsecondsmilliseconds",e.UTCQUARTER="utcquarter",e.UTCYEARQUARTER="utcyearquarter",e.UTCQUARTERMONTH="utcquartermonth",e.UTCYEARQUARTERMONTH="utcyearquartermonth"})(B||(B={}));var ln={year:1,quarter:1,month:1,day:1,date:1,hours:1,minutes:1,seconds:1,milliseconds:1};const Xr=j(ln);function pl(e){return!!ln[e]}var cn={utcyear:1,utcquarter:1,utcmonth:1,utcday:1,utcdate:1,utchours:1,utcminutes:1,utcseconds:1,utcmilliseconds:1};function hl(e){return!!cn[e]}var ml={yearquarter:1,yearquartermonth:1,yearmonth:1,yearmonthdate:1,yearmonthdatehours:1,yearmonthdatehoursminutes:1,yearmonthdatehoursminutesseconds:1,quartermonth:1,monthdate:1,monthdatehours:1,hoursminutes:1,hoursminutesseconds:1,minutesseconds:1,secondsmilliseconds:1},Zr={utcyearquarter:1,utcyearquartermonth:1,utcyearmonth:1,utcyearmonthdate:1,utcyearmonthdatehours:1,utcyearmonthdatehoursminutes:1,utcyearmonthdatehoursminutesseconds:1,utcquartermonth:1,utcmonthdate:1,utcmonthdatehours:1,utchoursminutes:1,utchoursminutesseconds:1,utcminutesseconds:1,utcsecondsmilliseconds:1},gl=Object.assign({},cn,Zr);function yl(e){return!!gl[e]}var ei=Object.assign({},ln,cn,ml,Zr);j(ei);function vl(e){return!!ei[e]}var bl={year:"setFullYear",month:"setMonth",date:"setDate",hours:"setHours",minutes:"setMinutes",seconds:"setSeconds",milliseconds:"setMilliseconds",quarter:null,day:null};function xl(e,t){let n=yl(e),r=n?new Date(Date.UTC(1972,0,1,0,0,0,0)):new Date(1972,0,1,0,0,0,0);for(let a of Xr)if(ni(e,a))switch(a){case B.DAY:throw Error("Cannot convert to TimeUnits containing 'day'");case B.QUARTER:{let{getDateMethod:i,setDateMethod:s}=ti("month",n);r[s](Math.floor(t[i]()/3)*3);break}default:{let{getDateMethod:i,setDateMethod:s}=ti(a,n);r[s](t[i]())}}return r}function ti(e,t){let n=bl[e];return{setDateMethod:t?"setUTC"+n.substr(3):n,getDateMethod:"get"+(t?"UTC":"")+n.substr(3)}}function ni(e,t){let n=e.indexOf(t);return n>-1&&(t!==B.SECONDS||n===0||e.charAt(n-1)!=="i")}function A(e){return bt(e)||El(e)}function bt(e){return e==="?"}function El(e){return e!==void 0&&e!=null&&(!!e.enum||!!e.name)&&!(0,qr.isArray)(e)}function un(e,t,n){return(0,U.extend)({},{name:t,enum:n},e==="?"?{}:e)}function dn(e){let t={},n={};for(let r of e){let a=[0];for(let s=0;s<r.length;s++)r.charAt(s).toUpperCase()===r.charAt(s)&&a.push(s);let i=a.map(s=>r.charAt(s)).join("").toLowerCase();if(!n[i]){t[r]=i,n[i]=!0;continue}if(a[a.length-1]!==r.length-1&&(i=a.concat([r.length-1]).map(s=>r.charAt(s)).join("").toLowerCase(),!n[i])){t[r]=i,n[i]=!0;continue}for(let s=1;!t[r];s++){let c=i+"_"+s;if(!n[c]){t[r]=c,n[c]=!0;break}}}return t}const xt={mark:"m",channel:"c",aggregate:"a",autoCount:"#",hasFn:"h",bin:"b",sort:"so",stack:"st",scale:"s",format:"f",axis:"ax",legend:"l",value:"v",timeUnit:"tu",field:"f",type:"t",binProps:{maxbins:"mb",min:"mi",max:"ma",base:"b",step:"s",steps:"ss",minstep:"ms",divide:"d"},sortProps:{field:"f",op:"o",order:"or"},scaleProps:dn(Br),axisProps:dn(_r),legendProps:dn(Pr)};function Qe(e){if(oe(e))return xt[e.parent]+"-"+xt[e.parent+"Props"][e.child];if(xt[e])return xt[e];throw Error("Default name undefined for "+e)}var V=[!1,!0],Tl={maxbins:[5,10,20],extent:[void 0],base:[10],step:[void 0],steps:[void 0],minstep:[void 0],divide:[[5,2]],binned:[!1],anchor:[void 0],nice:[!0]},Sl={field:[void 0],op:["min","mean"],order:["ascending","descending"]},Nl={type:[void 0,F.LOG],domain:[void 0],base:[void 0],exponent:[1,2],constant:[void 0],bins:[void 0],clamp:V,nice:V,reverse:V,round:V,zero:V,padding:[void 0],paddingInner:[void 0],paddingOuter:[void 0],interpolate:[void 0],range:[void 0],rangeStep:[17,21],scheme:[void 0]},Cl={zindex:[1,0],offset:[void 0],orient:[void 0],values:[void 0],bandPosition:[void 0],encoding:[void 0],domain:V,domainColor:[void 0],domainDash:[void 0],domainDashOffset:[void 0],domainOpacity:[void 0],domainWidth:[void 0],formatType:[void 0],grid:V,gridColor:[void 0],gridDash:[void 0],gridDashOffset:[void 0],gridOpacity:[void 0],gridWidth:[void 0],format:[void 0],labels:V,labelAlign:[void 0],labelAngle:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFlushOffset:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOpacity:[void 0],labelSeparation:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelBound:[void 0],labelFlush:[void 0],maxExtent:[void 0],minExtent:[void 0],position:[void 0],ticks:V,tickColor:[void 0],tickCount:[void 0],tickDash:[void 0],tickExtra:[void 0],tickDashOffset:[void 0],tickMinStep:[void 0],tickOffset:[void 0],tickOpacity:[void 0],tickRound:[void 0],tickSize:[void 0],tickWidth:[void 0],title:[void 0],titleAlign:[void 0],titleAnchor:[void 0],titleAngle:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titlePadding:[void 0],titleX:[void 0],titleY:[void 0]};const wl={mark:[Ye,"bar",gt,ze,rn,vt,yt],channel:["x","y","row",Se,He,ce],aggregate:[void 0,"mean"],autoCount:V,bin:V,hasFn:V,timeUnit:[void 0,B.YEAR,B.MONTH,B.MINUTES,B.SECONDS],field:[void 0],type:[Ce,Ne,ee,ge],sort:["ascending","descending"],stack:["zero","normalize","center",null],value:[void 0],format:[void 0],title:[void 0],scale:[!0],axis:V,legend:V,binProps:Tl,sortProps:Sl,scaleProps:Nl,axisProps:Cl,legendProps:{orient:["left","right"],format:[void 0],type:[void 0],values:[void 0],zindex:[void 0],clipHeight:[void 0],columnPadding:[void 0],columns:[void 0],cornerRadius:[void 0],direction:[void 0],encoding:[void 0],fillColor:[void 0],formatType:[void 0],gridAlign:[void 0],offset:[void 0],padding:[void 0],rowPadding:[void 0],strokeColor:[void 0],labelAlign:[void 0],labelBaseline:[void 0],labelColor:[void 0],labelFont:[void 0],labelFontSize:[void 0],labelFontStyle:[void 0],labelFontWeight:[void 0],labelLimit:[void 0],labelOffset:[void 0],labelOpacity:[void 0],labelOverlap:[void 0],labelPadding:[void 0],labelSeparation:[void 0],legendX:[void 0],legendY:[void 0],gradientLength:[void 0],gradientOpacity:[void 0],gradientStrokeColor:[void 0],gradientStrokeWidth:[void 0],gradientThickness:[void 0],symbolDash:[void 0],symbolDashOffset:[void 0],symbolFillColor:[void 0],symbolOffset:[void 0],symbolOpacity:[void 0],symbolSize:[void 0],symbolStrokeColor:[void 0],symbolStrokeWidth:[void 0],symbolType:[void 0],tickCount:[void 0],tickMinStep:[void 0],title:[void 0],titleAnchor:[void 0],titleAlign:[void 0],titleBaseline:[void 0],titleColor:[void 0],titleFont:[void 0],titleFontSize:[void 0],titleFontStyle:[void 0],titleFontWeight:[void 0],titleLimit:[void 0],titleOpacity:[void 0],titleOrient:[void 0],titlePadding:[void 0]}};function fn(e,t,n){if(e==="field"||oe(e)&&e.parent==="sort"&&e.child==="field")return t.fieldNames();let r;if(r=oe(e)?n.enum[e.parent+"Props"][e.child]:n.enum[e],r!==void 0)return r;throw Error("No default enumValues for "+JSON.stringify(e))}const Ve={verbose:!1,defaultSpecConfig:{line:{point:!0},scale:{useUnaggregatedDomain:!0}},propertyPrecedence:Jr.map(mt),enum:wl,numberNominalProportion:.05,numberNominalLimit:40,constraintManuallySpecifiedValue:!1,autoAddCount:!1,hasAppropriateGraphicTypeForMark:!0,omitAggregate:!1,omitAggregatePlotWithDimensionOnlyOnFacet:!0,omitAggregatePlotWithoutDimension:!1,omitBarLineAreaWithOcclusion:!0,omitBarTickWithSize:!0,omitMultipleNonPositionalChannels:!0,omitRaw:!1,omitRawContinuousFieldForAggregatePlot:!0,omitRepeatedField:!0,omitNonPositionalOrFacetOverPositionalChannels:!0,omitTableWithOcclusionIfAutoAddCount:!0,omitVerticalDotPlot:!1,omitInvalidStackSpec:!0,omitNonSumStack:!0,preferredBinAxis:"x",preferredTemporalAxis:"x",preferredOrdinalAxis:"y",preferredNominalAxis:"y",preferredFacet:"row",minCardinalityForBin:15,maxCardinalityForCategoricalColor:20,maxCardinalityForFacet:20,maxCardinalityForShape:6,timeUnitShouldHaveVariation:!0,typeMatchesSchemaType:!0,stylize:!0,smallRangeStepForHighCardinalityOrFacet:{maxCardinality:10,rangeStep:12},nominalColorScaleForHighCardinality:{maxCardinality:10,palette:"category20"},xAxisOnTopForHighYCardinalityWithoutColumn:{maxCardinality:30},maxGoodCardinalityForFacet:5,maxGoodCardinalityForColor:7,minPercentUniqueForKey:.8,minCardinalityForKey:50};var ri={argmax:1,argmin:1,average:1,count:1,distinct:1,max:1,mean:1,median:1,min:1,missing:1,q1:1,q3:1,ci0:1,ci1:1,stderr:1,stdev:1,stdevp:1,sum:1,valid:1,values:1,variance:1,variancep:1};function Al(e){return!!e&&!!e.argmin}function Ol(e){return!!e&&!!e.argmax}j(ri);function kl(e){return Gt(e)&&!!ri[e]}const ii=["count","sum","distinct","valid","missing"];De(["mean","average","median","q1","q3","min","max"]);function Ml(e){return Yt(e)&&(e=jl(e,void 0)),"bin"+j(e).map(t=>uo(`_${t}_${e[t]}`)).join("")}function ai(e){return e===!0||Il(e)&&!e.binned}function Il(e){return vr(e)}function pn(e){switch(e){case"row":case Se:case He:case ce:case it:case at:case ut:case st:case lt:case ct:case ot:return 6;default:return 10}}function oi(e){return!!e&&!!e.condition&&!nt(e.condition)&&ye(e.condition)}function ye(e){return!!e&&(!!e.field||e.aggregate==="count")}function hn(e){return ye(e)&&Gt(e.field)}function Ul(e){return!!e.op}function mn(e,t={}){let n=e.field,r=t.prefix,a=t.suffix,i="";if(Dl(e))n=mo("count");else{let s;if(!t.nofn)if(Ul(e))s=e.op;else{let{bin:c,aggregate:h,timeUnit:o}=e;ai(c)?(s=Ml(c),a=(t.binSuffix||"")+(t.suffix||"")):h?Ol(h)?(i=`.${n}`,n=`argmax_${h.argmax}`):Al(h)?(i=`.${n}`,n=`argmin_${h.argmin}`):s=String(h):o&&(s=String(o))}s&&(n=n?`${s}_${n}`:s)}return a&&(n=`${n}_${a}`),r&&(n=`${r}_${n}`),t.forAs?n:t.expr?fo(n,t.expr)+i:po(n)+i}function si(e){switch(e.type){case"nominal":case"ordinal":case"geojson":return!0;case"quantitative":return!!e.bin;case"temporal":return!1}throw Error(Z.invalidFieldType(e.type))}function Fl(e){return!si(e)}function Dl(e){return e.aggregate==="count"}function _l(e){if(ye(e))return e;if(oi(e))return e.condition}function jl(e,t){return Yt(e)?{maxbins:pn(t)}:e==="binned"?{binned:!0}:!e.maxbins&&!e.step?Object.assign({},e,{maxbins:pn(t)}):e}var je={compatible:!0};function Pl(e,t){let n=e.type;if(n==="geojson"&&t!=="shape")return{compatible:!1,warning:`Channel ${t} should not be used with a geojson data.`};switch(t){case"row":case"column":case"facet":return Fl(e)?{compatible:!1,warning:Z.facetChannelShouldBeDiscrete(t)}:je;case"x":case"y":case"color":case"fill":case"stroke":case"text":case"detail":case"key":case"tooltip":case"href":return je;case"longitude":case"longitude2":case"latitude":case"latitude2":return n==="quantitative"?je:{compatible:!1,warning:`Channel ${t} should be used with a quantitative field only, not ${e.type} field.`};case"opacity":case"fillOpacity":case"strokeOpacity":case"strokeWidth":case"size":case"x2":case"y2":return n==="nominal"&&!e.sort?{compatible:!1,warning:`Channel ${t} should not be used with an unsorted discrete field.`}:je;case"shape":return H(["ordinal","nominal","geojson"],e.type)?je:{compatible:!1,warning:"Shape channel should be used with only either discrete or geojson data."};case"order":return e.type==="nominal"&&!("sort"in e)?{compatible:!1,warning:"Channel order is inappropriate for nominal field, which has no inherent order."}:je}throw Error("channelCompatability not implemented for channel "+t)}function Rl(e,t,n,r){let a=$l(t,n,r),{type:i}=e;return Eo(t)?i===void 0?a:Wr(t,i)?Lr(i,n.type)?i:(me(Z.scaleTypeNotWorkWithFieldDef(i,a)),a):(me(Z.scaleTypeNotWorkWithChannel(t,i,a)),a):null}function $l(e,t,n){switch(t.type){case"nominal":case"ordinal":return ft(e)||Jt(e)==="discrete"?(e==="shape"&&t.type==="ordinal"&&me(Z.discreteChannelCannotEncode(e,"ordinal")),"ordinal"):H(["x","y"],e)&&(H(["rect","bar","rule"],n)||n==="bar")?"band":"point";case"temporal":return ft(e)?"time":Jt(e)==="discrete"?(me(Z.discreteChannelCannotEncode(e,"temporal")),"ordinal"):"time";case"quantitative":return ft(e)?ai(t.bin)?"bin-ordinal":"linear":Jt(e)==="discrete"?(me(Z.discreteChannelCannotEncode(e,"quantitative")),"ordinal"):"linear";case"geojson":return}throw Error(Z.invalidFieldType(t.type))}var se;(function(e){e.QUANTITATIVE=ee,e.ORDINAL=Ne,e.TEMPORAL=ge,e.NOMINAL=Ce,e.KEY="key"})(se||(se={}));function li(e){return e==="ordinal"||e==="nominal"||e===se.KEY}var ne=class ir{constructor(t=null){this.index=t?Object.assign({},t):{}}has(t){return mt(t)in this.index}get(t){return this.index[mt(t)]}set(t,n){return this.index[mt(t)]=n,this}setByKey(t,n){this.index[t]=n}map(t){let n=new ir;for(let r in this.index)n.index[r]=t(this.index[r]);return n}size(){return(0,U.keys)(this.index).length}duplicate(){return new ir(this.index)}};function ci(e,t){let n=e&&e[t];return n?nt(n)?co(n,r=>!!r.field):ye(n)||oi(n):!1}var Bl={zero:1,center:1,normalize:1};function Ll(e){return!!Bl[e]}const Wl=["bar",ze,an,Ye,on,sn,gt,yt,vt],ql=["bar",ze];function Hl(e){let t=e.x,n=e.y;if(ye(t)&&ye(n))if(t.type==="quantitative"&&n.type==="quantitative"){if(t.stack)return"x";if(n.stack)return"y";if(!!t.aggregate!=!!n.aggregate)return t.aggregate?"x":"y"}else{if(t.type==="quantitative")return"x";if(n.type==="quantitative")return"y"}else{if(ye(t)&&t.type==="quantitative")return"x";if(ye(n)&&n.type==="quantitative")return"y"}}function Gl(e,t,n,r={}){let a=fl(e)?e.type:e;if(!H(Wl,a))return null;let i=Hl(t);if(!i)return null;let s=t[i],c=hn(s)?mn(s,{}):void 0,h=i==="x"?"y":"x",o=t[h],l=hn(o)?mn(o,{}):void 0,u=Mr.reduce((p,f)=>{if(f!=="tooltip"&&ci(t,f)){let g=t[f];(nt(g)?g:[g]).forEach(y=>{let v=_l(y);if(v.aggregate)return;let b=hn(v)?mn(v,{}):void 0;(!b||b!==l&&b!==c)&&p.push({channel:f,fieldDef:v})})}return p},[]),d;if(s.stack===void 0?u.length>0&&(d=H(ql,a)?ho(n,"zero"):n):d=Yt(s.stack)?s.stack?"zero":null:s.stack,!d||!Ll(d))return null;if(s.scale&&s.scale.type&&s.scale.type!==F.LINEAR){if(r.disallowNonLinearStack)return null;me(Z.cannotStackNonLinearScale(s.scale.type))}return ci(t,i==="x"?"x2":"y2")?(s.stack!==void 0&&me(Z.cannotStackRangedMark(i)),null):(s.aggregate&&!H(ii,s.aggregate)&&me(Z.stackNonSummativeAggregate(s.aggregate)),{groupbyChannel:o?h:void 0,fieldChannel:i,impute:ul(a),stackBy:u,offset:d})}var zl=te();function Yl(e){return ue(e.encodings,t=>O(t)&&!A(t.aggregate)&&!!t.aggregate||Tt(t))}function ui(e){if(!Kl(e))return null;let t=gi(e.encodings,{schema:null,wildcardMode:"null"}),n=e.mark;return Gl(n,t,void 0,{disallowNonLinearStack:!0})}function Ql(e){for(let t of e.encodings)if(t[m.STACK]!==void 0&&!A(t[m.STACK]))return t[m.STACK]}function Vl(e){for(let t of e.encodings)if(t[m.STACK]!==void 0&&!A(t.channel))return t.channel;return null}function Kl(e){if(A(e.mark))return!1;let t=(0,zl.toMap)(el(ll,[m.STACK,m.CHANNEL,m.MARK,m.FIELD,m.AGGREGATE,m.AUTOCOUNT,m.SCALE,de("scale","type"),m.TYPE])),n=e.encodings.filter(r=>!ie(r));for(let r of n)if(di(r,{exclude:t}))return!1;return!0}function di(e,t={}){if(!(0,U.isObject)(e))return!1;for(let n in e)if(e.hasOwnProperty(n)&&(A(e[n])&&(!t.exclude||!t.exclude[n])||di(e[n],t)))return!0;return!1}var fi=te();function Jl(e){return e.map(t=>Xl(t))}function Xl(e){return t=>e[t]===void 0?t:e[t]}function Ae(e,t){return A(e)?!bt(e)&&e.enum?"?"+JSON.stringify(e.enum):"?":t?t(e):e}function Et(e,t){return t?t(e):e}const gn=new ne,yn=[].concat(Jr,nn,[m.TRANSFORM,m.STACK],Qr).reduce((e,t)=>e.set(t,!0),new ne),vn={axis:{x:!0,y:!0,row:!0,column:!0},legend:{color:!0,opacity:!0,size:!0,shape:!0},scale:{x:!0,y:!0,color:!0,opacity:!0,row:!0,column:!0,size:!0,shape:!0},sort:{x:!0,y:!0,path:!0,order:!0},stack:{x:!0,y:!0}};function Pe(e,t=yn,n=gn){let r=[];t.get(m.MARK)&&r.push(Ae(e.mark,n.get(m.MARK))),e.transform&&e.transform.length>0&&r.push("transform:"+JSON.stringify(e.transform));let a;if(t.get(m.STACK)&&(a=ui(e)),e.encodings){let i=e.encodings.reduce((s,c)=>{if(!ie(c)){let h;h=a&&c.channel===a.fieldChannel?pi(Object.assign({},c,{stack:a.offset}),t,n):pi(c,t,n),h&&s.push(h)}return s},[]).sort().join("|");i&&r.push(i)}for(let i of Qr){let s=i.toString();if(t.get(i)&&e[s]){let c=e[s];r.push(`${s}=${JSON.stringify(c)}`)}}return r.join("|")}function pi(e,t=yn,n=gn){let r=[];if(t.get(m.CHANNEL)&&r.push(Ae(e.channel,n.get(m.CHANNEL))),O(e)){let a=hi(e,t,n);a&&r.push(a)}else re(e)?r.push(e.value):P(e)&&r.push("autocount()");return r.join(":")}function hi(e,t=yn,n=gn){if(t.get(m.AGGREGATE)&&ie(e))return"-";let r=Zl(e,t,n),a=ec(e,t,n),i;if(O(e)){if(i=t.get("field")?Ae(e.field,n.get("field")):"...",t.get(m.TYPE))if(A(e.type))i+=","+Ae(e.type,n.get(m.TYPE));else{let s=((e.type||"quantitative")+"").substr(0,1);i+=","+Ae(s,n.get(m.TYPE))}i+=a.map(s=>{let c=s.value instanceof Array?"["+s.value+"]":s.value;return","+s.key+"="+c}).join("")}else P(e)&&(i="*,q");return i?r?((0,fi.isString)(r)?r:"?"+((0,U.keys)(r).length>0?JSON.stringify(r):""))+"("+i+")":i:null}function Zl(e,t,n){if(t.get(m.AGGREGATE)&&e.aggregate&&!A(e.aggregate))return Et(e.aggregate,n.get(m.AGGREGATE));if(t.get(m.AGGREGATE)&&Tt(e))return Et("count",n.get(m.AGGREGATE));if(t.get(m.TIMEUNIT)&&e.timeUnit&&!A(e.timeUnit))return Et(e.timeUnit,n.get(m.TIMEUNIT));if(t.get(m.BIN)&&e.bin&&!A(e.bin))return"bin";{let r=null;for(let a of[m.AGGREGATE,m.AUTOCOUNT,m.TIMEUNIT,m.BIN]){let i=e[a];t.get(a)&&e[a]&&A(i)&&(r||(r={}),r[a]=bt(i)?i:i.enum)}return r&&e.hasFn&&(r.hasFn=!0),r}}function ec(e,t,n){let r=[];if(!(0,U.isBoolean)(e.bin)&&!bt(e.bin)){let a=e.bin;for(let i in a){let s=de("bin",i);s&&t.get(s)&&a[i]!==void 0&&r.push({key:i,value:Ae(a[i],n.get(s))})}r.sort((i,s)=>i.key.localeCompare(s.key))}for(let a of[m.SCALE,m.SORT,m.STACK,m.AXIS,m.LEGEND])if(!(!A(e.channel)&&!vn[a][e.channel])&&t.get(a)&&e[a]!==void 0){let i=e[a];if((0,U.isBoolean)(i)||i===null)r.push({key:a+"",value:i||!1});else if((0,fi.isString)(i))r.push({key:a+"",value:Et(JSON.stringify(i),n.get(a))});else{let s=[];for(let c in i){let h=de(a,c);h&&t.get(h)&&i[c]!==void 0&&s.push({key:c,value:Ae(i[c],n.get(h))})}if(s.length>0){let c=s.sort((h,o)=>h.key.localeCompare(o.key)).reduce((h,o)=>(h[o.key]=o.value,h),{});r.push({key:a+"",value:JSON.stringify(c)})}}}return r}function bn(e,t,n){let r=[],a=0;for(let i=0;i<n;i++){let s=e.indexOf(t,a);if(s!==-1)r.push(e.substring(a,s)),a=s+1;else break}if(r.push(e.substr(a)),r.length!==n+1)for(;r.length!==n+1;)r.push("");return r}var tc;(function(e){function t(i,s){let c=s.indexOf("(")===-1?n(bn(s,",",2)):a(s);return Object.assign({channel:i},c)}e.encoding=t;function n(i){let s={};s.field=i[0],s.type=qs(i[1].toUpperCase())||"?";let c=i[2],h=0,o=0;for(;o<c.length;){let l=c.indexOf("=",o),u;if(l!==-1){let d=c.substring(o,l);if(c[o+d.length+1]==="{"){let p=o+d.length+1;h=r(p,c,"}");let f=c.substring(p,h+1);u=JSON.parse(f),o=h+2}else if(c[o+d.length+1]==="["){let p=o+d.length+1,f=r(p,c,"]"),g=c.substring(p,f+1);u=JSON.parse(g),o=f+2}else{let p=o,f=c.indexOf(",",o+d.length);f===-1&&(f=c.length),o=f+1,u=JSON.parse(c.substring(p+d.length+1,f))}tn(d)?s[d]=u:(s.bin=s.bin||{},s.bin[d]=u)}else break}return s}e.rawFieldDef=n;function r(i,s,c){for(let h=i;h<s.length;h++)if(s[h]===c)return h}e.getClosingIndex=r;function a(i){let s={};if(i[0]==="?"){let c=r(1,i,"}"),h=JSON.parse(i.substring(1,c+1));for(let o in h)(0,qr.isArray)(h[o])?s[o]={enum:h[o]}:s[o]=h[o];return Object.assign({},s,n(bn(i.substring(c+2,i.length-1),",",2)))}else{let c=i.substring(0,i.indexOf("(")),h=bn(i.substring(c.length+1,i.length-1),",",2);if(kl(c))return Object.assign({aggregate:c},n(h));if(vl(c))return Object.assign({timeUnit:c},n(h));if(c==="bin")return Object.assign({bin:{}},n(h))}}e.fn=a})(tc||(tc={}));var mi=te();function re(e){return e!=null&&e.value!==void 0}function O(e){return e!=null&&(e.field||e.aggregate==="count")}function P(e){return e!=null&&"autoCount"in e}function ie(e){return P(e)&&e.autoCount===!1}function Tt(e){return P(e)&&e.autoCount===!0}var nc=[m.AGGREGATE,m.BIN,m.TIMEUNIT,m.FIELD,m.TYPE,m.SCALE,m.SORT,m.AXIS,m.LEGEND,m.STACK,m.FORMAT];function gi(e,t){let{wildcardMode:n="skip"}=t,r={};for(let a of e){if(ie(a))continue;let{channel:i}=a;if(A(i))throw Error("Cannot convert wildcard channel to a fixed channel");let s=re(a)?rc(a):xn(a,t);if(s===null){if(t.wildcardMode==="null")return null;continue}r[i]=s}return r}function rc(e){let{value:t}=e;return A(t)?null:{value:t}}function xn(e,t={}){let{props:n=nc,schema:r,wildcardMode:a="skip"}=t;if(O(e)){let i={};for(let s of n){let c=e[s];if(A(c)){if(a==="skip")continue;return null}if(c!==void 0){if(!(!vn[s]||vn[s][e.channel]))continue;if(tn(s)&&(0,mi.isObject)(c)){for(let h in c=Object.assign({},c),c)if(A(c[h])){if(a==="null")return null;delete c[h]}}if(s==="bin"&&c===!1)continue;s==="type"&&c==="key"?i.type="nominal":i[s]=c}if(s===m.SCALE&&r&&e.type==="ordinal"){let h=e.scale,{ordinalDomain:o}=r.fieldSchema(e.field);h!==null&&o&&(i[m.SCALE]=Object.assign({domain:o},(0,mi.isObject)(h)?h:{}))}}return i}else{if(e.autoCount===!1)throw Error("Cannot convert {autoCount: false} into a field def");return{aggregate:"count",field:"*",type:"quantitative"}}}function Ke(e){return O(e)?!ve(e)&&e.type!=="temporal":P(e)}function ve(e){if(O(e)){let t=xn(e,{props:["bin","timeUnit","type"]});return si(t)||!!t.timeUnit}return!1}function Oe(e){let t=e.scale===!0||e.scale==="?"?{}:e.scale||{},{type:n,channel:r,timeUnit:a,bin:i}=e;if(A(t.type)||A(n)||A(r)||A(i))return;if(t.type)return t.type;if(n==="temporal"&&A(a)||n==="quantitative"&&A(i))return;let s={type:n===se.KEY?"nominal":n,timeUnit:a,bin:i};return Rl({type:t.type},r,s,void 0)}function L(e,t,n,r){function a(i){return e(i=new Date(+i)),i}return a.floor=a,a.round=function(i){var s=new Date(+i),c=new Date(i-1);return e(s),e(c),t(c,1),i-s<c-i?s:c},a.ceil=function(i){return e(i=new Date(i-1)),t(i,1),i},a.offset=function(i,s){return t(i=new Date(+i),s==null?1:Math.floor(s)),i},a.range=function(i,s,c){var h=[];if(i=new Date(i-1),s=new Date(+s),c=c==null?1:Math.floor(c),!(i<s)||!(c>0))return h;for(t(i,1),e(i),i<s&&h.push(new Date(+i));t(i,c),e(i),i<s;)h.push(new Date(+i));return h},a.filter=function(i){return L(function(s){for(;e(s),!i(s);)s.setTime(s-1)},function(s,c){for(;--c>=0;)for(;t(s,1),!i(s););})},n&&(a.count=function(i,s){return St.setTime(+i),Nt.setTime(+s),e(St),e(Nt),Math.floor(n(St,Nt))},a.every=function(i){return i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?a.filter(r?function(s){return r(s)%i===0}:function(s){return a.count(0,s)%i===0}):a}),a}var St,Nt,z=q((()=>{St=new Date,Nt=new Date})),Ct,wt,ic=q((()=>{z(),Ct=L(function(){},function(e,t){e.setTime(+e+t)},function(e,t){return t-e}),Ct.every=function(e){return e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?L(function(t){t.setTime(Math.floor(t/e)*e)},function(t,n){t.setTime(+t+n*e)},function(t,n){return(n-t)/e}):Ct},wt=Ct})),En,ac=q((()=>{z(),En=L(function(e){e.setMilliseconds(0)},function(e,t){e.setTime(+e+t*1e3)},function(e,t){return(t-e)/1e3},function(e){return e.getSeconds()})})),Tn,oc=q((()=>{z(),Tn=L(function(e){e.setSeconds(0,0)},function(e,t){e.setTime(+e+t*6e4)},function(e,t){return(t-e)/6e4},function(e){return e.getMinutes()})})),Sn,sc=q((()=>{z(),Sn=L(function(e){e.setMinutes(0,0,0)},function(e,t){e.setTime(+e+t*36e5)},function(e,t){return(t-e)/36e5},function(e){return e.getHours()})})),Nn,lc=q((()=>{z(),Nn=L(function(e){e.setHours(0,0,0,0)},function(e,t){e.setDate(e.getDate()+t)},function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/864e5},function(e){return e.getDate()-1})}));function ke(e){return L(function(t){t.setHours(0,0,0,0),t.setDate(t.getDate()-(t.getDay()+7-e)%7)},function(t,n){t.setDate(t.getDate()+n*7)},function(t,n){return(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/6048e5})}var At,Cn,wn,An,On,kn,Mn,In,cc=q((()=>{z(),At=ke(0),Cn=ke(1),wn=ke(2),An=ke(3),On=ke(4),kn=ke(5),Mn=ke(6),In=At})),Un,uc=q((()=>{z(),Un=L(function(e){e.setHours(0,0,0,0),e.setDate(1)},function(e,t){e.setMonth(e.getMonth()+t)},function(e,t){return t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12},function(e){return e.getMonth()})})),Fn,dc=q((()=>{z(),Fn=L(function(e){e.setHours(0,0,0,0),e.setMonth(0,1)},function(e,t){e.setFullYear(e.getFullYear()+t)},function(e,t){return t.getFullYear()-e.getFullYear()},function(e){return e.getFullYear()})})),Dn,fc=q((()=>{z(),Dn=L(function(e){e.setUTCMilliseconds(0)},function(e,t){e.setTime(+e+t*1e3)},function(e,t){return(t-e)/1e3},function(e){return e.getUTCSeconds()})})),_n,pc=q((()=>{z(),_n=L(function(e){e.setUTCSeconds(0,0)},function(e,t){e.setTime(+e+t*6e4)},function(e,t){return(t-e)/6e4},function(e){return e.getUTCMinutes()})})),jn,hc=q((()=>{z(),jn=L(function(e){e.setUTCMinutes(0,0,0)},function(e,t){e.setTime(+e+t*36e5)},function(e,t){return(t-e)/36e5},function(e){return e.getUTCHours()})})),Pn,mc=q((()=>{z(),Pn=L(function(e){e.setUTCHours(0,0,0,0)},function(e,t){e.setUTCDate(e.getUTCDate()+t)},function(e,t){return(t-e)/864e5},function(e){return e.getUTCDate()-1})}));function Me(e){return L(function(t){t.setUTCHours(0,0,0,0),t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7)},function(t,n){t.setUTCDate(t.getUTCDate()+n*7)},function(t,n){return(n-t)/6048e5})}var Ot,Rn,$n,Bn,Ln,Wn,qn,Hn,gc=q((()=>{z(),Ot=Me(0),Rn=Me(1),$n=Me(2),Bn=Me(3),Ln=Me(4),Wn=Me(5),qn=Me(6),Hn=Ot})),Gn,yc=q((()=>{z(),Gn=L(function(e){e.setUTCHours(0,0,0,0),e.setUTCDate(1)},function(e,t){e.setUTCMonth(e.getUTCMonth()+t)},function(e,t){return t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12},function(e){return e.getUTCMonth()})})),zn,vc=q((()=>{z(),zn=L(function(e){e.setUTCHours(0,0,0,0),e.setUTCMonth(0,1)},function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)},function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()},function(e){return e.getUTCFullYear()})})),bc=sr({day:()=>Nn,days:()=>xi,friday:()=>kn,fridays:()=>wi,hour:()=>Sn,hours:()=>bi,interval:()=>L,millisecond:()=>wt,milliseconds:()=>Yn,minute:()=>Tn,minutes:()=>vi,monday:()=>Cn,mondays:()=>Ti,month:()=>Un,months:()=>ki,saturday:()=>Mn,saturdays:()=>Ai,second:()=>En,seconds:()=>yi,sunday:()=>At,sundays:()=>Ei,thursday:()=>On,thursdays:()=>Ci,tuesday:()=>wn,tuesdays:()=>Si,utcDay:()=>Pn,utcDays:()=>ji,utcFriday:()=>Wn,utcFridays:()=>Wi,utcHour:()=>jn,utcHours:()=>_i,utcMillisecond:()=>Ii,utcMilliseconds:()=>Ui,utcMinute:()=>_n,utcMinutes:()=>Di,utcMonday:()=>Rn,utcMondays:()=>Ri,utcMonth:()=>Gn,utcMonths:()=>Gi,utcSaturday:()=>qn,utcSaturdays:()=>qi,utcSecond:()=>Dn,utcSeconds:()=>Fi,utcSunday:()=>Ot,utcSundays:()=>Pi,utcThursday:()=>Ln,utcThursdays:()=>Li,utcTuesday:()=>$n,utcTuesdays:()=>$i,utcWednesday:()=>Bn,utcWednesdays:()=>Bi,utcWeek:()=>Hn,utcWeeks:()=>Hi,utcYear:()=>zn,utcYears:()=>zi,wednesday:()=>An,wednesdays:()=>Ni,week:()=>In,weeks:()=>Oi,year:()=>Fn,years:()=>Mi},1),Yn,yi,vi,bi,xi,Ei,Ti,Si,Ni,Ci,wi,Ai,Oi,ki,Mi,Ii,Ui,Fi,Di,_i,ji,Pi,Ri,$i,Bi,Li,Wi,qi,Hi,Gi,zi,xc=q((()=>{z(),ic(),ac(),oc(),sc(),lc(),cc(),uc(),dc(),fc(),pc(),hc(),mc(),gc(),yc(),vc(),Yn=wt.range,yi=En.range,vi=Tn.range,bi=Sn.range,xi=Nn.range,Ei=At.range,Ti=Cn.range,Si=wn.range,Ni=An.range,Ci=On.range,wi=kn.range,Ai=Mn.range,Oi=In.range,ki=Un.range,Mi=Fn.range,Ii=wt,Ui=Yn,Fi=Dn.range,Di=_n.range,_i=jn.range,ji=Pn.range,Pi=Ot.range,Ri=Rn.range,$i=$n.range,Bi=Bn.range,Li=Ln.range,Wi=Wn.range,qi=qn.range,Hi=Hn.range,Gi=Gn.range,zi=zn.range})),Ec=le(((e,t)=>{var n=(xc(),Aa(bc)),r=new Date,a=new Date(0,0,1).setFullYear(0),i=new Date(Date.UTC(0,0,1)).setUTCFullYear(0);function s(f){return r.setTime(+f),r}function c(f,g,y,v,b,x){var S={type:f,date:g,unit:y};return v?S.step=v:S.minstep=1,b!=null&&(S.min=b),x!=null&&(S.max=x),S}function h(f,g,y,v,b,x){return c(f,function(S){return g.offset(y,S)},function(S){return g.count(y,S)},v,b,x)}var o=[h("second",n.second,a),h("minute",n.minute,a),h("hour",n.hour,a),h("day",n.day,a,[1,7]),h("month",n.month,a,[1,3,6]),h("year",n.year,a),c("seconds",function(f){return new Date(1970,0,1,0,0,f)},function(f){return s(f).getSeconds()},null,0,59),c("minutes",function(f){return new Date(1970,0,1,0,f)},function(f){return s(f).getMinutes()},null,0,59),c("hours",function(f){return new Date(1970,0,1,f)},function(f){return s(f).getHours()},null,0,23),c("weekdays",function(f){return new Date(1970,0,4+f)},function(f){return s(f).getDay()},[1],0,6),c("dates",function(f){return new Date(1970,0,f)},function(f){return s(f).getDate()},[1],1,31),c("months",function(f){return new Date(1970,f%12,1)},function(f){return s(f).getMonth()},[1],0,11)],l=[h("second",n.utcSecond,i),h("minute",n.utcMinute,i),h("hour",n.utcHour,i),h("day",n.utcDay,i,[1,7]),h("month",n.utcMonth,i,[1,3,6]),h("year",n.utcYear,i),c("seconds",function(f){return new Date(Date.UTC(1970,0,1,0,0,f))},function(f){return s(f).getUTCSeconds()},null,0,59),c("minutes",function(f){return new Date(Date.UTC(1970,0,1,0,f))},function(f){return s(f).getUTCMinutes()},null,0,59),c("hours",function(f){return new Date(Date.UTC(1970,0,1,f))},function(f){return s(f).getUTCHours()},null,0,23),c("weekdays",function(f){return new Date(Date.UTC(1970,0,4+f))},function(f){return s(f).getUTCDay()},[1],0,6),c("dates",function(f){return new Date(Date.UTC(1970,0,f))},function(f){return s(f).getUTCDate()},[1],1,31),c("months",function(f){return new Date(Date.UTC(1970,f%12,1))},function(f){return s(f).getUTCMonth()},[1],0,11)],u=[[31536e6,5],[7776e6,4],[2592e6,4],[12096e5,3],[6048e5,3],[1728e5,3],[864e5,3],[432e5,2],[216e5,2],[108e5,2],[36e5,2],[18e5,1],[9e5,1],[3e5,1],[6e4,1],[3e4,0],[15e3,0],[5e3,0],[1e3,0]];function d(f,g,y,v){var b=u[0],x,S,C;for(x=1,S=u.length;x<S;++x)if(b=u[x],g>b[0]){if(C=g/b[0],C>v)return f[u[x-1][1]];if(C>=y)return f[b[1]]}return f[u[S-1][1]]}function p(f){var g={},y,v;for(y=0,v=f.length;y<v;++y)g[f[y].type]=f[y];return g.find=function(b,x,S){return d(f,b,x,S)},g}t.exports=p(o),t.exports.utc=p(l)})),Tc=le(((e,t)=>{var n=te(),r=Ec(),a=1e-15;function i(u){if(!u)throw Error("Missing binning options.");var d=u.maxbins||15,p=u.base||10,f=Math.log(p),g=u.div||[5,2],y=u.min,v=u.max,b=v-y,x,S,C,T,w,N,D;if(u.step)x=u.step;else if(u.steps)x=u.steps[Math.min(u.steps.length-1,s(u.steps,b/d,0,u.steps.length))];else{for(S=Math.ceil(Math.log(d)/f),C=u.minstep||0,x=Math.max(C,p**+(Math.round(Math.log(b)/f)-S));Math.ceil(b/x)>d;)x*=p;for(N=0;N<g.length;++N)w=x/g[N],w>=C&&b/w<=d&&(x=w)}return w=Math.log(x),T=w>=0?0:~~(-w/f)+1,D=p**(-T-1),y=Math.min(y,Math.floor(y/x+D)*x),v=Math.ceil(v/x)*x,{start:y,stop:v,step:x,unit:{precision:T},value:c,index:h}}function s(u,d,p,f){for(;p<f;){var g=p+f>>>1;n.cmp(u[g],d)<0?p=g+1:f=g}return p}function c(u){return this.step*Math.floor(u/this.step+a)}function h(u){return Math.floor((u-this.start)/this.step+a)}function o(u){return this.unit.date(c.call(this,u))}function l(u){return h.call(this,this.unit.unit(u))}i.date=function(u){if(!u)throw Error("Missing date binning options.");var d=u.utc?r.utc:r,p=u.min,f=u.max,g=u.maxbins||20,y=u.minbins||4,v=f-+p,b=u.unit?d[u.unit]:d.find(v,y,g),x=i({min:b.min==null?b.unit(p):b.min,max:b.max==null?b.unit(f):b.max,maxbins:g,minstep:b.minstep,steps:b.step});return x.unit=b,x.index=l,u.raw||(x.value=o),x},t.exports=i})),Yi=le(((e,t)=>{var n=te(),r="__types__",a={boolean:n.boolean,integer:n.number,number:n.number,date:n.date,string:function(p){return p==null||p===""?null:p+""}},i={boolean:function(p){return p==="true"||p==="false"||n.isBoolean(p)},integer:function(p){return i.number(p)&&(p=+p)===~~p},number:function(p){return!isNaN(+p)&&!n.isDate(p)},date:function(p){return!isNaN(Date.parse(p))}};function s(p,f){if(!f)return p&&p[r]||null;p[r]=f}function c(p){return n.keys(p)}function h(p){return"["+p+"]"}function o(p,f){p=n.array(p),f=n.$(f);var g,y,v;if(p[r]&&(g=f(p[r]),n.isString(g)))return g;for(y=0,v=p.length;!n.isValid(g)&&y<v;++y)g=f?f(p[y]):p[y];return n.isDate(g)?"date":n.isNumber(g)?"number":n.isBoolean(g)?"boolean":n.isString(g)?"string":null}function l(p,f){if(p.length){var g=f?n.identity:(f=c(p[0]),h);return f.reduce(function(y,v){return y[v]=o(p,g(v)),y},{})}}function u(p,f){p=n.array(p),f=n.$(f);var g,y,v,b=["boolean","integer","number","date"];for(g=0;g<p.length;++g){for(v=f?f(p[g]):p[g],y=0;y<b.length;++y)n.isValid(v)&&!i[b[y]](v)&&(b.splice(y,1),--y);if(b.length===0)return"string"}return b[0]}function d(p,f){var g=f?n.identity:(f=c(p[0]),h);return f.reduce(function(y,v){return y[v]=u(p,g(v)),y},{})}o.annotation=s,o.all=l,o.infer=u,o.inferAll=d,o.parsers=a,t.exports=o})),Sc=le(((e,t)=>{var n=te(),r=t.exports;r.repeat=function(a,i){var s=Array(i),c;for(c=0;c<i;++c)s[c]=a;return s},r.zeros=function(a){return r.repeat(0,a)},r.range=function(a,i,s){if(arguments.length<3&&(s=1,arguments.length<2&&(i=a,a=0)),(i-a)/s==1/0)throw Error("Infinite range");var c=[],h=-1,o;if(s<0)for(;(o=a+s*++h)>i;)c.push(o);else for(;(o=a+s*++h)<i;)c.push(o);return c},r.random={},r.random.uniform=function(a,i){i===void 0&&(i=a===void 0?1:a,a=0);var s=i-a,c=function(){return a+s*Math.random()};return c.samples=function(h){return r.zeros(h).map(c)},c.pdf=function(h){return h>=a&&h<=i?1/s:0},c.cdf=function(h){return h<a?0:h>i?1:(h-a)/s},c.icdf=function(h){return h>=0&&h<=1?a+h*s:NaN},c},r.random.integer=function(a,i){i===void 0&&(i=a,a=0);var s=i-a,c=function(){return a+Math.floor(s*Math.random())};return c.samples=function(h){return r.zeros(h).map(c)},c.pdf=function(h){return h===Math.floor(h)&&h>=a&&h<i?1/s:0},c.cdf=function(h){var o=Math.floor(h);return o<a?0:o>=i?1:(o-a+1)/s},c.icdf=function(h){return h>=0&&h<=1?a-1+Math.floor(h*s):NaN},c},r.random.normal=function(a,i){a||(a=0),i||(i=1);var s,c=function(){var h=0,o=0,l,u;if(s!==void 0)return h=s,s=void 0,h;do h=Math.random()*2-1,o=Math.random()*2-1,l=h*h+o*o;while(l===0||l>1);return u=Math.sqrt(-2*Math.log(l)/l),s=a+o*u*i,a+h*u*i};return c.samples=function(h){return r.zeros(h).map(c)},c.pdf=function(h){var o=Math.exp((h-a)**2/(-2*i**2));return 1/(i*Math.sqrt(2*Math.PI))*o},c.cdf=function(h){var o,l=(h-a)/i,u=Math.abs(l);if(u>37)o=0;else{var d,p=Math.exp(-u*u/2);u<7.07106781186547?(d=.0352624965998911*u+.700383064443688,d=d*u+6.37396220353165,d=d*u+33.912866078383,d=d*u+112.079291497871,d=d*u+221.213596169931,d=d*u+220.206867912376,o=p*d,d=.0883883476483184*u+1.75566716318264,d=d*u+16.064177579207,d=d*u+86.7807322029461,d=d*u+296.564248779674,d=d*u+637.333633378831,d=d*u+793.826512519948,d=d*u+440.413735824752,o/=d):(d=u+.65,d=u+4/d,d=u+3/d,d=u+2/d,d=u+1/d,o=p/d/2.506628274631)}return l>0?1-o:o},c.icdf=function(h){if(h<=0||h>=1)return NaN;var o=2*h-1,l=8*(Math.PI-3)/(3*Math.PI*(4-Math.PI)),u=2/(Math.PI*l)+Math.log(1-o**2)/2,d=Math.log(1-o*o)/l,p=(o>0?1:-1)*Math.sqrt(Math.sqrt(u*u-d)-u);return a+i*Math.SQRT2*p},c},r.random.bootstrap=function(a,i){var s=a.filter(n.isValid),c=s.length,h=i?r.random.normal(0,i):null,o=function(){return s[~~(Math.random()*c)]+(h?h():0)};return o.samples=function(l){return r.zeros(l).map(o)},o}})),Nc=le(((e,t)=>{var n=te(),r=Yi(),a=Sc(),i=t.exports;i.unique=function(o,l,u){l=n.$(l),u||(u=[]);var d={},p,f,g;for(f=0,g=o.length;f<g;++f)p=l?l(o[f]):o[f],!(p in d)&&(d[p]=1,u.push(p));return u},i.count=function(o){return o&&o.length||0},i.count.valid=function(o,l){l=n.$(l);var u,d,p,f=0;for(d=0,p=o.length;d<p;++d)u=l?l(o[d]):o[d],n.isValid(u)&&(f+=1);return f},i.count.missing=function(o,l){l=n.$(l);var u,d,p,f=0;for(d=0,p=o.length;d<p;++d)u=l?l(o[d]):o[d],u??(f+=1);return f},i.count.distinct=function(o,l){l=n.$(l);var u={},d,p,f,g=0;for(p=0,f=o.length;p<f;++p)d=l?l(o[p]):o[p],!(d in u)&&(u[d]=1,g+=1);return g},i.count.map=function(o,l){l=n.$(l);var u={},d,p,f;for(p=0,f=o.length;p<f;++p)d=l?l(o[p]):o[p],u[d]=d in u?u[d]+1:1;return u},i.median=function(o,l){return l&&(o=o.map(n.$(l))),o=o.filter(n.isValid).sort(n.cmp),i.quantile(o,.5)},i.quartile=function(o,l){l&&(o=o.map(n.$(l))),o=o.filter(n.isValid).sort(n.cmp);var u=i.quantile;return[u(o,.25),u(o,.5),u(o,.75)]},i.quantile=function(o,l,u){u===void 0&&(u=l,l=n.identity),l=n.$(l);var d=(o.length-1)*u+1,p=Math.floor(d),f=+l(o[p-1]),g=d-p;return g?f+g*(l(o[p])-f):f},i.sum=function(o,l){l=n.$(l);for(var u=0,d=0,p=o.length,f;d<p;++d)f=l?l(o[d]):o[d],n.isValid(f)&&(u+=f);return u},i.mean=function(o,l){l=n.$(l);var u=0,d,p,f,g,y;for(p=0,g=0,f=o.length;p<f;++p)y=l?l(o[p]):o[p],n.isValid(y)&&(d=y-u,u+=d/++g);return u},i.mean.geometric=function(o,l){l=n.$(l);var u=1,d,p,f,g;for(g=0,d=0,p=o.length;g<p;++g)if(f=l?l(o[g]):o[g],n.isValid(f)){if(f<=0)throw Error("Geometric mean only defined for positive values.");u*=f,++d}return u=d>0?u**(1/d):0,u},i.mean.harmonic=function(o,l){l=n.$(l);var u=0,d,p,f,g;for(g=0,d=0,p=o.length;g<p;++g)f=l?l(o[g]):o[g],n.isValid(f)&&(u+=1/f,++d);return d/u},i.variance=function(o,l){if(l=n.$(l),!n.isArray(o)||o.length<2)return 0;var u=0,d=0,p,f,g,y;for(f=0,g=0;f<o.length;++f)y=l?l(o[f]):o[f],n.isValid(y)&&(p=y-u,u+=p/++g,d+=p*(y-u));return d/=g-1,d},i.stdev=function(o,l){return Math.sqrt(i.variance(o,l))},i.modeskew=function(o,l){var u=i.mean(o,l),d=i.median(o,l),p=i.stdev(o,l);return p===0?0:(u-d)/p},i.min=function(o,l){return i.extent(o,l)[0]},i.max=function(o,l){return i.extent(o,l)[1]},i.extent=function(o,l){l=n.$(l);var u,d,p,f,g=o.length;for(f=0;f<g;++f)if(p=l?l(o[f]):o[f],n.isValid(p)){u=d=p;break}for(;f<g;++f)p=l?l(o[f]):o[f],n.isValid(p)&&(p<u&&(u=p),p>d&&(d=p));return[u,d]},i.extent.index=function(o,l){l=n.$(l);var u=-1,d=-1,p,f,g,y,v=o.length;for(y=0;y<v;++y)if(g=l?l(o[y]):o[y],n.isValid(g)){p=f=g,u=d=y;break}for(;y<v;++y)g=l?l(o[y]):o[y],n.isValid(g)&&(g<p&&(p=g,u=y),g>f&&(f=g,d=y));return[u,d]},i.dot=function(o,l,u){var d=0,p,f;if(u)for(l=n.$(l),u=n.$(u),p=0;p<o.length;++p)f=l(o[p])*u(o[p]),f===f&&(d+=f);else{if(o.length!==l.length)throw Error("Array lengths must match.");for(p=0;p<o.length;++p)f=o[p]*l[p],f===f&&(d+=f)}return d},i.dist=function(o,l,u,d){var p=n.isFunction(u)||n.isString(u),f=o,g=p?o:l,y=p?d:u,v=y===2||y==null,b=o.length,x=0,S,C;for(p&&(l=n.$(l),u=n.$(u)),C=0;C<b;++C)S=p?l(f[C])-u(g[C]):f[C]-g[C],x+=v?S*S:Math.abs(S)**+y;return v?Math.sqrt(x):x**(1/y)},i.cohensd=function(o,l,u){var d=u?o.map(n.$(l)):o,p=u?o.map(n.$(u)):l,f=i.mean(d),g=i.mean(p),y=i.count.valid(d),v=i.count.valid(p);if(y+v-2<=0)return 0;var b=i.variance(d),x=i.variance(p),S=Math.sqrt(((y-1)*b+(v-1)*x)/(y+v-2));return S===0?0:(f-g)/S},i.covariance=function(o,l,u){var d=u?o.map(n.$(l)):o,p=u?o.map(n.$(u)):l,f=d.length,g=i.mean(d),y=i.mean(p),v=0,b=0,x,S,C,T,w;if(f!==p.length)throw Error("Input lengths must match.");for(x=0;x<f;++x)if(S=d[x],T=n.isValid(S),C=p[x],w=n.isValid(C),T&&w)v+=(S-g)*(C-y),++b;else if(T||w)throw Error("Valid values must align.");return v/(b-1)},i.rank=function(o,l){l=n.$(l)||n.identity;var u=o.map(function(x,S){return{idx:S,val:l(x)}}).sort(n.comparator("val")),d=o.length,p=Array(d),f=-1,g={},y,v,b;for(y=0;y<d;++y){if(v=u[y].val,f<0&&g===v)f=y-1;else if(f>-1&&g!==v){for(b=1+(y-1+f)/2;f<y;++f)p[u[f].idx]=b;f=-1}p[u[y].idx]=y+1,g=v}if(f>-1)for(b=1+(d-1+f)/2;f<d;++f)p[u[f].idx]=b;return p},i.cor=function(o,l,u){var d=u;u=d?o.map(n.$(u)):l,l=d?o.map(n.$(l)):o;var p=i.dot(l,u),f=i.mean(l),g=i.mean(u),y=i.stdev(l),v=i.stdev(u),b=o.length;return(p-b*f*g)/((b-1)*y*v)},i.cor.rank=function(o,l,u){var d=u?i.rank(o,l):i.rank(o),p=u?i.rank(o,u):i.rank(l),f=o.length,g,y,v;for(g=0,y=0;g<f;++g)v=d[g]-p[g],y+=v*v;return 1-6*y/(f*(f*f-1))},i.cor.dist=function(o,l,u){var d=u?o.map(n.$(l)):o,p=u?o.map(n.$(u)):l,f=i.dist.mat(d),g=i.dist.mat(p),y=f.length,v,b,x,S;for(v=0,b=0,x=0,S=0;v<y;++v)b+=f[v]*f[v],x+=g[v]*g[v],S+=f[v]*g[v];return Math.sqrt(S/Math.sqrt(b*x))},i.linearRegression=function(o,l,u){var d=u?o.map(n.$(l)):o,p=u?o.map(n.$(u)):l,f=d.length,g=i.covariance(d,p),y=i.stdev(d),v=i.stdev(p),b=g/(y*y),x=i.mean(p)-b*i.mean(d),S={slope:b,intercept:x,R:g/(y*v),rss:0},C,T;for(T=0;T<f;++T)n.isValid(d[T])&&n.isValid(p[T])&&(C=b*d[T]+x-p[T],S.rss+=C*C);return S},i.bootstrap={},i.bootstrap.ci=function(o,l,u,d,p){var f,g,y,v,b,x,S;for(n.isFunction(l)||n.isString(l)?(f=o.map(n.$(l)),g=u,y=d,v=p):(f=o,g=l,y=u,v=d),g=g?+g:1e3,y||(y=.05),b=a.random.bootstrap(f,v),S=0,x=Array(g);S<g;++S)x[S]=i.mean(b.samples(f.length));return x.sort(n.numcmp),[i.quantile(x,y/2),i.quantile(x,1-y/2)]},i.z={},i.z.ci=function(o,l,u){var d=o,p=l;(n.isFunction(l)||n.isString(l))&&(d=o.map(n.$(l)),p=u),p||(p=.05);var f=p===.05?1.96:a.random.normal(0,1).icdf(1-p/2),g=i.mean(d),y=i.stdev(d)/Math.sqrt(i.count.valid(d));return[g-f*y,g+f*y]},i.z.test=function(o,l,u,d){return n.isFunction(u)||n.isString(u)?(d&&d.paired?c:h)(d,o,l,u):n.isArray(l)?(u&&u.paired?c:h)(u,o,l):n.isFunction(l)||n.isString(l)?s(u,o,l):s(l,o)};function s(o,l,u){var d=o&&o.nullh||0,p=a.random.normal(0,1),f=i.mean(l,u),g=i.stdev(l,u)/Math.sqrt(i.count.valid(l,u));if(g===0)return f-d===0?1:0;var y=(f-d)/g;return 2*p.cdf(-Math.abs(y))}function c(o,l,u,d){var p=d?l.map(n.$(u)):l,f=d?l.map(n.$(d)):u,g=i.count(p),y=i.count(f),v=[],b;if(g!==y)throw Error("Array lengths must match.");for(b=0;b<g;++b)n.isValid(p[b])&&n.isValid(f[b])&&v.push(p[b]-f[b]);return i.z.test(v,o&&o.nullh||0)}function h(o,l,u,d){var p=d?l.map(n.$(u)):l,f=d?l.map(n.$(d)):u,g=i.count.valid(p),y=i.count.valid(f),v=a.random.normal(0,1),b=i.mean(p)-i.mean(f)-(o&&o.nullh||0),x=Math.sqrt(i.variance(p)/g+i.variance(f)/y);if(x===0)return b===0?1:0;var S=b/x;return 2*v.cdf(-Math.abs(S))}i.dist.mat=function(o){var l=o.length,u=l*l,d=Array(u),p=a.zeros(l),f=0,g,y,v;for(y=0;y<l;++y)for(d[y*l+y]=0,v=y+1;v<l;++v)d[y*l+v]=g=Math.abs(o[y]-o[v]),d[v*l+y]=g,p[y]+=g,p[v]+=g;for(y=0;y<l;++y)f+=p[y],p[y]/=l;for(f/=u,y=0;y<l;++y)for(v=y;v<l;++v)d[y*l+v]+=f-p[y]-p[v],d[v*l+y]=d[y*l+v];return d},i.entropy=function(o,l){l=n.$(l);var u,d,p=0,f=0,g=o.length;for(u=0;u<g;++u)p+=l?l(o[u]):o[u];if(p===0)return 0;for(u=0;u<g;++u)d=(l?l(o[u]):o[u])/p,d&&(f+=d*Math.log(d));return-f/Math.LN2},i.mutual=function(o,l,u,d){var p=d?o.map(n.$(l)):o,f=d?o.map(n.$(u)):l,g=d?o.map(n.$(d)):u,y={},v={},b=g.length,x=0,S=0,C=0,T,w,N;for(N=0;N<b;++N)y[p[N]]=0,v[f[N]]=0;for(N=0;N<b;++N)y[p[N]]+=g[N],v[f[N]]+=g[N],x+=g[N];for(w=1/(x*Math.LN2),N=0;N<b;++N)g[N]!==0&&(T=x*g[N]/(y[p[N]]*v[f[N]]),S+=g[N]*w*Math.log(T),C+=g[N]*w*Math.log(g[N]/x));return[S,1+S/C]},i.mutual.info=function(o,l,u,d){return i.mutual(o,l,u,d)[0]},i.mutual.dist=function(o,l,u,d){return i.mutual(o,l,u,d)[1]},i.profile=function(o,l){var u=0,d=0,p=0,f=0,g=null,y=null,v=0,b=[],x={},S,C,T,w,N;for(T=0;T<o.length;++T)w=l?l(o[T]):o[T],x[w]=w in x?x[w]+1:(f+=1,1),w==null?++p:n.isValid(w)&&(N=typeof w=="string"?w.length:w,(g===null||N<g)&&(g=N),(y===null||N>y)&&(y=N),S=N-u,u+=S/++d,v+=S*(N-u),b.push(N));return v/=d-1,C=Math.sqrt(v),b.sort(n.cmp),{type:r(o,l),unique:x,count:o.length,valid:d,missing:p,distinct:f,min:g,max:y,mean:u,stdev:C,median:w=i.quantile(b,.5),q1:i.quantile(b,.25),q3:i.quantile(b,.75),modeskew:C===0?0:(u-w)/C}},i.summary=function(o,l){l||(l=n.keys(o[0]));var u=l.map(function(d){var p=i.profile(o,n.$(d));return p.field=d,p});return u.__summary__=!0,u}})),Cc=Xe(Tc()),wc=Yi(),Ac=Nc(),Oc=Cc.default;function kc(e,t={},n={fields:[]}){t=(0,U.extend)({},Ve,t);let r=(0,Ac.summary)(e),a=(0,wc.inferAll)(e),i=n.fields.reduce((c,h)=>(c[h.name]=h,c),{}),s=r.map(function(c,h){let o=c.field,l=a[o]==="date"?R.DATETIME:a[o],u=c.distinct,d;if(l===R.NUMBER)d=ee;else if(l===R.INTEGER)d=u<t.numberNominalLimit&&u/c.count<t.numberNominalProportion?Ce:ee;else if(l===R.DATETIME){d=ge,c.min=new Date(e[0][o]),c.max=new Date(e[0][o]);for(let g of e){let y=new Date(g[o]).getTime();y<c.min.getTime()&&(c.min=new Date(y)),y>c.max.getTime()&&(c.max=new Date(y))}}else d=Ce;d==="nominal"&&u/c.count>t.minPercentUniqueForKey&&c.count>t.minCardinalityForKey&&(d=se.KEY);let p={name:o,originalIndex:h,vlType:d,type:l,stats:c,timeStats:{},binStats:{}},f=i[p.name];return p=(0,U.extend)(p,f),p});for(let c of s)if(c.vlType==="quantitative")for(let h of t.enum.binProps.maxbins)c.binStats[h]=Qi(h,c.stats);else if(c.vlType==="temporal")for(let h of t.enum.timeUnit)h!==void 0&&(c.timeStats[h]=Vi(h,c.stats));return new Mc(Object.assign({},n,{fields:s}))}var kt={nominal:0,key:1,ordinal:2,temporal:3,quantitative:4},Mc=class{constructor(e){this._tableSchema=e,e.fields.sort(function(t,n){return kt[t.vlType]<kt[n.vlType]?-1:kt[t.vlType]>kt[n.vlType]?1:t.name.localeCompare(n.name)}),e.fields.forEach((t,n)=>t.index=n),this._fieldSchemaIndex=e.fields.reduce((t,n)=>(t[n.name]=n,t),{})}fieldNames(){return this._tableSchema.fields.map(e=>e.name)}get fieldSchemas(){return this._tableSchema.fields}fieldSchema(e){return this._fieldSchemaIndex[e]}tableSchema(){let e=(0,U.duplicate)(this._tableSchema);return e.fields.sort((t,n)=>t.originalIndex-n.originalIndex),e}primitiveType(e){return this._fieldSchemaIndex[e]?this._fieldSchemaIndex[e].type:null}vlType(e){return this._fieldSchemaIndex[e]?this._fieldSchemaIndex[e].vlType:null}cardinality(e,t=!0,n=!1){let r=this._fieldSchemaIndex[e.field];if(e.aggregate||P(e)&&e.autoCount)return 1;if(e.bin){let a;a=typeof e.bin=="boolean"?{maxbins:pn(e.channel)}:e.bin==="?"?{enum:[!0,!1]}:e.bin;let i=a.maxbins;return r.binStats[i]||(r.binStats[i]=Qi(i,r.stats)),r.binStats[i].distinct}else if(e.timeUnit){if(t)switch(e.timeUnit){case B.SECONDS:return 60;case B.MINUTES:return 60;case B.HOURS:return 24;case B.DAY:return 7;case B.DATE:return 31;case B.MONTH:return 12;case B.QUARTER:return 4;case B.MILLISECONDS:return 1e3}let a=e.timeUnit,i=r.timeStats;return(!i||!i[a])&&(i=Object.assign({},i,{[a]:Vi(e.timeUnit,r.stats)})),n?i[a].distinct-Ki(i[a].unique,["Invalid Date",null]):i[a].distinct}else return r?n?r.stats.distinct-Ki(r.stats.unique,[NaN,null]):r.stats.distinct:null}timeUnitHasVariation(e){if(!e.timeUnit)return;if(e.timeUnit===B.DAY){let n=(0,U.extend)({},e,{timeUnit:B.DATE});if(this.cardinality(n,!1,!0)<=1)return!1}let t=e.timeUnit;for(let n of Xr)if(ni(t,n)){let r=(0,U.extend)({},e,{timeUnit:n});if(this.cardinality(r,!1,!0)<=1)return!1}return!0}domain(e){let t=this._fieldSchemaIndex[e.field],n=(0,U.keys)(t.stats.unique);return t.vlType==="quantitative"?[+t.stats.min,+t.stats.max]:t.type===R.DATETIME?[t.stats.min,t.stats.max]:t.type===R.INTEGER||t.type===R.NUMBER?(n=n.map(r=>+r),n.sort(U.cmp)):t.vlType==="ordinal"&&t.ordinalDomain?t.ordinalDomain:n.map(r=>r==="null"?null:r).sort(U.cmp)}stats(e){let t=this._fieldSchemaIndex[e.field];return t?t.stats:null}};function Qi(e,t){let n=Oc({min:t.min,max:t.max,maxbins:e}),r=(0,U.extend)({},t);return r.unique=Ic(n,t.unique),r.distinct=(n.stop-n.start)/n.step,r.min=n.start,r.max=n.stop,r}function Vi(e,t){let n=(0,U.extend)({},t),r={};return(0,U.keys)(t.unique).forEach(function(a){let i=a==="null"?null:new Date(a),s;s=i===null?null:isNaN(i.getTime())?"Invalid Date":(e===B.DAY?i.getDay():xl(e,i)).toString(),r[s]=(r[s]||0)+t.unique[a]}),n.unique=r,n.distinct=(0,U.keys)(r).length,n}function Ic(e,t){let n={};for(let r in t){let a;a=r===null?null:isNaN(Number(r))?NaN:e.value(Number(r)),n[a]=(n[a]||0)+t[r]}return n}function Ki(e,t){return t.reduce(function(n,r){return e[r]?n+1:n},0)}var R;(function(e){e[e.STRING="string"]="STRING",e[e.NUMBER="number"]="NUMBER",e[e.INTEGER="integer"]="INTEGER",e[e.BOOLEAN="boolean"]="BOOLEAN",e[e.DATETIME="datetime"]="DATETIME"})(R||(R={}));var Ji=class{constructor(e){this.constraint=e}name(){return this.constraint.name}description(){return this.constraint.description}properties(){return this.constraint.properties}strict(){return this.constraint.strict}},Xi=class extends Ji{constructor(e){super(e)}hasAllRequiredPropertiesSpecific(e){return ae(this.constraint.properties,t=>{if(oe(t)){let n=t.parent,r=t.child;return e[n]?!A(e[n][r]):!0}return e[t]?!A(e[t]):!0})}satisfy(e,t,n,r){return!this.constraint.allowWildcardForProperties&&!this.hasAllRequiredPropertiesSpecific(e)?!0:this.constraint.satisfy(e,t,n,r)}};const Zi=[{name:"aggregateOpSupportedByType",description:"Aggregate function should be supported by data type.",properties:[m.TYPE,m.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>e.aggregate?!li(e.type):!0},{name:"asteriskFieldWithCountOnly",description:'Field="*" should be disallowed except aggregate="count"',properties:[m.FIELD,m.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>e.field==="*"==(e.aggregate==="count")},{name:"minCardinalityForBin",description:"binned quantitative field should not have too low cardinality",properties:[m.BIN,m.FIELD,m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if(e.bin&&e.type==="quantitative"){let a={channel:e.channel,field:e.field,type:e.type};return t.cardinality(a)>=r.minCardinalityForBin}return!0}},{name:"binAppliedForQuantitative",description:"bin should be applied to quantitative field only.",properties:[m.TYPE,m.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>e.bin?e.type===ee:!0},{name:"channelFieldCompatible",description:"encoding channel's range type be compatible with channel type.",properties:[m.CHANNEL,m.TYPE,m.BIN,m.TIMEUNIT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{let a=Object.assign({field:"f"},xn(e,{schema:t,props:["bin","timeUnit","type"]})),{compatible:i}=Pl(a,e.channel);return i?!0:!!((e.channel==="row"||e.channel==="column")&&(pl(a.timeUnit)||hl(a.timeUnit)))}},{name:"hasFn",description:"A field with as hasFn flag should have one of aggregate, timeUnit, or bin.",properties:[m.AGGREGATE,m.BIN,m.TIMEUNIT],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>e.hasFn?!!e.aggregate||!!e.bin||!!e.timeUnit:!0},{name:"omitScaleZeroWithBinnedField",description:"Do not use scale zero with binned field",properties:[m.SCALE,de("scale","zero"),m.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!(e.bin&&e.scale&&e.scale.zero===!0)},{name:"onlyOneTypeOfFunction",description:"Only of of aggregate, autoCount, timeUnit, or bin should be applied at the same time.",properties:[m.AGGREGATE,m.AUTOCOUNT,m.TIMEUNIT,m.BIN],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>O(e)?(!A(e.aggregate)&&e.aggregate?1:0)+(!A(e.bin)&&e.bin?1:0)+(!A(e.timeUnit)&&e.timeUnit?1:0)<=1:!0},{name:"timeUnitAppliedForTemporal",description:"Time unit should be applied to temporal field only.",properties:[m.TYPE,m.TIMEUNIT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!(e.timeUnit&&e.type!=="temporal")},{name:"timeUnitShouldHaveVariation",description:"A particular time unit should be applied only if they produce unique values.",properties:[m.TIMEUNIT,m.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.timeUnit&&e.type==="temporal"?!n.has("timeUnit")&&!r.constraintManuallySpecifiedValue?!0:t.timeUnitHasVariation(e):!0},{name:"scalePropertiesSupportedByScaleType",description:"Scale properties must be supported by correct scale type",properties:[].concat(pt,[m.SCALE,m.TYPE]),allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>{if(e.scale){let a=e.scale,i=Oe(e);if(i==null)return!0;for(let s in a){if(s==="type"||s==="name"||s==="enum")continue;let c=s;if(i==="point"){if(!Zt("point",c)&&!Zt("band",c))return!1}else if(!Zt(i,c))return!1}}return!0}},{name:"scalePropertiesSupportedByChannel",description:"Not all scale properties are supported by all encoding channels",properties:[].concat(pt,[m.SCALE,m.CHANNEL]),allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n,r)=>{if(e){let a=e.channel,i=e.scale;if(a&&!A(a)&&i){if(a==="row"||a==="column")return!1;for(let s in i)if(i.hasOwnProperty(s)&&!(s==="type"||s==="name"||s==="enum")&&Js(a,s)!==void 0)return!1}}return!0}},{name:"typeMatchesPrimitiveType",description:"Data type should be supported by field's primitive type.",properties:[m.FIELD,m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if(e.field==="*")return!0;let a=t.primitiveType(e.field),i=e.type;if(!n.has("field")&&!n.has("type")&&!r.constraintManuallySpecifiedValue)return!0;switch(a){case R.BOOLEAN:case R.STRING:return i!=="quantitative"&&i!=="temporal";case R.NUMBER:case R.INTEGER:return i!==ge;case R.DATETIME:return i===ge;case null:return!1}throw Error("Not implemented")}},{name:"typeMatchesSchemaType",description:"Enumerated data type of a field should match the field's type in the schema.",properties:[m.FIELD,m.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>!n.has("field")&&!n.has("type")&&!r.constraintManuallySpecifiedValue?!0:e.field==="*"?e.type===ee:t.vlType(e.field)===e.type},{name:"maxCardinalityForCategoricalColor",description:"Categorical channel should not have too high cardinality",properties:[m.CHANNEL,m.FIELD],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel==="color"&&(e.type==="nominal"||e.type===se.KEY)?t.cardinality(e)<=r.maxCardinalityForCategoricalColor:!0},{name:"maxCardinalityForFacet",description:"Row/column channel should not have too high cardinality",properties:[m.CHANNEL,m.FIELD,m.BIN,m.TIMEUNIT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel==="row"||e.channel==="column"?t.cardinality(e)<=r.maxCardinalityForFacet:!0},{name:"maxCardinalityForShape",description:"Shape channel should not have too high cardinality",properties:[m.CHANNEL,m.FIELD,m.BIN,m.TIMEUNIT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n,r)=>e.channel==="shape"?t.cardinality(e)<=r.maxCardinalityForShape:!0},{name:"dataTypeAndFunctionMatchScaleType",description:"Scale type must match data type",properties:[m.TYPE,m.SCALE,de("scale","type"),m.TIMEUNIT,m.BIN],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>{if(e.scale){let a=e.type,i=Oe(e);if(li(a))return i===void 0||we(i);if(a==="temporal")return e.timeUnit?K([F.TIME,F.UTC,void 0],i)||we(i):K([F.TIME,F.UTC,void 0],i);if(a==="quantitative")return e.bin?K([F.LINEAR,void 0],i):K([F.LOG,F.POW,F.SQRT,F.QUANTILE,F.QUANTIZE,F.LINEAR,void 0],i)}return!0}},{name:"stackIsOnlyUsedWithXY",description:"stack should only be allowed for x and y channels",properties:[m.STACK,m.CHANNEL],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>e.stack?e.channel==="x"||e.channel==="y":!0}].map(e=>new Xi(e));Zi.reduce((e,t)=>(e[t.name()]=t,e),{});const Uc=Zi.reduce((e,t)=>{for(let n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e},new ne),ea=[{name:"doesNotSupportConstantValue",description:"row, column, x, y, order, and detail should not work with constant values.",properties:[m.TYPE,m.AGGREGATE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n,r)=>!K(["row","column","x","y","detail","order"],e.channel)}].map(e=>new Xi(e));ea.reduce((e,t)=>(e[t.name()]=t,e),{});const Fc=ea.reduce((e,t)=>{for(let n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e},new ne);function Dc(e,t,n,r,a,i){let s=Uc.get(e)||[],c=r.getEncodingQueryByIndex(n);for(let o of s)if((o.strict()||i[o.name()])&&!o.satisfy(c,a,r.wildcardIndex.encodings[n],i)){let l="(enc) "+o.name();return i.verbose&&console.log(l+" failed with "+r.toShorthand()+" for "+t.name),l}let h=Fc.get(e)||[];for(let o of h)if((o.strict()||i[o.name()])&&re(c)&&!o.satisfy(c,a,r.wildcardIndex.encodings[n],i)){let l="(enc) "+o.name();return i.verbose&&console.log(l+" failed with "+r.toShorthand()+" for "+t.name),l}return null}var _c=Mr.reduce((e,t)=>(e[t]=!0,e),{}),jc=class extends Ji{constructor(e){super(e)}hasAllRequiredPropertiesSpecific(e){return ae(this.constraint.properties,t=>{if(t===m.MARK)return!A(e.getMark());if(oe(t)){let n=t.parent,r=t.child;return ae(e.getEncodings(),a=>a[n]?!A(a[n][r]):!0)}if(!Kr(t))throw Error("UNIMPLEMENTED");return ae(e.getEncodings(),n=>n[t]?!A(n[t]):!0)})}satisfy(e,t,n){return!this.constraint.allowWildcardForProperties&&!this.hasAllRequiredPropertiesSpecific(e)?!0:this.constraint.satisfy(e,t,n)}};const ta=[{name:"noRepeatedChannel",description:"Each encoding channel should only be used once.",properties:[m.CHANNEL],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n)=>{let r={};return ae(e.getEncodings(),a=>A(a.channel)?!0:r[a.channel]?!1:(r[a.channel]=!0,!0))}},{name:"alwaysIncludeZeroInScaleWithBarMark",description:"Do not recommend bar mark if scale does not start at zero",properties:[m.MARK,m.SCALE,de("scale","zero"),m.CHANNEL,m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{let r=e.getMark(),a=e.getEncodings();if(r==="bar"){for(let i of a)if(O(i)&&(i.channel==="x"||i.channel==="y")&&i.type==="quantitative"&&i.scale&&i.scale.zero===!1)return!1}return!0}},{name:"autoAddCount",description:"Automatically adding count only for plots with only ordinal, binned quantitative, or temporal with timeunit fields.",properties:[m.BIN,m.TIMEUNIT,m.TYPE,m.AUTOCOUNT],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>ue(e.getEncodings(),r=>Tt(r))?ae(e.getEncodings(),r=>{if(re(r)||P(r))return!0;switch(r.type){case ee:return!!r.bin;case ge:return!!r.timeUnit;case Ne:case se.KEY:case Ce:return!0}throw Error("Unsupported Type")}):ae(e.wildcardIndex.encodingIndicesByProperty.get("autoCount")||[],r=>{let a=e.getEncodingQueryByIndex(r);return P(a)&&!A(a.autoCount)})?ue(e.getEncodings(),r=>(O(r)||P(r))&&r.type==="quantitative"?ie(r)?!1:O(r)&&(!r.bin||A(r.bin)):O(r)&&r.type==="temporal"?!r.timeUnit||A(r.timeUnit):!1):!0},{name:"channelPermittedByMarkType",description:"Each encoding channel should be supported by the mark type",properties:[m.CHANNEL,m.MARK],allowWildcardForProperties:!0,strict:!0,satisfy:(e,t,n)=>{let r=e.getMark();return A(r)?!0:ae(e.getEncodings(),a=>A(a.channel)?!0:!!To(a.channel,r))}},{name:"hasAllRequiredChannelsForMark",description:"All required channels for the specified mark should be specified",properties:[m.CHANNEL,m.MARK],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{let r=e.getMark();switch(r){case ze:case gt:return e.channelUsed("x")&&e.channelUsed("y");case yt:return e.channelUsed(Qt);case"bar":case on:case sn:case vt:case an:case rn:return e.channelUsed("x")||e.channelUsed("y");case Ye:return!e.wildcardIndex.hasProperty(m.CHANNEL)||e.channelUsed("x")||e.channelUsed("y")}throw Error("hasAllRequiredChannelsForMark not implemented for mark"+JSON.stringify(r))}},{name:"omitAggregate",description:"Omit aggregate plots.",properties:[m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>!e.isAggregate()},{name:"omitAggregatePlotWithDimensionOnlyOnFacet",description:"Omit aggregate plots with dimensions only on facets as that leads to inefficient use of space.",properties:[m.CHANNEL,m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{if(e.isAggregate()){let r=!1,a=!1,i=!1;if(e.specQuery.encodings.forEach((s,c)=>{re(s)||ie(s)||O(s)&&!s.aggregate&&(a=!0,K(["row","column"],s.channel)?e.wildcardIndex.hasEncodingProperty(c,m.CHANNEL)&&(i=!0):r=!0)}),a&&!r&&(i||n.constraintManuallySpecifiedValue))return!1}return!0}},{name:"omitAggregatePlotWithoutDimension",description:"Aggregate plots without dimension should be omitted",properties:[m.AGGREGATE,m.AUTOCOUNT,m.BIN,m.TIMEUNIT,m.TYPE],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>e.isAggregate()?ue(e.getEncodings(),r=>!!(ve(r)||O(r)&&r.type==="temporal")):!0},{name:"omitBarLineAreaWithOcclusion",description:"Don't use bar, line or area to visualize raw plot as they often lead to occlusion.",properties:[m.MARK,m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>K(["bar","line","area"],e.getMark())?e.isAggregate():!0},{name:"omitBarTickWithSize",description:"Do not map field to size channel with bar and tick mark",properties:[m.CHANNEL,m.MARK],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{if(K(["tick","bar"],e.getMark())&&e.channelEncodingField("size")){if(n.constraintManuallySpecifiedValue)return!1;{let r=e.specQuery.encodings;for(let a=0;a<r.length;a++)if(r[a].channel==="size")return!e.wildcardIndex.hasEncodingProperty(a,m.CHANNEL)}}return!0}},{name:"omitBarAreaForLogScale",description:"Do not use bar and area mark for x and y's log scale",properties:[m.MARK,m.CHANNEL,m.SCALE,de("scale","type"),m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{let r=e.getMark(),a=e.getEncodings();if(r==="area"||r==="bar"){for(let i of a)if(O(i)&&(i.channel==="x"||i.channel==="y")&&i.scale&&Oe(i)===F.LOG)return!1}return!0}},{name:"omitMultipleNonPositionalChannels",description:"Unless manually specified, do not use multiple non-positional encoding channel to avoid over-encoding.",properties:[m.CHANNEL],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{let r=e.specQuery.encodings,a=0,i=!1;for(let s=0;s<r.length;s++){let c=r[s];if(re(c)||ie(c))continue;let h=c.channel;if(!A(h)&&_c[h+""]&&(a+=1,e.wildcardIndex.hasEncodingProperty(s,m.CHANNEL)&&(i=!0),a>1&&(i||n.constraintManuallySpecifiedValue)))return!1}return!0}},{name:"omitNonPositionalOrFacetOverPositionalChannels",description:"Do not use non-positional channels unless all positional channels are used",properties:[m.CHANNEL],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{let r=e.specQuery.encodings,a=!1,i=!1,s=!1,c=!1;for(let h=0;h<r.length;h++){let o=r[h];if(re(o)||ie(o))continue;let l=o.channel;l==="x"?s=!0:l==="y"?c=!0:A(l)||(a=!0,e.wildcardIndex.hasEncodingProperty(h,m.CHANNEL)&&(i=!0))}return i||n.constraintManuallySpecifiedValue&&a?s&&c:!0}},{name:"omitRaw",description:"Omit raw plots.",properties:[m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>!!e.isAggregate()},{name:"omitRawContinuousFieldForAggregatePlot",description:"Aggregate plot should not use raw continuous field as group by values. (Quantitative should be binned. Temporal should have time unit.)",properties:[m.AGGREGATE,m.AUTOCOUNT,m.TIMEUNIT,m.BIN,m.TYPE],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{if(e.isAggregate()){let r=e.specQuery.encodings;for(let a=0;a<r.length;a++){let i=r[a];if(!(re(i)||ie(i))&&(O(i)&&i.type==="temporal"&&!i.timeUnit&&(e.wildcardIndex.hasEncodingProperty(a,m.TIMEUNIT)||n.constraintManuallySpecifiedValue)||i.type==="quantitative"&&O(i)&&!i.bin&&!i.aggregate&&(e.wildcardIndex.hasEncodingProperty(a,m.BIN)||e.wildcardIndex.hasEncodingProperty(a,m.AGGREGATE)||e.wildcardIndex.hasEncodingProperty(a,m.AUTOCOUNT)||n.constraintManuallySpecifiedValue)))return!1}}return!0}},{name:"omitRawDetail",description:"Do not use detail channel with raw plot.",properties:[m.CHANNEL,m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>e.isAggregate()?!0:ae(e.specQuery.encodings,(r,a)=>re(r)||ie(r)?!0:!(r.channel==="detail"&&(e.wildcardIndex.hasEncodingProperty(a,m.CHANNEL)||n.constraintManuallySpecifiedValue)))},{name:"omitRepeatedField",description:"Each field should be mapped to only one channel",properties:[m.FIELD],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{let r={},a={},i=e.specQuery.encodings;for(let s=0;s<i.length;s++){let c=i[s];if(re(c)||P(c))continue;let h;if(c.field&&!A(c.field)&&(h=c.field),P(c)&&!A(c.autoCount)&&(h="count_*"),h){if(e.wildcardIndex.hasEncodingProperty(s,m.FIELD)&&(a[h]=!0),r[h]&&(a[h]||n.constraintManuallySpecifiedValue))return!1;r[h]=!0}}return!0}},{name:"omitVerticalDotPlot",description:"Do not output vertical dot plot.",properties:[m.CHANNEL],allowWildcardForProperties:!0,strict:!1,satisfy:(e,t,n)=>{let r=e.getEncodings();return!(r.length===1&&r[0].channel==="y")}},{name:"hasAppropriateGraphicTypeForMark",description:"Has appropriate graphic type for mark",properties:[m.CHANNEL,m.MARK,m.TYPE,m.TIMEUNIT,m.BIN,m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{let r=e.getMark();switch(r){case ze:case gt:if(e.isAggregate()){let u=e.getEncodingQueryByChannel("x"),d=e.getEncodingQueryByChannel("y"),p=Ke(u),f=Ke(d);return u&&d&&p!==f&&!(O(u)&&!p&&K(["nominal","key"],u.type))&&!(O(d)&&!f&&K(["nominal","key"],d.type))}return!0;case yt:return!0;case"bar":case vt:if(e.channelEncodingField("size"))return!1;{let u=e.getEncodingQueryByChannel("x"),d=e.getEncodingQueryByChannel("y");return Ke(u)!==Ke(d)}case rn:let a=e.getEncodingQueryByChannel("x"),i=e.getEncodingQueryByChannel("y"),s=ve(a),c=ve(i),h=e.getEncodingQueryByChannel(ce),o=Ke(h),l=O(h)?h.type===Ne:!1;return(s&&c||s&&!e.channelUsed("y")||c&&!e.channelUsed("x"))&&(!h||h&&(o||l));case on:case Ye:case sn:case an:return!0}throw Error("hasAllRequiredChannelsForMark not implemented for mark"+r)}},{name:"omitInvalidStackSpec",description:"If stack is specified, must follow Vega-Lite stack rules",properties:[m.STACK,m.FIELD,m.CHANNEL,m.MARK,m.AGGREGATE,m.AUTOCOUNT,m.SCALE,de("scale","type"),m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{if(!e.wildcardIndex.hasProperty(m.STACK))return!0;let r=e.getVlStack();return!(r===null&&e.getStackOffset()!==null||r.fieldChannel!==e.getStackChannel())}},{name:"omitNonSumStack",description:"Stack specifications that use non-summative aggregates should be omitted (even implicit ones)",properties:[m.CHANNEL,m.MARK,m.AGGREGATE,m.AUTOCOUNT,m.SCALE,de("scale","type"),m.TYPE],allowWildcardForProperties:!1,strict:!0,satisfy:(e,t,n)=>{let r=e.getVlStack();return!(r!=null&&!K(ii,e.getEncodingQueryByChannel(r.fieldChannel).aggregate))}},{name:"omitTableWithOcclusionIfAutoAddCount",description:"Plots without aggregation or autocount where x and y are both discrete should be omitted if autoAddCount is enabled as they often lead to occlusion",properties:[m.CHANNEL,m.TYPE,m.TIMEUNIT,m.BIN,m.AGGREGATE,m.AUTOCOUNT],allowWildcardForProperties:!1,strict:!1,satisfy:(e,t,n)=>{if(n.autoAddCount){let r=e.getEncodingQueryByChannel("x"),a=e.getEncodingQueryByChannel("y");if((!O(r)||ve(r))&&(!O(a)||ve(a)))return e.isAggregate()?ae(e.getEncodings(),i=>{let s=i.channel;return!(s!=="x"&&s!=="y"&&s!=="row"&&s!=="column"&&O(i)&&!i.aggregate)}):!1}return!0}}].map(e=>new jc(e));ta.reduce((e,t)=>(e[t.name()]=t,e),{});var Pc=ta.reduce((e,t)=>{for(let n of t.properties())e.set(n,e.get(n)||[]),e.get(n).push(t);return e},new ne);function na(e,t,n,r,a){let i=Pc.get(e)||[];for(let s of i)if((s.strict()||a[s.name()])&&!s.satisfy(n,r,a)){let c="(spec) "+s.name();return a.verbose&&console.log(c+" failed with "+n.toShorthand()+" for "+t.name),c}return null}var Mt=new ne;function Rc(e){return Mt.get(e)}Mt.set("mark",(e,t,n)=>(r,a)=>(a.getMark().enum.forEach(i=>{a.setMark(i),na("mark",e.mark,a,t,n)||r.push(a.duplicate())}),a.resetMark(),r)),en.forEach(e=>{Mt.set(e,ra(e))}),ht.forEach(e=>{Mt.set(e,ra(e))});function ra(e){return(t,n,r)=>(a,i)=>{let s=t.encodingIndicesByProperty.get(e);function c(h){if(h===s.length){a.push(i.duplicate());return}let o=s[h],l=t.encodings[o].get(e),u=i.getEncodingQueryByIndex(o),d=i.getEncodingProperty(o,e);re(u)||ie(u)||!d?c(h+1):(l.enum.forEach(p=>{p===null&&(p=void 0),i.setEncodingProperty(o,e,p,l),!Dc(e,l,o,i,n,r)&&(na(e,l,i,n,r)||c(h+1))}),i.resetEncodingProperty(o,e,l))}return c(0),a}}var $c=te();function Bc(e){return(0,$c.isObject)(e)&&!!e.property}function Je(e,t,n){return t||(t=new ne),n||(n=new ne),e.forEach(r=>{Bc(r)?(t.setByKey(r.property,!0),n.setByKey(r.property,r.replace)):t.setByKey(r,!0)}),{include:t,replaceIndex:n,replacer:Jl(n)}}const ia=[m.FIELD,m.TYPE,m.AGGREGATE,m.BIN,m.TIMEUNIT,m.STACK],Lc=ia.concat([{property:m.CHANNEL,replace:{x:"xy",y:"xy",color:"style",size:"style",shape:"style",opacity:"style",row:"facet",column:"facet"}}]);var aa=te(),Qn={};function It(e,t){Qn[e]=t}function Wc(e,t){if(t){let n={name:"",path:"",items:[]},r={},a=[],i=[],s=[];for(let c=0;c<t.length;c++){a.push(c>0?a[c-1].duplicate():new ne),i.push(c>0?i[c-1].duplicate():new ne);let h=t[c].groupBy;if((0,aa.isArray)(h)){let o=Je(h,a[c],i[c]);s.push(o.replacer)}}return e.forEach(c=>{let h="",o=n;for(let l=0;l<t.length;l++){let u=o.groupBy=t[l].groupBy;o.orderGroupBy=t[l].orderGroupBy;let d=(0,aa.isArray)(u)?Pe(c.specQuery,a[l],s[l]):Qn[u](c.specQuery);h+="/"+d,r[h]||(r[h]={name:d,path:h,items:[]},o.items.push(r[h])),o=r[h]}o.items.push(c)}),n}else return{name:"",path:"",items:e}}var oa=Je([m.FIELD]);function qc(e,t){return Qn[t](e)}It("field",e=>Pe(e,oa.include,oa.replacer));const sa=Je(ia);It("fieldTransform",e=>Pe(e,sa.include,sa.replacer));const la=Je(Lc);It("encoding",e=>Pe(e,la.include,la.replacer)),It("spec",e=>JSON.stringify(e));var Hc=class{constructor(){this._mark=void 0,this._encodings={},this._encodingIndicesByProperty=new ne}setEncodingProperty(e,t,n){let r=this._encodings;(r[e]=r[e]||new ne).set(t,n);let a=this._encodingIndicesByProperty;return a.set(t,a.get(t)||[]),a.get(t).push(e),this}hasEncodingProperty(e,t){return!!this._encodings[e]&&this._encodings[e].has(t)}hasProperty(e){if(Kr(e))return this.encodingIndicesByProperty.has(e);if(e==="mark")return!!this.mark;throw Error("Unimplemented for property "+e)}isEmpty(){return!this.mark&&this.encodingIndicesByProperty.size()===0}setMark(e){return this._mark=e,this}get mark(){return this._mark}get encodings(){return this._encodings}get encodingIndicesByProperty(){return this._encodingIndicesByProperty}},Gc=te(),zc=class ar{constructor(t,n,r,a,i){this._rankingScore={},this._spec=t,this._channelFieldCount=t.encodings.reduce((s,c)=>(!A(c.channel)&&(!P(c)||c.autoCount!==!1)&&(s[c.channel+""]=1),s),{}),this._wildcardIndex=n,this._assignedWildcardIndex=i,this._opt=a,this._schema=r}static build(t,n,r){let a=new Hc;if(A(t.mark)){let i=Qe(m.MARK);t.mark=un(t.mark,i,r.enum.mark),a.setMark(t.mark)}if(t.encodings.forEach((i,s)=>{P(i)&&(console.warn("A field with autoCount should not be included as autoCount meant to be an internal object."),i.type=ee),O(i)&&i.type===void 0&&(i.type="?"),en.forEach(c=>{if(A(i[c])){let h=Qe(c)+s,o=fn(c,n,r),l=i[c]=un(i[c],h,o);a.setEncodingProperty(s,c,l)}}),ht.forEach(c=>{let h=i[c.parent];if(h){let o=c.child;if(A(h[o])){let l=Qe(c)+s,u=fn(c,n,r),d=h[o]=un(h[o],l,u);a.setEncodingProperty(s,c,d)}}})}),r.autoAddCount){let i={name:Qe(m.CHANNEL)+t.encodings.length,enum:fn(m.CHANNEL,n,r)},s={name:Qe(m.AUTOCOUNT)+t.encodings.length,enum:[!1,!0]},c={channel:i,autoCount:s,type:ee};t.encodings.push(c);let h=t.encodings.length-1;a.setEncodingProperty(h,m.CHANNEL,i),a.setEncodingProperty(h,m.AUTOCOUNT,s)}return new ar(t,a,n,r,{})}get wildcardIndex(){return this._wildcardIndex}get schema(){return this._schema}get specQuery(){return this._spec}duplicate(){return new ar((0,U.duplicate)(this._spec),this._wildcardIndex,this._schema,this._opt,(0,U.duplicate)(this._assignedWildcardIndex))}setMark(t){let n=this._wildcardIndex.mark.name;this._assignedWildcardIndex[n]=this._spec.mark=t}resetMark(){let t=this._spec.mark=this._wildcardIndex.mark;delete this._assignedWildcardIndex[t.name]}getMark(){return this._spec.mark}getEncodingProperty(t,n){let r=this._spec.encodings[t];return oe(n)?r[n.parent][n.child]:r[n]}setEncodingProperty(t,n,r,a){let i=this._spec.encodings[t];n===m.CHANNEL&&i.channel&&!A(i.channel)&&this._channelFieldCount[i.channel]--,oe(n)?i[n.parent][n.child]=r:tn(n)&&r===!0?i[n]=(0,U.extend)({},i[n],{enum:void 0,name:void 0}):i[n]=r,this._assignedWildcardIndex[a.name]=r,n===m.CHANNEL&&(this._channelFieldCount[r]=(this._channelFieldCount[r]||0)+1)}resetEncodingProperty(t,n,r){let a=this._spec.encodings[t];n===m.CHANNEL&&this._channelFieldCount[a.channel]--,oe(n)?a[n.parent][n.child]=r:a[n]=r,delete this._assignedWildcardIndex[r.name]}channelUsed(t){return this._channelFieldCount[t]>0}channelEncodingField(t){return O(this.getEncodingQueryByChannel(t))}getEncodings(){return this._spec.encodings.filter(t=>!ie(t))}getEncodingQueryByChannel(t){for(let n of this._spec.encodings)if(n.channel===t)return n}getEncodingQueryByIndex(t){return this._spec.encodings[t]}isAggregate(){return Yl(this._spec)}getVlStack(){return ui(this._spec)}getStackOffset(){return Ql(this._spec)}getStackChannel(){return Vl(this._spec)}toShorthand(t){if(t){if((0,Gc.isString)(t))return qc(this.specQuery,t);let n=Je(t);return Pe(this._spec,n.include,n.replacer)}return Pe(this._spec)}toSpec(t){if(A(this._spec.mark))return null;let n={};return t||(t=this._spec.data),t&&(n.data=t),this._spec.transform&&(n.transform=this._spec.transform),n.mark=this._spec.mark,n.encoding=gi(this.specQuery.encodings,{schema:this._schema,wildcardMode:"null"}),this._spec.width&&(n.width=this._spec.width),this._spec.height&&(n.height=this._spec.height),this._spec.background&&(n.background=this._spec.background),this._spec.padding&&(n.padding=this._spec.padding),this._spec.title&&(n.title=this._spec.title),n.encoding===null?null:((this._spec.config||this._opt.defaultSpecConfig)&&(n.config=(0,U.extend)({},this._opt.defaultSpecConfig,this._spec.config)),n)}getRankingScore(t){return this._rankingScore[t]}setRankingScore(t,n){this._rankingScore[t]=n}};function Yc(e){if(e.groupBy){let t={groupBy:e.groupBy};e.orderBy&&(t.orderGroupBy=e.orderBy);let n={spec:(0,U.duplicate)(e.spec),nest:[t]};return e.chooseBy&&(n.chooseBy=e.chooseBy),e.config&&(n.config=e.config),n}return(0,U.duplicate)(e)}function ca(e){return e.items!==void 0}function Vn(e){let t=e.items[0];for(;t&&ca(t);)t=t.items[0];return t}var Re=class{constructor(e){this.type=e,this.scoreIndex=this.initScore()}getFeatureScore(e){let t=this.type,n=this.scoreIndex[e];if(n!==void 0)return{type:t,feature:e,score:n}}},J;(function(e){e[e.Q=ee]="Q",e[e.BIN_Q="bin_"+ee]="BIN_Q",e[e.T=ge]="T",e[e.TIMEUNIT_T="timeUnit_time"]="TIMEUNIT_T",e[e.TIMEUNIT_O="timeUnit_"+Ne]="TIMEUNIT_O",e[e.O=Ne]="O",e[e.N=Ce]="N",e[e.K=se.KEY]="K",e[e.NONE="-"]="NONE"})(J||(J={}));const ua=J.Q,Ut=J.BIN_Q,Kn=J.T,$e=J.TIMEUNIT_T,Ft=J.TIMEUNIT_O,Dt=J.O,_t=J.N,Jn=J.K,jt=J.NONE;function Pt(e){return e.bin?J.BIN_Q:e.timeUnit?we(Oe(e))?J.TIMEUNIT_O:J.TIMEUNIT_T:e.type}var Qc=class extends Re{constructor(){super("Axis")}initScore(e={}){e=Object.assign({},Ve,e);let t={};return[{feature:Ut,opt:"preferredBinAxis"},{feature:Kn,opt:"preferredTemporalAxis"},{feature:$e,opt:"preferredTemporalAxis"},{feature:Ft,opt:"preferredTemporalAxis"},{feature:Dt,opt:"preferredOrdinalAxis"},{feature:_t,opt:"preferredNominalAxis"}].forEach(n=>{e[n.opt]==="x"?t[n.feature+"_y"]=-.01:e[n.opt]==="y"&&(t[n.feature+"_x"]=-.01)}),t}featurize(e,t){return e+"_"+t}getScore(e,t,n){return e.getEncodings().reduce((r,a)=>{if(O(a)||P(a)){let i=Pt(a),s=this.featurize(i,a.channel),c=this.getFeatureScore(s);c&&r.push(c)}return r},[])}},Vc=class extends Re{constructor(){super("Dimension")}initScore(){return{row:-2,column:-2,color:0,opacity:0,size:0,shape:0}}getScore(e,t,n){return e.isAggregate()&&e.getEncodings().reduce((r,a)=>{if(P(a)||O(a)&&!a.aggregate){let i=this.getFeatureScore(a.channel+"");if(i&&i.score>r.score)return i}return r},{type:"Dimension",feature:"No Dimension",score:-5}),[]}},Kc=class extends Re{constructor(){super("Facet")}initScore(e){e=Object.assign({},Ve,e);let t={};return e.preferredFacet==="row"?t[Se]=-.01:e.preferredFacet==="column"&&(t.row=-.01),t}getScore(e,t,n){return e.getEncodings().reduce((r,a)=>{if(O(a)||P(a)){let i=this.getFeatureScore(a.channel);i&&r.push(i)}return r},[])}},Jc=class extends Re{constructor(){super("SizeChannel")}initScore(){return{bar_size:-2,tick_size:-2}}getScore(e,t,n){let r=e.getMark();return e.getEncodings().reduce((a,i)=>{if(O(i)||P(i)){let s=r+"_"+i.channel,c=this.getFeatureScore(s);c&&a.push(c)}return a},[])}},Xc=class extends Re{constructor(){super("TypeChannel")}initScore(){let e={},t={x:0,y:0,size:-.575,color:-.725,text:-2,opacity:-3,shape:-10,row:-10,column:-10,detail:-20};[ua,Kn,$e].forEach(a=>{(0,U.keys)(t).forEach(i=>{e[this.featurize(a,i)]=t[i]})});let n=(0,U.extend)({},t,{row:-.75,column:-.75,shape:-3.1,text:-3.2,detail:-4});[Ut,Ft,Dt].forEach(a=>{(0,U.keys)(n).forEach(i=>{e[this.featurize(a,i)]=n[i]})});let r={x:0,y:0,color:-.6,shape:-.65,row:-.7,column:-.7,text:-.8,detail:-2,size:-3,opacity:-3.1};return(0,U.keys)(r).forEach(a=>{e[this.featurize(_t,a)]=r[a],e[this.featurize(Jn,a)]=K(["x","y","detail"],a)?-1:r[a]-2}),e}featurize(e,t){return e+"_"+t}getScore(e,t,n){let r=e.getEncodings().reduce((i,s)=>{if(O(s)||P(s)){let c=hi(s);(i[c]=i[c]||[]).push(s)}return i},{}),a=[];return G(r,i=>{let s=i.reduce((c,h)=>{if(O(h)||P(h)){let o=Pt(h),l=this.featurize(o,h.channel),u=this.getFeatureScore(l);if(c===null||u.score>c.score)return u}return c},null);a.push(s)}),a}},Zc=class extends Re{constructor(){super("Mark")}initScore(){return eu()}getScore(e,t,n){let r=e.getMark();(r==="circle"||r==="square")&&(r=Ye);let a=e.getEncodingQueryByChannel("x"),i=a?Pt(a):jt,s=e.getEncodingQueryByChannel("y"),c=s?Pt(s):jt,h=!e.isAggregate(),o=i+"_"+c+"_"+h+"_"+r,l=this.getFeatureScore(o);return l?[l]:(console.error("feature score missing for",o),[])}};function $(e,t,n,r){return e+"_"+t+"_"+n+"_"+r}function eu(){let e=[ua,Kn],t=[Ut,Ft,Dt,_t,Jn,jt],n={};e.forEach(r=>{e.forEach(a=>{G({point:0,text:-.2,tick:-.5,rect:-1,bar:-2,line:-2,area:-2,rule:-2.5},(i,s)=>{let c=$(r,a,!0,s);n[c]=i}),G({point:0,text:-.2,tick:-.5,bar:-2,line:-2,area:-2,rule:-2.5},(i,s)=>{let c=$(r,a,!1,s);n[c]=i})})}),e.forEach(r=>{t.forEach(a=>{G({tick:0,point:-.2,text:-.5,bar:-2,line:-2,area:-2,rule:-2.5},(i,s)=>{let c=$(r,a,!0,s);n[c]=i;let h=$(a,r,!0,s);n[h]=i})}),[$e].forEach(a=>{G({point:0,text:-.5,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5},(i,s)=>{let c=$(r,a,!0,s);n[c]=i;let h=$(a,r,!0,s);n[h]=i})}),[jt,_t,Dt,Jn].forEach(a=>{G({bar:0,point:-.2,tick:-.25,text:-.3,line:-2,area:-2,rule:-2.5},(i,s)=>{let c=$(r,a,!1,s);n[c]=i;let h=$(a,r,!1,s);n[h]=i})}),[Ut].forEach(a=>{G({bar:0,point:-.2,tick:-.25,text:-.3,line:-.5,area:-.5,rule:-2.5},(i,s)=>{let c=$(r,a,!1,s);n[c]=i;let h=$(a,r,!1,s);n[h]=i})}),[$e,Ft].forEach(a=>{G({line:0,area:-.1,bar:-.2,point:-.3,tick:-.35,text:-.4,rule:-2.5},(i,s)=>{let c=$(r,a,!1,s);n[c]=i;let h=$(a,r,!1,s);n[h]=i})})}),[$e].forEach(r=>{[$e].forEach(a=>{let i={point:0,rect:-.1,text:-.5,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5};G(i,(s,c)=>{let h=$(r,a,!0,c);n[h]=s}),G(i,(s,c)=>{let h=$(r,a,!1,c);n[h]=s})}),t.forEach(a=>{let i={tick:0,point:-.2,text:-.5,rect:-1,bar:-2,line:-2,area:-2,rule:-2.5};G(i,(s,c)=>{let h=$(r,a,!0,c);n[h]=s}),G(i,(s,c)=>{let h=$(a,r,!0,c);n[h]=s}),G(i,(s,c)=>{let h=$(r,a,!1,c);n[h]=s}),G(i,(s,c)=>{let h=$(a,r,!1,c);n[h]=s})})});for(let r of t)for(let a of t){let i={point:0,rect:0,text:-.1,tick:-1,bar:-2,line:-2,area:-2,rule:-2.5};G(i,(s,c)=>{let h=$(r,a,!0,c);n[h]=s}),G(i,(s,c)=>{let h=$(r,a,!1,c);n[h]=s})}return n}var tu=[new Qc,new Vc,new Kc,new Zc,new Jc,new Xc];function nu(e,t,n){let r=tu.reduce((a,i)=>{let s=i.getScore(e,t,n);return a.concat(s)},[]);return{score:r.reduce((a,i)=>a+i.score,0),features:r}}const be="aggregationQuality";function ru(e,t,n){let r=iu(e,t,n);return{score:r.score,features:[r]}}function iu(e,t,n){let r=e.getEncodings();if(e.isAggregate()){if(ue(r,a=>O(a)&&(a.type==="quantitative"&&!a.bin&&!a.aggregate||a.type==="temporal"&&!a.timeUnit)))return{type:be,score:.1,feature:"Aggregate with raw continuous"};if(ue(r,a=>O(a)&&ve(a))){let a=ue(r,s=>O(s)&&s.aggregate==="count"||Tt(s)),i=ue(r,s=>O(s)&&!!s.bin);return a?{type:be,score:.8,feature:"Aggregate with count"}:i?{type:be,score:.7,feature:"Aggregate with bin but without count"}:{type:be,score:.9,feature:"Aggregate without count and without bin"}}return{type:be,score:.3,feature:"Aggregate without dimension"}}else return ue(r,a=>O(a)&&!ve(a))?{type:be,score:1,feature:"Raw with measure"}:{type:be,score:.2,feature:"Raw without measure"}}function au(e,t,n){let r=e.wildcardIndex.encodingIndicesByProperty.get("field");if(!r)return{score:0,features:[]};let a=e.specQuery.encodings,i=t.fieldSchemas.length,s=[],c=0,h=1;for(let o=r.length-1;o>=0;o--){let l=r[o],u=a[l],d;if(O(u))d=u.field;else continue;let p=e.wildcardIndex.encodings[l].get("field"),f=t.fieldSchema(d).index,g=-f*h;c+=g,s.push({score:g,type:"fieldOrder",feature:`field ${p.name} is ${d} (#${f} in the schema)`}),h*=i}return{score:c,features:s}}var da={};function Xn(e,t){da[e]=t}function ou(e){return da[e]}function fa(e,t,n,r){return!t.nest||r===t.nest.length?(t.orderBy||t.chooseBy)&&(e.items.sort(su(t.orderBy||t.chooseBy,n,t.config)),t.chooseBy&&e.items.length>0&&e.items.splice(1)):(e.items.forEach(a=>{fa(a,t,n,r+1)}),t.nest[r].orderGroupBy&&e.items.sort(lu(t.nest[r].orderGroupBy,n,t.config))),e}function su(e,t,n){return(r,a)=>e instanceof Array?Rt(e,r,a,t,n):Rt([e],r,a,t,n)}function lu(e,t,n){return(r,a)=>{let i=Vn(r),s=Vn(a);return e instanceof Array?Rt(e,i,s,t,n):Rt([e],i,s,t,n)}}function Rt(e,t,n,r,a){for(let i of e){let s=pa(n,i,r,a).score-pa(t,i,r,a).score;if(s!==0)return s}return 0}function pa(e,t,n,r){if(e.getRankingScore(t)!==void 0)return e.getRankingScore(t);let a=ou(t)(e,n,r);return e.setRankingScore(t,a),a}Xn("effectiveness",nu),Xn(be,ru),Xn("fieldOrder",au);function cu(e,t,n){let r={};return e=e.map(function(a){return n.smallRangeStepForHighCardinalityOrFacet&&(a=uu(a,t,r,n)),n.nominalColorScaleForHighCardinality&&(a=du(a,t,r,n)),n.xAxisOnTopForHighYCardinalityWithoutColumn&&(a=fu(a,t,r,n)),a}),e}function uu(e,t,n,r){["row","y",Se,"x"].forEach(s=>{n[s]=e.getEncodingQueryByChannel(s)});let a=n.y;if(a!==void 0&&O(a)&&(n.row||t.cardinality(a)>r.smallRangeStepForHighCardinalityOrFacet.maxCardinality)){a.scale===void 0&&(a.scale={});let s=Oe(a);a.scale&&(s===void 0||we(s))&&(a.scale.rangeStep||(a.scale.rangeStep=12))}let i=n.x;if(O(i)&&(n.column||t.cardinality(i)>r.smallRangeStepForHighCardinalityOrFacet.maxCardinality)){i.scale===void 0&&(i.scale={});let s=Oe(i);i.scale&&(s===void 0||we(s))&&(i.scale.rangeStep||(i.scale.rangeStep=12))}return e}function du(e,t,n,r){n[ce]=e.getEncodingQueryByChannel(ce);let a=n[ce];return O(a)&&a!==void 0&&(a.type==="nominal"||a.type===se.KEY)&&t.cardinality(a)>r.nominalColorScaleForHighCardinality.maxCardinality&&(a.scale===void 0&&(a.scale={}),a.scale&&(a.scale.range||(a.scale.scheme=r.nominalColorScaleForHighCardinality.palette))),e}function fu(e,t,n,r){if([Se,"x","y"].forEach(a=>{n[a]=e.getEncodingQueryByChannel(a)}),n.column===void 0){let a=n.x,i=n.y;O(a)&&O(i)&&i!==void 0&&i.field&&we(Oe(i))&&a!==void 0&&t.cardinality(i)>r.xAxisOnTopForHighYCardinalityWithoutColumn.maxCardinality&&(a.axis===void 0&&(a.axis={}),a.axis&&!a.axis.orient&&(a.axis.orient="top"))}return e}function pu(e,t,n=Ve){let r=zc.build(e,t,n),a=r.wildcardIndex,i=[r];return n.propertyPrecedence.forEach(s=>{let c=ol(s);if(a.hasProperty(c)){let h=Rc(c)(a,t,n);i=i.reduce(h,[])}}),n.stylize&&(n.nominalColorScaleForHighCardinality!==null||n.smallRangeStepForHighCardinalityOrFacet!==null||n.xAxisOnTopForHighYCardinalityWithoutColumn!==null)?cu(i,t,n):i}function ha(e,t,n){e=Object.assign({},Yc(e),{config:Object.assign({},Ve,n,e.config)});let r=fa(Wc(pu(e.spec,t,e.config),e.nest),e,t,0);return{query:e,result:r}}var Zn=Xe(Ia(),1),E=Xe(Ha(),1);const Be={[R.BOOLEAN]:(0,E.jsx)(Fa,{className:"h-5 w-5 inline-flex opacity-60"}),[R.DATETIME]:(0,E.jsx)(Da,{className:"h-5 w-5 inline-flex opacity-60"}),[R.NUMBER]:(0,E.jsx)(Ua,{className:"h-5 w-5 inline-flex opacity-60"}),[R.STRING]:(0,E.jsx)(_a,{className:"h-5 w-5 inline-flex opacity-60"}),[R.INTEGER]:(0,E.jsx)(io,{className:"h-5 w-5 inline-flex opacity-60"})};var ma=12;const hu=e=>{let t=(0,gr.c)(45),{schema:n}=e,[r,a]=(0,Zn.useState)(),[i,s]=(0,Zn.useState)(),c,h,o,l,u,d,p,f;if(t[0]!==n||t[1]!==r||t[2]!==i){c=n.fieldNames();let k;t[11]!==n||t[12]!==r?(k=r?n.stats({field:r,channel:"x"}):void 0,t[11]=n,t[12]=r,t[13]=k):k=t[13],o=k;let I;t[14]===Symbol.for("react.memo_cache_sentinel")?(I=(0,E.jsx)(ro,{className:"text-muted-foreground",width:40,height:40,strokeWidth:1.5}),t[14]=I):I=t[14];let _=I,xe=i?c:c.slice(0,ma);h=c.length>ma,d="flex flex-col justify-center items-center h-full flex-1 gap-2",p=_,f=(0,E.jsxs)("span",{className:"text-muted-foreground font-semibold",children:[c.length>0?c.length:"No"," fields"]}),l="hidden lg:grid grid-cols-2 xl:grid-cols-3 gap-2 p-2 bg-(--slate-1) border rounded lg:items-center items-start w-fit grid-flow-dense max-h-[300px] overflow-auto";let X;t[15]!==n||t[16]!==r?(X=W=>{let fe=n.cardinality({channel:"x",field:W});return(0,E.jsxs)("span",{className:cr("hover:bg-muted self-start px-2 py-2 rounded flex flex-row gap-1 items-center cursor-pointer lg:justify-center text-sm truncate shrink-0 overflow-hidden",r===W&&"bg-muted"),onClick:()=>{if(r===W){a(void 0);return}a(W)},children:[Be[n.primitiveType(W)],W,fe>1&&(0,E.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",fe,")"]})]},W)},t[15]=n,t[16]=r,t[17]=X):X=t[17],u=xe.map(X),t[0]=n,t[1]=r,t[2]=i,t[3]=c,t[4]=h,t[5]=o,t[6]=l,t[7]=u,t[8]=d,t[9]=p,t[10]=f}else c=t[3],h=t[4],o=t[5],l=t[6],u=t[7],d=t[8],p=t[9],f=t[10];let g;t[18]!==h||t[19]!==i?(g=h&&(0,E.jsx)(lr,{"data-testid":"marimo-plugin-data-explorer-show-more-columns",variant:"link",size:"sm",className:"self-center col-span-3 -mt-1",onClick:()=>s(yu),children:i?"Show less":"Show more"}),t[18]=h,t[19]=i,t[20]=g):g=t[20];let y;t[21]!==l||t[22]!==u||t[23]!==g?(y=(0,E.jsxs)("div",{className:l,children:[u,g]}),t[21]=l,t[22]=u,t[23]=g,t[24]=y):y=t[24];let v=r||"",b=c.length===0,x;t[25]===Symbol.for("react.memo_cache_sentinel")?(x=k=>{a(k)},t[25]=x):x=t[25];let S;t[26]===Symbol.for("react.memo_cache_sentinel")?(S=(0,E.jsx)(et,{className:"min-w-[210px] h-full",children:(0,E.jsx)(pr,{placeholder:"Select a column"})}),t[26]=S):S=t[26];let C;t[27]===n?C=t[28]:(C=n.fieldNames().map(k=>(0,E.jsx)(Te,{value:k.toString(),children:(0,E.jsxs)("span",{className:"flex items-center gap-2 flex-1",children:[Be[n.primitiveType(k)],(0,E.jsx)("span",{className:"flex-1",children:k}),(0,E.jsxs)("span",{className:"text-muted-foreground text-xs font-semibold",children:["(",n.vlType(k),")"]})]})},k)),t[27]=n,t[28]=C);let T;t[29]===C?T=t[30]:(T=(0,E.jsx)(Ze,{children:(0,E.jsx)(We,{children:C})}),t[29]=C,t[30]=T);let w;t[31]!==T||t[32]!==v||t[33]!==b?(w=(0,E.jsx)("div",{className:"lg:hidden",children:(0,E.jsxs)(tt,{"data-testid":"marimo-plugin-data-explorer-column-select",value:v,disabled:b,onValueChange:x,children:[S,T]})}),t[31]=T,t[32]=v,t[33]=b,t[34]=w):w=t[34];let N;t[35]!==r||t[36]!==o?(N=r&&(0,E.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-2 xl:grid-cols-3 gap-2 p-2 text-sm",children:mu.map(k=>(0,E.jsxs)("div",{className:"flex flex-row gap-2 min-w-[100px]",children:[(0,E.jsx)("span",{className:"font-semibold",children:k}),(0,E.jsx)("span",{children:(0,E.jsx)(gu,{value:o==null?void 0:o[k]})})]},k))}),t[35]=r,t[36]=o,t[37]=N):N=t[37];let D;return t[38]!==w||t[39]!==N||t[40]!==d||t[41]!==p||t[42]!==f||t[43]!==y?(D=(0,E.jsxs)("div",{className:d,children:[p,f,y,w,N]}),t[38]=w,t[39]=N,t[40]=d,t[41]=p,t[42]=f,t[43]=y,t[44]=D):D=t[44],D};var mu=["distinct","min","max","mean","median","q1","q3","stdev"],gu=e=>{let t=(0,gr.c)(8),{value:n}=e,r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={maximumFractionDigits:2},t[0]=r):r=t[0];let a=Xa(r),i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i={year:"numeric",month:"short",day:"numeric"},t[1]=i):i=t[1];let s=Ja(i);if(typeof n=="number"){let c;return t[2]!==a||t[3]!==n?(c=a.format(n),t[2]=a,t[3]=n,t[4]=c):c=t[4],c}if(typeof n=="string")return n;if(typeof n=="object"&&n instanceof Date){let c;return t[5]!==s||t[6]!==n?(c=s.format(n),t[5]=s,t[6]=n,t[7]=c):c=t[7],c}return String(n)};function yu(e){return!e}var vu=["argmax","argmin","average","count","distinct","exponential","exponentialb","product","max","mean","median","min","missing","q1","q3","ci0","ci1","stderr","stdev","stdevp","sum","valid","values","variance","variancep"];const bu=e=>Ra(e)?vu.includes(e):!1;function xu(e){return e?e==="bin"?{bin:!0}:bu(e)?{aggregate:e}:Eu(e)?{timeUnit:e}:{}:{}}function Eu(e){return e?ga.includes(e)||ya.includes(e):!1}const Tu=["bin","min","max","mean","median","sum"],ga=["year","month","date","day","hours","minutes","seconds","milliseconds"],ya=["yearmonth","yearmonthdate","monthdate"];function Su(e){let{aggregate:t,bin:n,timeUnit:r}=e;if(n)return"bin";if(t)return t.toString();if(r)return r.toString()}const Nu=["?","area","bar","circle","geoshape","line","point","rect","rule","square","text","tick","trail"],Cu={type:"histograms",limit:12,createQuery(e){return{spec:{data:e.spec.data,mark:"?",transform:e.spec.transform,encodings:[{channel:"?",bin:"?",timeUnit:"?",field:"?",type:"?"},{channel:"?",aggregate:"count",field:"*",type:"quantitative"}]},groupBy:"fieldTransform",orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:{autoAddCount:!1}}}};function va(e){let t={};for(let n in e)e[n]!==void 0&&(t[n]=e[n]);return t}function wu(e,t){let{fn:n,...r}=e;return{channel:t,...xu(n),...r}}function Au(e){let{aggregate:t,bin:n,timeUnit:r,field:a,scale:i,legend:s,axis:c,sort:h,description:o}=e,{type:l}=e;if(A(l))throw Error("Wildcard not support");l==="ordinal"&&(Wa.warn("Ordinal type is not supported. Using nominal type instead."),l="nominal");let u=Su({aggregate:t,bin:n,timeUnit:r});return qa(a!==void 0,"Field is required for fieldQ"),va({field:a,fn:u,type:l,sort:h,scale:i,axis:c,legend:s,description:o})}function Ou(e){return{mark:e.mark,encodings:ku(e.encoding),config:e.config}}function ku(e){return e?Object.entries(e).map(([t,n])=>wu(n,t)):[]}function er(e){let{type:t,limit:n,additionalFieldQuery:r}=e;return{type:t,limit:n,createQuery(a){return{spec:{...a.spec,encodings:[...a.spec.encodings,r]},groupBy:"field",orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:{autoAddCount:!0}}}}}const Mu=er({type:"addCategoricalField",limit:4,additionalFieldQuery:{channel:"?",field:"?",type:"nominal"}}),Iu=er({type:"addQuantitativeField",limit:4,additionalFieldQuery:{channel:"?",bin:"?",aggregate:"?",field:"?",type:"quantitative"}}),Uu=er({type:"addTemporalField",limit:2,additionalFieldQuery:{channel:"?",hasFn:!0,timeUnit:"?",field:"?",type:"temporal"}}),Fu=["color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","strokeDash","angle","time"];function Du(e){return!xa(e).hasAnyWildcard}function _u(e){let t=["x","y","color"],n=["row","column"],r=new Set(e.encodings.map(s=>s.channel)),a=t.every(s=>r.has(s)),i=n.some(s=>r.has(s));return a&&i}function ba(e){return e.encodings.length===0}function xa(e){let t=!1,n=!1,r=!1;for(let a of e.encodings)re(a)||(P(a)?A(a.autoCount)&&(n=!0):(A(a.field)&&(t=!0),(A(a.aggregate)||A(a.bin)||A(a.timeUnit))&&(n=!0),A(a.channel)&&(r=!0)));return{hasAnyWildcard:r||t||n,hasWildcardField:t,hasWildcardFn:n,hasWildcardChannel:r}}var Ea={name:"source"};function ju(e){let t=!1,n=!1,r=!1;return e.encodings.forEach(a=>{a.channel==="x"||a.channel==="y"?t=!0:a.channel==="row"||a.channel==="column"?r=!0:typeof a.channel=="string"&&Za(Fu,a.channel)&&(n=!0)}),{hasOpenPosition:t,hasStyleChannel:n,hasOpenFacet:r}}function Pu(e,t){let n={},{hasOpenPosition:r,hasStyleChannel:a,hasOpenFacet:i}=ju(e.spec);return(r||a)&&(n.addQuantitativeField=$t(Iu,e,t)),(r||a||i)&&(n.addCategoricalField=$t(Mu,e,t)),r&&(n.addTemporalField=$t(Uu,e,t)),n}function tr(e,t){if(ba(e.spec))return{plots:[],query:e,limit:1};let n=ha(e,t).result;return{plots:[Ta(n,Ea)[0]],query:e,limit:1}}function $t(e,t,n){let r=e.createQuery(t),a=ha(r,n).result;return{plots:Ta(a,Ea),query:r,limit:e.limit}}function Ta(e,t){return e.items.map(n=>ca(n)?Sa(t,Vn(n)):Sa(t,n))}function Sa(e,t){return{fieldInfos:t.getEncodings().filter(O).map(n=>({fieldDef:Au(n),channel:n.channel})),spec:t.toSpec(e)}}function Ru(e){let{spec:t,autoAddCount:n}=e,r=Ou(t),{hasAnyWildcard:a,hasWildcardFn:i,hasWildcardField:s}=xa(r);return{spec:r,groupBy:$u({hasWildcardFn:i,hasWildcardField:s}),orderBy:["fieldOrder","aggregationQuality","effectiveness"],chooseBy:["aggregationQuality","effectiveness"],config:a?{autoAddCount:n}:void 0}}function $u(e){let{hasWildcardFn:t,hasWildcardField:n}=e;return t?"fieldTransform":n?"field":"encoding"}function Bu(){return{mark:"?",encoding:{},config:{},schema:null}}var{valueAtom:Le,useActions:Lu}=Ga(Bu,{setSchema:(e,t)=>({...e,schema:t}),setMark:(e,t)=>({...e,mark:t}),setEncoding:(e,t)=>{let n=va({...e.encoding,...t});return{...e,encoding:n}},set:(e,t)=>{let{schema:n,...r}=t;return{...e,...r}}});function Na(){return Lu()}const Wu=Ma(e=>{let t=e(Le);if(!t.schema)return{};let n=Ru({spec:t,autoAddCount:!0});return ba(n.spec)?{main:tr(n,t.schema),histograms:$t(Cu,n,t.schema)}:Du(n.spec)&&!_u(n.spec)?{main:tr(n,t.schema),...Pu(n,t.schema)}:{main:tr(n,t.schema)}});var nr=Wt(),qu=["x","y","row","column"],Hu=["color","size","shape"];const Gu=e=>{let t=(0,nr.c)(26),{schema:n,mark:r}=e,a=Lt(Le),i=Na(),s=a.encoding.x&&a.encoding.y,c;t[0]!==i||t[1]!==s||t[2]!==n||t[3]!==a.encoding?(c=C=>(0,E.jsx)(zu,{schema:n,label:C,disabled:(C==="row"||C==="column")&&!s,fieldDefinition:a.encoding[C],onChange:T=>i.setEncoding({[C]:T})},C),t[0]=i,t[1]=s,t[2]=n,t[3]=a.encoding,t[4]=c):c=t[4];let h=c,o;t[5]===r?o=t[6]:(o=r.toString(),t[5]=r,t[6]=o);let l;t[7]===i?l=t[8]:(l=C=>i.setMark(C),t[7]=i,t[8]=l);let u;t[9]===Symbol.for("react.memo_cache_sentinel")?(u=(0,E.jsx)(et,{children:(0,E.jsx)(pr,{placeholder:"Mark"})}),t[9]=u):u=t[9];let d;t[10]===Symbol.for("react.memo_cache_sentinel")?(d=(0,E.jsx)(Ze,{children:(0,E.jsxs)(We,{children:[(0,E.jsx)(fr,{children:"Mark"}),Nu.map(Qu)]})}),t[10]=d):d=t[10];let p;t[11]!==o||t[12]!==l?(p=(0,E.jsxs)(tt,{"data-testid":"marimo-plugin-data-explorer-mark-select",value:o,onValueChange:l,children:[u,d]}),t[11]=o,t[12]=l,t[13]=p):p=t[13];let f=p,g;t[14]===Symbol.for("react.memo_cache_sentinel")?(g=(0,E.jsx)("span",{className:"col-span-2 flex items-center justify-between w-full",children:(0,E.jsx)("div",{className:"text-sm font-semibold",children:"Encodings"})}),t[14]=g):g=t[14];let y;t[15]===h?y=t[16]:(y=qu.map(h),t[15]=h,t[16]=y);let v;t[17]===Symbol.for("react.memo_cache_sentinel")?(v=(0,E.jsx)("div",{children:"Mark"}),t[17]=v):v=t[17];let b;t[18]===f?b=t[19]:(b=(0,E.jsxs)("span",{className:"col-span-2 text-sm font-semibold w-full border-t border-divider flex items-center justify-between pt-2 pr-[30px]",children:[v,f]}),t[18]=f,t[19]=b);let x;t[20]===h?x=t[21]:(x=Hu.map(h),t[20]=h,t[21]=x);let S;return t[22]!==b||t[23]!==x||t[24]!==y?(S=(0,E.jsxs)("div",{className:"grid gap-x-2 gap-y-4 justify-items-start py-3 pl-4 pr-2 bg-(--slate-1) border rounded items-center grid-template-columns-[repeat(2,_minmax(0,_min-content))] self-start",children:[g,y,b,x]}),t[22]=b,t[23]=x,t[24]=y,t[25]=S):S=t[25],S};var zu=e=>{let t=(0,nr.c)(43),{label:n,schema:r,fieldDefinition:a,disabled:i,onChange:s}=e,c;t[0]!==a||t[1]!==r?(c=()=>{if(!a)return"--";if(a.field==="*")return(0,E.jsxs)("span",{className:"flex gap-2 flex-1",children:[Be[R.NUMBER],(0,E.jsx)("span",{className:"text-left flex-1",children:"Count"})]});let _=a.field.toString();return(0,E.jsxs)("span",{className:"flex gap-2 flex-1",children:[Be[r.primitiveType(_)],(0,E.jsx)("span",{className:"text-left flex-1",children:a.fn?`${a.fn}(${a.field})`:_})]})},t[0]=a,t[1]=r,t[2]=c):c=t[2];let h=c,o;t[3]===s?o=t[4]:(o=()=>{s(void 0)},t[3]=s,t[4]=o);let l=o,u;t[5]===(a==null?void 0:a.field)?u=t[6]:(u=(a==null?void 0:a.field.toString())??"",t[5]=a==null?void 0:a.field,t[6]=u);let d=u,p;t[7]===n?p=t[8]:(p=(0,E.jsx)(no,{className:"text-(--slate-11) font-semibold",children:n}),t[7]=n,t[8]=p);let f;t[9]!==s||t[10]!==r?(f=_=>{s(_==="*"?{field:"*",fn:"count",type:"quantitative"}:{field:_,type:r.vlType(_)})},t[9]=s,t[10]=r,t[11]=f):f=t[11];let g=d?l:void 0,y;t[12]===h?y=t[13]:(y=h(),t[12]=h,t[13]=y);let v;t[14]!==g||t[15]!==y?(v=(0,E.jsx)(et,{className:"min-w-[140px] lg:min-w-[210px] h-full",onClear:g,children:y}),t[14]=g,t[15]=y,t[16]=v):v=t[16];let b;t[17]===r?b=t[18]:(b=r.fieldNames().map(_=>(0,E.jsx)(Te,{value:_.toString(),children:(0,E.jsxs)("span",{className:"flex items-center gap-2 flex-1",children:[Be[r.primitiveType(_)],(0,E.jsx)("span",{className:"flex-1",children:_}),(0,E.jsxs)("span",{className:"text-muted-foreground text-xs font-semibold",children:["(",r.vlType(_),")"]})]})},_)),t[17]=r,t[18]=b);let x;t[19]===r?x=t[20]:(x=r.fieldNames().length===0&&(0,E.jsx)(Te,{disabled:!0,value:"--",children:"No columns"}),t[19]=r,t[20]=x);let S;t[21]===Symbol.for("react.memo_cache_sentinel")?(S=(0,E.jsx)(hr,{}),t[21]=S):S=t[21];let C;t[22]===Symbol.for("react.memo_cache_sentinel")?(C=(0,E.jsx)(Te,{value:"*",children:(0,E.jsxs)("span",{className:"flex items-center gap-1 flex-1",children:[Be[R.NUMBER],(0,E.jsx)("span",{className:"flex-1",children:"Count"})]})},"*"),t[22]=C):C=t[22];let T;t[23]!==x||t[24]!==b?(T=(0,E.jsx)(Ze,{children:(0,E.jsxs)(We,{children:[b,x,S,C]})}),t[23]=x,t[24]=b,t[25]=T):T=t[25];let w;t[26]!==i||t[27]!==d||t[28]!==T||t[29]!==f||t[30]!==v?(w=(0,E.jsxs)(tt,{value:d,disabled:i,onValueChange:f,children:[v,T]}),t[26]=i,t[27]=d,t[28]=T,t[29]=f,t[30]=v,t[31]=w):w=t[31];let N;t[32]!==a||t[33]!==s?(N=a&&(0,E.jsx)(Yu,{field:a,onChange:s}),t[32]=a,t[33]=s,t[34]=N):N=t[34];let D;t[35]===N?D=t[36]:(D=(0,E.jsx)("div",{className:"w-[26px]",children:N}),t[35]=N,t[36]=D);let k;t[37]!==w||t[38]!==D?(k=(0,E.jsxs)("div",{className:"flex flex-row gap-1 h-[26px]",children:[w,D]}),t[37]=w,t[38]=D,t[39]=k):k=t[39];let I;return t[40]!==k||t[41]!==p?(I=(0,E.jsxs)(E.Fragment,{children:[p,k]}),t[40]=k,t[41]=p,t[42]=I):I=t[42],I},rr="__",Yu=e=>{let t=(0,nr.c)(10),{field:n,onChange:r}=e;if(n.field==="*")return null;let a;if(t[0]!==n||t[1]!==r){a=Symbol.for("react.early_return_sentinel");e:{let i=[];if(n.type===se.QUANTITATIVE&&(i=[["",Tu]]),n.type===se.TEMPORAL&&(i=[["Single",ga],["Multi",ya]]),i.length>0){let s=d=>{r({...n,fn:d===rr?void 0:d})},c;t[3]===Symbol.for("react.memo_cache_sentinel")?(c=(0,E.jsx)(et,{className:"h-full px-1",hideChevron:!0,variant:"ghost",children:(0,E.jsx)(Ya,{size:14,strokeWidth:1.5})}),t[3]=c):c=t[3];let h,o;t[4]===Symbol.for("react.memo_cache_sentinel")?(h=(0,E.jsx)(We,{children:(0,E.jsx)(Te,{value:rr,children:"None"})}),o=(0,E.jsx)(hr,{}),t[4]=h,t[5]=o):(h=t[4],o=t[5]);let l=(0,E.jsxs)(Ze,{children:[h,o,i.map(Ku)]}),u;t[6]!==n.fn||t[7]!==s||t[8]!==l?(u=(0,E.jsxs)(tt,{"data-testid":"marimo-plugin-data-explorer-field-options",value:n.fn,onValueChange:s,children:[c,l]}),t[6]=n.fn,t[7]=s,t[8]=l,t[9]=u):u=t[9],a=u;break e}}t[0]=n,t[1]=r,t[2]=a}else a=t[2];return a===Symbol.for("react.early_return_sentinel")?null:a};function Qu(e){return(0,E.jsx)(Te,{value:e,children:e==="?"?"auto":e},e)}function Vu(e){return(0,E.jsx)(Te,{value:e??rr,children:ja(e)},e)}function Ku(e){let[t,n]=e;return(0,E.jsxs)(We,{children:[t&&(0,E.jsx)(fr,{children:t}),n.map(Vu)]},t)}var Bt=Wt(),Ju=e=>{let t=(0,Bt.c)(5),n;t[0]===Symbol.for("react.memo_cache_sentinel")?(n=ka(),t[0]=n):n=t[0];let r=n,a;t[1]===e?a=t[2]:(a=()=>{let s=r.sub(Le,()=>{let{schema:h,...o}=r.get(Le);e.setValue(o)}),c=e.value;return c&&Object.keys(c).length>0&&r.set(Le,c),s},t[1]=e,t[2]=a),Pa(a);let i;return t[3]===e?i=t[4]:(i=(0,E.jsx)(Oa,{store:r,children:(0,E.jsx)(wa,{...e})}),t[3]=e,t[4]=i),i};function Ca(e){return{padding:{left:20,right:20,top:20,bottom:20},actions:{export:{svg:!0,png:!0},source:!1,compiled:!1,editor:!1},theme:e==="dark"?"dark":void 0,tooltip:Ba.call,renderer:"canvas"}}var Xu=Ju;const wa=e=>{var xe,X,W,fe,Ee,pe;let t=(0,Bt.c)(43),{data:n}=e,r=Na(),a;t[0]!==r||t[1]!==n?(a=async()=>{if(!n)return{};let M=await $a(n,{type:"csv",parse:"auto"},{replacePeriod:!0}),Y=kc(M);return r.setSchema(Y),{chartData:M,schema:Y}},t[0]=r,t[1]=n,t[2]=a):a=t[2];let i;t[3]===n?i=t[4]:(i=[n],t[3]=n,t[4]=i);let{data:s,isPending:c,error:h}=to(a,i),{mark:o}=Lt(Le),l=Lt(Wu),{theme:u}=Va();if(h){let M;return t[5]===h?M=t[6]:(M=(0,E.jsx)(eo,{error:h}),t[5]=h,t[6]=M),M}if(!s){let M;return t[7]===Symbol.for("react.memo_cache_sentinel")?(M=(0,E.jsx)("div",{}),t[7]=M):M=t[7],M}let{chartData:d,schema:p}=s;if(c||!p){let M;return t[8]===Symbol.for("react.memo_cache_sentinel")?(M=(0,E.jsx)("div",{}),t[8]=M):M=t[8],M}let f=(X=(xe=l.main)==null?void 0:xe.plots)==null?void 0:X[0],g;t[9]===(f==null?void 0:f.fieldInfos)?g=t[10]:(g=new Set(f==null?void 0:f.fieldInfos.map(nd)),t[9]=f==null?void 0:f.fieldInfos,t[10]=g);let y=g,v;t[11]!==d||t[12]!==f||t[13]!==p||t[14]!==u?(v=()=>{if(!f)return(0,E.jsx)(hu,{schema:p});let M=f.spec,Y=td(M),Ie=dr(Y,d);return(0,E.jsx)("div",{className:cr("flex overflow-y-auto justify-center items-center flex-1 w-[90%]",Y.width==="container"&&"vega-container-width"),children:(0,E.jsx)(mr,{spec:Ie,options:Ca(u)})})},t[11]=d,t[12]=f,t[13]=p,t[14]=u,t[15]=v):v=t[15];let b=v,x;t[16]!==o||t[17]!==p?(x=(0,E.jsx)(Gu,{mark:o,schema:p}),t[16]=o,t[17]=p,t[18]=x):x=t[18];let S;t[19]===b?S=t[20]:(S=b(),t[19]=b,t[20]=S);let C;t[21]!==x||t[22]!==S?(C=(0,E.jsxs)("div",{className:"flex items-center gap-2",children:[x,S]}),t[21]=x,t[22]=S,t[23]=C):C=t[23];let T=(W=l.histograms)==null?void 0:W.plots,w=(fe=l.addCategoricalField)==null?void 0:fe.plots,N=(Ee=l.addQuantitativeField)==null?void 0:Ee.plots,D=(pe=l.addTemporalField)==null?void 0:pe.plots,k;if(t[24]!==r||t[25]!==d||t[26]!==y||t[27]!==N||t[28]!==D||t[29]!==T||t[30]!==w||t[31]!==u){let M;t[33]!==r||t[34]!==d||t[35]!==y||t[36]!==u?(M=(Y,Ie)=>(0,E.jsx)(ed,{title:(0,E.jsx)("div",{className:"flex flex-row gap-1",children:Y.fieldInfos.map(he=>{let or=he.fieldDef.field==="*"?"Count":he.fieldDef.fn?`${he.fieldDef.fn}(${he.fieldDef.field})`:he.fieldDef.field.toString();return(0,E.jsx)(Qa,{variant:y.has(he.fieldDef.field)?"secondary":"defaultOutline",children:or},or)})}),actions:(0,E.jsx)(Ka,{content:"Make main plot",children:(0,E.jsx)(lr,{"data-testid":"marimo-plugin-data-explorer-make-main-plot",variant:"text",size:"icon",onClick:()=>{let he=La.fromEntries(Y.fieldInfos.map(rd));r.setEncoding(he)},children:(0,E.jsx)(za,{className:"w-4 h-4"})})}),children:(0,E.jsx)(mr,{options:Ca(u),spec:dr(Y.spec,d)},Ie)},Ie),t[33]=r,t[34]=d,t[35]=y,t[36]=u,t[37]=M):M=t[37],k=[T,w,N,D].filter(Boolean).flat().map(M),t[24]=r,t[25]=d,t[26]=y,t[27]=N,t[28]=D,t[29]=T,t[30]=w,t[31]=u,t[32]=k}else k=t[32];let I;t[38]===k?I=t[39]:(I=(0,E.jsx)(Zu,{children:k}),t[38]=k,t[39]=I);let _;return t[40]!==I||t[41]!==C?(_=(0,E.jsxs)("div",{className:"flex flex-col gap-2",children:[C,I]}),t[40]=I,t[41]=C,t[42]=_):_=t[42],_};var Zu=e=>{let t=(0,Bt.c)(2),{children:n}=e;if(Zn.Children.count(n)===0)return null;let r;return t[0]===n?r=t[1]:(r=(0,E.jsx)("div",{className:"flex flex-row overflow-x-auto overflow-y-hidden gap-4 snap-x pb-4",children:n}),t[0]=n,t[1]=r),r},ed=e=>{let t=(0,Bt.c)(10),{title:n,children:r,actions:a}=e,i;t[0]===n?i=t[1]:(i=(0,E.jsx)("div",{className:"text-sm font-medium",children:n}),t[0]=n,t[1]=i);let s;t[2]!==a||t[3]!==i?(s=(0,E.jsxs)("div",{className:"flex flex-row justify-between items-center bg-(--slate-3) py-0.5 px-2",children:[i,a]}),t[2]=a,t[3]=i,t[4]=s):s=t[4];let c;t[5]===r?c=t[6]:(c=(0,E.jsx)("div",{className:"px-6 pt-2 max-h-[280px] overflow-y-auto",children:r}),t[5]=r,t[6]=c);let h;return t[7]!==s||t[8]!==c?(h=(0,E.jsxs)("div",{className:"shrink-0 bg-card shadow-md border overflow-hidden rounded snap-start",children:[s,c]}),t[7]=s,t[8]=c,t[9]=h):h=t[9],h};function td(e){var t,n;return(t=e.encoding)!=null&&t.row||(n=e.encoding)!=null&&n.column||(e.width="container"),e}function nd(e){return e.fieldDef.field}function rd(e){return[e.channel,e.fieldDef]}export{wa as DataExplorerComponent,Xu as default};
@@ -1 +0,0 @@
1
- import{s as U}from"./chunk-LvLJmgfZ.js";import{l as X,u as V}from"./useEvent-O0nX5vok.js";import{t as Y}from"./react-Bj1aDYRI.js";import{Kr as Z}from"./cells-CAHXVi26.js";import"./react-dom-CSu739Rf.js";import{t as O}from"./compiler-runtime-B3qBwwSJ.js";import"./tooltip-DLsts-7g.js";import{S as ee}from"./ai-model-dropdown-CcIreMqb.js";import{c as le,f as te,s as ie,t as ae}from"./useEventListener-BGihH8bs.js";import{p as oe,v as re,y as ne}from"./utils-BvPM6Bro.js";import{i as de}from"./switch-krcK9lRK.js";import{t as se}from"./jsx-runtime-icT_Ltz2.js";import"./dist-B_cxg-E4.js";import"./JsonOutput-DJukuY6Z.js";import"./cjs-BU2qXMKx.js";import"./main-DrBRErTM.js";import"./useNonce-BtW-rR_1.js";import{r as pe}from"./requests-Bgjtqo_1.js";import"./layout-52MeytEk.js";import"./download-SQhwj_Eq.js";import{t as me}from"./useCellActionButton-DNIW0rqj.js";import"./markdown-renderer-MyhTrUey.js";import{i as he,t as ce}from"./useNotebookActions-DhmD75et.js";import"./dist-BNC_tnlW.js";import"./dist-CXLJUPFl.js";import"./dist-CQqv2gQL.js";import"./dist-8UD0A5sU.js";import"./dist-apDpadc4.js";import"./session-CXChHxAw.js";import"./Combination-CBJmtdux.js";import"./purify.es-BBn8CPhf.js";import"./dates-BcvJrESI.js";import"./popover-Du6bDNYH.js";import"./share-BYioqUE0.js";import"./vega-loader.browser-CZV6_g2i.js";import"./defaultLocale-OkOxlkkM.js";import"./defaultLocale-DK1MWd7f.js";import{a as ye,c as fe,i as L,l as z,n as ue,o as J,r as be,s as ge}from"./command-_14PjWun.js";import"./chunk-5FQGJX7Z-CM1a_K7I.js";import"./katex-rvFxOCU-.js";import"./html-to-image-BgHw831z.js";import{r as ke}from"./focus-DaKeoSx6.js";import{t as Q}from"./renderShortcut-Bgu3XVfT.js";import"./esm-CBkHtTOV.js";import"./name-cell-input-CAAR5C2m.js";import"./multi-icon-DEWnuZs2.js";import"./dist-D9Vhptds.js";import"./dist-CVEvQ1Ex.js";import"./dist-sVuk6mkQ.js";import"./dist-DxrbvUBv.js";import"./dist-6FIAeDIu.js";import"./dist-CgC048vN.js";import"./dist-DbK_4_qo.js";import"./dist-ASlWkGgG.js";import"./dist-DBPtheKQ.js";import"./esm-DhTsVMLM.js";var we=O(),Ce=U(Y(),1);function je(e,l){let t=(0,we.c)(11),n;t[0]===l?n=t[1]:(n=new Z(l),t[0]=l,t[1]=n);let d=n,r;t[2]!==e||t[3]!==d?(r=()=>d.get(e),t[2]=e,t[3]=d,t[4]=r):r=t[4];let[m,k]=(0,Ce.useState)(r),i;t[5]!==e||t[6]!==d?(i=w=>{k(w),d.set(e,w)},t[5]=e,t[6]=d,t[7]=i):i=t[7];let f=i,h;return t[8]!==f||t[9]!==m?(h=[m,f],t[8]=f,t[9]=m,t[10]=h):h=t[10],h}var xe=O(),ve=3;function Se(){let e=(0,xe.c)(7),l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=[],e[0]=l):l=e[0];let[t,n]=je("marimo:commands",l),d;e[1]!==t||e[2]!==n?(d=m=>{n(_e([m,...t]).slice(0,ve))},e[1]=t,e[2]=n,e[3]=d):d=e[3];let r;return e[4]!==t||e[5]!==d?(r={recentCommands:t,addRecentCommand:d},e[4]=t,e[5]=d,e[6]=r):r=e[6],r}function _e(e){return[...new Set(e)]}function W(e){return e.dropdown!==void 0}function T(e,l=""){return e.flatMap(t=>t.label?W(t)?T(t.dropdown,`${l+t.label} > `):{...t,label:l+t.label,additionalKeywords:t.additionalKeywords}:[])}var Ke=O();function He(){let e=(0,Ke.c)(75),[l,t]=ne(),[n,d]=re(),{saveAppConfig:r,saveUserConfig:m}=pe(),k;e[0]!==m||e[1]!==t?(k=async p=>{await m({config:p}).then(()=>{t(c=>({...c,...p}))})},e[0]=m,e[1]=t,e[2]=k):k=e[2];let i=k,f;e[3]!==r||e[4]!==d?(f=async p=>{await r({config:p}).then(()=>{d(p)})},e[3]=r,e[4]=d,e[5]=f):f=e[5];let h=f,w;if(e[6]!==n||e[7]!==l.completion||e[8]!==l.display||e[9]!==l.keymap||e[10]!==h||e[11]!==i){let p;e[13]===n?p=e[14]:(p=B=>B!==n.width,e[13]=n,e[14]=p);let c;e[15]!==n||e[16]!==h?(c=B=>({label:`App config > Set width=${B}`,handle:()=>{h({...n,width:B})}}),e[15]=n,e[16]=h,e[17]=c):c=e[17];let K;e[18]!==l.display||e[19]!==i?(K={label:"Config > Set theme: dark",handle:()=>{i({display:{...l.display,theme:"dark"}})}},e[18]=l.display,e[19]=i,e[20]=K):K=e[20];let C;e[21]!==l.display||e[22]!==i?(C={label:"Config > Set theme: light",handle:()=>{i({display:{...l.display,theme:"light"}})}},e[21]=l.display,e[22]=i,e[23]=C):C=e[23];let H;e[24]!==l.display||e[25]!==i?(H={label:"Config > Set theme: system",handle:()=>{i({display:{...l.display,theme:"system"}})}},e[24]=l.display,e[25]=i,e[26]=H):H=e[26];let E=l.keymap.preset==="vim",A;e[27]!==l.keymap||e[28]!==i?(A=()=>{i({keymap:{...l.keymap,preset:"vim"}})},e[27]=l.keymap,e[28]=i,e[29]=A):A=e[29];let M;e[30]!==E||e[31]!==A?(M={label:"Config > Switch keymap to VIM",hidden:E,handle:A},e[30]=E,e[31]=A,e[32]=M):M=e[32];let N=l.keymap.preset==="default",j;e[33]!==l.keymap||e[34]!==i?(j=()=>{i({keymap:{...l.keymap,preset:"default"}})},e[33]=l.keymap,e[34]=i,e[35]=j):j=e[35];let u;e[36]!==N||e[37]!==j?(u={label:"Config > Switch keymap to default (current: VIM)",hidden:N,handle:j},e[36]=N,e[37]=j,e[38]=u):u=e[38];let x;e[39]!==l.completion||e[40]!==i?(x=()=>{i({completion:{...l.completion,copilot:!1}})},e[39]=l.completion,e[40]=i,e[41]=x):x=e[41];let v=l.completion.copilot!=="github",P;e[42]!==x||e[43]!==v?(P={label:"Config > Disable GitHub Copilot",handle:x,hidden:v},e[42]=x,e[43]=v,e[44]=P):P=e[44];let S;e[45]!==l.completion||e[46]!==i?(S=()=>{i({completion:{...l.completion,copilot:"github"}})},e[45]=l.completion,e[46]=i,e[47]=S):S=e[47];let G=l.completion.copilot==="github",$;e[48]!==S||e[49]!==G?($={label:"Config > Enable GitHub Copilot",handle:S,hidden:G},e[48]=S,e[49]=G,e[50]=$):$=e[50];let q=!l.display.reference_highlighting,_;e[51]!==l.display||e[52]!==i?(_=()=>{i({display:{...l.display,reference_highlighting:!1}})},e[51]=l.display,e[52]=i,e[53]=_):_=e[53];let b;e[54]!==q||e[55]!==_?(b={label:"Config > Disable reference highlighting",hidden:q,handle:_},e[54]=q,e[55]=_,e[56]=b):b=e[56];let y;e[57]!==l.display||e[58]!==i?(y=()=>{i({display:{...l.display,reference_highlighting:!0}})},e[57]=l.display,e[58]=i,e[59]=y):y=e[59];let D;e[60]!==l.display.reference_highlighting||e[61]!==y?(D={label:"Config > Enable reference highlighting",hidden:l.display.reference_highlighting,handle:y},e[60]=l.display.reference_highlighting,e[61]=y,e[62]=D):D=e[62];let a=l.display.cell_output==="above",o;e[63]!==l.display||e[64]!==i?(o=()=>{i({display:{...l.display,cell_output:"above"}})},e[63]=l.display,e[64]=i,e[65]=o):o=e[65];let F;e[66]!==a||e[67]!==o?(F={label:"Config > Set cell output area: above",hidden:a,handle:o},e[66]=a,e[67]=o,e[68]=F):F=e[68];let g=l.display.cell_output==="below",R;e[69]!==l.display||e[70]!==i?(R=()=>{i({display:{...l.display,cell_output:"below"}})},e[69]=l.display,e[70]=i,e[71]=R):R=e[71];let I;e[72]!==g||e[73]!==R?(I={label:"Config > Set cell output area: below",hidden:g,handle:R},e[72]=g,e[73]=R,e[74]=I):I=e[74],w=[...ee().filter(p).map(c),K,C,H,M,u,P,$,b,D,F,I].filter(Ae),e[6]=n,e[7]=l.completion,e[8]=l.display,e[9]=l.keymap,e[10]=h,e[11]=i,e[12]=w}else w=e[12];return w}function Ae(e){return!e.hidden}var Me=O(),s=U(se(),1),Ne=()=>{let e=(0,Me.c)(37),[l,t]=X(he),n=de(),d=V(ke),r=V(oe),m;e[0]===d?m=e[1]:(m={cell:d},e[0]=d,e[1]=m);let k=me(m).flat();k=T(k);let i=He(),f=ce();f=[...T(f),...T(i)];let h=f.filter(De),w=le.keyBy(h,Fe),{recentCommands:p,addRecentCommand:c}=Se(),K;e[2]===p?K=e[3]:(K=new Set(p),e[2]=p,e[3]=K);let C=K,H;e[4]!==r||e[5]!==t?(H=a=>{te(r.getHotkey("global.commandPalette").key)(a)&&(a.preventDefault(),t(Re))},e[4]=r,e[5]=t,e[6]=H):H=e[6],ae(document,"keydown",H);let E;e[7]!==c||e[8]!==r||e[9]!==n||e[10]!==t?(E=(a,o)=>{let F=n[a];if(!F)return null;let g=r.getHotkey(a);return(0,s.jsxs)(J,{disabled:o.disabled,keywords:g.additionalKeywords,onSelect:()=>{c(a),t(!1),requestAnimationFrame(()=>{F()})},value:g.name,children:[(0,s.jsxs)("span",{children:[g.name,o.tooltip&&(0,s.jsx)("span",{className:"ml-2",children:o.tooltip})]}),(0,s.jsx)(z,{children:(0,s.jsx)(Q,{shortcut:g.key})})]},a)},e[7]=c,e[8]=r,e[9]=n,e[10]=t,e[11]=E):E=e[11];let A=E,M;e[12]!==c||e[13]!==r||e[14]!==t?(M=a=>{let{label:o,handle:F,props:g,hotkey:R,additionalKeywords:I}=a,B=g===void 0?{}:g;return(0,s.jsxs)(J,{disabled:B.disabled,keywords:I,onSelect:()=>{c(o),t(!1),requestAnimationFrame(()=>{F()})},value:o,children:[(0,s.jsxs)("span",{children:[o,B.tooltip&&(0,s.jsxs)("span",{className:"ml-2",children:["(",B.tooltip,")"]})]}),R&&(0,s.jsx)(z,{children:(0,s.jsx)(Q,{shortcut:r.getHotkey(R).key})})]},o)},e[12]=c,e[13]=r,e[14]=t,e[15]=M):M=e[15];let N=M,j=ue,u;e[16]===Symbol.for("react.memo_cache_sentinel")?(u=(0,s.jsx)(ye,{placeholder:"Type to search..."}),e[16]=u):u=e[16];let x=ge,v;e[17]===Symbol.for("react.memo_cache_sentinel")?(v=(0,s.jsx)(be,{children:"No results found."}),e[17]=v):v=e[17];let P=p.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(L,{heading:"Recently Used",children:p.map(a=>{let o=w[a];return ie(a)?A(a,{disabled:o==null?void 0:o.disabled,tooltip:o==null?void 0:o.tooltip}):o&&!W(o)?N({label:o.label,handle:o.handleHeadless||o.handle,props:{disabled:o.disabled,tooltip:o.tooltip},additionalKeywords:o.additionalKeywords}):null})}),(0,s.jsx)(fe,{})]}),S=L,G=r.iterate().map(a=>{if(C.has(a))return null;let o=w[a];return A(a,{disabled:o==null?void 0:o.disabled,tooltip:o==null?void 0:o.tooltip})}),$=h.map(a=>C.has(a.label)?null:N({label:a.label,handle:a.handleHeadless||a.handle,props:{disabled:a.disabled,tooltip:a.tooltip},additionalKeywords:a.additionalKeywords})),q;e[18]!==C||e[19]!==N?(q=a=>C.has(a.label)?null:N({label:`Cell > ${a.label}`,handle:a.handleHeadless||a.handle,props:{disabled:a.disabled,tooltip:a.tooltip},additionalKeywords:a.additionalKeywords}),e[18]=C,e[19]=N,e[20]=q):q=e[20];let _=k.map(q),b;e[21]!==S||e[22]!==$||e[23]!==_||e[24]!==G?(b=(0,s.jsxs)(S,{heading:"Commands",children:[G,$,_]}),e[21]=S,e[22]=$,e[23]=_,e[24]=G,e[25]=b):b=e[25];let y;e[26]!==x||e[27]!==b||e[28]!==v||e[29]!==P?(y=(0,s.jsxs)(x,{children:[v,P,b]}),e[26]=x,e[27]=b,e[28]=v,e[29]=P,e[30]=y):y=e[30];let D;return e[31]!==j||e[32]!==l||e[33]!==t||e[34]!==y||e[35]!==u?(D=(0,s.jsxs)(j,{open:l,onOpenChange:t,children:[u,y]}),e[31]=j,e[32]=l,e[33]=t,e[34]=y,e[35]=u,e[36]=D):D=e[36],D};function De(e){return!e.hotkey}function Fe(e){return e.label}function Re(e){return!e}export{Ne as default};